/usr/local/lib64/python3.6/site-packages/torch/include/c10/util
NameSizeModeActions
accumulate.h42050644editdlrm
AlignOf.h48350644editdlrm
Array.h113540644editdlrm
ArrayRef.h90580644editdlrm
Backtrace.h3640644editdlrm
BFloat16-inl.h92220644editdlrm
BFloat16-math.h52170644editdlrm
BFloat16.h23720644editdlrm
Bitset.h34140644editdlrm
C++17.h133290644editdlrm
complex.h175420644editdlrm
complex_math.h109020644editdlrm
complex_utils.h9580644editdlrm
ConstexprCrc.h66330644editdlrm
copysign.h8660644editdlrm
DeadlockDetection.h19200644editdlrm
Deprecated.h35790644editdlrm
either.h64230644editdlrm
env.h8350644editdlrm
Exception.h247230644editdlrm
ExclusivelyOwned.h47590644editdlrm
Flags.h100560644editdlrm
flat_hash_map.h616550644editdlrm
FunctionRef.h23010644editdlrm
Half-inl.h86740644editdlrm
Half.h189650644editdlrm
hash.h50840644editdlrm
IdWrapper.h23480644editdlrm
intrusive_ptr.h355630644editdlrm
in_place.h3500644editdlrm
irange.h26790644editdlrm
LeftRight.h60160644editdlrm
llvmMathExtras.h291680644editdlrm
Logging.h112560644editdlrm
logging_is_google_glog.h20310644editdlrm
logging_is_not_google_glog.h82710644editdlrm
MathConstants.h8580644editdlrm
math_compat.h72960644editdlrm
MaybeOwned.h66890644editdlrm
Metaprogramming.h152880644editdlrm
numa.h6960644editdlrm
Optional.h355920644editdlrm
order_preserving_flat_hash_map.h654820644editdlrm
overloaded.h7090644editdlrm
python_stub.h560644editdlrm
qint8.h4720644editdlrm
qint32.h3190644editdlrm
quint4x2.h3660644editdlrm
quint8.h3200644editdlrm
Registry.h122420644editdlrm
reverse_iterator.h87960644editdlrm
ScopeExit.h13450644editdlrm
signal_handler.h31540644editdlrm
SmallBuffer.h12430644editdlrm
SmallVector.h344560644editdlrm
sparse_bitset.h265110644editdlrm
StringUtil.h45380644editdlrm
string_utils.h39890644editdlrm
string_view.h201890644editdlrm
tempfile.h60290644editdlrm
ThreadLocal.h38830644editdlrm
ThreadLocalDebugInfo.h26030644editdlrm
thread_name.h1480644editdlrm
Type.h6070644editdlrm
TypeCast.h69720644editdlrm
typeid.h187930644editdlrm
TypeIndex.h52510644editdlrm
TypeList.h169010644editdlrm
TypeTraits.h53680644editdlrm
Unicode.h2950644editdlrm
UniqueVoidPtr.h41170644editdlrm
Unroll.h6670644editdlrm
variant.h951820644editdlrm
win32-headers.h8580644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/c10/util/Half-inl.h (8674B)
#pragma once #include #include #include #ifdef __CUDACC__ #include #endif #ifdef __HIPCC__ #include #endif #ifdef __SYCL_DEVICE_ONLY__ #include #endif namespace c10 { /// Constructors inline C10_HOST_DEVICE Half::Half(float value) { #if defined(__CUDA_ARCH__) || defined(__HIP_DEVICE_COMPILE__) x = __half_as_short(__float2half(value)); #elif defined(__SYCL_DEVICE_ONLY__) x = sycl::bit_cast(sycl::half(value)); #else x = detail::fp16_ieee_from_fp32_value(value); #endif } /// Implicit conversions inline C10_HOST_DEVICE Half::operator float() const { #if defined(__CUDA_ARCH__) || defined(__HIP_DEVICE_COMPILE__) return __half2float(*reinterpret_cast(&x)); #elif defined(__SYCL_DEVICE_ONLY__) return float(sycl::bit_cast(x)); #else return detail::fp16_ieee_to_fp32_value(x); #endif } #if defined(__CUDACC__) || defined(__HIPCC__) inline C10_HOST_DEVICE Half::Half(const __half& value) { x = *reinterpret_cast(&value); } inline C10_HOST_DEVICE Half::operator __half() const { return *reinterpret_cast(&x); } #endif // CUDA intrinsics #if (defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 350)) || \ (defined(__clang__) && defined(__CUDA__)) inline __device__ Half __ldg(const Half* ptr) { return __ldg(reinterpret_cast(ptr)); } #endif /// Arithmetic inline C10_HOST_DEVICE Half operator+(const Half& a, const Half& b) { return static_cast(a) + static_cast(b); } inline C10_HOST_DEVICE Half operator-(const Half& a, const Half& b) { return static_cast(a) - static_cast(b); } inline C10_HOST_DEVICE Half operator*(const Half& a, const Half& b) { return static_cast(a) * static_cast(b); } inline C10_HOST_DEVICE Half operator/(const Half& a, const Half& b) __ubsan_ignore_float_divide_by_zero__ { return static_cast(a) / static_cast(b); } inline C10_HOST_DEVICE Half operator-(const Half& a) { #if (defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 530) || \ defined(__HIP_DEVICE_COMPILE__) return __hneg(a); #else return -static_cast(a); #endif } inline C10_HOST_DEVICE Half& operator+=(Half& a, const Half& b) { a = a + b; return a; } inline C10_HOST_DEVICE Half& operator-=(Half& a, const Half& b) { a = a - b; return a; } inline C10_HOST_DEVICE Half& operator*=(Half& a, const Half& b) { a = a * b; return a; } inline C10_HOST_DEVICE Half& operator/=(Half& a, const Half& b) { a = a / b; return a; } /// Arithmetic with floats inline C10_HOST_DEVICE float operator+(Half a, float b) { return static_cast(a) + b; } inline C10_HOST_DEVICE float operator-(Half a, float b) { return static_cast(a) - b; } inline C10_HOST_DEVICE float operator*(Half a, float b) { return static_cast(a) * b; } inline C10_HOST_DEVICE float operator/(Half a, float b) __ubsan_ignore_float_divide_by_zero__ { return static_cast(a) / b; } inline C10_HOST_DEVICE float operator+(float a, Half b) { return a + static_cast(b); } inline C10_HOST_DEVICE float operator-(float a, Half b) { return a - static_cast(b); } inline C10_HOST_DEVICE float operator*(float a, Half b) { return a * static_cast(b); } inline C10_HOST_DEVICE float operator/(float a, Half b) __ubsan_ignore_float_divide_by_zero__ { return a / static_cast(b); } inline C10_HOST_DEVICE float& operator+=(float& a, const Half& b) { return a += static_cast(b); } inline C10_HOST_DEVICE float& operator-=(float& a, const Half& b) { return a -= static_cast(b); } inline C10_HOST_DEVICE float& operator*=(float& a, const Half& b) { return a *= static_cast(b); } inline C10_HOST_DEVICE float& operator/=(float& a, const Half& b) { return a /= static_cast(b); } /// Arithmetic with doubles inline C10_HOST_DEVICE double operator+(Half a, double b) { return static_cast(a) + b; } inline C10_HOST_DEVICE double operator-(Half a, double b) { return static_cast(a) - b; } inline C10_HOST_DEVICE double operator*(Half a, double b) { return static_cast(a) * b; } inline C10_HOST_DEVICE double operator/(Half a, double b) __ubsan_ignore_float_divide_by_zero__ { return static_cast(a) / b; } inline C10_HOST_DEVICE double operator+(double a, Half b) { return a + static_cast(b); } inline C10_HOST_DEVICE double operator-(double a, Half b) { return a - static_cast(b); } inline C10_HOST_DEVICE double operator*(double a, Half b) { return a * static_cast(b); } inline C10_HOST_DEVICE double operator/(double a, Half b) __ubsan_ignore_float_divide_by_zero__ { return a / static_cast(b); } /// Arithmetic with ints inline C10_HOST_DEVICE Half operator+(Half a, int b) { return a + static_cast(b); } inline C10_HOST_DEVICE Half operator-(Half a, int b) { return a - static_cast(b); } inline C10_HOST_DEVICE Half operator*(Half a, int b) { return a * static_cast(b); } inline C10_HOST_DEVICE Half operator/(Half a, int b) { return a / static_cast(b); } inline C10_HOST_DEVICE Half operator+(int a, Half b) { return static_cast(a) + b; } inline C10_HOST_DEVICE Half operator-(int a, Half b) { return static_cast(a) - b; } inline C10_HOST_DEVICE Half operator*(int a, Half b) { return static_cast(a) * b; } inline C10_HOST_DEVICE Half operator/(int a, Half b) { return static_cast(a) / b; } //// Arithmetic with int64_t inline C10_HOST_DEVICE Half operator+(Half a, int64_t b) { return a + static_cast(b); } inline C10_HOST_DEVICE Half operator-(Half a, int64_t b) { return a - static_cast(b); } inline C10_HOST_DEVICE Half operator*(Half a, int64_t b) { return a * static_cast(b); } inline C10_HOST_DEVICE Half operator/(Half a, int64_t b) { return a / static_cast(b); } inline C10_HOST_DEVICE Half operator+(int64_t a, Half b) { return static_cast(a) + b; } inline C10_HOST_DEVICE Half operator-(int64_t a, Half b) { return static_cast(a) - b; } inline C10_HOST_DEVICE Half operator*(int64_t a, Half b) { return static_cast(a) * b; } inline C10_HOST_DEVICE Half operator/(int64_t a, Half b) { return static_cast(a) / b; } /// NOTE: we do not define comparisons directly and instead rely on the implicit /// conversion from c10::Half to float. } // namespace c10 namespace std { template <> class numeric_limits { public: static constexpr bool is_specialized = true; static constexpr bool is_signed = true; static constexpr bool is_integer = false; static constexpr bool is_exact = false; static constexpr bool has_infinity = true; static constexpr bool has_quiet_NaN = true; static constexpr bool has_signaling_NaN = true; static constexpr auto has_denorm = numeric_limits::has_denorm; static constexpr auto has_denorm_loss = numeric_limits::has_denorm_loss; static constexpr auto round_style = numeric_limits::round_style; static constexpr bool is_iec559 = true; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr int digits = 11; static constexpr int digits10 = 3; static constexpr int max_digits10 = 5; static constexpr int radix = 2; static constexpr int min_exponent = -13; static constexpr int min_exponent10 = -4; static constexpr int max_exponent = 16; static constexpr int max_exponent10 = 4; static constexpr auto traps = numeric_limits::traps; static constexpr auto tinyness_before = numeric_limits::tinyness_before; static constexpr c10::Half min() { return c10::Half(0x0400, c10::Half::from_bits()); } static constexpr c10::Half lowest() { return c10::Half(0xFBFF, c10::Half::from_bits()); } static constexpr c10::Half max() { return c10::Half(0x7BFF, c10::Half::from_bits()); } static constexpr c10::Half epsilon() { return c10::Half(0x1400, c10::Half::from_bits()); } static constexpr c10::Half round_error() { return c10::Half(0x3800, c10::Half::from_bits()); } static constexpr c10::Half infinity() { return c10::Half(0x7C00, c10::Half::from_bits()); } static constexpr c10::Half quiet_NaN() { return c10::Half(0x7E00, c10::Half::from_bits()); } static constexpr c10::Half signaling_NaN() { return c10::Half(0x7D00, c10::Half::from_bits()); } static constexpr c10::Half denorm_min() { return c10::Half(0x0001, c10::Half::from_bits()); } }; } // namespace std