我想了解使用CUDA定時器(事件)的定時內核執行與常規CPU定時方法(Linux上的gettimeofday
等)之間的區別。CUDA計時器 - CPU與GPU?
從閱讀http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/第8.1節看來,唯一真正的區別是,當使用CPU定時器時,需要記住同步GPU,因爲調用是異步的。據推測,CUDA事件API會爲你做這件事。
所以這是真的的問題:
- 隨着你並不需要顯式調用
cudaDeviceSynchronize
- 隨着GPU的事件你會得到一個固有的平臺無關的時機API的GPU事件,而與CPU您需要根據操作系統使用單獨的API
?
在此先感謝
一般來說,我同意你的回答,我同意OP的概念基本正確。但我不確定我是否同意這一說法:「而cuda計時器事件只依賴於GPU代碼」。至少在Linux上,我可以將cuda定時器事件封裝在純粹爲主機代碼的代碼中(除了cudaEvents定時機制外,我的程序中甚至不需要任何CUDA),並且它似乎準確定位了主機代碼的持續時間,從我可以告訴。因此,在我看來,cudaEvents將用於超時的CPU和GPU代碼。 –
好點。似乎你不是唯一一個被發現是真實的人。看到相關的SO問題[這裏](http://stackoverflow.com/a/5846331/832648)。 – Justin