Skip to content

Commit 37ebde4

Browse files
committed
assert at end of comparison
1 parent 58a1833 commit 37ebde4

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

experiments/AMIP/compare_cpu_gpu.jl

+20-9
Original file line numberDiff line numberDiff line change
@@ -52,49 +52,60 @@ cpu_artifacts_dir = joinpath(output_dir, joinpath(mode_name, cpu_run_name)) * "_
5252
gpu_artifacts_dir = joinpath(output_dir, joinpath(mode_name, gpu_run_name)) * "_artifacts"
5353

5454

55-
# Read in and compare atmos state variables
55+
# Read in and compare atmos state variables on centers and on faces
5656
cpu_atmos_state_center = DLM.readdlm(joinpath(cpu_artifacts_dir, "atmos_state_center_tend_cpu.txt"), ',')
5757
gpu_atmos_state_center = DLM.readdlm(joinpath(gpu_artifacts_dir, "atmos_state_center_tend_gpu.txt"), ',')
5858

5959
@show abs(maximum(cpu_atmos_state_center .- gpu_atmos_state_center))
6060
@show abs(median(cpu_atmos_state_center .- gpu_atmos_state_center))
6161
@show abs(mean(cpu_atmos_state_center .- gpu_atmos_state_center))
62-
@assert isapprox(cpu_atmos_state_center, gpu_atmos_state_center)
62+
atmos_center_approx = isapprox(cpu_atmos_state_center, gpu_atmos_state_center)
6363

6464
cpu_atmos_state_face = DLM.readdlm(joinpath(cpu_artifacts_dir, "atmos_state_face_tend_cpu.txt"), ',')
6565
gpu_atmos_state_face = DLM.readdlm(joinpath(gpu_artifacts_dir, "atmos_state_face_tend_gpu.txt"), ',')
6666

6767
@show abs(maximum(cpu_atmos_state_face .- gpu_atmos_state_face))
6868
@show abs(median(cpu_atmos_state_face .- gpu_atmos_state_face))
6969
@show abs(mean(cpu_atmos_state_face .- gpu_atmos_state_face))
70-
@assert isapprox(cpu_atmos_state_face, gpu_atmos_state_face)
70+
println()
71+
atmos_face_approx = isapprox(cpu_atmos_state_face, gpu_atmos_state_face)
7172

7273

73-
# Read in and compare land state variables
74+
# Read in and compare land state variables on 3D space and 2D space
7475
cpu_land_state_3d = DLM.readdlm(joinpath(cpu_artifacts_dir, "land_state_3d_tend_cpu.txt"), ',')
7576
gpu_land_state_3d = DLM.readdlm(joinpath(gpu_artifacts_dir, "land_state_3d_tend_gpu.txt"), ',')
7677

7778
@show abs(maximum(cpu_land_state_3d .- gpu_land_state_3d))
7879
@show abs(median(cpu_land_state_3d .- gpu_land_state_3d))
7980
@show abs(mean(cpu_land_state_3d .- gpu_land_state_3d))
80-
@assert isapprox(cpu_land_state_3d, gpu_land_state_3d)
81+
land_3d_approx = isapprox(cpu_land_state_3d, gpu_land_state_3d)
8182

8283
cpu_land_state_2d = DLM.readdlm(joinpath(cpu_artifacts_dir, "land_state_2d_tend_cpu.txt"), ',')
8384
gpu_land_state_2d = DLM.readdlm(joinpath(gpu_artifacts_dir, "land_state_2d_tend_gpu.txt"), ',')
8485

8586
@show abs(maximum(cpu_land_state_2d .- gpu_land_state_2d))
8687
@show abs(median(cpu_land_state_2d .- gpu_land_state_2d))
8788
@show abs(mean(cpu_land_state_2d .- gpu_land_state_2d))
88-
@assert isapprox(cpu_land_state_2d, gpu_land_state_2d)
89+
println()
90+
land_2d_approx = isapprox(cpu_land_state_2d, gpu_land_state_2d)
8991

9092

9193
# Read in ocean state variables (if not AMIP)
94+
ocean_approx = true
9295
if !(mode_name == "amip")
93-
cpu_land_state = DLM.readdlm(joinpath(cpu_artifacts_dir, "land_state_tend_cpu.txt"), ',')
94-
gpu_land_state = DLM.readdlm(joinpath(gpu_artifacts_dir, "land_state_tend_gpu.txt"), ',')
96+
cpu_ocean_state = DLM.readdlm(joinpath(cpu_artifacts_dir, "ocean_state_tend_cpu.txt"), ',')
97+
gpu_ocean_state = DLM.readdlm(joinpath(gpu_artifacts_dir, "ocean_state_tend_gpu.txt"), ',')
9598

9699
@show abs(maximum(cpu_ocean_state .- gpu_ocean_state))
97100
@show abs(median(cpu_ocean_state .- gpu_ocean_state))
98101
@show abs(mean(cpu_ocean_state .- gpu_ocean_state))
99-
@assert isapprox(cpu_ocean_state, gpu_ocean_state)
102+
ocean_approx = isapprox(cpu_ocean_state, gpu_ocean_state)
100103
end
104+
105+
# Output warning for each component model if not equal
106+
!atmos_center_approx || !atmos_face_approx ? @warn("atmos states not equal") : nothing
107+
!land_2d_approx || !land_3d_approx ? @warn("land states not equal") : nothing
108+
!ocean_approx ? @warn("ocean states not equal") : nothing
109+
110+
# Assert all states are equal at the end so we still check all of them
111+
@assert atmos_center_approx && atmos_face_approx && land_3d_approx && land_2d_approx && ocean_approx

0 commit comments

Comments
 (0)