【CUDA問題】在一臺機器上編譯生成的GPU程序,在另一臺上運行結果不正確

問題:兩臺Windows計算機,在一臺機器上編譯生成的GPU程序,在另一臺上運行結果不正確。

分析:打開程序中輸出日誌的功能,發現運行第一個核函數就提示:invalid device function。檢查覈函數編寫並沒有問題。最後發現項目制定的計算能力集是“compute_37,sm_37”,第一臺機器上的P100的計算能力集達到6.0,兼容3.7,所以可以正常運行。而另一臺上的GT730的計算能力集是3.5,不兼容3.7,所以會提示錯誤且不能正確運行。

解決:將項目的計算能力集修改爲3.5或者更低。

注:另外,我發現GT730在運行3.7的程序時,有時也不會報錯,但運行結果不正確。將項目的計算能力集改爲“compute_37,sm_37;compute_35,sm_35”時,程序的運行結果可能仍然不正確,這時候需要將計算能力集只設置爲“compute_35,sm_35”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章