作者LouisXIV (一個人寂寞 兩個人麻煩)
看板C_and_CPP
標題Re: [問題] CUDA 觀念及 矩陣相乘程式問題
時間Thu Jul 26 16:48:26 2012
※ 引述《ofd168 (大色狼來襲)》之銘言:
: 書上是說
: cudaThreadSynchronize() 是用來 實現GPU和CPU的同步,利用此函式可以確認
: 所有的裝置端執行緒已運行結束
: 這是啥意思? 這不是意思是 會等CUDA的kernel執行完?
: 以及cudaStreamSynchronize()和cudaEventSynchronize()
: 這3個函數的作用和之間的差別是啥呢
: 這三個都有看過有人用 除了知道是同步用 但會拖累效能以外 真的不是很懂
: : 這個我也不知道 QQ
: 這書上忽然拿出來用 後面又不用 搞不是很懂Orz
你的需求應該是利用
A) CUDA 3.0- (應該是沒記錯)
1. cudaMemcpy2DAsync()
2. do something on CPU to waiting that
3. cudaThreadSynchronize();
B) 既然你提到 Stream
利用 Stream 管理順序,可以把 Stream 想成 Queue
memcpy, kernel 想成 commands to graphics card.
Event的部分 我沒有實際用過,我大致看了一下 應該是像 OS中 lock/release signal
之類的東西。
至於 Warp, block, grid 的部分 你應該這麼想
Warp 是因為 nvidia的 implementation 才出現的
block/grid 是 CUDA語言的規範出現的
SP/SM 這部分 基本上不太會影響你寫的code 在座optimize的時候 才會開始考慮,
但是 access pattern 引想應該會比這個更優先處理!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.119
※ 編輯: LouisXIV 來自: 140.114.78.119 (07/26 16:52)
推 bill42362:推真的高手出現了!! 07/26 19:00
推 ofd168:謝謝!! 07/26 19:50