1
CUDAでグローバル2次元配列変数を使用しましたが、このグローバル変数に累積加算を使用しようとしました。しかし、コードを再実行すると、最後の実行からの値で開始しました。たとえば、値は次のランは、(あなたが配分されているメモリを初期化するために、それはあなたが望むように聞こえる0CUDAグローバル変数をリセットする方法
__device__ double *d_t;
__device__ size_t d_gridPitch;
__global__ void kernelFunc()
{
int i = blockIdx.x * blockDim.x + threadIdx.x
double* rowt = (double*)((char *)d_t + i * d_gridPitch);
rowt[0] = rowt[0] + 50000;
printf("%.0f, ",rowt[0]);
}
int main()
{
int size = 16;
size_t d_pitchLoc;
double *d_tLoc;
cudaMallocPitch((void**)&d_tLoc, &d_pitchLoc, size * sizeof(double), size);
cudaMemcpyToSymbol(d_gridPitch, &d_pitchLoc, sizeof(int));
cudaMemcpyToSymbol(d_t, & d_tLoc, sizeof(d_tLoc));
kernelFunc<<<1,size>>>();
cudaDeviceReset();
return 0;
}