# Seminar by Damian Rouson on April 17

**URL:** <https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542>\
**Category:** Announcements\
**Created:** [April 12, 2023, 3:21pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542 "2023-04-12T15:21:57Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [April 12, 2023, 3:21pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/1 "2023-04-12T15:21:57Z")

</div>

@rouson will visit me next week at the University of Miami and he’ll give a seminar that may be interesting here. It’s open to the public by Zoom or in person.

**Speaker** : Damian Rouson, Computer Languages and Systems Software Group, Lawrence Berkeley National Laboratory, CA.

**Title** : Language-Based Parallel Programming for Earth System Modeling

**Date and time** : Monday, April 17, 2023, 3:30 pm ET

**Venue** : Rosenstiel School, Seminar Room SLAB 103

**Zoom** : [Launch Meeting - Zoom](https://miami.zoom.us/j/94798819406)

**Abstract** : Language-based parallel programming models offer the promise of improved portability, programmability, and performance along with reduced maintenance costs relative to some alternative approaches. Fortran 2018 delivers on this promise by incorporating and expanding upon Coarray Fortran, a feature set originally defined as a syntactically small extension to Fortran 95. Coarray Fortran supports single-program, multiple data (SPMD) programming compatible with other SPMD models such as the widely employed Message Passing Interface (MPI). Fortran also provides array statements and concurrent loop iterations, “do concurrent”, that a compiler can exploit for multithreading, vectorization, or offloading computation to accelerators such as graphics processing units (GPUs). Four widely available compilers now support the aforementioned language features, making the time ripe for exploring language-based parallelism in Fortran. This talk will demonstrate the use of coarrays for advection prediction in the Intermediate Complexity Atmospheric Research (ICAR) model and the use of array statements and “do concurrent” in Inference-Engine. Developed at the National Center for Atmospheric Research (NCAR) and initially motivated by the precipitation input requirements of hydrological models, ICAR facilitates downscaling to predict the regional impacts of global climate change. Developed at Berkeley Lab, the new deep learning framework Inference-Engine targets the large-batch inference needs of applications such as ICAR, which will need to infer multiple variables at each grid point at each time step if we succeed in training a neural network to serve as the cloud microphysics module. The talk will highlight the challenges and benefits of the language-based approach in the context of ICAR and Inference-Engine from the standpoint of portability, programmability, performance, and maintenance.

---

<div class="post-metadata">

**Author:** ![everythingfunctional](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/everythingfunctional/32/176_2.png) [@everythingfunctional](https://fortran-lang.discourse.group/u/everythingfunctional)\
**Post date:** [April 12, 2023, 4:14pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/2 "2023-04-12T16:14:37Z")

</div>

Will it be recorded? I won’t be able to attend live.

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [April 12, 2023, 4:29pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/3 "2023-04-12T16:29:47Z")

</div>

I forgot to mention, yes, it will be.

---

<div class="post-metadata">

**Author:** ![greenrongreen](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/greenrongreen/32/1249_2.png) [@greenrongreen](https://fortran-lang.discourse.group/u/greenrongreen)\
**Post date:** [April 12, 2023, 6:56pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/4 "2023-04-12T18:56:43Z")

</div>

Is the duration 1 hour? How much time do I need to block off in my calendar?

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [April 12, 2023, 7:00pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/5 "2023-04-12T19:00:11Z")

</div>

Yes, it’s the 45+15 format.

---

<div class="post-metadata">

**Author:** ![fish830911](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/fish830911/32/2221_2.png) [@fish830911](https://fortran-lang.discourse.group/u/fish830911)\
**Post date:** [April 13, 2023, 11:08pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/6 "2023-04-13T23:08:03Z")

</div>

Thanks! I would like to join on zoom!

---

<div class="post-metadata">

**Author:** ![JohnCampbell](https://avatars.discourse-cdn.com/v4/letter/j/5daacb/32.png) [@JohnCampbell](https://fortran-lang.discourse.group/u/JohnCampbell)\
**Post date:** [April 14, 2023, 3:40am UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/7 "2023-04-14T03:40:33Z")

</div>

I would also be very interested in viewing this seminar.  
Could a video link be provided if we are not able to watch live ?

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [April 14, 2023, 2:22pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/8 "2023-04-14T14:22:40Z")

</div>

Yes, these are most of the time recorded and posted on YouTube the next day. I will post the link here when available.

---

<div class="post-metadata">

**Author:** ![JohnCampbell](https://avatars.discourse-cdn.com/v4/letter/j/5daacb/32.png) [@JohnCampbell](https://fortran-lang.discourse.group/u/JohnCampbell)\
**Post date:** [April 15, 2023, 4:01am UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/9 "2023-04-15T04:01:19Z")

</div>

I was hoping I could ask a question regarding suitability and difficulties in using GPU hardware for SPMD, should it suit the presentation scope.

As background, I am more familiar with use of OpenMP using cheaper Intel I7 and AMD Ryzen processors. Open MP is a shared memory approach for multi-threading which is more suited to my direct solver approaches.  
These processors have been developed for a diverse client base, which has seen marketing influence the design where increased core count that has not “kept pace” with a required memory access bandwidth of my computation type. Recent additions of different core types (pcore or ecore) is an additional complexity for OpenMP load sharing, although this may be better addressed in MPI approaches.

GPU hardware is also being developed for a diverse client base, such as gaming graphics, bit-coin mining and SPMD.

Can you comment on the suitability of GPU hardware for SPMD, given the diverse influences for it’s hardware development ?

---

<div class="post-metadata">

**Author:** ![Federchen](https://avatars.discourse-cdn.com/v4/letter/f/ce7236/32.png) [@Federchen](https://fortran-lang.discourse.group/u/Federchen)\
**Post date:** [April 16, 2023, 12:17pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/10 "2023-04-16T12:17:17Z")

</div>

The SPMD model is a foundation for kernel programming as it does systematically and massively replicate kernels on devices.

CUDA, DirectCompute, OpenCL, SYCL, TornadoVM, Chapel (if desired by the programmer), Coarray Fortran, and much more, all this is SPMD (with extensions), isn’t it?

SPMD execution has a reputation for being bad (inefficient) at divergent control flow (see page 48 there):

> **[SYCL%20heterogeneous\_programming\_casus2021.pptx%20%281%29.pdf](https://indico.desy.de/event/29414/contributions/104069/attachments/66404/82236/SYCL%20heterogeneous_programming_casus2021.pptx%20%281%29.pdf)**

I am already using Coarray Fortran to implement asynchronous coroutines (groups of kernels) on a CPU, to naturally allow for divergent control flow with SPMD (at the level of a single coarray team) by combining SPMD with parallel loops (to allow for divergent task and -hopefully- pipeline parallelism).

My current focus is on FPGA kernel programming (yet only on CPU). If I would focus on GPU kernel programming using Coarray Fortran (yet only on CPU as well), I would probably start by replacing the coarrays (which I would not expect to be supported on GPUs) in my programming by Fortran 2018 _collective subroutines_ (still Coarray Fortran), as I would expect implementers to hopefully recognizing them for usage on GPUs: For example, NVIDIA Collective Communication Library (NCCL) does appear to be similar to these (broadcast, reduce).

> **[Programming for GPUs](https://link.springer.com/chapter/10.1007/978-1-4842-5574-2_15)**
>
> Over the last few decades, Graphics Processing Units (GPUs) have evolved from specialized hardware devices capable of drawing images on a screen to general-purpose devices capable of executing complex parallel kernels. Nowadays, nearly every computer...

---

<div class="post-metadata">

**Author:** ![Niko](https://avatars.discourse-cdn.com/v4/letter/n/91b2a8/32.png) [@Niko](https://fortran-lang.discourse.group/u/Niko)\
**Post date:** [April 17, 2023, 9:08am UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/11 "2023-04-17T09:08:26Z")

</div>

Thanks, Milan! This sounds super interesting.

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [April 18, 2023, 1:19pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/12 "2023-04-18T13:19:29Z")

</div>

The recording is now available:

[![](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/6/655181f21ce3bacb777cea47ed44f4fe675b4650.jpeg "Damian Rouson, LBL: Parallel Fortran Programming") ](https://www.youtube.com/watch?v=IWHRuJ7D70I)

---

<div class="post-metadata">

**Author:** ![hkvzjal](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/hkvzjal/32/3055_2.png) [@hkvzjal](https://fortran-lang.discourse.group/u/hkvzjal)\
**Post date:** [April 18, 2023, 2:02pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/13 "2023-04-18T14:02:15Z")

</div>

Nice! @milancurcic by any chance the slides can be accessed ? (There are some details difficult to follow in the video because of the angle of the camera 😅)

---

<div class="post-metadata">

**Author:** ![dwannetts](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/dwannetts/32/6530_2.png) [@dwannetts](https://fortran-lang.discourse.group/u/dwannetts)\
**Post date:** [April 19, 2023, 2:26am UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/14 "2023-04-19T02:26:21Z")

</div>

Brilliant!

Many thanks for making this available to the public.

---

<div class="post-metadata">

**Author:** ![rouson](https://avatars.discourse-cdn.com/v4/letter/r/ce7236/32.png) [@rouson](https://fortran-lang.discourse.group/u/rouson)\
**Post date:** [April 27, 2023, 5:43pm UTC](https://fortran-lang.discourse.group/t/seminar-by-damian-rouson-on-april-17/5542/15 "2023-04-27T17:43:43Z")

</div>

Thanks for hosting, @milancurcic.

@hkvzjal I don’t see a way to add an attachment to a post here, but I gave a PDF of the slides to Milan so he might be able to point us to where they are online if they’ve been posted. Otherwise, email me at @lbl.gov and I’ll reply with the slides attached. Please reference the University of Miami seminar or this Discourse thread in the Subject line.
