Ich verwendete globale 2d Array-Variable in CUDA, und ich versuchte, kumulative Addition zu dieser globalen Variable zu verwenden. Aber als ich den Code erneut startete, begann er mit dem Wert vom letzten Lauf. Zum Beispiel war 50, wenn der Wert in dem letzten Lauf der nächste Lauf 100 zeigen Sie nicht setzen Sie den Wert auf 0.Wie CUDA globale Variablen zurückgesetzt werden
__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;
}