Skip to content

A performance portable HPC Cartesian CFD solver on CPUs and GPUs

License

Notifications You must be signed in to change notification settings

Keluaa/Armon.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Armon.jl

Build Status Coverage

Armon.jl is an experimental 2D CFD solver for compressible non-viscous fluids, using a finite volume method.

It was developed to explore Julia's capabilities in HPC and for performance portability: it should perform very well on any CPU (tested on Nvidia Grace CPU, AMD Milan 7763, Intel Skylake Xeon Platinum 8168...) and GPU (tested on Nvidia A100, AMD MI250, Intel Max 1100...) without any additional configuration. Domain decomposition is done using MPI, and cache-blocking is performed in a single process for higher performance on CPU.

The twin project Armon-Kokkos is a mirror of the core of this solver (with much less options, without MPI or cache-blocking) written in C++ using the Kokkos library. It is possible to reuse kernels from that solver in this one, using the Kokkos.jl package.

Armon.jl was created in order to create a portable CFD benchmark. The benchmark branch is the state of the repository for which most of the results for an upcoming paper were obtained.

Installation

Armon.jl is an unregistered Julia package: to install it, clone this repository (using Pkg; Pkg.develop(url="https://github.com/Keluaa/Armon.jl")).

Usage

Parameters are detailed in the help of ArmonParameters.

julia> using Armon

julia> params = ArmonParameters(use_MPI=false, options...);

julia> armon(params);  # Run the solver

About

A performance portable HPC Cartesian CFD solver on CPUs and GPUs

Resources

License

Stars

Watchers

Forks

Releases

No releases published