2014-02-26 34 views
0

我有一個混合圖形筆記本電腦,我正在使用Windows 7,我打算運行一個C++代碼,其中還包含cuda,當GPU輪到啓動時,我的nvidia GPU需要幾秒鐘剛剛啓動,再次我猜它需要幾秒鐘才能預熱,有沒有什麼辦法可以在運行代碼之後啓動GPU(例如,在第一行main()函數中)?混合圖形CUDA開始

謝謝先進。

+0

大部分預熱問題是因爲GPU需要使用CPU設置上下文。更多關於CUDA上下文設置 - http://stackoverflow.com/questions/10415204/how-to-create-a-cuda-context – Divakar

+1

這種「熱身」延遲主要是由於將CUDA DLL加載到內存中。這就是爲什麼Robert建議在程序生命早期調用cudaFree(0) - 強制在程序啓動時加載大型CUDA dll。 – Paul

回答

1

嘗試把一個:

cudaSetDevice(0); 

爲您main功能的第一道防線。或者你也可以嘗試使用:

cudaFree(0); 
3

我建議一個更好的選擇。既然您使用的是Windows,那麼您是否考慮過迫使程序從NVIDIA GPU開始?如果使用的是NVIDIA的Optimus(不切換顯卡的物理開關一臺筆記本電腦)試試這個:

右鍵點擊使用CUDA程序,在右鍵菜單中,有一個名爲"Run with graphics processor"一個選項,下有選擇"High-performance NVIDIA processor" 。 請注意,如果您使用Visual Studio,則可以使用此方法啓動Visual Studio。這樣,您的非CUDA卡將不會顯示在程序中:-)

根據我的經驗,如果您嘗試執行CUDA/OpenGL互操作,如果沒有此方法,您將遇到問題。有時OpenGL上下文是爲您的非NVIDIA卡創建的,而CUDA上下文是在NVIDIA卡上創建的,導致奇怪的錯誤。