2011-06-06 15 views
-1

CUDAでグローバル変数を作成するにはどうすればよいですか?CUDAグローブ変数

__device__ float *devD; 
cudaMalloc((void**)&devD, s); 
calculateDT_T2B<<<dimGrid, dimBlock>>>(); 
cudaMemcpy(dtr, devD, s, cudaMemcpyDeviceToHost); 
print(dtr); 

これは正しい答えではありません(いくつかの乱数を与えます)。しかし私が電話するとき

calculateDT_T2B<<<dimGrid, dimBlock>>>(devD); instead of 
calculateDT_T2B<<<dimGrid, dimBlock>>>(); 

それは正しい答えを与える..なぜですか?

+0

コード全体を投稿できますか?どこでdevDを宣言していますか?その範囲は本当にグローバルなのですか? –

+0

この質問は、同じ問題についてあなたの他の質問とどのように異なっていますか?なぜそれらの1つを削除してはいけないのですか? – talonmies

答えて

0

cudaMallocをGPUメモリの__device__シンボルに直接割り当てることはできません。これを行うと、ホストメモリにのみ割り当てられます。私のanswerをあなた自身に見てください。ほとんど同じですquestionあなたはこの1分以内に投稿しました。短いバージョンは、動的に割り当てられたデバイスポインタを静的に宣言されたシンボルに書き込むためにcudaMemcpyToSymbolを使用することです。

関連する問題