嘿,我在一个网站上看到了这个示例内核
__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];
}
}
在C语言中计算此函数
for(i=0;i<N;i++) {
y[i] = alpha*x[i] + y[i];
}
内核中的for循环是否必要?您可以只执行y[i0] = alpha*x[i0] + y[i0]
并完全删除for循环。
我只是好奇它为什么存在以及它的目的是什么。这是假设内核调用类似于loop1<<<64,256>>>>
,因此可能gridDim.x = 1