0

これは、cudaMemcpyToSymbol と 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 jump.cu -o jumpでビルドし、w/: ./junkで実行すると、結果は ErrVal= 11で、これは「無効な引数」です。

w/: nvcc jump.cu -G -o jumpでビルドし、w/: ./junkで実行すると、結果は ErrVal= 0で、これは cudaSuccess です。

-G フラグを使用した経験はあまりありませんが、これは奇妙な動作のようです。-G erase がエラーを返すのはなぜですか?

4

0 に答える 0