0

这是cudaMemcpyToSymbol vs cudaMemcpy的后续 Q

我的印象是 -G 标志是用于构建 cudaGDB 的。我也看到了明显的错误。(下面代码中的错误是故意的。Q是关于为什么返回错误没有显示它。)

__constant__ float flt[480];   // 1920 bytes
__constant__ int  ints[160];   // 640 bytes

Main() {
 float* pFlts;
 cudaMalloc((void**)&pFlts, 1920+640);

 cudaError_t eerr=cudaMemcpyToSymbol(ints,pFlts,sizeof(ints),sizeof(ints),cudaMemcpyDeviceToDevice);
 printf("ErrVal= %d\n",(int)eerr);
}

当我构建 w/: nvcc junk.cu -o junk并使用: ./junk运行它时,我的结果是: ErrVal= 11,这是“无效参数”。

当我构建 w/: nvcc junk.cu -G -o junk并使用: ./junk运行它时,我的结果是: ErrVal= 0,即 cudaSuccess。

我没有很多使用 -G 标志的经验,但这似乎是一种奇怪的行为。为什么 -G 擦除返回错误?

4

0 回答 0