2
我期待到CUDA頭文件cuda/6.5.14/RHEL6.x/include/math_functions_dbl_ptx1.h
和看到每一個算術函數,接受double
參數鑄就成float
:CUDA是否靜靜地向下翻兩倍以浮動?
static __forceinline__ double fabs(double a)
{
return (double)fabsf((float)a);
}
...
static __forceinline__ double floor(double a)
{
return (double)floorf((float)a);
}
因爲我依靠的重要途徑上雙精度浮點(有相當代碼中幾乎沒有潛在的災難性取消)我相信自己的眼睛有一些麻煩。
你能解釋一下這裏發生了什麼嗎?
當您在Visual Studio中創建.cu文件時,我認爲它默認設置計算功能1.0。我看到很多其他人將來會遇到這個問題。 –
無論「這個問題」是什麼,我幾乎看不到這個問題將來沒有人在將來。 CUDA 7的CUDA工具鏈以及所有未來的CUDA版本中已經刪除了這種降級功能。默認計算能力[因CUDA工具包版本而異](http://stackoverflow.com/questions/28932864/cuda-compute-capability-requirements)以及CUDA 7及更高版本不設置默認值1.0。 –
即使在CUDA 6.5中,'nvcc'的* default *目標架構是sm_20。如果我正確地記得,使用sm_1x作爲默認目標架構的CUDA的最後一個版本是兩年前發佈的CUDA 6.0。因此,我同意Robert Crovella所說的雙重降級降級應該不會成爲問題,因爲在CUDA 7.0中完全刪除了功能和文件,而且大多數sm_1x GPU已經被停用/報廢了。 – njuffa