You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CUDA大线程块数量导致printf输出乱码问题求助

CUDA大线程块数下printf输出乱码问题

我通过CUDA核函数生成随机图像数据,核函数代码如下:

__global__ void k_initRand(curandState *state, uint64_t seed){
    int tid = threadIdx.x + blockIdx.x * blockDim.x;
    curand_init(seed, tid, 0, &state[tid]);
}

__global__ void k_createColors(curandState *my_curandstate, int min, int max,  unsigned char * myGpuData, int startidx){
    int ti = threadIdx.x+blockDim.x*blockIdx.x;

    float myrandf = curand_uniform(my_curandstate+ti + startidx);
    myrandf *= (max - min+0.999999);
    myrandf += min;
    
    int myrand = (int)truncf(myrandf);
    
    assert(myrand <= max);
    assert(myrand >= min);
    
    myGpuData[ti] = myrand;

    printf("INIT TI:%d\n", ti);
}

核函数启动代码如下:

int colormin = 0;
int colormax = 255;

curandState *d_state;   
cudaMalloc(&d_state, sizeof(curandState));

unsigned char * d_R;
cudaMalloc(&d_R, SIZE * sizeof(unsigned char) );

k_initRand    <<< 191,     1024 >>>(  d_state, time(NULL)  );
k_createColors<<< 64, 1024 >>>(  d_state, colormin, colormax,    d_R, 0 );

现象

  • 使用上述线程块数量时,printf输出乱码:
xz⑧:gτ*?A蓹搭?潷讀z⑧:gτ*?A蓹搭?潷讀z⑧:gτ*?A蓹搭?潷讀z⑧:gτ*?A蓹搭?潷讀z⑧:gτ*?A蓹搭?潷讀z⑧:gτ*?A蓹搭?潷讀z⑧:gτ*?A蓹
  • 将两个核函数的线程块数设为1时,输出符合预期:
...
INIT TI:896
INIT TI:897
INIT TI:898
INIT TI:899
INIT TI:900
INIT TI:901
INIT TI:902
INIT TI:903
INIT TI:904
INIT TI:905
INIT TI:906
INIT TI:907
INIT TI:908
INIT TI:909
INIT TI:910
INIT TI:911
INIT TI:912
INIT TI:913
INIT TI:914
INIT TI:915
INIT TI:916
INIT TI:917
INIT TI:918
INIT TI:919
...

排查情况

  • 检查CUDA错误,未发现异常:
cudaError_t err = cudaGetLastError();        // Get error code
printf("CUDA Error: %s\n", cudaGetErrorString(err));
if ( err != cudaSuccess ){
    printf("CUDA Error: %s\n", cudaGetErrorString(err));
    exit(-1);
}
  • 大线程块数下,随机图像数据生成功能正常,仅printf输出乱码
  • 设备:Nvidia GeForce GTX 1650 with Max-Q design
  • 编译及运行命令:
nvcc -arch=sm_75 -o ppmer -ccbin "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\cl.exe" ppmwriter.cu > .\outputs\AA_CURRENT_ERROR.txt

ppmer > .\outputs\AA_CURRENT_OUTPUT.txt

内容的提问来源于stack exchange,提问作者bigcodeszzer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:07:12