Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CUDA中获取浮点特殊值的方法?_Cuda_Floating Point_Nvidia_Nan - Fatal编程技术网

在CUDA中获取浮点特殊值的方法?

在CUDA中获取浮点特殊值的方法?,cuda,floating-point,nvidia,nan,Cuda,Floating Point,Nvidia,Nan,CUDA中是否有任何设备函数可以获得IEEE 754特殊值,如inf、NaN?我指的是稳定的方法,而不是一些可以由编译器优化的数学运算 我只找到一个名为nan()的设备函数,该函数必须具有一些未知的字符串参数。在/usr/local/cuda/include/math\u constants.h中定义的CUDART\u nan和CUDART\u nan\u F(float)如何: #define CUDART_NAN_F __int_as_float(0x7fffffff)

CUDA中是否有任何设备函数可以获得IEEE 754特殊值,如inf、NaN?我指的是稳定的方法,而不是一些可以由编译器优化的数学运算


我只找到一个名为nan()的设备函数,该函数必须具有一些未知的字符串参数。

/usr/local/cuda/include/math\u constants.h
中定义的
CUDART\u nan
CUDART\u nan\u F
(float)如何:

#define CUDART_NAN_F            __int_as_float(0x7fffffff)
#define CUDART_NAN              __longlong_as_double(0xfff8000000000000ULL)
以及:


CUDA现在在数学图书馆有nanf指令

设备浮点nanf(常量字符*tagp)

CUDA中的nan()函数是ISO C99标准指定的nan()函数。我相信同样的函数现在是C++11的一部分。请注意,这个标准数学函数的双精度版本将比使用Robert指出的解决方案慢得多,因为它需要解析字符串参数来构造NaN的数值。单精度版本nanf()速度非常快,因为NVIDIA GPU只支持一个规范的单精度NaN,所以函数返回的就是这个。
#define CUDART_INF_F            __int_as_float(0x7f800000)
#define CUDART_INF              __longlong_as_double(0x7ff0000000000000ULL)
Returns "NaN"