Consolidated Thread for "The 'F' Word" Livestreams & Videos

The Next Livestream

The ‘F’ Word : Porting a simple Fortran application to GPUs with OpenMP
March 17, 2023


Hey Fortran community, it’s been a while since I’ve done one of these, but I’m back!

In this livestream, I will walk through porting a simple stencil code in Fortran to the GPU using OpenMP. We’ll compare runtimes with the original CPU-only code and with those on AMD hardware. In addition, I’ll show how to use rocprof to generate hotspot and trace profiles and perfetto to visualize trace profiles. This will motivate the use of target data regions (also called unstructured data regions) for minimizing data movements between CPU and GPU.

Additional Reading

You can try working through this exercise yourself with the codelab we have written at Building a GPU accelerated application with OpenMP in Fortran

You can learn more about portable GPU programming by following our actively growing repository at Scientific Computing (edu)

Upcoming Videos

  • [April 6, 2023] The ‘F’ Word : Porting a simple Fortran application to GPUs with HIPFort
  • [April 14, 2023] The ‘F’ Word : A configurable CLI with FLAP and JSON-Fortran
  • [April 21, 2023] The ‘F’ Word : Split form methods, two-point fluxes, and recent updates to SELF
  • [TBD] The ‘F’ Word : Reading in accelerometer data from an Arduino in Fortran

Previous Videos

The ‘F’ Word Youtube Playlist

About the ‘F’ Word

“The ‘F’ Word” series is meant to document the use of modern fortran for developing an extensible library that can be used to solve conservation laws (PDEs) using spectral and spectral element methods. By documenting the development process, my hope is to curate examples of using OO Fortran as well as Fortran-C interoperability features for portable GPU and multi-GPU application development.

Another goal is to dispel the idea that Fortran is just about punch cards and GOTO statements by providing an example of an active modern Fortran project. I’ve heard too many times that Fortran is archaic, when it’s clear from this community that Fortran is alive and well in a vibrant and growing community.

For those interested in the mathematical theory, I’m putting together notes before each livestream that covers material relevant to the algorithms that are later implemented in Fortran. Here, the idea is to depict the process of transitioning from an idea and a mathematical model into an implementation in OO Fortran.

The current plan is to have livestreams every two weeks and to start putting out polished videos at least once per month. Rather than creating a new topic every time and polluting this Discourse, I figured it’d be best to share updates on this activity in this one topic.

Feel free to post any questions or discussions about this series or any of the material here. I enjoy spending time on this regularly and I hope this community finds this valuable.


@fluidnumerics_joe Is this a new series, or a continuation of the series that I posted some time ago here?
I think that’s a good idea to consolidate all discussion relating to this in a single thread.

@wyphan , this is the same series. I figured it was time to let folks know a bit more about what I am doing and why I am doing it.

Thanks for helping to spread the word

1 Like

Hey everyone, Below is the information for this week’s livestream! See you there!

GPU Programming in Fortran : Building a linear Shallow Water Equation Solver
February 11, 2022 4PM MT


In this livestream, Joe will work through the algorithm development for the linear shallow water equations with flat-bottomed topography and no background flow. In the process, we will discuss the development of the Local Lax-Friedrich’s Riemann solver and how to specify radiation and reflecting (no-normal-flow) boundary conditions. Following this discussion, we’ll show how to use Fortran type extensions for the Model2D class in SELF to build the linear shallow water equation solver. Additionally, we’ll cover how to enable GPU acceleration using HIP and ISO_C_Binding to expose the kernel launches in Fortran. Finally, we’ll draft an example program that simulates linear plane wave propagation and reflection.

Reference Materials


Hey all, I’ve opted to have the description of this post be continually updated so that it’s easier to find the link to the next video as well as links to all of the previous ones. Feel free to share any feedback that can help make it easier to find all of this content.


Livestream details for 2/25 have been added to the description of this thread! I’ll see you all tomorrow for another “F” Word livestream

1 Like

@moderators - It seems I am no longer to make edits to this posts description. In an effort to not “spam” this discourse with weekly/bi-weekly updates to this series, I was hoping to be able to modify the description for this post to keep the community updated on past, present, and future episodes for this series. Is there a way you can enable post editing indefinitely , e.g ( Free to edit post at any time - feature - Discourse Meta ) ?

If you can tell me where the setting is to enable it, let me know. It seems it requires to have admin access to the server, which we don’t have.

@certik , @awvwgk was able to convert this post to a wiki so that I can edit indefinitely. I think we’re good to go here. Thank you, though!

1 Like

Hey everyone, the post has been updated with details for this week’s livestream. I’ve also added the planned schedule through July 2022. If you have any requests on topics you’d like to see covered, I’d love to hear your feedback! See you this Friday at 4pm MT!

1 Like

The next livestream materials have been added to this thread’s description . If you’re interested in solving conservation laws in complex geometries with curved elements, this livestream will be right up your alley. See you there!

The ‘F’ Word : Differential Geometry and the Metric Identities
March 25, 2022 4PM MT