Porting to POWER9

Edit: Have you tried doing the same thing?

Originally posted November 6, 2018 on AIXchange

Linux runs on everything from embedded devices to mainframes. So why should we care that Linux runs on IBM Power Systems servers? Many developers and users are perfectly happy running Linux applications on x86, since that’s the environment they know. However, lack of awareness of alternatives is another factor. In the case of Power Systems, some believe it can be difficult to move an application from x86 to POWER. Of course we know that this is unfounded?and in fact with the relatively recent change from the big endian to little endian format, moving to POWER has never been simpler.

With this in mind, Philippe Hermès recently tweeted this information from French consulting firm ANEO, which is porting some of its applications to POWER9 systems:

In partnership with IBM, ANEO has started porting some applications on IBM latest POWER9 systems. The Power architecture (and the POWER9 processor in particular) is optimized for high memory bandwidth and better performance for applications that require frequent data access.

Memory bandwidth is a technical feature that is not very emphasized in hardware specifications, yet it is often the main performance bottleneck in today’s applications.
One of the codes that have been ported on Power is SeWaS (Seismic Wave Simulator), a modern and optimized simulation software developed by ANEO.

The two goals of this study were to assess performance and difficulty of porting an application on Power.

DIFFICULTY OF PORTING:
The Power architecture uses a specific CPU instruction set, which requires recompiling applications and their dependencies. IBM claims, however, that “95% of Linux x86 applications written in C/C++ are ported on Power without having to change the source code.”

In our case with SeWaS the porting was surprisingly easy. We simply ran the exact same installation script that we usually run on Intel processors and everything worked as expected, making transparent that it was being compiled for a different architecture.

In particular, IBM provides a free software suite named Advance Toolchain, containing most of the common HPC libraries optimized for Power (Boost…) as well as the GCC 7 compiler, which proved very convenient.

PERFORMANCE:
The benchmark was done on virtual machines provided by IBM with only 2 physical cores, which is not a very representative sample of performance. Though, performance measured on these 2 cores is very promising, and it is clear at least that the application was correctly optimized for the Power architecture, even though a very generic installation script was used.

OPTIMIZATIONS / FUTURE DEVELOPMENTS:
Aneo will be doing further benchmarks on Power in the future, especially on systems with POWER9 + NVidia GPUs, from which a much greater performance difference is to expect (usually 5 or 10 times better performance compared to regular CPU machines).
One of the main advantages of POWER9 is enhanced support of accelerators (FPGA, NVidia GPUs), with technologies such as CAPI and NVlink for higher bandwidth, from which seismical applications benefit a lot.

With the memory bandwidth and performance improvements that can be expected from a simple recompile, developers should find it worth their time to at least investigate running their applications on POWER. But even if you’re not developing or recompiling anything at all, this is nonetheless a good reminder of how the enhanced Power Systems architecture benefits your own applications.