CUDAにinf、NaNなどのIEEE 754特殊値を得るためのデバイス関数はありますか?私は安定した方法を意味し、コンパイラによって最適化できる数学演算ではありません。CUDAで浮動小数点特殊値を取得する方法は?
nan()というデバイス関数を見つけることができます。この関数は、未知の文字列引数を取る必要があります。
CUDAにinf、NaNなどのIEEE 754特殊値を得るためのデバイス関数はありますか?私は安定した方法を意味し、コンパイラによって最適化できる数学演算ではありません。CUDAで浮動小数点特殊値を取得する方法は?
nan()というデバイス関数を見つけることができます。この関数は、未知の文字列引数を取る必要があります。
どう/usr/local/cuda/include/math_constants.h
で定義されている程度(ダブル)CUDART_NAN
とCUDART_NAN_F
(フロート):
#define CUDART_NAN_F __int_as_float(0x7fffffff)
#define CUDART_NAN __longlong_as_double(0xfff8000000000000ULL)
と:
#define CUDART_INF_F __int_as_float(0x7f800000)
#define CUDART_INF __longlong_as_double(0x7ff0000000000000ULL)
CUDAは現在、数学ライブラリでnanf命令を持っています。
デバイスフロートnanf(定数文字* TAGP)
Returns "NaN"
多くのおかげで、私が探しています正確に何のthats。 – user0002128
CUDAで見つかったnan()関数は、ISO C99標準で指定されているnan()関数です。私は同じ機能がC++ 11の一部になったと信じています。この標準的な数学関数の倍精度バージョンは、NaNの数値を構成するために文字列引数を解析する必要があるため、Robertが指摘したソリューションを使用するよりもかなり遅くなることに注意してください。単精度バージョンnanf()は非常に高速です。なぜなら、NVIDIA GPUは1つの標準単精度NaNしかサポートしないため、関数が返すものです。 – njuffa