Notebook上跑CUDA程式

最近購入新NB為了方便攜帶, 順便寫CUDA程式..只是似乎是麻煩的開始!

先PO一下Notebook的環境
OS:win 7 (64 bit)
VGA:內建(intel)與獨顯(NV GT 540M)
安裝環境:VS 2008  professional , CUDA Computing Toolkit 4.0(64 bit), CUDA Computing SDK 4.0(64 bit), CUDA_Wizard_w64_2.0.0

當CUDA環境弄好之後,我開始試著去跑一些sample code,不過似乎與結果都不相同
以下是其中一個,如網址的code: http://llpanorama.wordpress.com/2008/05/21/my-first-cuda-program/
結果如下圖,與預期結果不同:

![](upload://agZynLZSq2hy3FIqO0L3mhb9U33.png)


或是http://codepad.org/RrkeOtNd,沒有顯示Hello CUDA..,結果如下:
![](upload://7fQANwc6oz3vPeeSUlKfeKx37Pc.png)

我原本猜測是不是因為notebook有optimus技術的關係,都只使用到內顯去跑??
之後我跑了SDK內的deviceQuery這個project,從圖來看應是有使用到獨顯,結果如下圖:

![](upload://zLhg2vjWStjkiNMcv00cxkC4CXW.png)


目前主要問題是CUDA的code都可以正常compile,但結果都不正確..
而上面那些code我拿到桌機跑都可以正常執行。

桌機環境

OS:win XP (32 bit)
VGA:NV 8500GT
安裝環境:VS 2008 professional , CUDA Computing Toolkit 4.0(32 bit), CUDA Computing SDK 4.0(32 bit), CUDA_Wizard_w32_2.0.0

小弟在這個地方摸索了好久,還是不得其解為什麼NB上無法跑出正常結果..
不知道有沒有大大有使用notebook跑CUDA的呢?誠心請教。

slogan40801.8606365741

可以跑SDK裡面的程式,代表顯卡可以工作。


你說的optimus的問題,確實是個issue,但是在windows應該不會發生,不過在linux環境下是會發生的沒錯。

依照你的描述,桌機跟筆電的環境差異是一個是32bit,另一個是64bit。

想請問一下,您在筆電執行的程式應該是從筆電的vs2008編譯的,是嗎?
  1. 編譯的時候,是選擇32bit還是64bit呢?
  2. 加上「cutilCheckError()」就可以測試CUDA程式在執行的時候是否有正常呼叫。


我覺得我也有遇過類似的問題。我當時遇到的問題是使用cuFFT計算的時候,用GT240m跟GTX580會算出不同的結果,但是程式跑出來都依樣,沒有額外顯示錯誤訊息。直到使用「CUFFT_INTERNAL_ERROR」,把錯誤訊息拉出來看之後,才看到部分cuFFT的程式行執行有錯誤。不過這個問題在更新CUDA Toolkit的版本為4.0後,竟神奇地消失了。(應該是CUDA Toolkit Driver的問題吧…!)

(我還是個CUDA新手,如有說錯請見諒)

To: <span =“bold”>Benjamin

   1. 是的,從nb上的vs2008 compile ,有選擇64bit.
   2. 請問cutilCheckError() 該如何用呢? google到只有跟時間相關的用法

經過CUT_CHECK_ERROR, cudaGetLastError測試都顯示"invalid device function"
後來在某大陸網站上發現可能原因是cuda wizard版本問題,改安裝最新版CUDA wizard後即正常。

恭喜問題解決。


關於CUDA VS Wizard,
我的經驗是我在使用VS2008的時候,是用「開勇」大哥的CUDA VS Wizard來做初始的CUDA程式模板。
後來用VS2010寫的時候,我就用SDK裡面的範例程式來當模板,也相當好用,就只以要把「C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\src」裡面的目錄如「vectorAdd」,copy到另一個資料夾內,再用VS開啟,就可以編寫程式並順利編譯了。