在CUDA中动态分配共享内存。执行配置

时间:2015-02-25 19:27:14

标签: cuda shared-memory

by this Nvidia是什么意思?

  

Ns的类型为size_t,并指定共享的字节数   为此调用每个块动态分配的内存   除了静态分配的内存;这是动态的   分配的内存由声明为的任何变量使用   __shared__中提到的外部数组; Ns是可选的   默认为0的参数;

GPU中共享内存的大小为48kB。 例如,我想同时运行4个内核,每个内核使用12kB的共享内存。

为了做到这一点,我应该这样叫kernek

kernel<<< gridSize, blockSize, 12 * 1024 >>>();

或第三个参数应该是48 * 1024?

1 个答案:

答案 0 :(得分:1)

大小以字节为单位的Ns。如果您想保留12kB共享内存,请执行12*1024*1024

我怀疑你想要这样做。 Ns值为PER BLOCK。因此,它是在设备上执行的每个块的共享内存量。我猜你想做一些围绕12*1024*1024/number_of_blocks;

的事情

内核启动并发: 如果在评论中提到,您正在使用流,则在内核启动中有第四个输入,即cuda流。

如果要在没有任何共享内存的情况下在另一个流上启动内核,它将如下所示:

kernel_name<<<128, 128, 0, mystream>>>(...);

但并发性是一个完全不同的问题。