嘿,我在网站上看过这个示例内核
__global__ void loop1( int N, float alpha, float* x, float* y ) {
int i;
int i0 = blockIdx.x*blockDim.x + threadIdx.x;
for(i=i0;i<N;i+=blockDim.x*gridDim.x) {
y[i] = alpha*x[i] + y[i];
}
}
Run Code Online (Sandbox Code Playgroud)
在C中计算此功能
for(i=0;i<N;i++) {
y[i] = alpha*x[i] + y[i];
}
Run Code Online (Sandbox Code Playgroud)
当然内核中的for循环不是必需的吗?你可以y[i0] = alpha*x[i0] + y[i0]
完全删除for循环.
我只是好奇为什么它在那里以及它的目的是什么.这假设是内核调用,例如loop1<<<64,256>>>>
假设gridDim.x = 1