【发布时间】:2012-10-28 11:48:45
【问题描述】:
我想在 cuda 中启动多个内核函数,因此我声明了两组单独的网格、块名称,并且每组的值不同。例如:
dim3 gridDim_1(val_1,1);
dim3 blockDim_1(val_2,val_3);
dim3 gridDim_2(val_4,1);
dim3 blockDim_2(val_5,val_6);
for(i=0;i<somenum;i++)
{
kernel_1<<<gridDim_1,blockDim_1>>>(agr1,arg2);
kernel_2<<<gridDim_2,blockDim_2>>>(agr3,arg4);
}
但是编译器抛出错误,说错误:gridDim_1 是未知的,并且对于块和网格的其他声明类似。那么我如何启动这两个具有不同名称的网格和块的内核呢?我需要在这里提一下,网格中的块数和块中的线程数以某种方式取决于用户输入。感谢您的帮助。
实际上主要代码真的很大,我也时不时地更改以消除错误。我只在我认为问题所在的地方发布其中的一部分:
int k,sim_step;
int counter_top,counter_bottom;
............
...................
for(k=0;k<=sim_step;k++)
{
dim3 gridDim(1,1);
dim3 blockDim(counter_top,1,1);
agent_movement_top<<<gridDim,blockDim>>>(args..) ;
dim3 gridDim(1,1);
dim3 blockDim(counter_bottom,1,1);
agent_movement_bot<<<gridDim,blockDim>>>(args...);
}
我得到的当前错误是: 错误 LNK2001:未解析的外部符号 _gridDim 错误 LNK2001:未解析的外部符号 _blockDim
【问题讨论】:
-
请贴出实际代码和实际错误信息。
-
嗨!我编辑了我的帖子并提供了有用的信息。整个代码很大,也分为功能。所以我只发了一部分。我也发布了错误。如果您需要我提供更多信息,请告诉我。谢谢
-
再次,请发布 实际 代码或其正确简化的版本,以说明问题。您发布的内容甚至无法编译,更不用说可能发生链接错误了。
-
感谢您的回复。我将发布原始代码。我正在做一些更改,完成后我将编辑我的原始帖子并提供实际代码。但这需要一段时间。请让我知道你是否可以。再次感谢您的所有帮助。
标签: cuda