4#include <boost/predef.h>
9const std::string XPED_COMPILER_STR =
"clang++";
11const std::string XPED_COMPILER_STR =
"icpc";
13const std::string XPED_COMPILER_STR =
"g++";
14#elif __INTEL_LLVM_COMPILER
15# define BOOST_COMP_INTEL_LLVM __INTEL_LLVM_COMPILER
16const std::string XPED_COMPILER_STR =
"icpx";
18const std::string XPED_COMPILER_STR =
"msvc";
20# ifdef BOOST_COMP_MSVC
21# error "Unsupported compiler"
23# pragma error "Unsupported compiler."
27#if defined(XPED_USE_MKL)
29#elif defined(XPED_USE_BLAS)
36#if defined(__cplusplus)
37# if __cplusplus == 201103L
39# elif __cplusplus == 201402L
41# elif __cplusplus == 201703L
43# elif __cplusplus >= 202002L
50# define XPED_HAS_NTTP 1
52# define XPED_HAS_NTTP 0
55# if __clang_major__ > 11
56# define XPED_HAS_NTTP 1
58# define XPED_HAS_NTTP 0
60#elif BOOST_COMP_INTEL_LLVM
61# if __INTEL_LLVM_COMPILER >= 20210400
62# define XPED_HAS_NTTP 1
64# define XPED_HAS_NTTP 0
67# define XPED_HAS_NTTP 0
70# define XPED_HAS_NTTP 1
72# define XPED_HAS_NTTP 0
76#if __has_include("boost/functional/hash.hpp")
77# define XPED_HAS_BOOST_HASH_COMBINE 1
80#ifndef XPED_EFFICIENCY_MODEL
81# define XPED_TIME_EFFICIENT
84#ifndef SPDLOG_ACTIVE_LEVEL
85# define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_OFF
89#define XPED_INIT_TREE_CACHE_VARIABLE(VARIABLE_NAME, CACHE_SIZE) \
91template <std::size_t Rank, typename Symmetry> \
94template <int shift, std::size_t Rank, std::size_t CoRank, typename Symmetry> \
97 typedef Xped::FusionTree<CoRank, Symmetry> CoTree; \
98 typedef Xped::FusionTree<CoRank + shift, Symmetry> NewCoTree; \
99 typedef Xped::FusionTree<Rank, Symmetry> Tree; \
100 typedef Xped::FusionTree<Rank - shift, Symmetry> NewTree; \
101 typedef typename Symmetry::Scalar Scalar; \
102 typedef LRU::Cache<std::tuple<Tree, CoTree, Xped::util::Permutation>, std::unordered_map<std::pair<NewTree, NewCoTree>, Scalar>> CacheType; \
103 CacheManager(std::size_t cache_size) \
105 cache = CacheType(cache_size); \
110template <int shift, std::size_t Rank, std::size_t CoRank, typename Symmetry> \
111CacheManager<shift, Rank, CoRank, Symmetry> VARIABLE_NAME(CACHE_SIZE);
115# define XPED_MPI_BARRIER(comm) MPI_Barrier(comm);
117# define XPED_MPI_BARRIER(comm)
120#if defined XPED_USE_EIGEN_TENSOR_LIB && defined XPED_USE_EIGEN_MATRIX_LIB && defined XPED_USE_EIGEN_VECTOR_LIB
121# define XPED_CONST const
122#elif defined XPED_USE_ARRAY_TENSOR_LIB && defined XPED_USE_EIGEN_MATRIX_LIB && defined XPED_USE_EIGEN_VECTOR_LIB
123# define XPED_CONST const
124#elif defined XPED_USE_CYCLOPS_TENSOR_LIB && defined XPED_USE_CYCLOPS_MATRIX_LIB && defined XPED_USE_CYCLOPS_VECTOR_LIB
127# error "You specified an invalid combination of plain matrix library, plain tensor library and plain vector library."
const std::string XPED_BLAS_STR
Definition: Macros.hpp:32