Performance exploration of various C/C++ compilers for AMD EPYC processors in numerical modeling of solidification. (April 2022) - Halbiniak, Kamil; Wyrzykowski, Roman; Szustak, Lukasz; Kulawik, Adam; Meyer, Norbert; Gepner, Pawel
Highlights: For a real-life scientific application, we assess the impact of five state-of-the-art C/C++ compilers available for novel AMD EPYC processors. Besides performance, the numerical accuracy of computation is verified using statistical metrics. For objectivity, we evaluate various versions of the code with the increasing complexity of memory access patterns and control structures. Our assessment confirms the advantage of the Intel compiler over other compilers. We show that the Intel compiler's performance advantage over the AMD compiler results from better utilization of AVX2 vector instructions. The Intel compiler usage permits us to fully reveal the performance potential of the AMD EPYC against the Intel Xeon architecture. Abstract: The phase-field (PF) method is a powerful tool for solving interfacial problems in materials science. This paper's primary goal is to assess the impact of various state-of-the-art C/C++ compilers available for novel AMD EPYC Rome and Milan multi-core processors on the performance of real-world scientific codes corresponding to the solidification modeling application using the PF method and generalized finite difference scheme for solving governing PDEs. Among the studied compilers are AOCC, Clang, GCC, Intel compiler, and PGI. Besides performance, the numerical accuracy of the simulation is verified since various optimizations used by the compilers can cause differences in the simulation results. For the objectivity of the assessment, we study different application versions with the increasing complexity of memory access patterns and control structures. All tested codes are executed on a dual-socket server equipped with 64-core AMD EPYC Rome 7742 CPUs. This assessment confirms the advantage of the Intel compiler over other compilers. In particular, while for the static intensity only GCC lags noticeably behind other compilers, in the case of the dynamic intensity, the clear winner is the Intel compiler, which allows increasing the performance up to about 1.3 times over the AMD compiler. Moreover, we reveal the sensitivity of the application version and compiler to selecting a different number of NUMA domains and enabling/disabling the NUMA balancing option in EPYC processors. By comparing the performance gain achieved by various compilers due to vectorization of the application codes, we show that the Intel compiler's performance advantage results primarily from considerably better utilization of capabilities of AVX2 vector instructions. Finally, we show the importance of choosing a compiler when comparing the performance of AMD EPYC and Intel Xeon processors.