Misc.hpp
Go to the documentation of this file.
1#ifndef OPM_MISC_HPP
2#define OPM_MISC_HPP
3
4#ifdef HAVE_ROCSPARSE
5#include <hip/hip_runtime_api.h>
6#include <hip/hip_version.h>
7#include <sstream>
8#include <iostream>
9
10#define HIP_CHECK(STAT) \
11 do { \
12 const hipError_t stat = (STAT); \
13 if(stat != hipSuccess) \
14 { \
15 std::ostringstream oss; \
16 oss << "rocsparseSolverBackend::hip "; \
17 oss << "error: " << hipGetErrorString(stat); \
18 OPM_THROW(std::logic_error, oss.str()); \
19 } \
20 } while(0)
21
22#define ROCSPARSE_CHECK(STAT) \
23 do { \
24 const rocsparse_status stat = (STAT); \
25 if(stat != rocsparse_status_success) \
26 { \
27 std::ostringstream oss; \
28 oss << "rocsparseSolverBackend::rocsparse "; \
29 oss << "error: " << stat; \
30 OPM_THROW(std::logic_error, oss.str()); \
31 } \
32 } while(0)
33
34#define ROCBLAS_CHECK(STAT) \
35 do { \
36 const rocblas_status stat = (STAT); \
37 if(stat != rocblas_status_success) \
38 { \
39 std::ostringstream oss; \
40 oss << "rocsparseSolverBackend::rocblas "; \
41 oss << "error: " << stat; \
42 OPM_THROW(std::logic_error, oss.str()); \
43 } \
44 } while(0)
45#endif
46
47#define HIP_CHECK_NOTHROW(STAT) \
48 do { \
49 const hipError_t stat = (STAT); \
50 if(stat != hipSuccess) \
51 { \
52 std::cerr << "rocsparseSolverBackend::hip error: " << hipGetErrorString(stat) << std::endl; \
53 } \
54 } while(0)
55
56#define ROCSPARSE_CHECK_NOTHROW(STAT) \
57 do { \
58 const rocsparse_status stat = (STAT); \
59 if(stat != rocsparse_status_success) \
60 { \
61 std::cerr << "rocsparseSolverBackend::rocsparse error: " << stat << std::endl; \
62 } \
63 } while(0)
64
65namespace Opm::Accelerator {
66
67unsigned int ceilDivision(const unsigned int A,
68 const unsigned int B);
69
70template<class Scalar>
71Scalar get_absmax(const Scalar *data,
72 const int N);
73
74template<class Scalar>
75void solve_transposed_3x3(const Scalar *A,
76 const Scalar *b,
77 Scalar *x);
78
79}
80
81#endif
Definition: amgclSolverBackend.hpp:44
void solve_transposed_3x3(const Scalar *A, const Scalar *b, Scalar *x)
unsigned int ceilDivision(const unsigned int A, const unsigned int B)
Scalar get_absmax(const Scalar *data, const int N)