I recently helped to set up a webinar on “Fortran for High Performances computing”., (Wadud Miah, 2020, May 4th. If needed, see the event page and recording here : EXCELLERAT Services)
The audience (around 100 people) asked many questions, which IMHO should a least be listed in the Fortran Discourse, to be discussed or answered. And If enough answers are gathered, this discussion could become a good reference.
So feel free to comment…
A - General questions:
- A1 - There is a cost at modernizing code and often it is not considered worth the investment. How can this be addressed ?
- A2 - Are you aware of any NEW HPC softwares the development of which started with Fortran ?
- A3 - What about newer C++ features (constexpr, auto, modules) and the ISO_C_BINDING? Of course the Fortran binding is for C, but it is often interchangeably used and I wonder if there are plans to support CPP. Essentially at the moment using ISO_C_BINDING seems to restrict both the Fortran features and C(++) features which are usable. How do you see this being resolved?
- A4 - More comment than question, I would personally track the standard compliance of the compiler used instead of the language standard
- A5 - Are you aware of any efforts to build a C++ container interface to Fortran arrays using whats available in the “ISO_Fortran_binding.h” header? This would be great to enhance interoperability with C++.
B - On parallelization
- B1 - “Which parallelization methods are generally preferred? OpenMP or Fortran coarrays?”
- B2 - What are The advantages of co-arrays over OpenMP
- B3 - I’m a little confused about the conceptual space shared by coarrays and MPI. Moving forward, what will the standard focus on? Can we expect “CUDA aware coarrays”? Or should we focus on MPI to the exclusion of coarrays?
- B4 - Hardware topologies are getting more and more layered and deep (e.g. AMD epyc processors) with increased non uniformity in memory access. How are “placements” managed with coarrays? It’s the counterpart of MPI process pinning and OpenMP threads affinity.
- B5 - can coarrays be used across multiple devices? cores? nodes? gpu? what are the restrictions?
- B6- are aware of any performance comparison in real codes between coarray fortran and other approaches ?
C - On GPU Programming
- C1 -Is CUDA Fortran is supported by the PGI compiler
- C2 - if cuda openmp does not share memory, is there any advantage with respect to mpi cuda?
- C3 - Can you please give some more hints on how host/device memory copies can be explicitly handled with OpenMP for GPU’s so that memory residency can be exploited. Thanks
- C4 - what about GPU computing and solutions for data race issue ?
- C5 - Are you aware of third-party libraries such as ArrayFire for high-level GPU programming? Could you share your feelings on choosing it instead of the standard options you presented (CUDA, OpenACC, or OpenMP)?