| _version_ | 1866901747804405760 |
|---|---|
| author | Holeksa, Claudius Cojean, Terry Chen, Yen-Chen Kosukhin, Sergey Behrens, Jörg Kornblueh, Luis Frauen, Claudia Anzt, Hartwig |
| author_facet | Holeksa, Claudius Cojean, Terry Chen, Yen-Chen Kosukhin, Sergey Behrens, Jörg Kornblueh, Luis Frauen, Claudia Anzt, Hartwig |
| contents | <p>In recent years, scientific High Performance Computing (HPC) software stacks are increasingly embracing C++ because of the extensive ecosystem and the superior GPU support across different vendors. However, many important applications are still written in Fortran. The weather and climate prediction model, ICON, for example, is written in Fortran and is still an operational model for daily weather forecasts for several countries. A Fortran code containing millions of lines of code, like ICON, cannot be easily rewritten in C++. The reasonable solution would be to rewrite components of the code in C++. However, there is no standard for cross-compiling Fortran and C++ code. Interfacing C++ and Fortran code is a tedious task. Cross-compiling can be error-prone because there is no proper compiler message or debugger for cross-compiling. For an alternative approach enabling coexistence and interplay of C++ and Fortran code, we developed a memory manager library, MemMan, which handles data passing between Fortran and C++ codes. MemMan simplifies Fortran-C++ interfacing by handling the argument passing in the library. MemMan manages not only CPU memories, but also GPU memories of different vendors. The memory manager library assists an incremental rewrite of large Fortran applications into C++. MemMan was motivated by the modernization effort of the ICON code, but it has been made general such that it works for all Fortran and C++ cross-compile applications using GPUs. With the help of MemMan, a Fortran application can easily try out performance portability libraries such as Kokkos and numerical libraries such as Ginkgo.</p> |
| format | Recurso digital |
| id | zenodo_https___doi_org_10_1145_3784828_3785257 |
| institution | Zenodo |
| language | |
| publishDate | 2026 |
| publisher | Zenodo |
| record_format | zenodo |
| spellingShingle | MemMan: A Fortran and C++ Interoperable Memory Manager on Modern High-Performance Computing Platforms Holeksa, Claudius Cojean, Terry Chen, Yen-Chen Kosukhin, Sergey Behrens, Jörg Kornblueh, Luis Frauen, Claudia Anzt, Hartwig <p>In recent years, scientific High Performance Computing (HPC) software stacks are increasingly embracing C++ because of the extensive ecosystem and the superior GPU support across different vendors. However, many important applications are still written in Fortran. The weather and climate prediction model, ICON, for example, is written in Fortran and is still an operational model for daily weather forecasts for several countries. A Fortran code containing millions of lines of code, like ICON, cannot be easily rewritten in C++. The reasonable solution would be to rewrite components of the code in C++. However, there is no standard for cross-compiling Fortran and C++ code. Interfacing C++ and Fortran code is a tedious task. Cross-compiling can be error-prone because there is no proper compiler message or debugger for cross-compiling. For an alternative approach enabling coexistence and interplay of C++ and Fortran code, we developed a memory manager library, MemMan, which handles data passing between Fortran and C++ codes. MemMan simplifies Fortran-C++ interfacing by handling the argument passing in the library. MemMan manages not only CPU memories, but also GPU memories of different vendors. The memory manager library assists an incremental rewrite of large Fortran applications into C++. MemMan was motivated by the modernization effort of the ICON code, but it has been made general such that it works for all Fortran and C++ cross-compile applications using GPUs. With the help of MemMan, a Fortran application can easily try out performance portability libraries such as Kokkos and numerical libraries such as Ginkgo.</p> |
| title | MemMan: A Fortran and C++ Interoperable Memory Manager on Modern High-Performance Computing Platforms |
| url | https://doi.org/10.1145/3784828.3785257 |