这是cuda的第一个并行代码示例。
谁能描述一下内核调用:<<< N, 1 >>>
这是重要的代码:
#define N 10
__global__ void add( int *a, int *b, int *c ) {
int tid = blockIdx.x; // this thread handles the data at its thread id
if (tid < N)
c[tid] = a[tid] + b[tid];
}
int main( void ) {
int a[N], b[N], c[N];
int *dev_a, *dev_b, *dev_c;
// allocate the memory on the GPU
// fill the arrays 'a' and 'b' on the CPU
// copy the arrays 'a' and 'b' to the GPU
add<<<N,1>>>( dev_a, dev_b, dev_c );
// copy the array 'c' back from the GPU to the CPU
// display the results
// free the memory allocated on the GPU
return 0;
}
为什么它使用<<< N , 1 >>>
它意味着我们在每个块中使用了 N 个块和 1 个线程?因为我们可以写这个<<< 1 , N >>>
并在这个块中使用 1 个块和 N 个线程来进行更多优化。