/JustRelax.jl

Pseudo-transient accelerated iterative solvers

Primary LanguageJuliaMIT LicenseMIT

JustRelax.jl JustRelax.jl

Dev DOI CI Build status codecov License: MIT

JustRelax.jl

⚠️ This Package is still under active development

  • The API is still subject to change.
  • The benchmarks and miniapps are working and provide the user with an insight into the capabilities of the package.

Need to solve a very large multi-physics problem on many GPUs in parallel? Just Relax!

JustRelax.jl is a collection of accelerated iterative pseudo-transient solvers using MPI and multiple CPU or GPU backends. It's part of the PTSolvers organisation and developed within the GPU4GEO project. Current publications, outreach and news can be found on the GPU4GEO website.

The package relies on other packages as building blocks and parallelisation tools:

The package serves several purposes:

  • It provides a collection of solvers to be used in quickly developing new applications

  • It provides some standardization so that application codes can

    • more easily handle local material properties through the use of GeoParams.jl
    • more easily switch between a pseudo-transient solver and another solvers (e.g. an explicit thermal solvers)
  • It provides a natural repository for contributions of new solvers for use by the larger community

We provide several miniapps, each designed to solve a well-specified benchmark problem, in order to provide

  • examples of usage in high-performance computing
  • basis on which to build more full-featured application codes
  • cases for reference and performance tests

Installation

JustRelax.jl is a registered package and can be added as follows:

using Pkg; Pkg.add("JustRelax")

However, as the API is changing and not every feature leads to a new release, one can also do add JustRelax#main which will clone the main branch of the repository. After installation, you can test the package by running the following commands:

using JustRelax
julia> ]
  pkg> test JustRelax

The test will take a while, so grab a ☕ or 🍵

Miniapps

Available miniapps can be found in the miniapps folder and will be updated regularly. The miniapps are designed to be simple and easy to understand, while still providing a good basis for more complex applications. The miniapps are designed to be run on a single node, but can be easily extended to run on multiple nodes using ImplicitGlobalGrid.jl and MPI.jl.

Benchmarks

Current (Blankenback2D, Stokes 2D-3D, thermal diffusion, thermal stress) and future benchmarks can be found in the Benchmarks.

Funding

The development of this package is supported by the GPU4GEO PASC project.