这段代码来自一本名为cuda的书
#include "../common/book.h"
#define N (33 * 1024)
__global__ void add( int *a, int *b, int *c ) {
int tid = threadIdx.x + blockIdx.x * blockDim.x;
while (tid < N) {
c[tid] = a[tid] + b[tid];
tid += blockDim.x * gridDim.x;
}
}
.
.
.
add<<<128,128>>>( dev_a, dev_b, dev_c );
Run Code Online (Sandbox Code Playgroud)
33*1024 = 33792
128*128 = 16384
33792> 16384
那么,在这种情况下,我是否可以增加每个块的线程数来运行?
注意while循环体中的第二个命令,即tid += blockDim.x * gridDim.x;.它甚至可以用于比16384更大的阵列.
ID为0的
线程对位置0,16384,32768中的数组项进行求和.... ID为1的线程对位置1,16385,32769中的数组项进行求和,...
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |