Japan Geoscience Union Meeting 2025

Presentation information

[J] Oral

M (Multidisciplinary and Interdisciplinary) » M-GI General Geosciences, Information Geosciences & Simulations

[M-GI30] Computational sciences on the universe, galaxies, stars, planets and their environments

Tue. May 27, 2025 3:30 PM - 5:00 PM 303 (International Conference Hall, Makuhari Messe)

convener:Wataru Ohfuchi(Kobe University), Junichiro Makino(Kobe University), Masanori Kameyama(Geodynamics Research Center, Ehime University), Hideyuki Hotta(Nagoya University), Chairperson:Kensuke Shobuzako(Department of Earth and Planetary Sciences, Graduate School of Science, Kyushu University), Wataru Ohfuchi(Kobe University)

4:00 PM - 4:15 PM

[MGI30-09] Interfaces and Programming of OpenACC for MN-Core

*Ryuta Tsunashima1, Naohito Nakasato2, Ryozaburo Suzuki3, Katsuhiro Endo4, Hiroto Imachi5, Junichiro Makino5,1 (1.Kobe University, 2.The University of Aizu, 3.Sinby Corporation, 4.National Institute of Advanced Industrial Science and Technology, 5.Preferred Networks, Inc.)

Keywords:MN-Core, OpenACC, API, Programming, Compiler, Accelerator

MN-Core is an AI and HPC accelerator developed by Kobe University and Preferred Networks (PFN). One of the key differences between MN-Core and other AI processors is its native support for double-precision floating-point calculations. As a result, MN-Core delivers high double-precision performance (for example, NVIDIA A100 GPU, a comparable accelerator in the same generation, achieves a maximum of 19.5 TFLOPS, while MN-Core reaches 32.8 TFLOPS). Additionally, MN-Core demonstrates superior performance per watt compared to other accelerators in the same generation, owing to its high density of Arithmetic and Logic Units (ALUs) per chip area. In the Green500 ranking, which evaluates the power efficiency of supercomputers globally, MN-Core ranked first or second from 2020 to 2021. In 2024, the next-generation accelerator, MN-Core2, was released as part of the MN-Core series. However, the programming environment supported by MN-Core was limited to PyTorch.

As part of the Post-Fugaku Feasibility Study, which runs from autumn 2022 to March 2025, we have begun developing general-purpose programming environments for MN-Core to meet the needs of real-world HPC application users. In these environments, we are developing MNCL as a low-level programming environment and OpenACC for MN-Core (OpenACC/MN-Core) as a high-level programming environment. MNCL is a specialized OpenCL-like language for MN-Core. The primary advantage of supporting OpenACC is code portability. OpenACC is a compiler directive-based API that supports C, C++, and Fortran, making it easy to port code to an accelerator by simply adding compiler directives. Additionally, supporting OpenACC allows for the porting of existing OpenACC-based code applications for GPU to MN-Core.

OpenACC/MN-Core provides extension APIs tailored to MN-Core’s architecture, which follows the distributed memory model, in contrast to the shared memory model used by GPU and CPU architectures. These extension APIs are inspired by High Performance Fortran (HPF) and XcalableMP, both compiler directive-based APIs that offer an alternative to MPI for inter-node parallel computing, which also follows the distributed memory model. These reference APIs have been implemented in compilers, which confirms the feasibility of code compilation and the practicality of their interfaces.

We have developed a prototype compiler for OpenACC/MN-Core. This is a Source-to-Source compiler that translates OpenACC code written in C into MNCL. The compiler uses XcodeML, an XML-based intermediate representation, to facilitate translation between C and MNCL, leveraging existing frontend and backend components customized for OpenACC/MN-Core. Within the compiler, XcodeML is analyzed and translated by original middleware developed using lxml, a Python library for XML processing. Ultimately, the compiler generates both MNCL host code and MNCL device code. We also plan to develop a Fortran version of this compiler.

This presentation will introduce the OpenACC/MN-Core interfaces and provide examples of programming and code compilation.