作者mself (mself)
看板VideoCard
标题Re: [请益] 请问 CUDA 每个 block 可使用多少 shar …
时间Thu Jun 3 00:04:06 2010
※ 引述《jk21234 ( 1569 11 /47)》之铭言:
: ※ 引述《mself (mself)》之铭言:
: : NVIDIA 一张显卡上有 1~20 个 stream multiprocessor (SM),视显卡型号而异
: : 每个 SM 有 16KB 大小的 shared memory
: : 一份 CUDA 程式,
: : 假设会产生了 1024 个 blocks,每个 block 有 128 threads
: : 因为不知道(或不能预期)显卡 SM 的个数
: : 也不知道几个 block 会被配置给一个 SM
: : coding 的时候,要怎麽知道
: : kernel 里可以宣告多少 shared memory 来用呢?
: : 感谢各位
: SM跟Block一对一 一个是硬体性质一个是软体定义
: 所以每个SM/Block能用的Shared memory都一样是16KB.
: 放1024个block在比如说16个SM的晶片会怎样?轮流进去执行啊.....
: 类似你在单一一颗cpu上多工,要context switch.
就我了解,SM 跟 block 有对应,但好像不是 1 对 1,
数个 block 会一起在一个 SM 上轮流执行,
视 register 用量,以及 thread 数上限而定
假设现在是 8 个 block 在 1 个 SM 上轮流执行
是不是每个 block 只能有 2 KB shared memory 呢?
还是说每个 block 都能用满 16 KB,但不是正在执行的 block
的 shared memory (context) 会 switch 到 global memory
要执行时在 switch 回来呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.67.104.65
※ 编辑: mself 来自: 203.67.104.65 (06/03 00:04)