相关疑难解决方法(0)

对两个不同的向量使用动态共享内存分配

在内核函数中,我想要两个共享内存向量,两者都有size长度(实际上sizeof(float)*size).

因为如果需要变量就无法直接在内核函数中分配内存,我必须动态分配它,如:

    myKernel<<<numBlocks, numThreads, 2*sizeof(float)*size>>> (...);  
Run Code Online (Sandbox Code Playgroud)

并且,在内核中:

extern __shared__ float row[];
extern __shared__ float results[];    
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.

取而代之的是,我只extern __shared__ float rowresults[]使用2*size分配的内存制作了一个包含所有数据的向量.所以row通话仍然是一样的,results通话也是如此rowresults[size+previousIndex].这确实有效.

这不是一个大问题,因为无论如何我得到了我期望的结果,但有没有办法将我动态分配的共享内存分成两个(或更多)不同的变量?只是为了美丽.

cuda

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

cuda ×1