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

MPI distributed parallelism #590

Merged
merged 100 commits into from
Mar 10, 2021
Merged
Show file tree
Hide file tree
Changes from 98 commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
4c22fcf
Sandbox implementation of fill_halo_regions_tiled for MPI
ali-ramadhan Jun 4, 2019
f6453eb
Fix north/south/east/west indexing.
ali-ramadhan Jun 5, 2019
b8a1f70
Tests for correct halo comm.
ali-ramadhan Jun 5, 2019
e8632d8
Starting an MPI version of filling halo regions.
ali-ramadhan Jun 5, 2019
ff0f875
Fix typos and stuf
ali-ramadhan Jun 5, 2019
0defdc9
Sending and reciving halo data.
ali-ramadhan Jun 5, 2019
a75768b
Receiving into contiguous buffers.
ali-ramadhan Jun 5, 2019
d4718c8
Sending buffers too...
ali-ramadhan Jun 5, 2019
e4083ee
Woops, actually read from MPI buffer.
ali-ramadhan Jun 6, 2019
95b2edf
Halo comm working on 4 ranks
ali-ramadhan Jun 6, 2019
800cb80
Nice send and receive halo functions
ali-ramadhan Jun 6, 2019
1e7a910
Fix nice functions
ali-ramadhan Jun 6, 2019
d455bd9
Less MPI issues, bigger problem
ali-ramadhan Jun 6, 2019
9c0748f
Need CuArrays for broadcast
ali-ramadhan Jun 7, 2019
14e6a84
note to self
ali-ramadhan Jun 7, 2019
d337ebf
Start prototyping a `DistributedModel` type.
ali-ramadhan Dec 15, 2019
7ca306c
`DistributedModel` constructor that checks for consistent ranks
ali-ramadhan Dec 15, 2019
e16190e
Utility functions for converting between MPI rank and 3D index.
ali-ramadhan Dec 15, 2019
aff034b
Make z the fast index and convert to 1-based indexing
ali-ramadhan Dec 15, 2019
b789722
Add size and length kwargs, and create proper grid for each rank
ali-ramadhan Dec 15, 2019
2540596
More general left/right endpoints for grid
ali-ramadhan Dec 15, 2019
d446d12
Compute connectivity graph assuming box model and brick MPI topology
ali-ramadhan Dec 15, 2019
b56b13c
Communication boundary condition type for MPI
ali-ramadhan Dec 15, 2019
117853d
Root process should gather connectivities from each rank
ali-ramadhan Dec 15, 2019
89e8c5b
We can MPI.Finalize in a finalizer for `DistributedModel`
ali-ramadhan Dec 15, 2019
41346ce
Gotta be careful and run the rest of the script as rank 0
ali-ramadhan Dec 15, 2019
724d2e0
Finalizer could be a bad idea actually
ali-ramadhan Dec 15, 2019
c45cc4c
Send and received connectivities as named tuples
ali-ramadhan Dec 15, 2019
e594c29
No master/root model struct. Every rank stores their own model
ali-ramadhan Dec 15, 2019
cd03e13
Cleanup
ali-ramadhan Dec 15, 2019
f37d607
Isolate construction of connectivity graph
ali-ramadhan Dec 15, 2019
2d8cb40
Account for periodic boundary conditions when constructing connectivity
ali-ramadhan Dec 15, 2019
ad29559
Need to know index
ali-ramadhan Dec 16, 2019
54c1860
Split test
ali-ramadhan Jan 3, 2020
ebbdc91
Inject halo communication boundary conditions
ali-ramadhan Jan 3, 2020
bd7fd4c
Move to an `Oceananigans.Distributed` submodule.
ali-ramadhan Jan 5, 2020
e99f78f
Properly pass `Model` kwargs.
ali-ramadhan Jan 5, 2020
db394c0
No need to `MPI.Finalize()` anymore
ali-ramadhan Jan 5, 2020
cabf31b
Multiple dispatch to fill west halo with MPI 😍
ali-ramadhan Jan 5, 2020
35bb674
Actually fill in the west halo. Also start to generalize.
ali-ramadhan Jan 5, 2020
4566636
Oceananigans.Distributed: use macros to fill each halo.
ali-ramadhan Jan 5, 2020
227f2be
Hmmm, halo communication seems to deadlock :(
ali-ramadhan Jan 5, 2020
5cdeac3
Modernize `distributed_model.jl`
ali-ramadhan Feb 5, 2021
c84a958
Some basic tests for slab decomposition models
ali-ramadhan Feb 5, 2021
571eba5
Properly inject halo communication BCs
ali-ramadhan Feb 5, 2021
ea72c5d
New multi-architectures
ali-ramadhan Feb 5, 2021
c92dbb8
Success communicating east/west halos!
ali-ramadhan Feb 5, 2021
50fc387
More responsibilities for `MultiCPU`
ali-ramadhan Feb 6, 2021
a04c583
Modular tests
ali-ramadhan Feb 6, 2021
bb9ab67
Need more files
ali-ramadhan Feb 6, 2021
493e84e
East/west halo communication passes tests!
ali-ramadhan Feb 6, 2021
e117b13
More modular halo communication
ali-ramadhan Feb 6, 2021
3cd719c
Send and receive views to avoid memory allocations
ali-ramadhan Feb 6, 2021
8fcfe01
Nuke super ancient sandbox
ali-ramadhan Feb 6, 2021
f816d54
Beautiful metaprogramming for halo communication
ali-ramadhan Feb 6, 2021
d18f670
Testing xy decompositions
ali-ramadhan Feb 6, 2021
fff4de7
Add `include_corners` kwarg for halo functions
ali-ramadhan Feb 6, 2021
0dec958
Test that halo communication doesn't leak
ali-ramadhan Feb 6, 2021
7dbe2bb
Distributed FFT based Poisson solver
ali-ramadhan Feb 6, 2021
da21e2f
Janky Poisson solve works out
ali-ramadhan Feb 6, 2021
20d5f07
Gotta send boundary points, not halos!
ali-ramadhan Feb 6, 2021
5e14925
Distributed Poisson solver solution is divergence-free!
ali-ramadhan Feb 6, 2021
42c36e4
In-place distributed FFTs
ali-ramadhan Feb 6, 2021
999d1f4
Distributed Poisson solver needs work for rectangular grids
ali-ramadhan Feb 6, 2021
1b2bda2
Pass distributed pressure solver to model
ali-ramadhan Feb 6, 2021
080db74
MPI incompressible turbulence!
ali-ramadhan Feb 6, 2021
631d7ef
Gotta communicate pressure halos
ali-ramadhan Feb 6, 2021
c6b92eb
Beautiful MPI turbulence
ali-ramadhan Feb 7, 2021
eddbdb0
Fix bug in grid used for distributed pressure BCs
ali-ramadhan Feb 7, 2021
72cb4e2
Make it easier to run MPI tests
ali-ramadhan Feb 25, 2021
865164e
Add MPI.jl and PencilFFTs.jl as dependencies
ali-ramadhan Mar 4, 2021
efe89da
New `Distributed` sub-module
ali-ramadhan Mar 4, 2021
e75209a
Move MPI tests into `test` directory
ali-ramadhan Mar 4, 2021
0356e0d
MPI tests passing locally
ali-ramadhan Mar 4, 2021
bc11899
Need a distributed `solve_for_pressure`
ali-ramadhan Mar 4, 2021
bfcf223
Test time stepping and running simulations
ali-ramadhan Mar 4, 2021
703f9e0
`DistributedModel` -> `DistributedIncompressibleModel`
ali-ramadhan Mar 4, 2021
c1e4c2c
Add new Buildkite job for MPI
ali-ramadhan Mar 4, 2021
655bb44
Resolve packages for Julia 1.5
ali-ramadhan Mar 4, 2021
8869b3d
Fix dispatch for `fill_halo_regions!`
ali-ramadhan Mar 4, 2021
56c9727
Buildkite should have access to `mpiexec` now
ali-ramadhan Mar 4, 2021
a89d248
Use system MPI on Buildkite/Tartarus
ali-ramadhan Mar 4, 2021
4307d82
Escape characters
ali-ramadhan Mar 4, 2021
fddca94
Fixing dispatch for `fill_halo_regions!`: part 2
ali-ramadhan Mar 4, 2021
e240070
Everyone gets system MPI
ali-ramadhan Mar 4, 2021
56695d7
Use MPI.jl's `mpiexecjl`
ali-ramadhan Mar 4, 2021
922f155
Need julia binary in `$PATH` for mpiexecjl to work
ali-ramadhan Mar 4, 2021
0d59c69
Better design for multi-architectures and distributed models
ali-ramadhan Mar 5, 2021
da22b16
Update tests and Buildkite zoo
ali-ramadhan Mar 5, 2021
4baba22
More tests
ali-ramadhan Mar 5, 2021
f7eb664
Address PR comments
ali-ramadhan Mar 5, 2021
faa0729
Bump v0.53.0
ali-ramadhan Mar 5, 2021
42d2eab
Update src/Distributed/halo_communication.jl
ali-ramadhan Mar 9, 2021
3ae697f
Inject halo communication BCs in `Field` constructor
ali-ramadhan Mar 10, 2021
50c9b7a
Nuke sandbox
ali-ramadhan Mar 10, 2021
3a4f9ea
Some renaming and added a communicator to `MultiCPU`
ali-ramadhan Mar 10, 2021
447e121
Left to right
ali-ramadhan Mar 10, 2021
3992e47
Strong scaling benchmark for incompressible model
ali-ramadhan Mar 10, 2021
b3a75b8
Slightly better strong scaling benchmark
ali-ramadhan Mar 10, 2021
ab3e539
Update [compat] entries
ali-ramadhan Mar 10, 2021
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
30 changes: 25 additions & 5 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ steps:
- "$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
Expand Down Expand Up @@ -163,7 +166,7 @@ steps:
##### HydrostaticFreeSurfaceModel
#####

- label: "💧 gpu hydrostatic free surface model tests"
- label: "🐡 gpu hydrostatic free surface model tests"
env:
JULIA_DEPOT_PATH: "$SVERDRUP_HOME/.julia-$BUILDKITE_BUILD_NUMBER"
TEST_GROUP: "hydrostatic_free_surface"
Expand All @@ -174,7 +177,7 @@ steps:
architecture: GPU
depends_on: "init_gpu"

- label: "💦 cpu hydrostatic free surface model tests"
- label: "🐠 cpu hydrostatic free surface model tests"
env:
JULIA_DEPOT_PATH: "$TARTARUS_HOME/.julia-$BUILDKITE_BUILD_NUMBER"
TEST_GROUP: "hydrostatic_free_surface"
Expand All @@ -190,7 +193,7 @@ steps:
##### ShallowWaterModel
#####

- label: "💧 gpu shallow water model tests"
- label: "🦑 gpu shallow water model tests"
env:
JULIA_DEPOT_PATH: "$SVERDRUP_HOME/.julia-$BUILDKITE_BUILD_NUMBER"
TEST_GROUP: "shallow_water"
Expand All @@ -201,7 +204,7 @@ steps:
architecture: GPU
depends_on: "init_gpu"

- label: "💦 cpu shallow water model tests"
- label: "🦐 cpu shallow water model tests"
env:
JULIA_DEPOT_PATH: "$TARTARUS_HOME/.julia-$BUILDKITE_BUILD_NUMBER"
TEST_GROUP: "shallow_water"
Expand Down Expand Up @@ -240,6 +243,23 @@ steps:
architecture: CPU
depends_on: "init_cpu"

#####
##### Distributed/MPI
#####

- label: "🐉 cpu distributed tests"
env:
JULIA_DEPOT_PATH: "$TARTARUS_HOME/.julia-$BUILDKITE_BUILD_NUMBER"
TEST_GROUP: "distributed"
CUDA_VISIBLE_DEVICES: "-1"
commands:
- "PATH=$PATH:$TARTARUS_HOME/julia-$JULIA_VERSION/bin" # Need julia binary in $PATH for mpiexecjl to work.
- "$TARTARUS_HOME/.julia-$BUILDKITE_BUILD_NUMBER/bin/mpiexecjl -np 4 $TARTARUS_HOME/julia-$JULIA_VERSION/bin/julia -O0 --color=yes --project -e 'using Pkg; Pkg.test()'"
agents:
queue: Oceananigans
architecture: CPU
depends_on: "init_cpu"

#####
##### Regression
#####
Expand Down Expand Up @@ -317,7 +337,7 @@ steps:
##### Clean up
#####

- label: "🧻 clean up gpu environment"
- label: "🧽 clean up gpu environment"
command: "rm -rf $SVERDRUP_HOME/.julia-$BUILDKITE_BUILD_NUMBER"
agents:
queue: Oceananigans
Expand Down
122 changes: 105 additions & 17 deletions Manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,22 @@

[[AbstractFFTs]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "051c95d6836228d120f5f4b984dd5aba1624f716"
git-tree-sha1 = "485ee0867925449198280d4af84bdb46a2a404d0"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "0.5.0"
version = "1.0.1"

[[Adapt]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "ffcfa2d345aaee0ef3d8346a073d5dd03c983ebe"
uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
version = "3.2.0"

[[ArrayInterface]]
deps = ["IfElse", "LinearAlgebra", "Requires", "SparseArrays", "Static"]
git-tree-sha1 = "e7edcc1ac140cce87b7442ff0fa88b5f19fb71fa"
uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
version = "3.1.3"

[[Artifacts]]
deps = ["Pkg"]
git-tree-sha1 = "c30985d8821e0cd73870b17b0ed0ce6dc44cb744"
Expand Down Expand Up @@ -106,16 +112,22 @@ uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"

[[DocStringExtensions]]
deps = ["LibGit2", "Markdown", "Pkg", "Test"]
git-tree-sha1 = "50ddf44c53698f5e784bbebb3f4b21c5807401b1"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.8.3"

[[ExprTools]]
git-tree-sha1 = "10407a39b87f29d47ebaca8edbc75d7c302ff93e"
uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04"
version = "0.1.3"

[[FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "IntelOpenMP_jll", "Libdl", "LinearAlgebra", "MKL_jll", "Reexport"]
git-tree-sha1 = "8fda0934cb99db617171f7296dc361f4d6fa5424"
git-tree-sha1 = "1b48dbde42f307e48685fa9213d8b9f8c0d87594"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.3.0"
version = "1.3.2"

[[FFTW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
Expand Down Expand Up @@ -146,6 +158,11 @@ git-tree-sha1 = "fd83fa0bde42e01952757f01149dd968c06c4dba"
uuid = "0234f1f7-429e-5d53-9886-15a909be8d59"
version = "1.12.0+1"

[[IfElse]]
git-tree-sha1 = "28e837ff3e7a6c3cdb252ce49fb412c8eb3caeef"
uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
version = "0.1.0"

[[IntelOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "d979e54b71da82f3a65b62553da4fc3d18c9004c"
Expand All @@ -163,15 +180,21 @@ version = "1.0.0"

[[JLD2]]
deps = ["CodecZlib", "DataStructures", "MacroTools", "Mmap", "Pkg", "Printf", "Requires", "UUIDs"]
git-tree-sha1 = "bb9a457481adf060ab5898823a49d4f854ff4ddd"
git-tree-sha1 = "b8343a7f96591404ade118b3a7014e1a52062465"
uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
version = "0.4.0"
version = "0.4.2"

[[JLLWrappers]]
git-tree-sha1 = "a431f5f2ca3f4feef3bd7a5e94b8b8d4f2f647a0"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.2.0"

[[JSON3]]
deps = ["Dates", "Mmap", "Parsers", "StructTypes", "UUIDs"]
git-tree-sha1 = "62d4063c67d7c84d5788107878bb925ceaadd252"
uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
version = "1.7.1"

[[KernelAbstractions]]
deps = ["Adapt", "CUDA", "Cassette", "InteractiveUtils", "MacroTools", "SpecialFunctions", "StaticArrays", "UUIDs"]
git-tree-sha1 = "ee7f03c23d874c8353813a44315daf82a1e82046"
Expand All @@ -184,6 +207,12 @@ git-tree-sha1 = "b616937c31337576360cb9fb872ec7633af7b194"
uuid = "929cbde3-209d-540e-8aea-75f648917ca0"
version = "3.6.0"

[[LazyArtifacts]]
deps = ["Pkg"]
git-tree-sha1 = "4bb5499a1fc437342ea9ab7e319ede5a457c0968"
uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
version = "1.3.0"

[[LibCURL_jll]]
deps = ["LibSSH2_jll", "Libdl", "MbedTLS_jll", "Pkg", "Zlib_jll", "nghttp2_jll"]
git-tree-sha1 = "897d962c20031e6012bba7b3dcb7a667170dad17"
Expand Down Expand Up @@ -211,10 +240,22 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"

[[MKL_jll]]
deps = ["IntelOpenMP_jll", "Libdl", "Pkg"]
git-tree-sha1 = "eb540ede3aabb8284cb482aa41d00d6ca850b1f8"
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"]
git-tree-sha1 = "c253236b0ed414624b083e6b72bfe891fbd2c7af"
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
version = "2020.2.254+0"
version = "2021.1.1+1"

[[MPI]]
deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "Pkg", "Random", "Requires", "Serialization", "Sockets"]
git-tree-sha1 = "d3aae0fd4d9e1a09c3e2fc728fbe2522ec6d54bc"
uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195"
version = "0.16.1"

[[MPICH_jll]]
deps = ["CompilerSupportLibraries_jll", "Libdl", "Pkg"]
git-tree-sha1 = "4d37f1e07b4e2a74462eebf9ee48c626d15ffdac"
uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4"
version = "3.3.2+10"

[[MacroTools]]
deps = ["Markdown", "Random"]
Expand All @@ -232,6 +273,12 @@ git-tree-sha1 = "0eef589dd1c26a3ac9d753fe1a8bcad63f956fa6"
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.16.8+1"

[[MicrosoftMPI_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "e5c90234b3967684c9c6f87b4a54549b4ce21836"
uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf"
version = "10.1.3+0"

[[Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"

Expand All @@ -255,9 +302,15 @@ version = "400.701.400+0"

[[OffsetArrays]]
deps = ["Adapt"]
git-tree-sha1 = "76622f08645764e040b4d7e86d0ff471fd126ae4"
git-tree-sha1 = "b3dfef5f2be7d7eb0e782ba9146a5271ee426e90"
uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
version = "1.5.3"
version = "1.6.2"

[[OpenMPI_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "41b983e26a7ab8c9bf05f7d70c274b817d541b46"
uuid = "fe0851c0-eecd-5654-98d4-656369965a5c"
version = "4.0.2+2"

[[OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
Expand All @@ -272,9 +325,27 @@ uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
version = "0.5.3+4"

[[OrderedCollections]]
git-tree-sha1 = "d45739abcfc03b51f6a42712894a593f74c80a23"
git-tree-sha1 = "4fa2ba51070ec13fcc7517db714445b4ab986bdf"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.3.3"
version = "1.4.0"

[[Parsers]]
deps = ["Dates"]
git-tree-sha1 = "223a825cccef2228f3fdbf2ecc7ca93363059073"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "1.0.16"

[[PencilArrays]]
deps = ["ArrayInterface", "JSON3", "Libdl", "LinearAlgebra", "MPI", "OffsetArrays", "Reexport", "Requires", "StaticArrays", "StaticPermutations", "TimerOutputs"]
git-tree-sha1 = "6921d07316f41e2be5befd8b815eee28d3fab9f8"
uuid = "0e08944d-e94e-41b1-9406-dcf66b6a9d2e"
version = "0.9.0"

[[PencilFFTs]]
deps = ["AbstractFFTs", "FFTW", "LinearAlgebra", "MPI", "PencilArrays", "Reexport", "TimerOutputs"]
git-tree-sha1 = "a7665838a566accd7d9cf308bbb497126dc5edf4"
uuid = "4a48f351-57a6-4416-9ec4-c37015456aae"
version = "0.12.1"

[[Pkg]]
deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
Expand Down Expand Up @@ -340,16 +411,27 @@ uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[[SpecialFunctions]]
deps = ["ChainRulesCore", "OpenSpecFun_jll"]
git-tree-sha1 = "75394dbe2bd346beeed750fb02baa6445487b862"
git-tree-sha1 = "5919936c0e92cff40e57d0ddf0ceb667d42e5902"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "1.2.1"
version = "1.3.0"

[[Static]]
deps = ["IfElse"]
git-tree-sha1 = "98ace568bf638e89eac33c99337f3c8c6e2227b8"
uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
version = "0.2.0"

[[StaticArrays]]
deps = ["LinearAlgebra", "Random", "Statistics"]
git-tree-sha1 = "9da72ed50e94dbff92036da395275ed114e04d49"
uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "1.0.1"

[[StaticPermutations]]
git-tree-sha1 = "193c3daa18ff3e55c1dae66acb6a762c4a3bdb0b"
uuid = "15972242-4b8f-49a0-b8a1-9ac0e7a1a45d"
version = "0.3.0"

[[Statistics]]
deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
Expand All @@ -360,6 +442,12 @@ git-tree-sha1 = "26ea43b4be7e919a2390c3c0f824e7eb4fc19a0a"
uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
version = "0.5.0"

[[StructTypes]]
deps = ["Dates", "UUIDs"]
git-tree-sha1 = "d7f4287dbc1e590265f50ceda1b40ed2bb31bbbb"
uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
version = "1.4.0"

[[TableTraits]]
deps = ["IteratorInterfaceExtensions"]
git-tree-sha1 = "b1ad568ba658d8cbb3b892ed5380a6f3e781a81e"
Expand All @@ -378,9 +466,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[[TimerOutputs]]
deps = ["Printf"]
git-tree-sha1 = "3318281dd4121ecf9713ce1383b9ace7d7476fdd"
git-tree-sha1 = "32cdbe6cd2d214c25a0b88f985c9e0092877c236"
uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
version = "0.5.7"
version = "0.5.8"

[[TranscodingStreams]]
deps = ["Random", "Test"]
Expand Down
4 changes: 3 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "Oceananigans"
uuid = "9e8cae18-63c1-5223-a75c-80ca9d6e9a09"
version = "0.52.1"
version = "0.53.0"

[deps]
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
Expand All @@ -14,9 +14,11 @@ JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab"
OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
PencilFFTs = "4a48f351-57a6-4416-9ec4-c37015456aae"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
Expand Down
Loading