Maintaining Scientific Software


This is a web-series that shows the details behind maintaining and upgrading high performance scientific applications. We want to provide a detailed look into coding sessions where applications are redesigned, refactored, or just plain rewritten in an effort to keep pace with rapidly changing computing technology. Our hope is to show what it takes to maintain scientific applications and to highlight the breadth of domain science and computer science required to carry out this work.

We want to help you share your coding sessions, strategies, and thoughts related to your experience in maintaining scientific software. Let us know what you would like to share and we will set up a time for an interview and to help you record your talk and coding sessions and demonstrations. We are excited to share your story to show the world what really goes into maintaining scientific applications!


Episode 1 : SELF-Fluids and HIP-Fortran Memory Management

Right now, we are seeing a shift in HPC, where more vendors are getting into the GPU game, and portability across these platforms is a question on a lot of developer's minds. As part of the current Exascale Project, the Department of Energy is adding AMD GPU's to its HPC resources. ECP teams software are looking into strategies to leverage these platforms to accelerate their applications, many of whom have just finished the transition to Nvidia GPUs.

In the last 8 years, since Oak Ridge National Lab's Titan supercomputer, much of the HPC community has been developing strategies to use Nvidia GPU's with OpenACC, CUDA, CUDA-Fortran, OpenMP, and OpenCL. Right as we were getting settled in 2019, it became clear that GPU's from AMD and Intel would start taking some of the spotlight.

Currently, OpenMP and AMD's HIP are being pushed as the portable programming platforms that will help developers cope with current and future hardware changes. In this episode, we're going to dive right in to working with HIP-Fortran in an open-source computational fluid dynamics code written in Fortran.

Episode 2 : HIP-Fortran GPU Kernels with Type-Bound Procedures and Generic Interfaces

In this episode, we show you how to write HIP-Kernels in C++ and link them into Fortran 03 applications that use derived data types with type-bound procedures. We will cover the basics of using Generic type-bound procedures to make a clean interface for calling either CPU or GPU kernels by simply changing the type of data that is passed to the generic routines.