2009年11月30日 星期一

如何了解__syncthread()的使用時機:試誤法

在使用CUDA shared memory常會使用__syncthread()來避免資料不同步處理造成的破壞。問題是一般人無法判定何時會產生這個問題,所以會先加以做為保險。

可是加了之後確實會影響執行速度,Bee這邊測到的就差了四倍多。
所以要適當加入__syncthread()才是合理。

剛好之前bee使用CPU及GPU同時開發程式的方法,因為一邊為single-thread另一個為multi-thread,所以可以保證single-thread是正確的。剛好可以比對結果。

若是不加__syncthread()會使結果比對產生錯誤,那就要加。沒有錯誤就照CPU版本的直接移入GPU版本。

這種情況玩個幾次,基本上就可以知道何時要加,何時不要加。


1 則留言:

  1. 要等下一代nvidia 顯示卡內建那個函數....

    [版主回覆05/04/2010 09:22:04]這個函式在CUDA2.0就有了,不用等到下一代。

    只是從單核轉換到多核時,感覺還沒有抓到前,提供一個可以驗證的方法。

    回覆刪除