close window

Print print

Smarter Computing With XL Compilers

IBM XL compilers are designed to optimize your infrastructure for Power Systems servers. From enhancements to support the latest standards, highly tuned math libraries to industry-leading optimization technology, XL compilers enable you to get the most out of your hardware and software investments.

If your business is looking to put new capabilities into the hands of your programmers and make them and your business more efficient, XL compilers can help. New compilers are essential for fully exploiting new hardware but they also help you squeeze more out of your current systems. This release introduces features that assist with performance tuning and optimization, support programming standards and industry specifications, and boost productivity.

Application Performance

XL compilers continue to be industry leaders in optimization technology that maximizes the application performance executing on Power Systems servers. XL C/C++ V12.1 and XL Fortran V14.1 provide features to help programmers improve performance of their compute-intensive applications. These include improvements to the compiler (e.g., alias analysis) to speed up the gathering of information that’s passed between the components within the compiler. The result to you is faster compile time, notably for large C or C++ applications or for applications that contain Fortran 90 array language and Fortran 90 modules. As well, additional compiler components are now 64-bit, thereby allowing significantly larger programs to be optimized.

Developer Productivity

With access to highly tuned libraries, optimization utilities and development utilities, developers can simplify their programming tasks, boost productivity and shorten development time. XL C/C++ V12.1 and XL Fortran V14.1 provide usability enhancements to improve developer productivity. These include new and changed compiler options and directives to simplify programming tasks and new reports that help you identify opportunities to improve the performance of your code.

For example, an option is extended to improve the debugging of optimized programs, while another option enables large table of contents (TOC) access to prevent overflow conditions when the TOC is larger than 64 KB, and many new suboptions enable the support of the new C11 and C++11 or Fortran 2008 programming language standard features added in this release. New directives introduced allow programmers to communicate the expected number of loop iterations to the compiler, thereby enabling more precise optimizations. In Fortran as well, a new directive enables you to specify the alignment of all variables (except common block objects) in memory.

Compiler reports are now available in HTML as well as XML formats to help you further reduce programming effort for tuning applications. Profiling reports include new sections covering relevant, missing and outdated profiling data to help you analyze your programs. In addition the SHOWPDF utility has been enhanced to view this new profiling data.

New XL C built-in functions for atomic memory access, whose behavior corresponds to that provided by GNU Compiler Collection (GCC), are added in this release. In a program with multiple threads, you can use these functions to atomically and safely modify data in one thread without interference from another thread.

XL C/C++ for AIX continues to support integration with the latest IBM Rational Developer for Power Systems Software, a premier Eclipse-based integrated development environment for application development and maintenance; and IBM Rational Team Concert, a Jazz-based application lifecycle management software product. These development tools improve programmer productivity and overall team efficiency and help reduce cost and risk, and improve time to value.

Application Portability

XL compilers conform to International Programming Language Standards protecting application investments and enabling ease of application migration to Power Systems servers. As well, object code or libraries compiled with previous versions of XL C/C++ and XL Fortran compilers are fully compatible with the latest XL C/C++ and XL Fortran compiler and runtime environment. On Linux, binary compatibility with GNU C/C++ allows direct linkage with objects, shared libraries and archives built by either the GNU or IBM compilers.

XL C/C++ continues to deliver language features in the C++11 (previously known as C++0x) standard. New language features introduced this release include inhibiting implicit conversions from being applied where they might be unintended (enabling you to program more robust classes with fewer ambiguity errors), the capability to overload functions based on the value categories of arguments as well as reuse the resources of expiring objects improving the performance of your libraries, and the capability to define constant expressions to be evaluated at compile time instead of runtime, providing performance benefits.

C11 (previously known as C1x) is the latest standard for the C programming language. XL C/C++ V12.1 support for the latest C11 standard begins with several features, for example, to enable easier grouping of anonymous structures and to check important program variants to allow libraries to detect and diagnose common usage errors at compile time.

XL Fortran begins support of selected features from the latest Fortran 2008 standard. These include the capability to directly access the real or imaginary part of complex entities, declaring multiple type-bound procedures in a single procedure statement, declaring entities of both derived type and intrinsic type, and defining an executable block that can contain declarations.

XL C/C++ and XL Fortran support development of parallel applications using the OpenMP API. XL C/C++ V 12.1 and XL Fortran V14.1 provide a full implementation of the OpenMP3.1 API specification.

This specification introduced new features to improve the development of parallel applications including enhanced control over task creation and scheduling, support for min/max reductions in C/C++, as well as support for binding threads to processors. Programmers can use OpenMP 3.1 to further simplify developing parallel code to exploit multiprocessor systems. The resultant application is easy to maintain and portable.