Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
cuda_error.hpp
Go to the documentation of this file.
1#pragma once
2
9#include <cuda_runtime_api.h>
10
12
13#include <optional>
14#include <source_location>
15#include <string>
16#include <string_view>
17
18namespace uni20::cuda
19{
20
23 public:
25 CudaRuntimeError(cudaError_t status, std::string operation, std::optional<int> device = std::nullopt);
26
28 [[nodiscard]] cudaError_t status() const noexcept { return status_; }
29
31 [[nodiscard]] std::string const& operation() const noexcept { return operation_; }
32
34 [[nodiscard]] std::string const& error_name() const noexcept { return error_name_; }
35
37 [[nodiscard]] std::string const& reason() const noexcept { return reason_; }
38
40 [[nodiscard]] std::optional<int> device() const noexcept { return device_; }
41
42 private:
43 cudaError_t status_;
44 std::string operation_;
45 std::string error_name_;
46 std::string reason_;
47 std::optional<int> device_;
48};
49
51[[noreturn]] void raise_runtime_error(cudaError_t status, std::string_view operation,
52 std::optional<int> device = std::nullopt,
53 std::source_location where = std::source_location::current());
54
56void check(cudaError_t status, std::string_view operation, std::optional<int> device = std::nullopt,
57 std::source_location where = std::source_location::current());
58
59} // namespace uni20::cuda
Exception carrying a failed CUDA runtime operation and status.
Definition cuda_error.hpp:22
std::string const & error_name() const noexcept
Return the CUDA symbolic error name.
Definition cuda_error.hpp:34
std::string const & reason() const noexcept
Return the CUDA runtime error description.
Definition cuda_error.hpp:37
cudaError_t status() const noexcept
Return the CUDA runtime status code.
Definition cuda_error.hpp:28
std::string const & operation() const noexcept
Return the CUDA runtime operation that failed.
Definition cuda_error.hpp:31
std::optional< int > device() const noexcept
Return the associated CUDA device ordinal, when known.
Definition cuda_error.hpp:40
Base class for exceptions raised through Uni20's diagnostic boundary.
Definition diagnostic_error.hpp:25
Structured exception base carrying diagnostic source context.
Definition cublas/execution.hpp:18
void raise_runtime_error(cudaError_t status, std::string_view operation, std::optional< int > device, std::source_location where)
Raise a structured CUDA runtime failure through Uni20's error boundary.
Definition cuda_error.cpp:38