2009-12-22 124 views
2

我有一臺CUDA應用程序,在一臺計算機上(使用GTX 275)可以​​正常工作,另一臺使用GeForce 8400,工作速度大約慢100倍。我的懷疑是有某種回退讓代碼實際上在CPU上運行,而不是在GPU上運行。CUDA回退到CPU?

有沒有一種方法可以確保代碼在GPU上運行?
此回退是否記錄在某處?
什麼情況可能觸發它?

編輯:代碼編譯與計算能力1.1什麼8400有。

回答

2

這有很多可能的原因。

  1. 大概你不使用仿真設備。你可以從SDK運行設備查詢示例嗎?這將顯示您是否正確安裝了工具包和驅動程序。

    您還可以從您的應用程序中查詢設備屬性,以檢查您連接的設備。

  2. 8400的性能比GTX275低得多,所以它可能是真實的,但看到下一點。

  3. 從計算能力1.1到1.2及以後的主要變化之一是內存訪問的處理方式。在1.1中,你必須非常小心,不僅要合併你的內存訪問,而且還要確保每個半變形都是對齊的,否則每個線程將發出它自己的32字節事務。在1.2及以後,協調並不是一個問題,因爲它會優雅地降低交易量。

    這與8400的較低性能相結合,也可以解釋您所看到的內容。

1

如果我沒有記錯,您可以從主機代碼列出所有可用的設備(並選擇用於您的內核的設備)。您可以嘗試確定可用設備是否是軟件仿真併發出警告。

7

難道這不就是因爲性能上的差距很大。 This鏈接指示8400在22-62GFlops上操作,並且該link指示GTX 275在1010.88 GFlops上操作。

+0

哇....這是_some_差距 – Javier 2009-12-22 14:16:50