From 336afbcfcfc89783aee6cee02635833d6f3fcb76 Mon Sep 17 00:00:00 2001 From: Jakob Torben Date: Thu, 9 Oct 2025 10:54:19 +0200 Subject: [PATCH] Set linear solver accelerator to CPU for NLDD local solvers --- opm/simulators/linalg/FlowLinearSolverParameters.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/opm/simulators/linalg/FlowLinearSolverParameters.cpp b/opm/simulators/linalg/FlowLinearSolverParameters.cpp index 1b3641f980..26e7a5ee29 100644 --- a/opm/simulators/linalg/FlowLinearSolverParameters.cpp +++ b/opm/simulators/linalg/FlowLinearSolverParameters.cpp @@ -68,11 +68,18 @@ void FlowLinearSolverParameters::init(bool cprRequestedInDataFile) } accelerator_mode_ = Parameters::Get(); + cpr_weights_thread_parallel_ = Parameters::Get(); gpu_device_id_ = Parameters::Get(); opencl_platform_id_ = Parameters::Get(); opencl_ilu_parallel_ = Parameters::Get(); - linear_solver_accelerator_ = Parameters::linearSolverAcceleratorTypeFromCLI(); - cpr_weights_thread_parallel_ = Parameters::Get(); + + // NLDD local solvers must use CPU accelerator because extractMatrix and other + // operations in the NLDD implementation are not GPU-compatible yet. + if (is_nldd_local_solver_) { + linear_solver_accelerator_ = Parameters::LinearSolverAcceleratorType::CPU; + } else { + linear_solver_accelerator_ = Parameters::linearSolverAcceleratorTypeFromCLI(); + } if (linear_solver_accelerator_ == Parameters::LinearSolverAcceleratorType::GPU) { if (!Parameters::IsSet()) {