From 042172588d4d839bb002509ed719bb04d51c9842 Mon Sep 17 00:00:00 2001 From: Kjetil Olsen Lye Date: Wed, 31 May 2023 16:28:51 +0200 Subject: [PATCH] Added CuSeqILU0 as a parallel preconditioner as well. --- .../linalg/PreconditionerFactory_impl.hpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/opm/simulators/linalg/PreconditionerFactory_impl.hpp b/opm/simulators/linalg/PreconditionerFactory_impl.hpp index 17466f357..a06d046e5 100644 --- a/opm/simulators/linalg/PreconditionerFactory_impl.hpp +++ b/opm/simulators/linalg/PreconditionerFactory_impl.hpp @@ -45,6 +45,8 @@ #include #include #include +#include + #endif @@ -224,6 +226,20 @@ struct StandardPreconditioners return std::make_shared>(op, prm, weightsCalculator, pressureIndex, comm); }); } + +#if HAVE_CUDA + F::addCreator("CUILU0", [](const O& op, const P& prm, const std::function&, std::size_t, const C& comm) { + const double w = prm.get("relaxation", 1.0); + static constexpr auto block_size = V::block_type::dimension; + using field_type = typename V::field_type; + using CuILU0 = typename Opm::cuistl::CuSeqILU0, Opm::cuistl::CuVector>; + auto cuILU0 = std::make_shared(op.getmat(), w); + + auto adapted = std::make_shared>(cuILU0); + auto wrapped = std::make_shared>(adapted, comm); + return wrapped; + }); +#endif }