2014-04-13 39 views
1

我正在嘗試優化CUDA代碼。我換成表達CUDA fmaf函數

result = x*y+z

result = fmaf(x,y,z)

但是,它給出了一個錯誤 - CUDA錯誤:內核發射失敗(7):請求啓動了過多的資源

+0

我想知道CUDA編譯器是否會嘗試爲您自動執行這些優化,請參見[CUDA上的FMAD](http://choorucode.com/2012/05/12/fmad-on-cuda/ )。 – JackOLantern

+1

你有問題嗎? – talonmies

+0

在sm_1x平臺上,沒有硬件支持fmaf(),並且該功能是通過相當大的仿真代碼實現的。這會增加寄存器使用率,這可能會導致「資源不足」錯誤。 nvcc默認編譯一個sm_10目標。如果您的GPU實際上不是sm_1x設備,則建議使用適當的-arch標誌編譯代碼。 – njuffa

回答