Skip to content

Commit 464e73c

Browse files
committed
assert at end of comparison
1 parent 58a1833 commit 464e73c

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

experiments/AMIP/compare_cpu_gpu.jl

+33-24
Original file line numberDiff line numberDiff line change
@@ -52,49 +52,58 @@ 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

59-
@show abs(maximum(cpu_atmos_state_center .- gpu_atmos_state_center))
60-
@show abs(median(cpu_atmos_state_center .- gpu_atmos_state_center))
61-
@show abs(mean(cpu_atmos_state_center .- gpu_atmos_state_center))
62-
@assert isapprox(cpu_atmos_state_center, gpu_atmos_state_center)
59+
print(abs(maximum(cpu_atmos_state_center .- gpu_atmos_state_center)))
60+
print(abs(median(cpu_atmos_state_center .- gpu_atmos_state_center)))
61+
print(abs(mean(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

67-
@show abs(maximum(cpu_atmos_state_face .- gpu_atmos_state_face))
68-
@show abs(median(cpu_atmos_state_face .- gpu_atmos_state_face))
69-
@show abs(mean(cpu_atmos_state_face .- gpu_atmos_state_face))
70-
@assert isapprox(cpu_atmos_state_face, gpu_atmos_state_face)
67+
print(abs(maximum(cpu_atmos_state_face .- gpu_atmos_state_face)))
68+
print(abs(median(cpu_atmos_state_face .- gpu_atmos_state_face)))
69+
println(abs(mean(cpu_atmos_state_face .- gpu_atmos_state_face)))
70+
atmos_face_approx = isapprox(cpu_atmos_state_face, gpu_atmos_state_face)
7171

7272

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

77-
@show abs(maximum(cpu_land_state_3d .- gpu_land_state_3d))
78-
@show abs(median(cpu_land_state_3d .- gpu_land_state_3d))
79-
@show abs(mean(cpu_land_state_3d .- gpu_land_state_3d))
80-
@assert isapprox(cpu_land_state_3d, gpu_land_state_3d)
77+
print(abs(maximum(cpu_land_state_3d .- gpu_land_state_3d)))
78+
print(abs(median(cpu_land_state_3d .- gpu_land_state_3d)))
79+
print(abs(mean(cpu_land_state_3d .- gpu_land_state_3d)))
80+
land_3d_approx = isapprox(cpu_land_state_3d, gpu_land_state_3d)
8181

8282
cpu_land_state_2d = DLM.readdlm(joinpath(cpu_artifacts_dir, "land_state_2d_tend_cpu.txt"), ',')
8383
gpu_land_state_2d = DLM.readdlm(joinpath(gpu_artifacts_dir, "land_state_2d_tend_gpu.txt"), ',')
8484

85-
@show abs(maximum(cpu_land_state_2d .- gpu_land_state_2d))
86-
@show abs(median(cpu_land_state_2d .- gpu_land_state_2d))
87-
@show abs(mean(cpu_land_state_2d .- gpu_land_state_2d))
88-
@assert isapprox(cpu_land_state_2d, gpu_land_state_2d)
85+
print(abs(maximum(cpu_land_state_2d .- gpu_land_state_2d)))
86+
print(abs(median(cpu_land_state_2d .- gpu_land_state_2d)))
87+
println(abs(mean(cpu_land_state_2d .- gpu_land_state_2d)))
88+
land_2d_approx = isapprox(cpu_land_state_2d, gpu_land_state_2d)
8989

9090

9191
# Read in ocean state variables (if not AMIP)
92+
ocean_approx = true
9293
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"), ',')
94+
cpu_ocean_state = DLM.readdlm(joinpath(cpu_artifacts_dir, "ocean_state_tend_cpu.txt"), ',')
95+
gpu_ocean_state = DLM.readdlm(joinpath(gpu_artifacts_dir, "ocean_state_tend_gpu.txt"), ',')
9596

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

0 commit comments

Comments
 (0)