【发布时间】:2013-03-15 14:58:50
【问题描述】:
在内核函数中,我想要两个共享内存向量,长度均为size(实际上是sizeof(float)*size)。
如果需要变量,由于无法直接在内核函数中分配内存,所以我不得不动态分配它,例如:
myKernel<<<numBlocks, numThreads, 2*sizeof(float)*size>>> (...);
并且,在内核内部:
extern __shared__ float row[];
extern __shared__ float results[];
但是,这行不通。
我使用分配的2*size 内存只创建了一个包含所有数据的向量extern __shared__ float rowresults[]。所以row 调用还是一样的,results 调用就像rowresults[size+previousIndex]。这确实有效。
这不是一个大问题,因为无论如何我都得到了预期的结果,但是有没有办法将我动态分配的共享内存分成两个(或更多)不同的变量?只为美丽。
【问题讨论】:
标签: cuda