Ginkgo: ginkgo/core/base/exception.hpp Source File

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.0 A numerical linear algebra library targeting many-core architectures

Loading...
Searching...
No Matches
exception.hpp
1// SPDX-FileCopyrightText: 2017 - 2024 The Ginkgo authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#ifndef GKO_PUBLIC_CORE_BASE_EXCEPTION_HPP_
6#define GKO_PUBLIC_CORE_BASE_EXCEPTION_HPP_
7
8
9#include <exception>
10#include <string>
11
12#include <ginkgo/core/base/types.hpp>
13
14
15namespace gko {
16
17
57 class Error : public std::exception {
58public:
66 Error(const std::string& file, int line, const std::string& what)
67 : what_(file + ":" + std::to_string(line) + ": " + what)
68 {}
69
74 virtual const char* what() const noexcept override { return what_.c_str(); }
75
76private:
77 const std::string what_;
78};
79
80
85 class NotImplemented : public Error {
86public:
94 NotImplemented(const std::string& file, int line, const std::string& func)
95 : Error(file, line, func + " is not implemented")
96 {}
97};
98
99
104 class NotCompiled : public Error {
105public:
114 NotCompiled(const std::string& file, int line, const std::string& func,
115 const std::string& module)
116 : Error(file, line,
117 "feature " + func + " is part of the " + module +
118 " module, which is not compiled on this system")
119 {}
120};
121
122
127 class NotSupported : public Error {
128public:
138 NotSupported(const std::string& file, int line, const std::string& func,
139 const std::string& obj_type)
140 : Error(file, line,
141 "Operation " + func + " does not support parameters of type " +
142 obj_type)
143 {}
144};
145
146
150 class MpiError : public Error {
151public:
159 MpiError(const std::string& file, int line, const std::string& func,
160 int64 error_code)
161 : Error(file, line, func + ": " + get_error(error_code))
162 {}
163
164private:
165 static std::string get_error(int64 error_code);
166};
167
168
172 class CudaError : public Error {
173public:
182 CudaError(const std::string& file, int line, const std::string& func,
183 int64 error_code)
184 : Error(file, line, func + ": " + get_error(error_code))
185 {}
186
187private:
188 static std::string get_error(int64 error_code);
189};
190
191
195 class CublasError : public Error {
196public:
205 CublasError(const std::string& file, int line, const std::string& func,
206 int64 error_code)
207 : Error(file, line, func + ": " + get_error(error_code))
208 {}
209
210private:
211 static std::string get_error(int64 error_code);
212};
213
214
218 class CurandError : public Error {
219public:
228 CurandError(const std::string& file, int line, const std::string& func,
229 int64 error_code)
230 : Error(file, line, func + ": " + get_error(error_code))
231 {}
232
233private:
234 static std::string get_error(int64 error_code);
235};
236
237
241 class CusparseError : public Error {
242public:
251 CusparseError(const std::string& file, int line, const std::string& func,
252 int64 error_code)
253 : Error(file, line, func + ": " + get_error(error_code))
254 {}
255
256private:
257 static std::string get_error(int64 error_code);
258};
259
260
264 class CufftError : public Error {
265public:
274 CufftError(const std::string& file, int line, const std::string& func,
275 int64 error_code)
276 : Error(file, line, func + ": " + get_error(error_code))
277 {}
278
279private:
280 static std::string get_error(int64 error_code);
281};
282
283
287 class HipError : public Error {
288public:
297 HipError(const std::string& file, int line, const std::string& func,
298 int64 error_code)
299 : Error(file, line, func + ": " + get_error(error_code))
300 {}
301
302private:
303 static std::string get_error(int64 error_code);
304};
305
306
310 class HipblasError : public Error {
311public:
320 HipblasError(const std::string& file, int line, const std::string& func,
321 int64 error_code)
322 : Error(file, line, func + ": " + get_error(error_code))
323 {}
324
325private:
326 static std::string get_error(int64 error_code);
327};
328
329
333 class HiprandError : public Error {
334public:
343 HiprandError(const std::string& file, int line, const std::string& func,
344 int64 error_code)
345 : Error(file, line, func + ": " + get_error(error_code))
346 {}
347
348private:
349 static std::string get_error(int64 error_code);
350};
351
352
357 class HipsparseError : public Error {
358public:
367 HipsparseError(const std::string& file, int line, const std::string& func,
368 int64 error_code)
369 : Error(file, line, func + ": " + get_error(error_code))
370 {}
371
372private:
373 static std::string get_error(int64 error_code);
374};
375
376
380 class HipfftError : public Error {
381public:
390 HipfftError(const std::string& file, int line, const std::string& func,
391 int64 error_code)
392 : Error(file, line, func + ": " + get_error(error_code))
393 {}
394
395private:
396 static std::string get_error(int64 error_code);
397};
398
399
403 class MetisError : public Error {
404public:
413 MetisError(const std::string& file, int line, const std::string& func,
414 const std::string& error)
415 : Error(file, line, func + ": " + error)
416 {}
417};
418
419
424 class DimensionMismatch : public Error {
425public:
440 DimensionMismatch(const std::string& file, int line,
441 const std::string& func, const std::string& first_name,
442 size_type first_rows, size_type first_cols,
443 const std::string& second_name, size_type second_rows,
444 size_type second_cols, const std::string& clarification)
445 : Error(file, line,
446 func + ": attempting to combine operators " + first_name +
447 " [" + std::to_string(first_rows) + " x " +
448 std::to_string(first_cols) + "] and " + second_name + " [" +
449 std::to_string(second_rows) + " x " +
450 std::to_string(second_cols) + "]: " + clarification)
451 {}
452};
453
454
459 class BadDimension : public Error {
460public:
472 BadDimension(const std::string& file, int line, const std::string& func,
473 const std::string& op_name, size_type op_num_rows,
474 size_type op_num_cols, const std::string& clarification)
475 : Error(file, line,
476 func + ": Object " + op_name + " has dimensions [" +
477 std::to_string(op_num_rows) + " x " +
478 std::to_string(op_num_cols) + "]: " + clarification)
479 {}
480};
481
482
489template <typename IndexType>
490 class BlockSizeError : public Error {
491public:
498 BlockSizeError(const std::string& file, const int line,
499 const int block_size, const IndexType size)
500 : Error(file, line,
501 "block size = " + std::to_string(block_size) +
502 ", size = " + std::to_string(size))
503 {}
504};
505
506
510 class ValueMismatch : public Error {
511public:
522 ValueMismatch(const std::string& file, int line, const std::string& func,
523 size_type val1, size_type val2,
524 const std::string& clarification)
525 : Error(file, line,
526 func + ": Value mismatch : " + std::to_string(val1) + " and " +
527 std::to_string(val2) + " : " + clarification)
528 {}
529};
530
531
535 class AllocationError : public Error {
536public:
545 AllocationError(const std::string& file, int line,
546 const std::string& device, size_type bytes)
547 : Error(file, line,
548 device + ": failed to allocate memory block of " +
549 std::to_string(bytes) + "B")
550 {}
551};
552
553
558 class OutOfBoundsError : public Error {
559public:
568 OutOfBoundsError(const std::string& file, int line, size_type index,
569 size_type bound)
570 : Error(file, line,
571 "trying to access index " + std::to_string(index) +
572 " in a memory block of " + std::to_string(bound) +
573 " elements")
574 {}
575};
576
577
582 class OverflowError : public Error {
583public:
589 OverflowError(const std::string& file, const int line,
590 const std::string& index_type)
591 : Error(file, line, "Overflowing " + index_type)
592 {}
593};
594
595
599 class StreamError : public Error {
600public:
609 StreamError(const std::string& file, int line, const std::string& func,
610 const std::string& message)
611 : Error(file, line, func + ": " + message)
612 {}
613};
614
615
620 class KernelNotFound : public Error {
621public:
629 KernelNotFound(const std::string& file, int line, const std::string& func)
630 : Error(file, line, func + ": unable to find an eligible kernel")
631 {}
632};
633
634
641 class UnsupportedMatrixProperty : public Error {
642public:
650 UnsupportedMatrixProperty(const std::string& file, const int line,
651 const std::string& msg)
652 : Error(file, line, msg)
653 {}
654};
655
656
658 class InvalidStateError : public Error {
659public:
668 InvalidStateError(const std::string& file, int line,
669 const std::string& func, const std::string& clarification)
670 : Error(file, line,
671 func + ": Invalid state encountered : " + clarification)
672 {}
673};
674
675
676} // namespace gko
677
678
679#endif // GKO_PUBLIC_CORE_BASE_EXCEPTION_HPP_
gko::AllocationError::AllocationError
AllocationError(const std::string &file, int line, const std::string &device, size_type bytes)
Initializes an allocation error.
Definition exception.hpp:545
gko::BadDimension::BadDimension
BadDimension(const std::string &file, int line, const std::string &func, const std::string &op_name, size_type op_num_rows, size_type op_num_cols, const std::string &clarification)
Initializes a bad dimension error.
Definition exception.hpp:472
gko::BlockSizeError::BlockSizeError
BlockSizeError(const std::string &file, const int line, const int block_size, const IndexType size)
Definition exception.hpp:498
gko::CublasError::CublasError
CublasError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a cuBLAS error.
Definition exception.hpp:205
gko::CudaError::CudaError
CudaError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a CUDA error.
Definition exception.hpp:182
gko::CufftError::CufftError
CufftError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a cuFFT error.
Definition exception.hpp:274
gko::CurandError::CurandError
CurandError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a cuRAND error.
Definition exception.hpp:228
gko::CusparseError::CusparseError
CusparseError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a cuSPARSE error.
Definition exception.hpp:251
gko::DimensionMismatch::DimensionMismatch
DimensionMismatch(const std::string &file, int line, const std::string &func, const std::string &first_name, size_type first_rows, size_type first_cols, const std::string &second_name, size_type second_rows, size_type second_cols, const std::string &clarification)
Initializes a dimension mismatch error.
Definition exception.hpp:440
gko::Error::Error
Error(const std::string &file, int line, const std::string &what)
Initializes an error.
Definition exception.hpp:66
gko::Error::what
virtual const char * what() const noexcept override
Returns a human-readable string with a more detailed description of the error.
Definition exception.hpp:74
gko::HipError::HipError
HipError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a HIP error.
Definition exception.hpp:297
gko::HipblasError::HipblasError
HipblasError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a hipBLAS error.
Definition exception.hpp:320
gko::HipfftError::HipfftError
HipfftError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a hipFFT error.
Definition exception.hpp:390
gko::HiprandError::HiprandError
HiprandError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a hipRAND error.
Definition exception.hpp:343
gko::HipsparseError::HipsparseError
HipsparseError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a hipSPARSE error.
Definition exception.hpp:367
gko::InvalidStateError::InvalidStateError
InvalidStateError(const std::string &file, int line, const std::string &func, const std::string &clarification)
Initializes an invalid state error.
Definition exception.hpp:668
gko::KernelNotFound::KernelNotFound
KernelNotFound(const std::string &file, int line, const std::string &func)
Initializes a KernelNotFound error.
Definition exception.hpp:629
gko::MetisError::MetisError
MetisError(const std::string &file, int line, const std::string &func, const std::string &error)
Initializes a METIS error.
Definition exception.hpp:413
gko::MpiError::MpiError
MpiError(const std::string &file, int line, const std::string &func, int64 error_code)
Initializes a MPI error.
Definition exception.hpp:159
gko::NotCompiled::NotCompiled
NotCompiled(const std::string &file, int line, const std::string &func, const std::string &module)
Initializes a NotCompiled error.
Definition exception.hpp:114
gko::NotImplemented::NotImplemented
NotImplemented(const std::string &file, int line, const std::string &func)
Initializes a NotImplemented error.
Definition exception.hpp:94
gko::NotSupported::NotSupported
NotSupported(const std::string &file, int line, const std::string &func, const std::string &obj_type)
Initializes a NotSupported error.
Definition exception.hpp:138
gko::OutOfBoundsError::OutOfBoundsError
OutOfBoundsError(const std::string &file, int line, size_type index, size_type bound)
Initializes an OutOfBoundsError.
Definition exception.hpp:568
gko::OverflowError::OverflowError
OverflowError(const std::string &file, const int line, const std::string &index_type)
Definition exception.hpp:589
gko::StreamError::StreamError
StreamError(const std::string &file, int line, const std::string &func, const std::string &message)
Initializes a file access error.
Definition exception.hpp:609
gko::UnsupportedMatrixProperty::UnsupportedMatrixProperty
UnsupportedMatrixProperty(const std::string &file, const int line, const std::string &msg)
Initializes the UnsupportedMatrixProperty error.
Definition exception.hpp:650
gko::ValueMismatch::ValueMismatch
ValueMismatch(const std::string &file, int line, const std::string &func, size_type val1, size_type val2, const std::string &clarification)
Initializes a value mismatch error.
Definition exception.hpp:522
gko
The Ginkgo namespace.
Definition abstract_factory.hpp:20
gko::int64
std::int64_t int64
64-bit signed integral type.
Definition types.hpp:113
gko::size_type
std::size_t size_type
Integral type used for allocation quantities.
Definition types.hpp:90
std
STL namespace.