0
你好我想找到使用CUDA的數組元素的總和。CUDA發現數組元素的總和
__global__ void countZeros(int *d_A, int * B)
{
int index = blockIdx.x * blockDim.x + threadIdx.x;
B[0] = B[0]+d_A[index];
}
所以最後,B [0]應該包含所有元素的總和。但我注意到B [0]每次都等於零。所以最後它只包含最後一個元素。 爲什麼B [0]每次都變爲零?
謝謝但atomicAdd是未定義的。我懷疑這是不可能的。看起來好像一個變種只能變一次。 – user3485986
要使用'atomicAdd',您需要使用cc1.1或更高版本的GPU的架構開關編譯代碼。因此,例如,如果您有cc2.0 GPU,請在編譯命令行中添加「-arch = sm_20」。如果你確實有一個cc1.0 GPU,那麼這將不起作用,但是縮小示例代碼仍然可以工作。 –
似乎太多擔心。也許這可以通過使用共享內存來完成? – user3485986