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];
}
Run Code Online (Sandbox Code Playgroud)
在上面的函数中假设我们有长度为n = 257的向量,我们将只分配2个块.我只是想知道调用vecAddkernel函数时第二个块中发生了什么.只有一个线程在第二个块中执行,或者所有256个线程都被执行,尽管其中255个没有输出.所以基本的问题是如何为每个vecAddKernel调用修复参数'n'?每个块是256,第一个块是256,第二个块是1吗?
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |