我不明白 Cuda 中是否存在函数重载。我想在以下两个函数上解释我的问题,我希望能够在 GPU 和 CPU 上都使用它们,并且我不在乎精度:
__host__ __device__
float myabs( float v ) {
return abs( v + 1 ); //I want the floating point absolute value
}
__host__ __device__
float mycos( float v ) {
return 2.f*cos( v );
}
abs
分别是哪个函数cos
我应该打电话,为什么?std::abs
/abs
/fabs
/fabsf
/anythingelse
std::cos
/cos
/cosf
/__cosf
/anythingelse
(由于__cosf
是 Cuda-intrinsic 和std::abs
/std::cos
在 Cuda 中不可用,我假设我必须在我的函数中使用预处理器指令来进行这些选择。)
我应该包括哪些标题?
前两个问题的答案是否取决于我是否使用快速数学标志(例如
-ffast-math
)进行编译。
如果这对答案很重要,我将在Ubuntu 18.04.4下使用nvcc 10.2进行编译。,但我对独立于平台的答案很感兴趣。