%%cu #include #include __global__ void add(int *a, int *b, int *c) { *c = *a + *b; } int main() { int a, b, c; // 変数 a, b & c のホスト・コピー int *d_a, *d_b, *d_c; // 変数 a, b & c のデバイス・コピー int size = sizeof(int *d_a, *d_b, *d_c; // 変数 a, b & c のデバイス・コピー int size = sizeof(int *d_a, *d_b, *d_c)int size = sizeof(int); // a、b、cのデバイスコピーに領域を割り当てる cudaMalloc((void **)&d_a, size); cudaMalloc((void **)&d_b, size); cudaMalloc((void **)&d_c, size);
// 入力値の設定 c = 0; a = 3; b = 5; // 入力をデバイスにコピー cudaMemcpy(d_a, &a, size, cudaMemcpyHostToDevice); cudaMemcpy(d_b, &b, size, cudaMemcpyHostToDevice);
// GPUでadd()カーネルを起動 add<<1,1>>(d_a, d_b, d_c); // 結果をホストにコピーバック cudaError err = cudaMemcpy(&c, d_c, size, cudaMemcpyDeviceToHost); if(err!=cudaSuccess) { printf("CUDA error copying to Host: %sn", cudaGetErrorString(err)); } printf("result is %dn",c); // クリーンアップ cudaFree(d_a); cudaFree(d_b); cudaFree(d_c); return 0; }.
コメント
最新を表示する
NG表示方式
NGID一覧