67#define FENIX_ABORT() \
70 MPI_Initialized(&mpi_is_init_); \
71 if (mpi_is_init_) MPI_Abort(MPI_COMM_WORLD, 1); \
75#define FENIX_ABORT() abort()
78#define traced_print_impl(file, fmt, ...) \
80 file, "%s:%d %s(): " fmt "\n", __FILE__, __LINE__, \
81 __func__ __VA_OPT__(, ) __VA_ARGS__ \
85#define traced_print(f, fmt, ...) \
88 MPI_Initialized(&mpi_is_init_); \
91 MPI_Comm_rank(MPI_COMM_WORLD, &rank_); \
92 traced_print_impl(f, "rank %d: " fmt, rank_ __VA_OPT__(, ) __VA_ARGS__); \
94 traced_print_impl(f, fmt __VA_OPT__(, ) __VA_ARGS__); \
98#define traced_print(...) traced_print_impl(__VA_ARGS__)
101#define error_print(...) traced_print(stderr, __VA_ARGS__)
102#define debug_print(...) traced_print(stderr, __VA_ARGS__)
103#define verbose_print(...) traced_print(stdout, __VA_ARGS__)
107#define fatal_print(...) \
109 __VA_OPT__(error_print(__VA_ARGS__);) \
110 error_print("Fenix aborting due to fatal error!"); \
115#define fenix_require(predicate, ...) \
117 if (!(predicate)) { \
118 error_print("internal error, failed assertion (%s)", #predicate); \
119 __VA_OPT__(error_print(__VA_ARGS__);) \
126#define fenix_assert(...) \
130#define fenix_assert(...) fenix_require(__VA_ARGS__)
137void __fenix_init_opt(
int argc,
char** argv);
Definition fenix_opt.hpp:133