我运行了一些更新浮点数组的 CUDA 代码。我有一个包装函数,如如何编译 CUDA 代码然后将其链接到 C++ 项目?这个问题。
在我的 CUDA 函数中,我创建了一个像这样的 for 循环......
int tid = threadIdx.x;
for(int i=0;i<X;i++)
{
//code here
}
现在的问题是,如果 X 等于 100 的值,一切正常,但如果 X 等于 1000000,我的向量没有得到更新(几乎就像 for 循环内的代码没有被执行)
现在在包装函数内部,如果我在 for 循环中调用 CUDA 函数,它仍然可以正常工作,(但由于某种原因,比我简单地在 CPU 上执行相同的过程要慢得多)像这样......
for(int i=0;i<1000000;i++)
{
update<<<NumObjects,1>>>(dev_a, NumObjects);
}
有谁知道为什么我可以在包装函数中循环一百万次,而不是简单地调用一次 CUDA“更新”函数,然后在该函数内部启动一百万的 for 循环?