diff --git a/.buildkite/distributed/pipeline.yml b/.buildkite/distributed/pipeline.yml index c8a2a15a63..0c06cbb02f 100644 --- a/.buildkite/distributed/pipeline.yml +++ b/.buildkite/distributed/pipeline.yml @@ -3,34 +3,26 @@ agents: slurm_mem: 8G modules: climacommon/2024_05_27 - env: JULIA_LOAD_PATH: "${JULIA_LOAD_PATH}:${BUILDKITE_BUILD_CHECKOUT_PATH}/.buildkite/distributed" OPENBLAS_NUM_THREADS: 1 + JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager + JULIA_NUM_PRECOMPILE_TASKS: 8 + JULIA_NUM_THREADS: 8 OMPI_MCA_opal_warn_on_missing_libcuda: 0 steps: - label: "initialize" key: "init_central" + env: + TEST_GROUP: "init" command: - echo "--- Instantiate project" - - "julia --project -e 'using Pkg; Pkg.instantiate(;verbose=true); Pkg.precompile(;strict=true)'" - # force the initialization of the CUDA runtime as it is lazily loaded by default - - "julia --project -e 'using CUDA; CUDA.precompile_runtime(); CUDA.versioninfo()'" - - "julia --project -e 'using MPI; MPI.versioninfo()'" - # Download artifacts by running an empty testgroup and thereby executing /test/runtests.jl - "julia -O0 --color=yes --project -e 'using Pkg; Pkg.test()'" - - - echo "--- Instantiate status" - - "julia --project -e 'using Pkg; Pkg.status()'" - agents: slurm_mem: 120G slurm_gpus: 1 slurm_cpus_per_task: 8 - env: - JULIA_NUM_PRECOMPILE_TASKS: 8 - TEST_GROUP: "init" - wait @@ -54,6 +46,11 @@ steps: slurm_mem: 120G slurm_ntasks: 4 slurm_gpus_per_task: 1 + retry: + automatic: + - exit_status: 1 + limit: 1 + - label: "🦾 cpu distributed solvers tests" key: "distributed_solvers_cpu" @@ -75,6 +72,10 @@ steps: slurm_mem: 120G slurm_ntasks: 4 slurm_gpus_per_task: 1 + retry: + automatic: + - exit_status: 1 + limit: 1 - label: "🤺 cpu distributed hydrostatic model tests" key: "distributed_hydrostatic_model_cpu" @@ -96,6 +97,10 @@ steps: slurm_mem: 120G slurm_ntasks: 4 slurm_gpus_per_task: 1 + retry: + automatic: + - exit_status: 1 + limit: 1 - label: "🦍 cpu distributed nonhydrostatic regression" key: "distributed_nonhydrostatic_regression_cpu" @@ -117,6 +122,10 @@ steps: slurm_mem: 120G slurm_ntasks: 4 slurm_gpus_per_task: 1 + retry: + automatic: + - exit_status: 1 + limit: 1 - wait @@ -125,3 +134,4 @@ steps: - "build_history staging" artifact_paths: - "build_history.html" + diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 39b8aef54e..b9a4fdf725 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -4,6 +4,8 @@ env: SVERDRUP_HOME: "/data5/glwagner" TARTARUS_HOME: "/storage5/buildkite-agent" JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager + JULIA_NUM_PRECOMPILE_TASKS: 8 + JULIA_NUM_THREADS: 8 steps: - label: "🎪 initialize gpu environment" @@ -15,17 +17,6 @@ steps: # Download julia binaries - "wget -N -P $SVERDRUP_HOME https://julialang-s3.julialang.org/bin/linux/x64/$JULIA_MINOR_VERSION/julia-$JULIA_VERSION-linux-x86_64.tar.gz" - "tar xf $SVERDRUP_HOME/julia-$JULIA_VERSION-linux-x86_64.tar.gz -C $SVERDRUP_HOME" - - # Instantiate and precompile - - "$SVERDRUP_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.instantiate(; verbose=true)'" - - "$SVERDRUP_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.build()'" - - "$SVERDRUP_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.precompile()'" - - "$SVERDRUP_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.status()'" - - # Force the initialization of the CUDA runtime as it is lazily loaded by default - - "$SVERDRUP_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using CUDA; try CUDA.versioninfo(); catch; end'" - - # Download artifacts by running an empty testgroup and thereby executing /test/runtests.jl - "$SVERDRUP_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.test()'" agents: queue: Oceananigans @@ -36,22 +27,14 @@ steps: env: JULIA_DEPOT_PATH: "$TARTARUS_HOME/.julia-$BUILDKITE_BUILD_NUMBER" TEST_GROUP: "init" - CUDA_VISIBLE_DEVICES: "-1" + CUDA_VISIBLE_DEVICES: "0" JULIA_BINDIR: "$TARTARUS_HOME/julia-$JULIA_VERSION/bin" TMPDIR: "$TARTARUS_HOME/tmp" commands: # Download julia binaries - "wget -N -P $TARTARUS_HOME https://julialang-s3.julialang.org/bin/linux/x64/$JULIA_MINOR_VERSION/julia-$JULIA_VERSION-linux-x86_64.tar.gz" - "tar xf $TARTARUS_HOME/julia-$JULIA_VERSION-linux-x86_64.tar.gz -C $TARTARUS_HOME" - - # Instantiate, precompile, and download artifacts by running an empty testgroup and thereby executing /test/runtests.jl - - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.instantiate(; verbose=true)'" - - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.precompile()'" - - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.status()'" - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.test()'" - - # Set up the mpiexecjl command - - "$TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using MPI; MPI.install_mpiexecjl()'" agents: queue: Oceananigans architecture: CPU @@ -69,6 +52,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🐇 cpu unit tests" @@ -81,6 +68,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -96,6 +87,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🕊️ cpu poisson solver tests 1" @@ -108,6 +103,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" - label: "🦖 gpu poisson solver tests 2" @@ -119,6 +118,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦕 cpu poisson solver tests 2" @@ -131,6 +134,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" - label: "🌷 gpu matrix poisson solver tests" @@ -142,6 +149,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🌹 cpu matrix poisson solver tests" @@ -154,6 +165,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" - label: "🦤 gpu general solver tests" @@ -165,6 +180,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦃 cpu general solver tests" @@ -177,6 +196,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -192,6 +215,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦞 cpu time stepping tests 1" @@ -204,6 +231,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -219,6 +250,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🐬 cpu time stepping tests 2" @@ -231,6 +266,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -246,6 +285,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦗 cpu time stepping tests 3" @@ -258,6 +301,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -273,6 +320,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🎏 cpu turbulence closures" @@ -285,6 +336,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -300,6 +355,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦑 cpu hydrostatic free surface model tests" @@ -312,6 +371,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -327,6 +390,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦆 cpu shallow water model tests" @@ -339,6 +406,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -354,6 +425,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🐋 cpu simulation tests" @@ -366,6 +441,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -381,6 +460,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🍃 cpu lagrangian particles tests" @@ -393,6 +476,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -408,6 +495,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🤖 cpu abstract operations tests" @@ -420,6 +511,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -435,6 +530,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🧄 cpu multi region tests" @@ -447,6 +546,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -462,6 +565,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🐪 cpu nonhydrostatic regression tests" @@ -474,6 +581,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" - label: "🙈 gpu hydrostatic regression tests" @@ -485,6 +596,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🙉 cpu hydrostatic regression tests" @@ -497,6 +612,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -512,6 +631,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "🦍 cpu scripts" @@ -524,6 +647,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### @@ -539,6 +666,10 @@ steps: agents: queue: Oceananigans architecture: GPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_gpu" - label: "👹 cpu Enzyme extension tests" @@ -551,6 +682,10 @@ steps: agents: queue: Oceananigans architecture: CPU + retry: + automatic: + - exit_status: 1 + limit: 1 depends_on: "init_cpu" ##### diff --git a/.gitignore b/.gitignore index 5da9079618..8a9d661c88 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.jl.mem *.mem deps/deps.jl +/Manifest.toml # Swap files. *.swp diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index 9cc021d99c..0000000000 --- a/Manifest.toml +++ /dev/null @@ -1,920 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.5" -manifest_format = "2.0" -project_hash = "029baf2a08759d3f1940dcb219270c1432addb60" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - - [deps.AbstractFFTs.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BFloat16s]] -deps = ["LinearAlgebra", "Printf", "Random", "Test"] -git-tree-sha1 = "2c7cc21e8678eff479978a0a2ef5ce2f51b63dff" -uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" -version = "0.5.0" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Blosc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "19b98ee7e3db3b4eff74c5c9c72bf32144e24f10" -uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" -version = "1.21.5+0" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+1" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CFTime]] -deps = ["Dates", "Printf"] -git-tree-sha1 = "5afb5c5ba2688ca43a9ad2e5a91cbb93921ccfa1" -uuid = "179af706-886a-5703-950a-314cd64e0468" -version = "0.1.3" - -[[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics"] -git-tree-sha1 = "fdd9dfb67dfefd548f51000cc400bb51003de247" -uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "5.4.3" - - [deps.CUDA.extensions] - ChainRulesCoreExt = "ChainRulesCore" - EnzymeCoreExt = "EnzymeCore" - SpecialFunctionsExt = "SpecialFunctions" - - [deps.CUDA.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[[deps.CUDA_Driver_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "325058b426c2b421e3d2df3d5fa646d72d2e3e7e" -uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.9.2+0" - -[[deps.CUDA_Runtime_Discovery]] -deps = ["Libdl"] -git-tree-sha1 = "33576c7c1b2500f8e7e6baa082e04563203b3a45" -uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" -version = "0.3.5" - -[[deps.CUDA_Runtime_jll]] -deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "afea94249b821dc754a8ca6695d3daed851e1f5a" -uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.14.1+0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.CommonDataModel]] -deps = ["CFTime", "DataStructures", "Dates", "Preferences", "Printf", "Statistics"] -git-tree-sha1 = "d6fb5bf939a2753c74984b11434ea25d6c397a58" -uuid = "1fbeeb36-5f17-413c-809b-666fb144f157" -version = "0.3.6" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.16.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.ConstructionBase]] -git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.8" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseLinearAlgebraExt = "LinearAlgebra" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.CubedSphere]] -deps = ["TaylorSeries"] -git-tree-sha1 = "51bb25de518b4c62b7cdf26e5fbb84601bb27a60" -uuid = "7445602f-e544-4518-8976-18f8e8ae6cdb" -version = "0.3.0" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DiskArrays]] -deps = ["LRUCache", "OffsetArrays"] -git-tree-sha1 = "ef25c513cad08d7ebbed158c91768ae32f308336" -uuid = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" -version = "0.3.23" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - - [deps.Distances.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.8.0" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GMP_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" -version = "6.2.1+6" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "62ee71528cca49be797076a76bdc654a170a523e" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.3.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GPUCompiler]] -deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "Preferences", "Scratch", "Serialization", "TOML", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "ab29216184312f99ff957b32cd63c2fe9c928b91" -uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "0.26.7" - -[[deps.Glob]] -git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" -uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.1" - -[[deps.GnuTLS_jll]] -deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Nettle_jll", "P11Kit_jll", "Zlib_jll"] -git-tree-sha1 = "383db7d3f900f4c1f47a8a04115b053c095e48d3" -uuid = "0951126a-58fd-58f1-b5b3-b08c7c4a876d" -version = "3.8.4+0" - -[[deps.HDF5_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] -git-tree-sha1 = "82a471768b513dc39e471540fdadc84ff80ff997" -uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.14.3+3" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5e19e1e4fa3e71b774ce746274364aef0234634e" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.1+0" - -[[deps.IncompleteLU]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "6c676e79f98abb6d33fa28122cad099f1e464afe" -uuid = "40713840-3770-5561-ab4c-a76e7d0d7895" -version = "0.2.1" - -[[deps.InlineStrings]] -git-tree-sha1 = "45521d31238e87ee9f9732561bfee12d4eebd52d" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.2" - - [deps.InlineStrings.extensions] - ArrowTypesExt = "ArrowTypes" - ParsersExt = "Parsers" - - [deps.InlineStrings.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.1+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IterativeSolvers]] -deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" -uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.4" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] -git-tree-sha1 = "5fe858cb863e211c6dedc8cce2dc0752d4ab6e2b" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.50" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "f389674c99bfcde17dc57454011aa44d5a260a40" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.6.0" - -[[deps.JuliaNVTXCallbacks_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "af433a10f3942e882d3c671aacb203e006a5808f" -uuid = "9c1d0b0a-7046-5b2e-a33f-ea22f176ac7e" -version = "0.2.1+0" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "d0448cebd5919e06ca5edc7a264631790de810ec" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.22" - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - - [deps.KernelAbstractions.weakdeps] - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "2470e69781ddd70b8878491233cd09bc1bd7fc96" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "8.1.0" -weakdeps = ["BFloat16s"] - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "597d1c758c9ae5d985ba4202386a607c675ee700" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.31+0" - -[[deps.LLVMLoopInfo]] -git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" -uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" -version = "1.0.0" - -[[deps.LRUCache]] -git-tree-sha1 = "b3cc6698599b10e652832c2f23db3cab99d51b59" -uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" -version = "1.6.1" -weakdeps = ["Serialization"] - - [deps.LRUCache.extensions] - SerializationExt = ["Serialization"] - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.Lz4_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7f26c8fc5229e68484e0b3447312c98e16207d11" -uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" -version = "1.10.0+0" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.2.0+0" - -[[deps.MPI]] -deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] -git-tree-sha1 = "14cef41baf5b675b192b02a22c710f725ab333a7" -uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" -version = "0.20.20" - - [deps.MPI.extensions] - AMDGPUExt = "AMDGPU" - CUDAExt = "CUDA" - - [deps.MPI.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "19d4bd098928a3263693991500d05d74dbdc2004" -uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.2+0" - -[[deps.MPIPreferences]] -deps = ["Libdl", "Preferences"] -git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" -uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.11" - -[[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8c35d5420193841b2f367e658540e8d9e0601ed0" -uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.4.0+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.MicrosoftMPI_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" -uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+2" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.NCDatasets]] -deps = ["CFTime", "CommonDataModel", "DataStructures", "Dates", "DiskArrays", "NetCDF_jll", "NetworkOptions", "Printf"] -git-tree-sha1 = "a640912695952b074672edb5f9aaee2f7f9fd59a" -uuid = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" -version = "0.14.4" - -[[deps.NVTX]] -deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "53046f0483375e3ed78e49190f1154fa0a4083a1" -uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "0.3.4" - -[[deps.NVTX_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ce3269ed42816bf18d500c9f63418d4b0d9f5a3b" -uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" -version = "3.1.0+2" - -[[deps.NetCDF_jll]] -deps = ["Artifacts", "Blosc_jll", "Bzip2_jll", "HDF5_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "TOML", "XML2_jll", "Zlib_jll", "Zstd_jll", "libzip_jll"] -git-tree-sha1 = "4686378c4ae1d1948cfbe46c002a11a4265dcb07" -uuid = "7243133f-43d8-5620-bbf4-c2c921802cf3" -version = "400.902.211+1" - -[[deps.Nettle_jll]] -deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "eca63e3847dad608cfa6a3329b95ef674c7160b4" -uuid = "4c82536e-c426-54e4-b420-14f461c4ed8b" -version = "3.7.2+0" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OffsetArrays]] -git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.1" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" -uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "4.1.6+0" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1b35263570443fdd9e76c76b7062116e2f374ab8" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.15+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.P11Kit_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "2cd396108e178f3ae8dedbd8e938a18726ab2fbf" -uuid = "c2071276-7c44-58a7-b746-946036e04d0a" -version = "0.24.1+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.3" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "66b20dd35966a748321d3b2537c4584cf40387c7" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.3.2" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.Quaternions]] -deps = ["LinearAlgebra", "Random", "RealDot"] -git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9" -uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" -version = "0.7.6" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.Random123]] -deps = ["Random", "RandomNumbers"] -git-tree-sha1 = "4743b43e5a9c4a2ede372de7061eed81795b12e7" -uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.7.0" - -[[deps.RandomNumbers]] -deps = ["Random"] -git-tree-sha1 = "c6ec94d2aaba1ab2ff983052cf6a606ca5985902" -uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.6.0" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rotations]] -deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] -git-tree-sha1 = "5680a9276685d392c87407df00d57c9924d9f11e" -uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" -version = "1.7.1" -weakdeps = ["RecipesBase"] - - [deps.Rotations.extensions] - RotationsRecipesBaseExt = "RecipesBase" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SeawaterPolynomials]] -git-tree-sha1 = "78f965a2f0cd5250a20c9aba9979346dd2b35734" -uuid = "d496a93d-167e-4197-9f49-d3af4ff8fe40" -version = "0.3.5" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "ff11acffdb082493657550959d4feb4b6149e73a" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.5" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.7" - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - - [deps.StaticArrays.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.12.0" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TaylorSeries]] -deps = ["InteractiveUtils", "LinearAlgebra", "Markdown", "Requires", "SparseArrays"] -git-tree-sha1 = "66f4d1993bae49eeba21a1634b5f65782585a42c" -uuid = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" -version = "0.10.13" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimerOutputs]] -deps = ["ExprTools", "Printf"] -git-tree-sha1 = "5a13ae8a41237cff5ecf34f73eb1b8f42fff6531" -uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.24" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "e84b3a11b9bece70d14cce63406bbc79ed3464d2" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.2" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "bf2c553f25e954a9b38c9c0593a59bb13113f9e5" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.5" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "1165b0443d0eca63ac1e32b8c0eb69ed2f4f8127" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.3+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.6+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" - -[[deps.libaec_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "46bf7be2917b59b761247be3f317ddf75e50e997" -uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" -version = "1.1.2+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.11.0+0" - -[[deps.libzip_jll]] -deps = ["Artifacts", "Bzip2_jll", "GnuTLS_jll", "JLLWrappers", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "3282b7d16ae7ac3e57ec2f3fa8fafb564d8f9f7f" -uuid = "337d8026-41b4-5cde-a456-74a10e5b31d1" -version = "1.10.1+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.oneTBB_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" -uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" -version = "2021.12.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" diff --git a/Project.toml b/Project.toml index ed748560e7..853f479b11 100644 --- a/Project.toml +++ b/Project.toml @@ -77,19 +77,12 @@ StructArrays = "0.4, 0.5, 0.6" julia = "1.9" [extras] -BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -CUDA_Runtime_jll = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -Coverage = "a2441757-f6aa-5fb2-8edb-039e3f45d037" DataDeps = "124859b0-ceae-595e-8997-d05f6a7a8dfe" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" -InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -MPIPreferences = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" OrthogonalSphericalShellGrids = "c2be9673-fb75-4747-82dc-aa2bb9f4aed0" -OpenMPI_jll = "fe0851c0-eecd-5654-98d4-656369965a5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" TimesDates = "bdfc003b-8df8-5c39-adcd-3a9087f5df4a" [targets] -test = ["BenchmarkTools", "Coverage", "CUDA_Runtime_jll", "DataDeps", "Enzyme", "InteractiveUtils", "MPIPreferences", "OrthogonalSphericalShellGrids", "OpenMPI_jll", "SafeTestsets", "Test", "TimerOutputs", "TimesDates"] +test = ["DataDeps", "Enzyme", "OrthogonalSphericalShellGrids", "SafeTestsets", "Test", "TimesDates"] diff --git a/src/Oceananigans.jl b/src/Oceananigans.jl index b91c83b7fd..32bc2ce537 100644 --- a/src/Oceananigans.jl +++ b/src/Oceananigans.jl @@ -144,7 +144,6 @@ import Base: iterate, similar, show, getindex, lastindex, setindex!, push! - ##### ##### Abstract types diff --git a/test/dependencies_for_runtests.jl b/test/dependencies_for_runtests.jl index 60147f1809..3e15e0a3d8 100644 --- a/test/dependencies_for_runtests.jl +++ b/test/dependencies_for_runtests.jl @@ -1,22 +1,28 @@ +using Oceananigans using Test using Printf using Random using Statistics using LinearAlgebra using Logging - +using Enzyme +using SparseArrays +using JLD2 +using FFTW +using OffsetArrays +using SeawaterPolynomials using CUDA using MPI +using Dates: DateTime, Nanosecond +using Statistics: mean, mean!, norm +using LinearAlgebra: norm +using NCDatasets: Dataset +using KernelAbstractions: @kernel, @index + MPI.versioninfo() MPI.Initialized() || MPI.Init() -using JLD2 -using FFTW -using OffsetArrays -using SeawaterPolynomials - -using Oceananigans using Oceananigans.Architectures using Oceananigans.Grids using Oceananigans.Operators @@ -29,6 +35,7 @@ using Oceananigans.BuoyancyModels using Oceananigans.Forcings using Oceananigans.Solvers using Oceananigans.Models +using Oceananigans.MultiRegion using Oceananigans.Simulations using Oceananigans.Diagnostics using Oceananigans.OutputWriters @@ -37,20 +44,23 @@ using Oceananigans.DistributedComputations using Oceananigans.Logger using Oceananigans.Units using Oceananigans.Utils -using Oceananigans.MultiRegion -using Oceananigans.Architectures: device, array_type # to resolve conflict with CUDA.device -using Oceananigans.Architectures: on_architecture using Oceananigans: Clock -using Dates: DateTime, Nanosecond -using Statistics: mean -using LinearAlgebra: norm -using NCDatasets: Dataset -using KernelAbstractions: @kernel, @index +using Oceananigans.Architectures: device, array_type # to resolve conflict with CUDA.device +using Oceananigans.Architectures: on_architecture +using Oceananigans.AbstractOperations: UnaryOperation, Derivative, BinaryOperation, MultiaryOperation +using Oceananigans.AbstractOperations: KernelFunctionOperation +using Oceananigans.BuoyancyModels: BuoyancyField +using Oceananigans.Grids: architecture +using Oceananigans.Fields: ZeroField, ConstantField, FunctionField, compute_at!, indices +using Oceananigans.Models.HydrostaticFreeSurfaceModels: tracernames +using Oceananigans.ImmersedBoundaries: conditional_length +using Oceananigans.Operators: ℑxyᶜᶠᵃ, ℑxyᶠᶜᵃ, hack_cosd +using Oceananigans.Solvers: constructors, unpack_constructors +using Oceananigans.TurbulenceClosures: with_tracers +using Oceananigans.MultiRegion: reconstruct_global_grid, reconstruct_global_field, getnamewrapper -import Oceananigans.Fields: interior import Oceananigans.Utils: launch!, datatuple - Logging.global_logger(OceananigansLogger()) ##### @@ -66,7 +76,16 @@ closures = ( :ConvectiveAdjustmentVerticalDiffusivity, ) -include("utils_for_runtests.jl") +if !(@isdefined already_included) + already_included = Ref(false) + macro include_once(expr) + return !(already_included[]) ? :($(esc(expr))) : :(nothing) + end +end + +@include_once include("utils_for_runtests.jl") +already_included[] = true float_types = (Float32, Float64) archs = test_architectures() + diff --git a/test/runtests.jl b/test/runtests.jl index 751c614aba..f2551a6802 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,3 +1,5 @@ +using Pkg + include("dependencies_for_runtests.jl") group = get(ENV, "TEST_GROUP", :all) |> Symbol @@ -24,6 +26,23 @@ CUDA.allowscalar() do end end + # Initialization steps + if group == :init || group == :all + Pkg.instantiate(; verbose=true) + Pkg.precompile(; strict=true) + Pkg.status() + + try + MPI.install_mpiexecjl() + MPI.versioninfo() + catch; end + + try + CUDA.precompile_runtime() + CUDA.versioninfo() + catch; end + end + # Core Oceananigans if group == :unit || group == :all @testset "Unit tests" begin diff --git a/test/test_abstract_operations.jl b/test/test_abstract_operations.jl index 5a0aa9ea31..c9942895c8 100644 --- a/test/test_abstract_operations.jl +++ b/test/test_abstract_operations.jl @@ -1,9 +1,5 @@ include("dependencies_for_runtests.jl") -using Oceananigans.Operators: ℑxyᶜᶠᵃ, ℑxyᶠᶜᵃ -using Oceananigans.Fields: ZeroField, ConstantField, compute_at!, indices -using Oceananigans.BuoyancyModels: BuoyancyField - function simple_binary_operation(op, a, b, num1, num2) a_b = op(a, b) interior(a) .= num1 @@ -371,3 +367,4 @@ for arch in archs end end end + diff --git a/test/test_computed_field.jl b/test/test_computed_field.jl index 155e8ff7a5..c19ae97918 100644 --- a/test/test_computed_field.jl +++ b/test/test_computed_field.jl @@ -1,11 +1,5 @@ include("dependencies_for_runtests.jl") -using Oceananigans.AbstractOperations: UnaryOperation, Derivative, BinaryOperation, MultiaryOperation -using Oceananigans.AbstractOperations: KernelFunctionOperation -using Oceananigans.Operators: ℑxyᶜᶠᵃ, ℑxyᶠᶜᵃ -using Oceananigans.Fields: compute_at! -using Oceananigans.BuoyancyModels: BuoyancyField - function compute_derivative(model, ∂) T, S = model.tracers parent(S) .= π diff --git a/test/test_conditional_reductions.jl b/test/test_conditional_reductions.jl index 85bbffa26b..d083da0ee5 100644 --- a/test/test_conditional_reductions.jl +++ b/test/test_conditional_reductions.jl @@ -1,9 +1,5 @@ include("dependencies_for_runtests.jl") -using Oceananigans.ImmersedBoundaries: ImmersedBoundaryGrid, GridFittedBoundary -using Oceananigans.ImmersedBoundaries: conditional_length -using Statistics: mean, mean!, norm - @testset "Conditional Reductions" begin for arch in archs @info " Testing Reductions on Immersed fields" diff --git a/test/test_enzyme.jl b/test/test_enzyme.jl index ac457cae6e..8bd266f62a 100644 --- a/test/test_enzyme.jl +++ b/test/test_enzyme.jl @@ -1,25 +1,16 @@ include("dependencies_for_runtests.jl") -using Enzyme # Required presently Enzyme.API.runtimeActivity!(true) Enzyme.API.looseTypeAnalysis!(true) Enzyme.API.maxtypeoffset!(2032) -using Oceananigans -using Oceananigans.TurbulenceClosures: with_tracers -using Oceananigans.BoundaryConditions: fill_halo_regions! -using Oceananigans.Fields: ConstantField -using Oceananigans.Models.HydrostaticFreeSurfaceModels: tracernames -using Oceananigans.Fields: FunctionField -using Oceananigans: architecture -using KernelAbstractions - - EnzymeRules.inactive_type(::Type{<:Oceananigans.Clock}) = true -f(grid) = CenterField(grid) +# OceananigansLogger doesn't work here -- not sure why +Logging.global_logger(TestLogger()) +f(grid) = CenterField(grid) const maximum_diffusivity = 100 """ @@ -80,19 +71,16 @@ function stable_diffusion!(model, amplitude, diffusivity) end @testset "Enzyme Unit Tests" begin - arch=CPU() - FT=Float64 + arch = CPU() + FT = Float64 N = 100 topo = (Periodic, Flat, Flat) grid = RectilinearGrid(arch, FT, topology=topo, size=N, halo=2, x=(-1, 1), y=(-1, 1), z=(-1, 1)) fwd, rev = Enzyme.autodiff_thunk(ReverseSplitWithPrimal, Const{typeof(f)}, Duplicated, typeof(Const(grid))) + tape, primal, shadowp = fwd(Const(f), Const(grid)) - tape, primal, shadowp = fwd(Const(f), Const(grid) ) - - @show tape - @show primal - @show shadowp + @show tape primal shadowp shadow = if shadowp isa Base.RefValue shadowp[] @@ -106,9 +94,8 @@ end function set_initial_condition_via_launch!(model_tracer, amplitude) # Set initial condition amplitude = Ref(amplitude) - - # This has a "width" of 0.1 cᵢ(x, y, z) = amplitude[] + temp = Base.broadcasted(Base.identity, FunctionField((Center, Center, Center), cᵢ, model_tracer.grid)) temp = convert(Base.Broadcast.Broadcasted{Nothing}, temp) @@ -121,16 +108,6 @@ function set_initial_condition_via_launch!(model_tracer, amplitude) return nothing end -function set_initial_condition!(model, amplitude) - amplitude = Ref(amplitude) - - # This has a "width" of 0.1 - cᵢ(x, y, z) = amplitude[] * exp(-z^2 / 0.02 - (x^2 + y^2) / 0.05) - set!(model, c=cᵢ) - - return nothing -end - @testset "Enzyme + Oceananigans Initialization Broadcast Kernel" begin Nx = Ny = 64 @@ -141,17 +118,11 @@ end topology = (Periodic, Periodic, Bounded) grid = RectilinearGrid(size=(Nx, Ny, Nz); x, y, z, topology) - - model = HydrostaticFreeSurfaceModel(; grid, - tracers = :c, - buoyancy = nothing) - + model = HydrostaticFreeSurfaceModel(; grid, tracers=:c) model_tracer = model.tracers.c amplitude = 1.0 amplitude = Ref(amplitude) - - # This has a "width" of 0.1 cᵢ(x, y, z) = amplitude[] temp = Base.broadcasted(Base.identity, FunctionField((Center, Center, Center), cᵢ, model_tracer.grid)) @@ -160,33 +131,32 @@ end arch = architecture(model_tracer) if arch == CPU() - - param = Oceananigans.Utils.KernelParameters(size(model_tracer), map(Oceananigans.Fields.offset_index, model_tracer.indices)) - + param = Oceananigans.Utils.KernelParameters(size(model_tracer), + map(Oceananigans.Fields.offset_index, model_tracer.indices)) dmodel_tracer = Enzyme.make_zero(model_tracer) - # Test the individual kernel launch + # Test the individual kernel launch autodiff(Enzyme.Reverse, - Oceananigans.Utils.launch!, - Const(arch), - Const(grid), - Const(param), - Const(Oceananigans.Fields._broadcast_kernel!), - Duplicated(model_tracer, dmodel_tracer), - Const(temp)) + Oceananigans.Utils.launch!, + Const(arch), + Const(grid), + Const(param), + Const(Oceananigans.Fields._broadcast_kernel!), + Duplicated(model_tracer, dmodel_tracer), + Const(temp)) # Test out differentiation of the broadcast infrastructure autodiff(Enzyme.Reverse, - set_initial_condition_via_launch!, - Duplicated(model_tracer, dmodel_tracer), - Active(1.0)) + set_initial_condition_via_launch!, + Duplicated(model_tracer, dmodel_tracer), + Active(1.0)) # Test differentiation of the high-level set interface dmodel = Enzyme.make_zero(model) autodiff(Enzyme.Reverse, - set_initial_condition!, - Duplicated(model, dmodel), - Active(1.0)) + set_initial_condition!, + Duplicated(model, dmodel), + Active(1.0)) end end @@ -236,7 +206,6 @@ end model = HydrostaticFreeSurfaceModel(; grid, tracer_advection = WENO(), tracers = :c, - buoyancy = nothing, velocities = PrescribedVelocityFields(; u, v), closure = diffusion) @@ -259,11 +228,12 @@ end Active(κ)) @info """ \n - Enzyme computed $dc²_dκ - Finite differences computed $dc²_dκ_fd + Enzyme computed $dc²_dκ + Finite differences computed $dc²_dκ_fd """ tol = 0.01 rel_error = abs(dc²_dκ[1][3] - dc²_dκ_fd) / abs(dc²_dκ_fd) - @test rel_error < tol + @test rel_error < tol end + diff --git a/test/test_matrix_poisson_solver.jl b/test/test_matrix_poisson_solver.jl index ad878cf24b..c63ac16398 100644 --- a/test/test_matrix_poisson_solver.jl +++ b/test/test_matrix_poisson_solver.jl @@ -1,9 +1,7 @@ +include("dependencies_for_runtests.jl") + using Oceananigans.Solvers: solve!, HeptadiagonalIterativeSolver, sparse_approximate_inverse using Oceananigans.Operators: volume, Δyᶠᶜᵃ, Δyᶜᶠᵃ, Δyᶜᶜᵃ, Δxᶠᶜᵃ, Δxᶜᶠᵃ, Δxᶜᶜᵃ, Δyᵃᶜᵃ, Δxᶜᵃᵃ, Δzᵃᵃᶠ, Δzᵃᵃᶜ, ∇²ᶜᶜᶜ -using Oceananigans.Architectures: on_architecture -using Oceananigans.Grids: architecture -using KernelAbstractions: @kernel, @index -using Statistics, LinearAlgebra, SparseArrays function identity_operator!(b, x) parent(b) .= parent(x) diff --git a/test/test_multi_region_advection_diffusion.jl b/test/test_multi_region_advection_diffusion.jl index 2f11e8449f..2eb496a953 100644 --- a/test/test_multi_region_advection_diffusion.jl +++ b/test/test_multi_region_advection_diffusion.jl @@ -1,11 +1,6 @@ include("dependencies_for_runtests.jl") -using Oceananigans.MultiRegion -using Oceananigans.MultiRegion: reconstruct_global_field -using Oceananigans.Operators: hack_cosd - Gaussian(x, y, L) = exp(-(x^2 + y^2) / 2L^2) - prescribed_velocities() = PrescribedVelocityFields(u=(λ, ϕ, z, t = 0) -> 0.1 * hack_cosd(ϕ)) function Δ_min(grid) diff --git a/test/test_multi_region_implicit_solver.jl b/test/test_multi_region_implicit_solver.jl index e0024e43f6..64adeaa457 100644 --- a/test/test_multi_region_implicit_solver.jl +++ b/test/test_multi_region_implicit_solver.jl @@ -1,15 +1,5 @@ include("dependencies_for_runtests.jl") -using Oceananigans -using Oceananigans.Units -using Statistics -using Printf -using Oceananigans.MultiRegion -using LinearAlgebra, SparseArrays -using Oceananigans.Solvers: constructors, unpack_constructors -using Oceananigans.Grids: architecture -using Oceananigans.Utils - function geostrophic_adjustment_test(free_surface, grid; regions = 1) if architecture(grid) isa GPU diff --git a/test/test_multi_region_unit.jl b/test/test_multi_region_unit.jl index c3eaeafc45..f5cc3496a3 100644 --- a/test/test_multi_region_unit.jl +++ b/test/test_multi_region_unit.jl @@ -1,9 +1,5 @@ include("dependencies_for_runtests.jl") -using Oceananigans.MultiRegion -using Oceananigans.MultiRegion: reconstruct_global_grid, reconstruct_global_field, getnamewrapper -using Oceananigans.ImmersedBoundaries: ImmersedBoundaryGrid, GridFittedBottom, GridFittedBoundary - devices(::CPU, num) = nothing devices(::GPU, num) = Tuple(0 for i in 1:num) diff --git a/test/utils_for_runtests.jl b/test/utils_for_runtests.jl index 312f9f8730..7bc06e528e 100644 --- a/test/utils_for_runtests.jl +++ b/test/utils_for_runtests.jl @@ -1,11 +1,3 @@ -using Test -using Statistics -using CUDA -using Printf -using MPI -using KernelAbstractions: @kernel, @index - -using Oceananigans using Oceananigans.TimeSteppers: QuasiAdamsBashforth2TimeStepper, RungeKutta3TimeStepper, update_state! using Oceananigans.DistributedComputations: Distributed, Partition, child_architecture, Fractional, Equal