19#ifndef OPM_ILU0_KERNELS_HPP
20#define OPM_ILU0_KERNELS_HPP
23#include <opm/simulators/linalg/gpuistl/detail/kernel_enums.hpp>
24namespace Opm::gpuistl::detail::ILU0
41template <
class T,
int blocksize>
42void solveUpperLevelSet(T* reorderedMat,
67template <
class T,
int blocksize>
68void solveLowerLevelSet(T* reorderedMat,
95template <
int blocksize,
class LinearSolverScalar,
class MatrixScalar,
class DiagonalScalar>
96void solveUpperLevelSetSplit(MatrixScalar* reorderedMat,
102 const DiagonalScalar* dInv,
103 LinearSolverScalar* v,
105 cudaStream_t stream);
124template <
int blocksize,
class LinearSolverScalar,
class MatrixScalar>
125void solveLowerLevelSetSplit(MatrixScalar* reorderedLowerMat,
128 int* indexConversion,
131 const LinearSolverScalar* d,
132 LinearSolverScalar* v,
134 cudaStream_t stream);
152template <
class T,
int blocksize>
153void LUFactorization(T* reorderedMat,
156 int* naturalToReordered,
157 int* reorderedToNatual,
158 size_t rowsInLevelSet,
160 int threadBlockSize);
184template <
int blocksize,
class InputScalar,
class OutputScalar, MatrixStorageMPScheme mixedPrecisionScheme>
185void LUFactorizationSplit(InputScalar* srcReorderedLowerMat,
186 int* lowerRowIndices,
187 int* lowerColIndices,
188 InputScalar* srcReorderedUpperMat,
189 int* upperRowIndices,
190 int* upperColIndices,
191 InputScalar* srcDiagonal,
192 OutputScalar* dstReorderedLowerMat,
193 OutputScalar* dstReorderedUpperMat,
194 OutputScalar* dstDiagonal,
195 int* reorderedToNatural,
196 int* naturalToReordered,
199 int threadBlockSize);