正常CUDA程序:Can cudaDeviceSynchronize是否可以縮短記憶時間?
- 從主機分配內存空間,CUDA設備
- 存儲器複製到設備
- 調用內核
- 存儲器複製設備到主機
- ...等
所以如果我測量主機到設備時間
time = clock();
2. mem host to device;
cudaDeviceSynchronize;
time = clock() - time ;
在我的情況下,我會得到0.1秒的值。但是我的PCI總線速度實際上是24GB/s,假設產生1000倍小的時間值,所以我假定0.1秒是用於激活PCI總線的時間。
所以我試着循環1000次的主機到設備時間,第一次顯示0.1s,剩下的時間只有0.000秒(不能超過毫秒),而總計1000循環的時間僅爲0.12s。
所以我必須保持我的設備PCI總線激活,以減少主機到設備的時間。我嘗試使用cudaDeviceSynchronize如下所示:
cudaDeviceSynchronize; //---to keep PCI bus activate
time = clock();
2. mem host to device;
cudaDeviceSynchronize;
time = clock() - time ;
和我得到的時間是0.000s,其花費在主機到設備的時間被最小化。那是對的嗎?是0.1s =「激活」PCI總線的時間?
0.1s可能是CUDA的初始化時間。 –