opm-simulators
Misc.hpp
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 
65 namespace Opm::Accelerator {
66 
67 unsigned int ceilDivision(const unsigned int A,
68  const unsigned int B);
69 
70 template<class Scalar>
71 Scalar get_absmax(const Scalar *data,
72  const int N);
73 
74 template<class Scalar>
75 void solve_transposed_3x3(const Scalar *A,
76  const Scalar *b,
77  Scalar *x);
78 
79 }
80 
81 #endif
Definition: amgclSolverBackend.cpp:49