我有一臺CUDA應用程序,在一臺計算機上(使用GTX 275)可以正常工作,另一臺使用GeForce 8400,工作速度大約慢100倍。我的懷疑是有某種回退讓代碼實際上在CPU上運行,而不是在GPU上運行。CUDA回退到CPU?
有沒有一種方法可以確保代碼在GPU上運行?
此回退是否記錄在某處?
什麼情況可能觸發它?
編輯:代碼編譯與計算能力1.1什麼8400有。
我有一臺CUDA應用程序,在一臺計算機上(使用GTX 275)可以正常工作,另一臺使用GeForce 8400,工作速度大約慢100倍。我的懷疑是有某種回退讓代碼實際上在CPU上運行,而不是在GPU上運行。CUDA回退到CPU?
有沒有一種方法可以確保代碼在GPU上運行?
此回退是否記錄在某處?
什麼情況可能觸發它?
編輯:代碼編譯與計算能力1.1什麼8400有。
這有很多可能的原因。
大概你不使用仿真設備。你可以從SDK運行設備查詢示例嗎?這將顯示您是否正確安裝了工具包和驅動程序。
您還可以從您的應用程序中查詢設備屬性,以檢查您連接的設備。
8400的性能比GTX275低得多,所以它可能是真實的,但看到下一點。
從計算能力1.1到1.2及以後的主要變化之一是內存訪問的處理方式。在1.1中,你必須非常小心,不僅要合併你的內存訪問,而且還要確保每個半變形都是對齊的,否則每個線程將發出它自己的32字節事務。在1.2及以後,協調並不是一個問題,因爲它會優雅地降低交易量。
這與8400的較低性能相結合,也可以解釋您所看到的內容。
如果我沒有記錯,您可以從主機代碼列出所有可用的設備(並選擇用於您的內核的設備)。您可以嘗試確定可用設備是否是軟件仿真併發出警告。
哇....這是_some_差距 – Javier 2009-12-22 14:16:50