作者v00623 (阿哩他命EX PLUS)
看板C_and_CPP
标题[问题] CUDA 使用stream後的thread block分配
时间Thu Apr 20 18:00:36 2017
各位好 目前在学习stream与SM内的thread block分配关系
使用的工具是GPGPU-Sim
目前手边只有一支使用stream的范例
是CUDA SDK附的范例 "concurrentKernels"
范例完整程式码网址↓
https://goo.gl/LcgfPV
其实我主要想问的是 如何将多个kernel 放到同个SM执行
请各位前辈指教~
------------------以下原文------------------
以下是我的一些观察:
1.
这个范例有八个同样的kernel 每个kernel各一个block
每个kernel放进一个stream丢到device执行
根据输出的讯息 每个SM负责一个kernel的一个thread block
所以总共八个SM在动作
2.
後来我把每个kernel改成两个block 也是放进不同的stream
变成两个SM负责一个kernel
各分配一个thread block
3.
再来我把两个kernel放进同个stream 每个kernel一个block
原本预想两个block都会分到同个SM
不过看输出好像变成序列执行 也就是执行完kernel 1 後才执行kernel 2
目前对於stream的概念还不太熟悉
请问该如何达到多个kernel的block在同个SM中执行呢?
这在cuda有办法完成吗 还是说必须要改模拟器?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.118.155.204
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1492682442.A.4EE.html
1F:→ opl164: 如果要多个kernel同时执行的话 好像要放到不同的stream才 04/22 02:12
2F:→ opl164: 行@@ 04/22 02:12
3F:→ v00623: 恩恩 范例程式就是使用多个stream, 不过我要的是 多个kern 04/22 18:40
4F:→ v00623: el的block在同个SM执行 04/22 18:40
※ 编辑: v00623 (175.183.71.1), 04/23/2017 14:12:30