#include <cuda_runtime.h>
#include <cuda/std/expected>
#include <cuda/stream>
#include <concepts>
#include <cstdint>
#include <cstdio>
#include <format>
#include <source_location>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <utility>
#include <variant>
Go to the source code of this file.
◆ CUDDL_CUDA_ABORT
Checks a CUDA call and aborts on failure (destructors and RAII only).
Definition at line 245 of file error.hpp.
◆ CUDDL_CUDA_TRY
◆ CUDDL_TRY
| #define CUDDL_TRY |
( |
|
expr | ) |
|
Value: ({ \
auto _cuddl_result = (expr); \
if (!_cuddl_result) { \
return ::cuddl::detail::propagate_error(_cuddl_result.error()); \
} \
::cuddl::detail::try_unwrap_success(_cuddl_result); \
})
Propagates a cuddl::Result failure from the enclosing function (GNU statement expression).
On failure, copies the error then returns cuda::std::unexpected<Error> (does not move out of the source expected). On success, yields the value for valued results, or nothing for Result<void>. Usable as a statement (CUDDL_TRY(expr);) or in initializers (auto x = CUDDL_TRY(expr);).
Definition at line 225 of file error.hpp.
226 { \
227 auto _cuddl_result = (expr); \
228 if (!_cuddl_result) { \
229 return ::cuddl::detail::propagate_error(_cuddl_result.error()); \
230 } \
231 ::cuddl::detail::try_unwrap_success(_cuddl_result); \
232 })
◆ CUDDL_UNWRAP
| #define CUDDL_UNWRAP |
( |
|
expr | ) |
|
Value: ({ \
auto _cuddl_result = (expr); \
if (!_cuddl_result) { \
throw std::runtime_error(_cuddl_result.error().message()); \
} \
::cuddl::detail::try_unwrap_success(_cuddl_result); \
})
Unwraps a cuddl::Result or throws std::runtime_error on failure (tests and apps).
Definition at line 235 of file error.hpp.
236 { \
237 auto _cuddl_result = (expr); \
238 if (!_cuddl_result) { \
239 throw std::runtime_error(_cuddl_result.error().message()); \
240 } \
241 ::cuddl::detail::try_unwrap_success(_cuddl_result); \
242 })