[問題] CUDA不同block有辦法共享資料嗎?
剛開始學cuda 最近在寫一些基本的矩陣乘法
之前有利用過shared memory來寫tiling版本的乘法
最近看到書上有提到另一種加速法
就是利用rectangular tiles
假設矩陣乘法是M*N=P
其中block A需要利用到N1和M1
block B需要利用N2和M1
因為都需要利用到M1
所以我想讓A來load資料就好
B直接利用A所load的資料
但問題是cuda的shared memory只能在相同block的threads共享
請問有辦法可以讓不同block之間分享資料嗎?
或是有什麼其他可行的方法可以做到rectangular tiles
------------------------------------------------
此外這種方法看起來好像不會比較快吧
因為B要做計算還是需要等A LOAD完
感覺只是把overhead降低 並沒有把速度提升
不知道我有沒有想錯
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.123.42
※ 編輯: e40614 來自: 140.113.123.42 (11/28 18:41)
→
11/28 19:30, , 1F
11/28 19:30, 1F
→
11/28 19:31, , 2F
11/28 19:31, 2F
→
11/28 19:32, , 3F
11/28 19:32, 3F
→
12/01 18:24, , 4F
12/01 18:24, 4F
→
12/01 18:25, , 5F
12/01 18:25, 5F
→
12/01 18:27, , 6F
12/01 18:27, 6F
→
12/01 19:07, , 7F
12/01 19:07, 7F
請問Feis大
你的意思是說把原本2個block的事,放在同一個Block執行?
這樣不會造成平行度降低 反而更慢嗎?
※ 編輯: e40614 來自: 140.113.123.42 (12/03 03:34)
→
12/03 11:08, , 8F
12/03 11:08, 8F
→
12/03 11:08, , 9F
12/03 11:08, 9F
→
12/03 11:10, , 10F
12/03 11:10, 10F