Can Fortran's 'do concurrent' replace directives for accelerated computing?
Miko M. Stulajter, Ronald M. Caplan, Jon A. Linker

TL;DR
This paper evaluates the feasibility of replacing OpenACC and OpenMP directives with Fortran's 'do concurrent' for GPU and CPU parallelism, demonstrating promising results with certain compilers and configurations.
Contribution
It provides an empirical assessment of replacing parallel directives with 'do concurrent' in Fortran, highlighting current capabilities, limitations, and future prospects.
Findings
Many directives can be replaced without performance loss
All directives replaced with 'do concurrent' using nvfortran
Replacements depend on compiler versions and flags
Abstract
Recently, there has been growing interest in using standard language constructs (e.g. C++'s Parallel Algorithms and Fortran's do concurrent) for accelerated computing as an alternative to directive-based APIs (e.g. OpenMP and OpenACC). These constructs have the potential to be more portable, and some compilers already (or have plans to) support such standards. Here, we look at the current capabilities, portability, and performance of replacing directives with Fortran's do concurrent using a mini-app that currently implements OpenACC for GPU-acceleration and OpenMP for multi-core CPU parallelism. We replace as many directives as possible with do concurrent, testing various configurations and compiler options within three major compilers: GNU's gfortran, NVIDIA's nvfortran, and Intel's ifort. We find that with the right compiler versions and flags, many directives can be replaced without…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed and Parallel Computing Systems · Cloud Computing and Resource Management
