SELF-Fluids
Discontinuous Galerkin Spectral Element Method for the Compressible Navier Stokes Equations
Spectral Element Libraries in Fortran
SELF is a Fortran-based library that provides data-structure and type-bound routines for implementing Spectral Element Methods in one, two, and three spatial dimensions.
Routines are currently available for collocation and discontinuous galerkin formulations on unstructured meshes with isoparametric elements.
Modeling Fluids
SELF-Fluids leverages SELF to solve the Compressible Navier-Stokes equations on multi-GPU architectures.
The Fluid class employs the Nodal Discontinuous Galerkin Spectral Element method for the spatial discretization. The inter-element fluxes are numerically estimated using the upwind Lax-Friedrich's approximate Riemman solver. Currently, the model is forward-stepped using Williamson's 3rd Order Low-Storage Runge-Kutta time integrator. There are plans to develop and support additional explicit and implicit time-stepping schemes.
SELF-Fluids currently exists on the stale/self-fluids branch of the SELF repository. SELF is actively being refactored to support GPU platforms from multiple hardware vendors. We expect SELF-Fluids to be fully functional on Multi-GPU platforms by August 2021.
Recent Updates
HIPFort Migration Complete
February 11, 2021
Tasks Completed
SELF has been isolated into it's own repository at https://github.com/FluidNumerics/SELF
Serial CPU only and single GPU routines have been implemented and tested.
CI infrastructure is in place for automatically testing serial and single GPU tests.
Docker containers are available on Google Cloud Platform and Dockerhub
Next Steps
Multi-GPU ( MPI + HIPFort ) and MPI-Only Support
CGNS/HOPr File IO Support
Implement Demo Applications
Compressible 2-D Navier Stokes
Shallow Water Equations
Refactoring and HIP-Fortran Migration
May 1, 2020
In Q2-Q3 of this year, we are working on the following tasks on feature branches of the self-fluids repository
Transition CUDA-Fortran to HIP-Fortran
Switch namelist input for JSON input
Transition model output towards CGNS format extensions or HOPr format to enhance data-sharing and collaboration.
Enhance automated testing and CI capabilities
You can track our progress on these tasks through the SELF-Fluids Github site
Development Team
Development of the SELF-Fluids code was originally started by and is still continued by Fluid Numerics
Articles
Maintaining Scientific Software : SELF-Fluids and HIP-Fortran Memory Management
Dr. Joe Schoonoverhttps://www.fluidnumerics.com/resources/maintaining-scientific-software
Maintaining Scientific Software is a new series that documents the process of maintaining, updating, and upgrading high performance scientific applications. In this episode, we introduce the Maintaining Scientific Applications series and kick off the show with an introduction to GPU memory management with HIP-Fortran. AMD's Heterogeneous-Compute Interface for Portability (HIP) is a C++ API that permits offloading to AMD and Nvidia GPUs. HIP-Fortran exposes the HIP API directly to Fortran through ISO_C_BINDING to make portable GPU programming more accessible to Fortran developers. Both HIP and HIP-Fortran are community based platforms for GPU acceleration and are new for the entire HPC community. If this is your first time writing GPU accelerated Fortran applications, you’ll find this episode just as useful as those who have already been offloading to GPUs. Watch the video!
Minimizing GPU Costs on Google Cloud Platform
Dr. Joe SchoonoverWith the variety of architectures available in High Performance Computing (HPC), it's easy to wonder how your software performs across platforms. On cloud platforms, addressing this curiosity becomes pertinent. Choosing the platform that minimizes costs for each execution of your software can help stretch your R&D budget and save your company money on compute expenses. In this article, I'll share with you why we target Nvidia Tesla V100 GPUs on Google Cloud Platform, instead of other seemingly less expensive GPUs. Read More.