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 Schoonover

https://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 Schoonover

With 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.