Skip to content

Commit 377cb6c

Browse files
xkykainavidcy
andauthored
Add on_architecture method for XESMF.Regridder (#4871)
* Add on_architecture method for XESMF.Regridder to support architecture-specific configurations * Add architecture-specific regridder tests for CPU and GPU * Update test_xesmf.jl --------- Co-authored-by: Navid C. Constantinou <[email protected]>
1 parent 11761fa commit 377cb6c

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

ext/OceananigansXESMFExt.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ using Oceananigans.Fields: AbstractField, topology, location
77
using Oceananigans.Grids: AbstractGrid, λnodes, φnodes, Center, Face, total_length
88

99
import Oceananigans.Fields: regrid!
10+
import Oceananigans.Architectures: on_architecture
1011
import XESMF: Regridder
1112

1213
node_array::AbstractMatrix, Nx, Ny) = view(ξ, 1:Nx, 1:Ny)
@@ -145,6 +146,11 @@ function Regridder(dst_field::AbstractField, src_field::AbstractField; method="c
145146
return XESMF.Regridder(method, weights, temp_src, temp_dst)
146147
end
147148

149+
on_architecture(on, r::XESMF.Regridder) = XESMF.Regridder(on_architecture(on, r.method),
150+
on_architecture(on, r.weights),
151+
on_architecture(on, r.src_temp),
152+
on_architecture(on, r.dst_temp))
153+
148154
"""
149155
regrid!(dst_field, regrider::XESMF.Regridder, src_field)
150156

test/test_xesmf.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ for arch in archs
4848
@test regridder.weights isa CUDA.CUSPARSE.CuSparseMatrixCSC
4949
end
5050

51+
if arch isa GPU
52+
cpu_regridder = on_architecture(CPU(), regridder)
53+
@test cpu_regridder.weights isa SparseMatrixCSC
54+
gpu_regridder = on_architecture(GPU(), cpu_regridder)
55+
@test gpu_regridder.weights isa CUDA.CUSPARSE.CuSparseMatrixCSC
56+
end
57+
5158
regrid!(dst_field, regridder, src_field)
5259

5360
# ∫ dst_field dA ≈ ∫ src_field dA

0 commit comments

Comments
 (0)