#pragma once #include #include #include // Defines the accumulation type for a scalar type. // Example: // using accscalar_t = acc_type; #if defined(__CUDACC__) #include #include #elif defined(__HIPCC__) #include #include #endif namespace at { template struct AccumulateType { }; #if defined(__CUDACC__) || defined(__HIPCC__) template <> struct AccumulateType { using type = float; }; #endif template <> struct AccumulateType { using type = float; }; template <> struct AccumulateType { using type = float; }; template <> struct AccumulateType { using type = double; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = float; }; template <> struct AccumulateType { using type = double; }; template <> struct AccumulateType { using type = double; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template <> struct AccumulateType { using type = int64_t; }; template using acc_type = typename AccumulateType::type; } // namespace at