ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Macros
macros.h File Reference
#include <cstdint>
#include <base/utils/logging.h>
#include <ATen/core/tensor_types.h>
Include dependency graph for macros.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DISALLOW_COPY_AND_ASSIGN(TypeName)
 
#define DISALLOW_MOVE_AND_ASSIGN(TypeName)
 
#define DISALLOW_COPY_MOVE_AND_ASSIGN(TypeName)
 
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName)
 
#define MAX_SIZE_T   UINT64_MAX
 
#define AT_HOST
 
#define AT_DEVICE
 
#define AT_HOST_DEVICE
 
#define PREDICT_TRUE(expr)   (expr)
 
#define PREDICT_FALSE(expr)   (expr)
 
#define CHECK_MSG(expr, ...)
 
#define REQUIRES_OK(expr, ...)
 
#define SINGLE_ARG(...)   __VA_ARGS__
 
#define CASE_2(TYPE, DEVICE, STMTS)
 
#define CASE_LAMBDA_2(TYPE, DEVICE, FUNC)
 
#define CASES_ALL_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
 
#define CASES_ALL_LAMBDA_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, FUNC, DEFAULT)
 
#define CASES_BLAS_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
 
#define CASES_ALL_WITH_DEFAULT_2_GPU(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
 
#define CASES_ALL_LAMBDA_WITH_DEFAULT_2_GPU(TYPE_ENUM, DEVICE_ENUM, FUNC, DEFAULT)
 
#define CASES_BLAS_WITH_DEFAULT_2_GPU(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
 
#define CASES_CZ_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
 
#define TEMPLATE_ALL_LAMBDA_2(TYPE_ENUM, DEVICE_ENUM, ...)
 
#define TEMPLATE_ALL_2(TYPE_ENUM, DEVICE_ENUM, ...)
 
#define TEMPLATE_BLAS_2(TYPE_ENUM, DEVICE_ENUM, ...)
 
#define TEMPLATE_ALL_CALC_2(TYPE_ENUM, DEVICE_ENUM, ...)
 
#define TEMPLATE_CZ_2(TYPE_ENUM, DEVICE_ENUM, ...)
 
#define AT_ALWAYS_INLINE   inline
 

Macro Definition Documentation

◆ AT_ALWAYS_INLINE

#define AT_ALWAYS_INLINE   inline

◆ AT_DEVICE

#define AT_DEVICE

◆ AT_HOST

#define AT_HOST

◆ AT_HOST_DEVICE

#define AT_HOST_DEVICE

◆ CASE_2

#define CASE_2 (   TYPE,
  DEVICE,
  STMTS 
)
Value:
case (int(ct::DataTypeToEnum<TYPE>::value) * 10 + \
typedef TYPE T_; \
typedef DEVICE DEVICE_; \
STMTS; \
break; \
}
Template struct for mapping a DataType to its corresponding enum value.
Definition tensor_types.h:194
Template struct for mapping a Device Type to its corresponding enum value.
Definition tensor_types.h:158

◆ CASE_LAMBDA_2

#define CASE_LAMBDA_2 (   TYPE,
  DEVICE,
  FUNC 
)
Value:
case (int(ct::DataTypeToEnum<TYPE>::value) * 10 + \
typedef TYPE T_; \
typedef DEVICE DEVICE_; \
FUNC(); \
break; \
}

◆ CASES_ALL_LAMBDA_WITH_DEFAULT_2

#define CASES_ALL_LAMBDA_WITH_DEFAULT_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  FUNC,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_LAMBDA_2(float, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(double, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(int, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(int64_t, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(std::complex<float>, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(std::complex<double>, ct::DEVICE_CPU, FUNC) \
default: \
DEFAULT; \
break; \
}
A tag type for identifying CPU and GPU devices.
Definition tensor_types.h:68

◆ CASES_ALL_LAMBDA_WITH_DEFAULT_2_GPU

#define CASES_ALL_LAMBDA_WITH_DEFAULT_2_GPU (   TYPE_ENUM,
  DEVICE_ENUM,
  FUNC,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_LAMBDA_2(float, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(float, ct::DEVICE_GPU, FUNC) \
CASE_LAMBDA_2(double, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(double, ct::DEVICE_GPU, FUNC) \
CASE_LAMBDA_2(int, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(int, ct::DEVICE_GPU, FUNC) \
CASE_LAMBDA_2(int64_t, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(int64_t, ct::DEVICE_GPU, FUNC) \
CASE_LAMBDA_2(std::complex<float>, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(std::complex<float>, ct::DEVICE_GPU, FUNC) \
CASE_LAMBDA_2(std::complex<double>, ct::DEVICE_CPU, FUNC) \
CASE_LAMBDA_2(std::complex<double>, ct::DEVICE_GPU, FUNC) \
default: \
DEFAULT; \
break; \
}
Definition tensor_types.h:69

◆ CASES_ALL_WITH_DEFAULT_2

#define CASES_ALL_WITH_DEFAULT_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  STMTS,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_2(float, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(double, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(int, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(int64_t, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
default: \
DEFAULT; \
break; \
}
#define SINGLE_ARG(...)
Definition macros.h:71

◆ CASES_ALL_WITH_DEFAULT_2_GPU

#define CASES_ALL_WITH_DEFAULT_2_GPU (   TYPE_ENUM,
  DEVICE_ENUM,
  STMTS,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_2(float, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(float, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(double, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(double, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(int, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(int, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(int64_t, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(int64_t, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
default: \
DEFAULT; \
break; \
}

◆ CASES_BLAS_WITH_DEFAULT_2

#define CASES_BLAS_WITH_DEFAULT_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  STMTS,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_2(float, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(double, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
default: \
DEFAULT; \
break; \
}

◆ CASES_BLAS_WITH_DEFAULT_2_GPU

#define CASES_BLAS_WITH_DEFAULT_2_GPU (   TYPE_ENUM,
  DEVICE_ENUM,
  STMTS,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_2(float, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(float, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(double, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(double, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
default: \
DEFAULT; \
break; \
}

◆ CASES_CZ_WITH_DEFAULT_2

#define CASES_CZ_WITH_DEFAULT_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  STMTS,
  DEFAULT 
)
Value:
switch (int(TYPE_ENUM) * 10 + int(DEVICE_ENUM)) { \
CASE_2(std::complex<float>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<float>, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_CPU, SINGLE_ARG(STMTS)) \
CASE_2(std::complex<double>, ct::DEVICE_GPU, SINGLE_ARG(STMTS)) \
default: \
DEFAULT; \
break; \
}

◆ CHECK_MSG

#define CHECK_MSG (   expr,
  ... 
)
Value:
(::base::utils::check_msg_impl( \
"Expected " #expr \
" to be true, but got false. " \
__VA_ARGS__ " " \
"(Could this error message be improved? If so, " \
"please report an enhancement request to Container)" \
))

◆ DISALLOW_COPY_AND_ASSIGN

#define DISALLOW_COPY_AND_ASSIGN (   TypeName)
Value:
TypeName(const TypeName&) = delete; \
void operator=(const TypeName&) = delete

◆ DISALLOW_COPY_MOVE_AND_ASSIGN

#define DISALLOW_COPY_MOVE_AND_ASSIGN (   TypeName)
Value:
DISALLOW_MOVE_AND_ASSIGN(TypeName)
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition macros.h:15

◆ DISALLOW_IMPLICIT_CONSTRUCTORS

#define DISALLOW_IMPLICIT_CONSTRUCTORS (   TypeName)
Value:
TypeName() = delete; \
DISALLOW_COPY_MOVE_AND_ASSIGN(TypeName)

◆ DISALLOW_MOVE_AND_ASSIGN

#define DISALLOW_MOVE_AND_ASSIGN (   TypeName)
Value:
TypeName(TypeName&&) = delete; \
void operator=(TypeName&&) = delete

◆ MAX_SIZE_T

#define MAX_SIZE_T   UINT64_MAX

◆ PREDICT_FALSE

#define PREDICT_FALSE (   expr)    (expr)

◆ PREDICT_TRUE

#define PREDICT_TRUE (   expr)    (expr)

◆ REQUIRES_OK

#define REQUIRES_OK (   expr,
  ... 
)
Value:
if(PREDICT_FALSE(!(expr))) { \
::base::utils::check_exit_impl( \
__func__, \
__FILE__, \
static_cast<uint32_t>(__LINE__), \
CHECK_MSG(expr, ##__VA_ARGS__)); \
}
#define CHECK_MSG(expr,...)
Definition macros.h:51
#define PREDICT_FALSE(expr)
Definition macros.h:48

◆ SINGLE_ARG

#define SINGLE_ARG (   ...)    __VA_ARGS__

◆ TEMPLATE_ALL_2

#define TEMPLATE_ALL_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  ... 
)
Value:
CASES_ALL_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, (__VA_ARGS__), \
std::cerr << "Unexpected type: " << TYPE_ENUM; exit(EXIT_FAILURE));
#define CASES_ALL_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
Definition macros.h:91

◆ TEMPLATE_ALL_CALC_2

#define TEMPLATE_ALL_CALC_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  ... 
)
Value:
CASES_ALL_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, (__VA_ARGS__), \
std::cerr << "Unexpected type: " << TYPE_ENUM; exit(EXIT_FAILURE));

◆ TEMPLATE_ALL_LAMBDA_2

#define TEMPLATE_ALL_LAMBDA_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  ... 
)
Value:
CASES_ALL_LAMBDA_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, (__VA_ARGS__), \
std::cerr << "Unexpected type: " << TYPE_ENUM; exit(EXIT_FAILURE));
#define CASES_ALL_LAMBDA_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, FUNC, DEFAULT)
Definition macros.h:104

◆ TEMPLATE_BLAS_2

#define TEMPLATE_BLAS_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  ... 
)
Value:
CASES_BLAS_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, (__VA_ARGS__), \
std::cerr << "Unexpected type: " << TYPE_ENUM; exit(EXIT_FAILURE));
#define CASES_BLAS_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
Definition macros.h:117

◆ TEMPLATE_CZ_2

#define TEMPLATE_CZ_2 (   TYPE_ENUM,
  DEVICE_ENUM,
  ... 
)
Value:
CASES_CZ_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, (__VA_ARGS__), \
std::cerr << "Unexpected type: " << TYPE_ENUM; exit(EXIT_FAILURE));
#define CASES_CZ_WITH_DEFAULT_2(TYPE_ENUM, DEVICE_ENUM, STMTS, DEFAULT)
Definition macros.h:181