0
dim3 DimGrid((n-1)/256 + 1, 1, 1);
dim3 DimBlock(256, 1, 1);
vecAddKernel<<<DimGrid,DimBlock>>>(d_A, d_B, d_C, n);
__global__
void vecAddkernel(float* A, float* B, float* C, int n)
{
int i = threadIdx.x + blockDim.x * blockIdx.x;
if(i<n) C[i] = A[i] + B[i];
}
在上述函數中假設我們有一個長度爲n = 257的向量,我們將只有2個塊被分配。我只是想知道在調用vecAddkernel函數時在第二個塊中會發生什麼。只有一個線程在第二個塊中執行,或者所有256個線程都執行,儘管255個線程沒有輸出。所以最基本的問題是每個vecAddKernel調用的參數'n'是如何確定的?對於每個塊是256還是對於第一個塊是256,對於第二個塊是1?如何在CUDA中執行正確的線程數