【发布时间】:2012-10-23 03:26:54
【问题描述】:
我知道使用一维数组的时候动态分配,但是使用二维数组的时候怎么做呢?
myKernel<<<blocks, threads,sizeofSharedMemoryinBytes>>>();
....
__global__ void myKernerl(){
__shared__ float sData[][];
.....
}
假设我要分配一个二维共享内存数组:
__shared__ float sData[32][32];
如何动态完成?应该是:
myKernel<<< blocks, threads, sizeof(float)*32*32 >>>();
【问题讨论】:
-
您静态声明的“2D 共享内存数组”不是二维的,它只是线性内存,编译器会生成对它的行优先顺序访问。根据您对多维数组的无数疑问,也许是时候坐下来阅读一些参考资料并了解数组在 C++ 中的工作原理了。..