Skip to content

Commit 60212ea

Browse files
charleskawczynskiCharlie Kawczynski
andauthored
Disable GradientC2F shmem, add tests (#2278)
Co-authored-by: Charlie Kawczynski <charliek@clima.gps.caltech.edu>
1 parent 7a136f9 commit 60212ea

File tree

3 files changed

+40
-9
lines changed

3 files changed

+40
-9
lines changed

ext/cuda/operators_fd_shmem_is_supported.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ end
175175
@inline Operators.fd_shmem_is_supported(
176176
op::Operators.GradientC2F,
177177
bcs::NamedTuple,
178-
) =
179-
all(values(bcs)) do bc
180-
all(supported_bc -> bc isa supported_bc, (Operators.SetValue,))
181-
end
178+
) = false
179+
# all(values(bcs)) do bc
180+
# all(supported_bc -> bc isa supported_bc, (Operators.SetValue,))
181+
# end

test/Operators/finitedifference/unit_fd_ops_shared_memory.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ end
4040
bottom = Operators.SetValue(FT(0)),
4141
top = Operators.SetValue(FT(0)),
4242
)
43-
bc = @. lazy(ᶠgrad(c))
44-
@test Operators.any_fd_shmem_supported(bc)
45-
@test Operators.fd_shmem_is_supported(bc)
43+
# bc = @. lazy(ᶠgrad(c))
44+
# @test Operators.any_fd_shmem_supported(bc)
45+
# @test Operators.fd_shmem_is_supported(bc)
4646
end
4747

4848
#! format: off
@@ -72,6 +72,8 @@ end
7272
@test compare_cpu_gpu(fields_cpu.ᶠout2_contra, fields.ᶠout2_contra); @test !is_trivial(fields_cpu.ᶠout2_contra)
7373
@test compare_cpu_gpu(fields_cpu.ᶜout9, fields.ᶜout9); @test !is_trivial(fields_cpu.ᶜout9)
7474
@test compare_cpu_gpu(fields_cpu.ᶜout10, fields.ᶜout10); @test !is_trivial(fields_cpu.ᶜout10)
75+
@test compare_cpu_gpu(fields_cpu.ᶜout11, fields.ᶜout11); @test !is_trivial(fields_cpu.ᶜout11)
76+
@test compare_cpu_gpu(fields_cpu.ᶜout12, fields.ᶜout12); @test !is_trivial(fields_cpu.ᶜout12)
7577
@test compare_cpu_gpu(fields_cpu.ᶜout_uₕ, fields.ᶜout_uₕ); @test !is_trivial(fields_cpu.ᶜout_uₕ)
7678
@test compare_cpu_gpu(fields_cpu.ᶠout3_cov, fields.ᶠout3_cov); @test !is_trivial(fields_cpu.ᶠout3_cov)
7779
end
@@ -102,6 +104,8 @@ end
102104
@test compare_cpu_gpu(fields_cpu.ᶠout2_contra, fields.ᶠout2_contra); @test !is_trivial(fields_cpu.ᶠout2_contra)
103105
@test compare_cpu_gpu(fields_cpu.ᶜout9, fields.ᶜout9); @test !is_trivial(fields_cpu.ᶜout9)
104106
@test compare_cpu_gpu(fields_cpu.ᶜout10, fields.ᶜout10); @test !is_trivial(fields_cpu.ᶜout10)
107+
@test compare_cpu_gpu(fields_cpu.ᶜout11, fields.ᶜout11); @test !is_trivial(fields_cpu.ᶜout11)
108+
@test compare_cpu_gpu(fields_cpu.ᶜout12, fields.ᶜout12); @test !is_trivial(fields_cpu.ᶜout12)
105109
@test compare_cpu_gpu(fields_cpu.ᶜout_uₕ, fields.ᶜout_uₕ); @test !is_trivial(fields_cpu.ᶜout_uₕ)
106110
end
107111

@@ -130,6 +134,8 @@ end
130134
@test compare_cpu_gpu(fields_cpu.ᶠout2_contra, fields.ᶠout2_contra); @test !is_trivial(fields_cpu.ᶠout2_contra)
131135
@test compare_cpu_gpu(fields_cpu.ᶜout9, fields.ᶜout9); @test !is_trivial(fields_cpu.ᶜout9)
132136
@test compare_cpu_gpu(fields_cpu.ᶜout10, fields.ᶜout10); @test !is_trivial(fields_cpu.ᶜout10)
137+
@test compare_cpu_gpu(fields_cpu.ᶜout11, fields.ᶜout11); @test !is_trivial(fields_cpu.ᶜout11)
138+
@test compare_cpu_gpu(fields_cpu.ᶜout12, fields.ᶜout12); @test !is_trivial(fields_cpu.ᶜout12)
133139
@test compare_cpu_gpu(fields_cpu.ᶜout_uₕ, fields.ᶜout_uₕ); @test !is_trivial(fields_cpu.ᶜout_uₕ)
134140

135141
end

test/Operators/finitedifference/utils_fd_ops_shared_memory.jl

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ get_space_column(dev, FT; z_elem = 10) = ColumnSpace(
4747
function kernels!(fields)
4848
(; f, ρ, ϕ) = fields
4949
(; ᶜout1, ᶜout2, ᶜout3, ᶜout4, ᶜout5, ᶜout6, ᶜout7, ᶜout8, ᶜout9) = fields
50-
(; ᶜout10) = fields
50+
(; ᶜout10, ᶜout11, ᶜout12) = fields
51+
(; ᶠout1) = fields
5152
(; ᶠout1_contra, ᶠout2_contra) = fields
5253
(; ᶠout3_cov) = fields
5354
(; w_cov) = fields
@@ -132,6 +133,27 @@ function kernels!(fields)
132133
)
133134
@. ᶠout3_cov = ᶠgrad(ϕ)
134135

136+
ᶠgrad_top_bcs = Operators.GradientC2F(; top = Operators.SetValue(FT(10)))
137+
divf2c = Operators.DivergenceF2C(
138+
bottom = Operators.SetValue(Geometry.Covariant3Vector(FT(10))),
139+
)
140+
@. ᶜout11 = 0
141+
@. ᶜout11 += divf2c(ᶠgrad_top_bcs(ϕ))
142+
143+
ᶠgrad_no_bc = Operators.GradientC2F()
144+
div_bcs = Operators.DivergenceF2C(;
145+
bottom = Operators.SetValue(Geometry.Covariant3Vector(FT(10))),
146+
top = Operators.SetValue(Geometry.Covariant3Vector(FT(10))),
147+
)
148+
@. ᶜout12 = 0
149+
@. ᶜout12 += div_bcs(ᶠgrad_no_bc(ϕ))
150+
151+
ᶠinterp = Operators.InterpolateC2F(
152+
bottom = Operators.Extrapolate(),
153+
top = Operators.Extrapolate(),
154+
)
155+
@. ᶠout1 = ᶠinterp(ϕ)
156+
135157
return nothing
136158
end;
137159

@@ -145,6 +167,8 @@ function get_fields(space::Operators.AllFaceFiniteDifferenceSpace)
145167
i -> Fields.Field(Geometry.Contravariant3Vector{FT}, space),
146168
length(K_contra),
147169
)
170+
K_scalar = (ntuple(i -> Symbol("ᶠout$(i)"), 1)...,)
171+
V_scalar = ntuple(i -> Fields.Field(FT, space), length(K_scalar))
148172
K_cov_out = (ntuple(i -> Symbol("ᶠout$(i)_cov"), 8)...,)
149173
V_cov_out = ntuple(
150174
i -> Fields.zeros(Geometry.Covariant3Vector{FT}, space),
@@ -157,6 +181,7 @@ function get_fields(space::Operators.AllFaceFiniteDifferenceSpace)
157181
)
158182
nt = (;
159183
zip(K, V)...,
184+
zip(K_scalar, V_scalar)...,
160185
zip(K_contra, V_contra)...,
161186
zip(K_cov, V_cov)...,
162187
zip(K_cov_out, V_cov_out)...,
@@ -168,7 +193,7 @@ end
168193

169194
function get_fields(space::Operators.AllCenterFiniteDifferenceSpace)
170195
FT = Spaces.undertype(space)
171-
K = (ntuple(i -> Symbol("ᶜout$i"), 10)..., , )
196+
K = (ntuple(i -> Symbol("ᶜout$i"), 12)..., , )
172197
V = ntuple(i -> Fields.zeros(space), length(K))
173198
nt = (;
174199
zip(K, V)...,

0 commit comments

Comments
 (0)