13#include <kernel/runtime.hpp>
38 CUDA_HOST_DEVICE [[noreturn]]
inline void abortion(
39 const char *
const func,
40 const char *
const file,
42 const char *
const msg)
47 fprintf(stderr,
"\n>>> FATAL ERROR: %s\n\n", msg);
49 fprintf(stderr,
"\n>>> FATAL ERROR: UNSPECIFIED ABORTION\n\n");
52 fprintf(stderr,
"Function: %s\n", func);
53 fprintf(stderr,
"File....: %s\n", file);
54 fprintf(stderr,
"Line....: %i\n", line);
65 printf(
"\n>>> FATAL ERROR: %s\n\n", msg);
67 printf(
"\n>>> FATAL ERROR: UNSPECIFIED ABORTION\n\n");
70 printf(
"Function: %s\n", func);
71 printf(
"File....: %s\n", file);
72 printf(
"Line....: %i\n", line);
79 CUDA_HOST [[noreturn]]
inline void abortion(
const char*
const func,
const char*
const file,
const int line,
const std::string& msg)
81 abortion(func, file, line, msg.c_str());
116 const char *
const expr_str,
117 const char *
const func,
118 const char *
const file,
120 const char *
const msg =
nullptr)
125 #ifndef __CUDA_ARCH__
128 fprintf(stderr,
"\n>>> FATAL ERROR: ASSERTION FAILED: %s\n", msg);
130 fprintf(stderr,
"\n>>> FATAL ERROR: ASSERTION FAILED\n");
133 fprintf(stderr,
"Expression: %s\n", expr_str);
134 fprintf(stderr,
"Function..: %s\n", func);
135 fprintf(stderr,
"File......: %s\n", file);
136 fprintf(stderr,
"Line......: %i\n", line);
147 printf(
"\n>>> FATAL ERROR: ASSERTION FAILED: %s\n", msg);
149 printf(
"\n>>> FATAL ERROR: ASSERTION FAILED\n");
152 printf(
"Expression: %s\n", expr_str);
153 printf(
"Function..: %s\n", func);
154 printf(
"File......: %s\n", file);
155 printf(
"Line......: %i\n", line);
165 const char*
const expr_str,
166 const char*
const func,
167 const char*
const file,
169 const std::string& msg)
171 assertion(expr, expr_str, func, file, line, msg.c_str());
189#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 2000)
190# define XABORTM(msg) do {FEAT::abortion(__func__, __FILE__, __LINE__, msg); std::abort();} while(false)
192# define XABORTM(msg) FEAT::abortion(__func__, __FILE__, __LINE__, msg)
226# define ASSERT(expr) FEAT::assertion(expr, #expr, __func__, __FILE__, __LINE__)
227# define ASSERTM(expr, msg) FEAT::assertion(expr, #expr, __func__, __FILE__, __LINE__, msg)
229# define ASSERT(expr) void(0)
230# define ASSERTM(expr, msg) void(0)
262#define XASSERT(expr) FEAT::assertion(expr, #expr, __func__, __FILE__, __LINE__)
263#define XASSERTM(expr, msg) FEAT::assertion(expr, #expr, __func__, __FILE__, __LINE__, msg)
static void abort(bool dump_call_stack=true)
FEAT abortion.
CUDA_HOST_DEVICE void assertion(bool expr, const char *const expr_str, const char *const func, const char *const file, const int line, const char *const msg=nullptr)
Assertion function.
CUDA_HOST_DEVICE void abortion(const char *const func, const char *const file, const int line, const char *const msg)
Abortion function.