Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for ClimaComms 0.6, update to ClimaCore 0.14 #602

Merged
merged 3 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
726 changes: 431 additions & 295 deletions experiments/Manifest.toml → .buildkite/Manifest.toml

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions .buildkite/Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[deps]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
ArtifactWrappers = "a14bc488-3040-4b00-9dc1-f6467924858a"
BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0"
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
ClimaComms = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d"
ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884"
ClimaLand = "08f4d4ce-cf43-44bb-ad95-9d2d5f413532"
ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c"
ClimaTimeSteppers = "595c0a79-7f3d-439a-bc5a-b232dc3bde79"
ClimaUtilities = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
Formatting = "59287772-0a20-5a39-b81b-1366585eb4c0"
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
Insolation = "e98cc03f-d57e-4e3c-b70c-8d51efe9e0d8"
Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab"
NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
ProfileCanvas = "efd6af41-a80b-495e-886c-e51b0c7d77a3"
RootSolvers = "7181ea78-2dcb-4de3-ab41-2b8ab5a31e74"
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
SurfaceFluxes = "49b00bb7-8bd4-4f2b-b78c-51cd0450215f"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
Thermodynamics = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c"
cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd"

[compat]
ClimaTimeSteppers = "0.7"
Statistics = "1"
58 changes: 30 additions & 28 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,13 @@ steps:
- "julia --project -e 'using Pkg; Pkg.status()'"

- echo "--- Instantiate experiments"
- "julia --project=experiments -e 'using Pkg; Pkg.develop(;path=\".\"); Pkg.instantiate(;verbose=true)'"
- "julia --project=experiments -e 'using Pkg; Pkg.add(\"ProfileCanvas\")'"
- "julia --project=experiments -e 'using Pkg; Pkg.status()'"
- "julia --project=.buildkite -e 'using Pkg; Pkg.develop(;path=\".\"); Pkg.instantiate(;verbose=true)'"
- "julia --project=.buildkite -e 'using Pkg; Pkg.status()'"

- echo "--- Instantiate lib/ClimaLandSimulations"
- "julia --project=lib/ClimaLandSimulations -e 'using Pkg; Pkg.develop(;path=\".\"); Pkg.instantiate(;verbose=true)'"
- "julia --project=lib/ClimaLandSimulations -e 'using Pkg; Pkg.status()'"

- echo "--- Instantiate test"
- "julia --project=test -e 'using Pkg; Pkg.develop(;path=\".\"); Pkg.instantiate(;verbose=true)'"
- "julia --project=test -e 'using Pkg; Pkg.status()'"
agents:
slurm_ntasks: 1
env:
Expand All @@ -44,50 +40,50 @@ steps:
- group: "Experiments"
steps:
- label: "Richards comparison to Bonan"
command: "julia --color=yes --project=experiments experiments/standalone/Soil/richards_comparison.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Soil/richards_comparison.jl"
artifact_paths: "experiments/standalone/Soil/comparison*png"

- label: "Evaporation from sand"
command: "julia --color=yes --project=experiments experiments/standalone/Soil/evaporation.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Soil/evaporation.jl"
artifact_paths: "experiments/standalone/Soil/evaporation*png"

# - label: "vaira_test"
# command: "julia --color=yes --project=experiments experiments/integrated/fluxnet/run_fluxnet.jl US-Var"
# artifact_paths: "experiments/integrated/fluxnet/US-Var/out/*png"

- label: "ozark_test"
command: "julia --color=yes --project=experiments experiments/integrated/fluxnet/run_fluxnet.jl US-MOz"
command: "julia --color=yes --project=.buildkite experiments/integrated/fluxnet/run_fluxnet.jl US-MOz"
artifact_paths: "experiments/integrated/fluxnet/US-MOz/out/*png"

- label: "niwot_test"
command: "julia --color=yes --project=experiments experiments/integrated/fluxnet/run_fluxnet.jl US-NR1"
command: "julia --color=yes --project=.buildkite experiments/integrated/fluxnet/run_fluxnet.jl US-NR1"
artifact_paths: "experiments/integrated/fluxnet/US-NR1/out/*png"

- label: "harvard_test"
command: "julia --color=yes --project=experiments experiments/integrated/fluxnet/run_fluxnet.jl US-Ha1"
command: "julia --color=yes --project=.buildkite experiments/integrated/fluxnet/run_fluxnet.jl US-Ha1"
artifact_paths: "experiments/integrated/fluxnet/US-Ha1/out/*png"

- label: "ozark_pft"
command: "julia --color=yes --project=experiments experiments/integrated/fluxnet/ozark_pft.jl"
command: "julia --color=yes --project=.buildkite experiments/integrated/fluxnet/ozark_pft.jl"
artifact_paths: "experiments/integrated/fluxnet/US-MOz/out/pft/*png"

- label: "ozark_conservation"
command: "julia --color=yes --project=experiments experiments/integrated/performance/conservation/ozark_conservation.jl"
command: "julia --color=yes --project=.buildkite experiments/integrated/performance/conservation/ozark_conservation.jl"
artifact_paths: "experiments/integrated/performance/conservation/*png"

- label: "soil/canopy lsm performance"
command: "julia --color=yes --project=experiments experiments/integrated/performance/profile_allocations.jl"
command: "julia --color=yes --project=.buildkite experiments/integrated/performance/profile_allocations.jl"
artifact_paths: "experiments/integrated/performance/*cpu*html"

- label: "Soilbiogeochem"
command: "julia --color=yes --project=experiments experiments/standalone/Biogeochemistry/experiment.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Biogeochemistry/experiment.jl"

- label: "Water conservation"
command: "julia --color=yes --project=experiments experiments/standalone/Soil/water_conservation.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Soil/water_conservation.jl"
artifact_paths: "experiments/standalone/Soil/water_conservation*png"

- label: "Richards Runoff CPU"
command: "julia --color=yes --project=experiments experiments/standalone/Soil/richards_runoff.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Soil/richards_runoff.jl"
artifact_paths: "experiments/standalone/Soil/artifacts/*png"
agents:
slurm_mem: 16G
Expand All @@ -102,74 +98,80 @@ steps:
steps:
- label: "Global Bucket on CPU (functional albedo)"
key: "global_bucket_function_cpu"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/global_bucket_function.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/global_bucket_function.jl"
artifact_paths: "experiments/standalone/Bucket/artifacts/*cpu*"

- label: "Global Bucket on CPU (static map albedo)"
key: "global_bucket_staticmap_cpu"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/global_bucket_staticmap.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/global_bucket_staticmap.jl"
artifact_paths: "experiments/standalone/Bucket/artifacts_staticmap/*cpu*"

- label: "Global Bucket on CPU (temporal map albedo)"
key: "global_bucket_temporalmap_cpu"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/global_bucket_temporalmap.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/global_bucket_temporalmap.jl"
artifact_paths: "experiments/standalone/Bucket/artifacts_temporalmap/*cpu*"

- group: "GPU: unit tests and global bucket"
steps:
- label: "GPU runtests"
command: "julia --color=yes --project=test test/runtests.jl"
command: "julia --color=yes --project=.buildkite test/runtests.jl"
agents:
slurm_ntasks: 1
slurm_gres: "gpu:1"

- label: "soil/canopy lsm performance on GPU"
command: "julia --color=yes --project=experiments experiments/integrated/performance/profile_allocations.jl"
command: "julia --color=yes --project=.buildkite experiments/integrated/performance/profile_allocations.jl"
agents:
slurm_ntasks: 1
slurm_gres: "gpu:1"
artifact_paths: "experiments/integrated/performance/*gpu*html"

- label: "Global Bucket on GPU (functional albedo)"
key: "global_bucket_function_gpu"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/global_bucket_function.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/global_bucket_function.jl"
agents:
slurm_ntasks: 1
slurm_gres: "gpu:1"
env:
CLIMACOMMS_DEVICE: "CUDA"
Sbozzolo marked this conversation as resolved.
Show resolved Hide resolved
artifact_paths: "experiments/standalone/Bucket/artifacts/*gpu*"

- label: "Global Bucket on GPU (static map albedo)"
key: "global_bucket_staticmap_gpu"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/global_bucket_staticmap.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/global_bucket_staticmap.jl"
agents:
slurm_ntasks: 1
slurm_gres: "gpu:1"
env:
CLIMACOMMS_DEVICE: "CUDA"
artifact_paths: "experiments/standalone/Bucket/artifacts_staticmap/*gpu*"

- label: "Global Bucket on GPU (temporal map albedo)"
key: "global_bucket_temporalmap_gpu"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/global_bucket_temporalmap.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/global_bucket_temporalmap.jl"
agents:
slurm_ntasks: 1
slurm_gres: "gpu:1"
env:
CLIMACOMMS_DEVICE: "CUDA"
artifact_paths: "experiments/standalone/Bucket/artifacts_temporalmap/*gpu*"

- group: "CPU/GPU comparisons"
steps:
- label: "Compare GPU bucket with CPU bucket (functional albedo)"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/compare_gpu_cpu_output.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/compare_gpu_cpu_output.jl"
depends_on:
- "global_bucket_function_cpu"
- "global_bucket_function_gpu"

- label: "Compare GPU bucket with CPU bucket (static map albedo)"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/compare_gpu_cpu_output.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/compare_gpu_cpu_output.jl"
depends_on:
- "global_bucket_staticmap_cpu"
- "global_bucket_staticmap_gpu"

- label: "Compare GPU bucket with CPU bucket (temporal map albedo)"
command: "julia --color=yes --project=experiments experiments/standalone/Bucket/compare_gpu_cpu_output.jl"
command: "julia --color=yes --project=.buildkite experiments/standalone/Bucket/compare_gpu_cpu_output.jl"
depends_on:
- "global_bucket_temporalmap_cpu"
- "global_bucket_temporalmap_gpu"
3 changes: 3 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ ClimaLand.jl Release Notes
main
--------

- Updated to ClimaComms 0.6 and ClimaCore 0.14. Now, `CUDA` and `MPI` are no
longer automatically installed.

v0.11.2
--------
- Add profiling of soil/canopy model to buildkite pipeline. This was the
Expand Down
6 changes: 3 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ version = "0.11.2"
[deps]
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
ArtifactWrappers = "a14bc488-3040-4b00-9dc1-f6467924858a"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
ClimaComms = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d"
ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884"
ClimaUtilities = "b3f4f4ca-9299-4f7f-bd9b-81e1242a7513"
Expand All @@ -26,6 +25,7 @@ Thermodynamics = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c"
[weakdeps]
ClimaParams = "5c42b081-d73a-476f-9059-fd94b934656c"
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
Expand All @@ -40,8 +40,8 @@ Adapt = "3, 4"
ArtifactWrappers = "0.2"
CSV = "0.10"
CUDA = "5"
ClimaComms = "0.5.6"
ClimaCore = "0.13.2"
ClimaComms = "0.5.6, 0.6"
ClimaCore = "0.13.2, 0.14"
ClimaParams = "0.10.2"
ClimaUtilities = "0.1.2"
DataFrames = "1"
Expand Down
2 changes: 2 additions & 0 deletions experiments/integrated/fluxnet/run_fluxnet.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import SciMLBase
import ClimaTimeSteppers as CTS
import ClimaComms
pkgversion(ClimaComms) >= v"0.6" && ClimaComms.@import_required_backends
using ClimaCore
import ClimaParams as CP
using Plots
Expand Down
2 changes: 2 additions & 0 deletions experiments/standalone/Biogeochemistry/experiment.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import SciMLBase
import ClimaComms
pkgversion(ClimaComms) >= v"0.6" && ClimaComms.@import_required_backends
import ClimaTimeSteppers as CTS
using ClimaCore
using ClimaLand
Expand Down
36 changes: 23 additions & 13 deletions experiments/standalone/Bucket/global_bucket_function.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
# surface temperature, evaporation, and surface energy flux.

import SciMLBase
import ClimaComms
pkgversion(ClimaComms) >= v"0.6" && ClimaComms.@import_required_backends
using CairoMakie
using Dates
using DelimitedFiles
Expand Down Expand Up @@ -172,30 +174,38 @@ hcoords = [Geometry.LatLongPoint(lat, long) for long in longpts, lat in latpts]
remapper = Remapping.Remapper(space, hcoords)

W = [
Remapping.interpolate(remapper, sol.u[k].bucket.W) for k in 1:length(sol.t)
Array(Remapping.interpolate(remapper, sol.u[k].bucket.W)) for
k in 1:length(sol.t)
];
Ws = [
Remapping.interpolate(remapper, sol.u[k].bucket.Ws) for k in 1:length(sol.t)
Array(Remapping.interpolate(remapper, sol.u[k].bucket.Ws)) for
k in 1:length(sol.t)
];
σS = [
Remapping.interpolate(remapper, sol.u[k].bucket.σS) for k in 1:length(sol.t)
Array(Remapping.interpolate(remapper, sol.u[k].bucket.σS)) for
k in 1:length(sol.t)
];
T_sfc = [
Remapping.interpolate(remapper, saved_values.saveval[k].bucket.T_sfc)
for k in 1:length(sol.t)
Array(
Remapping.interpolate(remapper, saved_values.saveval[k].bucket.T_sfc),
) for k in 1:length(sol.t)
];
evaporation = [
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.turbulent_fluxes.vapor_flux,
Array(
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.turbulent_fluxes.vapor_flux,
),
) for k in 1:length(sol.t)
];
F_sfc = [
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.R_n .+
saved_values.saveval[k].bucket.turbulent_fluxes.lhf .+
saved_values.saveval[k].bucket.turbulent_fluxes.shf,
Array(
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.R_n .+
saved_values.saveval[k].bucket.turbulent_fluxes.lhf .+
saved_values.saveval[k].bucket.turbulent_fluxes.shf,
),
) for k in 1:length(sol.t)
];

Expand Down
41 changes: 26 additions & 15 deletions experiments/standalone/Bucket/global_bucket_staticmap.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
# surface temperature, evaporation, and surface energy flux.

import SciMLBase
import ClimaComms
pkgversion(ClimaComms) >= v"0.6" && ClimaComms.@import_required_backends
using CairoMakie
using Dates
using DelimitedFiles
Expand Down Expand Up @@ -256,36 +258,45 @@ hcoords = [Geometry.LatLongPoint(lat, long) for long in longpts, lat in latpts]
remapper = Remapping.Remapper(space, hcoords)

W = [
Remapping.interpolate(remapper, sol.u[k].bucket.W) for k in 1:length(sol.t)
Array(Remapping.interpolate(remapper, sol.u[k].bucket.W)) for
k in 1:length(sol.t)
];
Ws = [
Remapping.interpolate(remapper, sol.u[k].bucket.Ws) for k in 1:length(sol.t)
Array(Remapping.interpolate(remapper, sol.u[k].bucket.Ws)) for
k in 1:length(sol.t)
];
σS = [
Remapping.interpolate(remapper, sol.u[k].bucket.σS) for k in 1:length(sol.t)
Array(Remapping.interpolate(remapper, sol.u[k].bucket.σS)) for
k in 1:length(sol.t)
];
T_sfc = [
Remapping.interpolate(remapper, saved_values.saveval[k].bucket.T_sfc)
for k in 1:length(sol.t)
Array(
Remapping.interpolate(remapper, saved_values.saveval[k].bucket.T_sfc),
) for k in 1:length(sol.t)
];
evaporation = [
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.turbulent_fluxes.vapor_flux,
Array(
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.turbulent_fluxes.vapor_flux,
),
) for k in 1:length(sol.t)
];
F_sfc = [
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.R_n .+
saved_values.saveval[k].bucket.turbulent_fluxes.lhf .+
saved_values.saveval[k].bucket.turbulent_fluxes.shf,
Array(
Remapping.interpolate(
remapper,
saved_values.saveval[k].bucket.R_n .+
saved_values.saveval[k].bucket.turbulent_fluxes.lhf .+
saved_values.saveval[k].bucket.turbulent_fluxes.shf,
),
) for k in 1:length(sol.t)
];

sw_forcing = [
Remapping.interpolate(remapper, saved_values.saveval[k].drivers.SW_d)
for k in 1:length(sol.t)
Array(
Remapping.interpolate(remapper, saved_values.saveval[k].drivers.SW_d),
) for k in 1:length(sol.t)
];

# save prognostic state to CSV - for comparison between GPU and CPU output
Expand Down
Loading
Loading