看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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