Skip to content

Commit 899f3e2

Browse files
committed
Make switching logic explict in functions handling rank-3 fields.
1 parent 87437b6 commit 899f3e2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/atlas/interpolation/method/Method.cc

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,13 +274,18 @@ void Method::interpolate_field_rank3(const Field& src, Field& tgt, const Matrix&
274274
ATLAS_NOTIMPLEMENTED; // hicsparse does not support rank-3 fields
275275
}
276276

277+
if (backend.type() == "eckit_linalg") {
278+
// Switch to OpenMP as eckit_linalg does not support rank-3 fields
279+
backend = sparse::backend::openmp();
280+
}
281+
277282
auto W_v = make_host_view<eckit::linalg::Scalar, eckit::linalg::Index>(W);
278283
auto src_v = make_host_view_updated<Value, 3>(src);
279284
auto tgt_v = make_host_view_updated<Value, 3>(tgt);
280285
if (not W.empty() && nonLinear_(src)) {
281286
ATLAS_ASSERT(false, "nonLinear interpolation not supported for rank-3 fields.");
282287
}
283-
sparse_matrix_multiply(W_v, src_v, tgt_v, sparse::backend::openmp());
288+
sparse_matrix_multiply(W_v, src_v, tgt_v, backend);
284289

285290
tgt.setDeviceNeedsUpdate(true);
286291
}
@@ -343,11 +348,16 @@ void Method::adjoint_interpolate_field_rank3(Field& src, const Field& tgt, const
343348
ATLAS_NOTIMPLEMENTED; // hicsparse does not support rank-3 fields
344349
}
345350

351+
if (backend.type() == "eckit_linalg") {
352+
// Switch to OpenMP as eckit_linalg does not support rank-3 fields
353+
backend = sparse::backend::openmp();
354+
}
355+
346356
auto src_v = make_host_view_updated<Value, 3>(src);
347357
auto tgt_v = make_host_view_updated<Value, 3>(tgt);
348358
auto W_v = make_host_view<eckit::linalg::Scalar,eckit::linalg::Index>(W);
349359

350-
sparse_matrix_multiply_add(W_v, tgt_v, src_v, sparse::backend::openmp());
360+
sparse_matrix_multiply_add(W_v, tgt_v, src_v, backend);
351361

352362
src.setDeviceNeedsUpdate(true);
353363
}

0 commit comments

Comments
 (0)