Blogs

About this blog

Tags

Put your Business Critical Applications into HYPERDRIVE with the latest IBM Compilers

||
Visits (5096)

A New Way to Get Performance

In the past, we used to see processor clock speed increasing significantly from one model to another. This meant big increases in application performance simply by moving the application binaries to the new, faster machine. However, in the last few years, we have observed that the microprocessor industry is reaching a physical limitation that is hindering the increases in clock speed that we have enjoyed in the past. In this new era of performance, hardware generational performance gains are more and more coming from the microarchitectural improvements rather than large frequency gains. As performance gains due to clock frequency are reduced and those due to microarchitectural features increase, synergy between the hardware and software is an absolute requirement going forward. which leads to two important consequences:

Impact on hardware: the modern processors should reduce the cycle time for existing instructions, and provide new features (and instructions) that would deliver better performance than existing ones.

Impact on software: the developers need to use compilers that take advantage of the new features (and instructions) of the new hardware.

To get a better performance on your applications you need to upgrade your machine to a newer, and faster, hardwarre, AND you need to have the right compiler that is takes advantage of the new performance features supported by the new processor. The good news is z14 is full of new performance features that are designed for COBOL, C, C++, and PL/I workloads. In addition, IBM is releasing a new set of compilers that take advantage of those new features to deliver the best performance on z14. For most application, you don't need to recompile the whole application to improve performance, but only the parts that has high CPU consumption.

COBOL, PL/I, C, and C++ applications can benefit from z14 extra caches per chip (2x compared to z13), faster I/O, and new instructions in Single Instruction Multiple Data (SIMD). These features can easily be exploited by using the new set of IBM compilers targeting z14.

The Easy Way to Get the Best Performance:Upgrade your Compiler

COBOL

The new Enterprise COBOL v6.2 compiler fully exploits the Vector Packed Decimal Facility, which leads to significant performance improvements in your applications on z14 compared to older compilers. For compute intensive applications, Enterprise COBOL v6.2 delivers a 10% CPU reduction on average over COBOL V6.1, 16% CPU reduction on average over COBOL v5.2, and 47% CPU reduction on average over COBOL v4.2. For decimal and floating point intensive applications, the Enterprise COBOL V6.2 delivers up to 38% CPU reduction over COBOL v6.1, up to 67% CPU reduction over COBOL v5.2, and up to 94% CPU reduction over COBOL v4.2.

In addition to improving the application performance, the new COBOL compiler improves compile time performance over COBOL v6.1. This will result in reduced CPU usage for optimizing COBOL programs on average by 5.5% at OPTIMIZE(1) option and 18% at OPTIMIZE(2) option. This will help enterprises reduce application build time, which benefits continuous integration and continuous delivery models.

In addition to the performance improvements, Enterprise COBOL 6.2 provides many new features that would help in COBOL development. You can now parse JSON documents directly from COBOL which support System of Engagement applications (e.g. mobile) where preference is REST/JSON. Built for the most trusted platform, z14, Enterprise COBOL v6.2 improves reporting on invalid data and out of bound checks. This feature helps detect coding errors in existing source, improves code quality, and simplify migration from COBOL v4 and below. More information about Enterprise COBOL for z/OS.

Additional performance of business critical applications built with Enterprise COBOL v4 and below can be improved on z14 by using the newly released IBM Automatic Binary Optimizer (ABO) for z/OS v1.3 without source re-complication. More information about ABO.

PL/I

By exploiting the new performance features in z14, Enterprise PL/I v5.2 reduces CPU usage over the same applications built with PL/I v5.1 by up to 40% for decimal intensive applications, and an average of 10% for compute intensive applications. In addition to the performance improvements specific to z14, PL/I v5.2 has added new enhancements to improve application performance for all z processors. For example, the new compiler supports the inlining of nested procedures, and for SELECT statements testing for a character string, the generated code will now do a binary search to get a better performance.

The Enterprise PL/I v5.2 has also added new features to shorten the learning curve of PL/I for new programmers who know Java; this will reduce on-boarding cost and increase productivity. For example, the limit on the source width has been increased from 100 to 200 to match typical screen sizes, and support has been added to compile DB2 programs under Unix System Services. More information about Enterprise PL/I for z/OS.

C/C++

The z/OS v2.3 XL C/C++ compiler has been fine-tuned to take advantage of all performance features in z14. As a result, the z/OS V2R3 XL C/C++ compiler demonstrates on average a 13% reduction in CPU time for floating point intensive applications on z14 over the same applications built with the z/OS V2R2 XL C/C++ compiler on z14. For compute intensive applications, the z/OS V2R3 XL C/C++ compiler demonstrate on average 8% reduction in CPU time on z14 over the same applications built with z/OS V2R2 XL C/C++ compiler on z14.

The math libraries have also been tuned for z14. For example, z/OS V2R3 MASS vector functions on z14 demonstrate throughput improvements averaging 12x, and up to 37x, over the corresponding z/OS V2R2 runtime library math functions on z13.

The new XL compiler also provides about 50 new built-in functions to manipulate vector float data types (in addition to enhancing the existing built-in functions to support the vector float data type). More information about z/OS XL C/C++.

It is exciting that IBM is releasing new releases of COBOL, C/C++, and PL/I compilers just in time for z14. This would provide you with the right tools to get the best performance of z14, without the need to change your source code. You don’t even need to recompile the entire application. You can selectively compile only the performance sensitive parts (the parts that has the highest CPU consumption).

Disclaimer: all performance results reported in this article are based on internal IBM compute-intensive test suites. Performance results from other applications may vary.

[1]Performance of business applications built with Enterprise COBOL v4 and below can be improved by Automatic Binary Optimizer for z/OS v1.3 without source re-compilation

About the Author

Shereen Ghobrial is the offering manager for Swift on z at IBM. He is responsible for providing a rich developer experience for Swift on LinuxONE and z Systems (including compilers, runtime, and interoperability with the ecosystem in the platform). He started his career in compiler development at IBM Toronto lab in 1997 and took different technical and management roles in compilers, Java, and WebSphere Application Server. His experience includes leading teams working on different platforms with a focus on Power and zSystems. Shereen holds a master’s degree in computer science from McGill University, Montreal.