-1
私はちょうどCUDAとCを始めており、簡単な追加をしようとしています。私は結果を印刷しようとすると 、私は取得しています出力として、次の CUDA不正確な答えを与えるベクトルの例を追加する
は私がしてa.outを生成するコマンド「NVCCのtest.cu」を実行しています、コードをコンパイルするには、「+ 4 3が1です」
ありがとうございました。
#include <stdio.h>
__global__ void add(int a, int b, int *c){
*c = a + b;
}
int main(){
int a,b,c;
int *dev_c;
a=3;
b=4;
cudaMalloc((void**)&dev_c, sizeof(int));
add<<<1,1>>>(a,b,dev_c);
cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);
printf("%d + %d is %d\n", a, b, c);
cudaFree(dev_c);
return 0;
}
'int * dev_c;'の値と '* cudaMemcpy'に渡す前に値*を指していることを知りたいことがあります。私は知らない、ちょうどデバッグの疑惑。 –
高速かつ簡単なデバッグのために、printfをカーネルに移動して、実際に実行され、パラメータが正しいかどうかを確認することもできます。 – dari
@dariはカーネルで 'printf'を使うべきではありませんか? –