by this Nvidia是什么意思?
Ns
的类型为size_t
,并指定共享的字节数 为此调用每个块动态分配的内存 除了静态分配的内存;这是动态的 分配的内存由声明为的任何变量使用__shared__
中提到的外部数组;Ns
是可选的 默认为0的参数;
GPU中共享内存的大小为48kB。 例如,我想同时运行4个内核,每个内核使用12kB的共享内存。
为了做到这一点,我应该这样叫kernek
kernel<<< gridSize, blockSize, 12 * 1024 >>>();
或第三个参数应该是48 * 1024?
答案 0 :(得分:1)
大小以字节为单位的Ns。如果您想保留12kB
共享内存,请执行12*1024*1024
。
我怀疑你想要这样做。 Ns值为PER BLOCK
。因此,它是在设备上执行的每个块的共享内存量。我猜你想做一些围绕12*1024*1024/number_of_blocks;
内核启动并发: 如果在评论中提到,您正在使用流,则在内核启动中有第四个输入,即cuda流。
如果要在没有任何共享内存的情况下在另一个流上启动内核,它将如下所示:
kernel_name<<<128, 128, 0, mystream>>>(...);
但并发性是一个完全不同的问题。