【发布时间】:2013-07-03 16:17:23
【问题描述】:
我必须在运行时在共享内存中分配 2 个不同长度的数组,如下所示:
__global__ kernel()
{
__shared__ int A[blockDim.x*6];
__shared__ int B[8][blockDim.x*3];
}
如何确保在启动像kernel <<<b,t,s>>> 这样的内核时,两者的长度不同?
【问题讨论】:
-
您显示的代码是非法的,甚至无法编译。您能否向我们展示一个真实的、可编译的示例来说明您的问题?
-
您的编辑仍然没有使代码合法。
blockDim不能以您尝试的方式使用。 CUDA 支持动态共享内存分配(请参阅here),但不是您尝试的方式 -
我知道这是不可编译的。不幸的是,我不知道有什么方法可以实现我想要的。
-
我需要将一维数组 A 的大小设置为 blockDim.x*6,将二维数组 B 的宽度设置为长度固定的 blockDim.x*3 (8)。 >> 中的第三个参数适用于所有用 extern static 声明的数组。但我需要将 2 个不同的值设置为 2 个不同数组的大小(一个 1D 和一个 2D)。
-
请添加您想要做的作为问题的编辑。
标签: cuda