【发布时间】:2015-07-20 09:43:32
【问题描述】:
我有一个 1d int 数组,我想并行化 2 个 for 循环。
void foo(int *array, int width, int height) {
for (i = 0 ; i < height ; i++) {
for (j = 0 ; j < width ; j++) {
/* do smth */
}
}
}
这是将其“转换”为 Cuda 的正确方法吗?
__global__ void foo(int *array, int width, int height) {
unsigned int i = blockIdx.y*blockDim.y + threadIdx.y;
unsigned int j = blockIdx.x*blockDim.x + threadIdx.x;
if (i < height && j < width) {
/* do smth */
}
}
另外,我应该如何从 main 调用内核 foo?
【问题讨论】:
-
互联网上充斥着关于 CUDA 的免费介绍和教程信息。这个问题可以通过阅读一些内容来轻松回答。