作者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/m.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