With the rise of scalable vector extension instruction sets in ARM processor architectures, large Fortran-based scientific codes face challenges in performance portability. This paper focuses on CLOUDSC, a computationally intensive and data-access complex cloud microphysics parameterization scheme from the Integrated Forecasting System of ECMWF. We propose Auto-CLOUDSC, an auto-generation framework that optimizes CLOUDSC by the following methods, including (1) An auto-generator that contains three modules: function interface generator, code structure analyzer, and expression parser to convert Fortran to vectorization instruction sets. (2) A physics-combine algorithm that applies loop fusion to reduce redundant memory access. (3) A cache-aware algorithm that uses cache tiling and data layout optimization to improve data reuse. Experiments demonstrate that the auto-generated code achieves a speedup of 1.3 to 2.1 times over the original Fortran baseline on the Phytium FT2000+ ARMv8 processor.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Auto-CLOUDSC: An Auto-generation Framework for Vectorization and Optimization of Cloud Microphysics Parameterization on ARM CPUs

  • Tun Chen,
  • Jianping Wu,
  • Yuntian Zheng,
  • Yingjie Wang,
  • Fukang Yin,
  • Jinhui Yang,
  • Juan Zhao,
  • Xiaoli Ren

摘要

With the rise of scalable vector extension instruction sets in ARM processor architectures, large Fortran-based scientific codes face challenges in performance portability. This paper focuses on CLOUDSC, a computationally intensive and data-access complex cloud microphysics parameterization scheme from the Integrated Forecasting System of ECMWF. We propose Auto-CLOUDSC, an auto-generation framework that optimizes CLOUDSC by the following methods, including (1) An auto-generator that contains three modules: function interface generator, code structure analyzer, and expression parser to convert Fortran to vectorization instruction sets. (2) A physics-combine algorithm that applies loop fusion to reduce redundant memory access. (3) A cache-aware algorithm that uses cache tiling and data layout optimization to improve data reuse. Experiments demonstrate that the auto-generated code achieves a speedup of 1.3 to 2.1 times over the original Fortran baseline on the Phytium FT2000+ ARMv8 processor.