19 #ifndef OPM_GPU_CPR_AMG_OPERATIONS_HPP 20 #define OPM_GPU_CPR_AMG_OPERATIONS_HPP 22 #include <opm/simulators/linalg/gpuistl/GpuSparseMatrixWrapper.hpp> 23 #include <opm/simulators/linalg/gpuistl/GpuVector.hpp> 38 template <
typename T,
bool transpose>
40 std::size_t pressureVarIndex,
41 GpuVector<T>& weights,
42 const GpuVector<int>& diagonalIndices);
52 template <
typename T,
bool transpose>
54 GpuSparseMatrixWrapper<T>& coarseMatrix,
55 const GpuVector<T>& weights,
56 std::size_t pressureVarIndex);
67 template <
typename T,
bool transpose>
70 const GpuVector<T>& weights,
71 std::size_t pressureVarIndex);
81 template <
typename T,
bool transpose>
84 const GpuVector<T>& weights,
85 std::size_t pressureVarIndex);
89 #endif // OPM_GPU_CPR_AMG_OPERATIONS_HPP void calculateCoarseEntries(const GpuSparseMatrixWrapper< T > &fineMatrix, GpuSparseMatrixWrapper< T > &coarseMatrix, const GpuVector< T > &weights, std::size_t pressureVarIndex)
Calculates the coarse level matrix entries based on the fine level matrix and weights.
void restrictVector(const GpuVector< T > &fine, GpuVector< T > &coarse, const GpuVector< T > &weights, std::size_t pressureVarIndex)
Restricts a fine level vector to a coarse level vector based on pressure index.
void getQuasiImpesWeights(const GpuSparseMatrixWrapper< T > &matrix, std::size_t pressureVarIndex, GpuVector< T > &weights, const GpuVector< int > &diagonalIndices)
Calculates quasi-IMPES weights for CPR preconditioner on GPU.
void prolongateVector(const GpuVector< T > &coarse, GpuVector< T > &fine, const GpuVector< T > &weights, std::size_t pressureVarIndex)
Prolongs a coarse level vector to a fine level vector based on pressure index.
Contains wrappers to make the CuBLAS library behave as a modern C++ library with function overlading...
Definition: autotuner.hpp:29