Skip to content

Commit

Permalink
add miss instantiation
Browse files Browse the repository at this point in the history
  • Loading branch information
yhmtsai committed Sep 19, 2024
1 parent 090ce2c commit ce9cbbc
Show file tree
Hide file tree
Showing 2 changed files with 214 additions and 212 deletions.
190 changes: 96 additions & 94 deletions core/base/mixed_precision_types.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,97 +15,97 @@


#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT1(_macro, ...) \
GKO_ADAPT_HF(_macro(float, half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(float, half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(float, half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(float, float, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(float, half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(float, half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(float, half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(float, float, half, __VA_ARGS__)); \
template _macro(float, float, float, __VA_ARGS__); \
template _macro(float, float, double, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(float, double, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(float, double, half, __VA_ARGS__)); \
template _macro(float, double, float, __VA_ARGS__); \
template _macro(float, double, double, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT2(_macro, ...) \
GKO_ADAPT_HF(_macro(double, half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(double, half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(double, half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(double, float, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(double, half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(double, half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(double, half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(double, float, half, __VA_ARGS__)); \
template _macro(double, float, float, __VA_ARGS__); \
template _macro(double, float, double, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(double, double, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(double, double, half, __VA_ARGS__)); \
template _macro(double, double, float, __VA_ARGS__); \
template _macro(double, double, double, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(_macro, ...) \
GKO_ADAPT_HF(_macro(std::complex<float>, std::complex<half>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<float>, std::complex<half>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<float>, std::complex<half>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<float>, std::complex<float>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<double>, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(std::complex<float>, std::complex<double>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<double>, \
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(_macro, ...) \
GKO_ADAPT_HF(template _macro(std::complex<float>, std::complex<half>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<float>, std::complex<half>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<float>, std::complex<half>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<float>, std::complex<float>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<double>, __VA_ARGS__); \
GKO_ADAPT_HF(template _macro(std::complex<float>, std::complex<double>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(_macro, ...) \
GKO_ADAPT_HF(_macro(std::complex<double>, std::complex<half>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<double>, std::complex<half>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<double>, std::complex<half>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<double>, std::complex<float>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<double>, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(std::complex<double>, std::complex<double>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<double>, std::complex<double>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<double>, \
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(_macro, ...) \
GKO_ADAPT_HF(template _macro(std::complex<double>, std::complex<half>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<double>, std::complex<half>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<double>, std::complex<half>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<double>, std::complex<float>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<double>, __VA_ARGS__); \
GKO_ADAPT_HF(template _macro(std::complex<double>, std::complex<double>, \
std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<double>, std::complex<double>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<double>, \
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(_macro, ...) \
GKO_ADAPT_HF(_macro(half, half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, float, half, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, float, float, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, float, double, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, double, half, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, double, float, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, double, double, __VA_ARGS__))

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, ...) \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<half>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<half>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<half>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<float>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<float>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<float>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<double>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<double>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<double>, \
std::complex<double>, __VA_ARGS__))
GKO_ADAPT_HF(template _macro(half, half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, float, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, float, float, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, float, double, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, double, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, double, float, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, double, double, __VA_ARGS__))

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, ...) \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<half>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<half>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<half>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<float>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<float>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<float>, \
std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<double>, \
std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<double>, \
std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<double>, \
std::complex<double>, __VA_ARGS__))

#else

Expand All @@ -125,11 +125,11 @@
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(_macro, ...) \
GKO_ADAPT_HF(_macro(half, half, half, __VA_ARGS__))
GKO_ADAPT_HF(template _macro(half, half, half, __VA_ARGS__))

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, ...) \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<half>, \
std::complex<half>, __VA_ARGS__))
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, ...) \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<half>, \
std::complex<half>, __VA_ARGS__))


#endif
Expand All @@ -151,34 +151,36 @@

#ifdef GINKGO_MIXED_PRECISION
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_2(_macro, ...) \
GKO_ADAPT_HF(_macro(half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(_macro(float, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, float, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, double, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(float, half, __VA_ARGS__)); \
template _macro(float, float, __VA_ARGS__); \
template _macro(float, double, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(double, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(double, half, __VA_ARGS__)); \
template _macro(double, float, __VA_ARGS__); \
template _macro(double, double, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF( \
_macro(std::complex<half>, std::complex<float>, __VA_ARGS__)); \
GKO_ADAPT_HF( \
_macro(std::complex<half>, std::complex<double>, __VA_ARGS__)); \
GKO_ADAPT_HF( \
_macro(std::complex<float>, std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<half>, std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<float>, \
__VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<half>, std::complex<double>, \
__VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<float>, std::complex<half>, \
__VA_ARGS__)); \
template _macro(std::complex<float>, std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<double>, __VA_ARGS__); \
GKO_ADAPT_HF( \
_macro(std::complex<double>, std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(std::complex<double>, std::complex<half>, \
__VA_ARGS__)); \
template _macro(std::complex<double>, std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<double>, __VA_ARGS__)
#else
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_2(_macro, ...) \
GKO_ADAPT_HF(_macro(half, half, __VA_ARGS__)); \
GKO_ADAPT_HF(template _macro(half, half, __VA_ARGS__)); \
template _macro(float, float, __VA_ARGS__); \
template _macro(double, double, __VA_ARGS__); \
GKO_ADAPT_HF(_macro(std::complex<half>, std::complex<half>, __VA_ARGS__)); \
GKO_ADAPT_HF( \
template _macro(std::complex<half>, std::complex<half>, __VA_ARGS__)); \
template _macro(std::complex<float>, std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<double>, __VA_ARGS__)
#endif
Expand Down
Loading

0 comments on commit ce9cbbc

Please sign in to comment.