This Friday, December 12, 2014, IBM releases the XL C/C++ V13.1.1 compilers for the little endian Linux distributions on IBM Power Systems. Linux on Power provides open technology, performance, portability and scalability . IBM XL compilers are the key to unleash the performance of your C/C++ applications. I rejoined the XL C/C++ compiler team early this year after spending over a decade working on the IBM Java Just-In-Time compiler. IBM's JIT compiler is built using the XL C/C++ compiler because it provides an 18% performance... [More]
You may have heard about Rational Developer for Power Systems Software , which now has support for development of COBOL on AIX, C/C++ on AIX and Power Linux as well as IBM i application development. It is easy to kick the tires by downloading the trial from here .
But if you only have 5 minutes just check out the YouTube video below and be amazed at the C/C++ functionality now available for AIX and Linux developers.
For more information go to the product web site at http://www-01.ibm.com/software/rational/products/rdp/... [More]
The following PTFs are now available: October 2010 PTF for XL C for AIX, V10.1 October 2010 PTF for XL C/C++ for AIX, V10.1 October 2010 PTF for XL C/C++ for AIX, V10.1 Runtime In addition to defect fixes, these PTFs also added support for AIX7.1 and the URT functionality! Click on the links to find out more details and download them!
Now there’s an even easier way to get you started with your evaluation of the latest XL C/C++ (V13.1.1) and XL Fortran (V15.1.1) for Linux compilers for the little endian Linux distributions on Power Systems (Ubuntu 14.04, Ubuntu 14.10, and SLES 12).
We are now hosting the latest evaluation versions on public apt-get and zypper repositories.
You can find everything that you need to get started at http://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/
The Variadic Template Function
The latest language standard has further complicated C++ by adding variadic templates. One problem I had in my attempt to understand this new feature was the lack of simple examples showing how it worked. Here's my attempt to show some of the basics of a variadic template function.
template <class ...A> int func(A... arg)
First the basic vocabulary: A template parameter can now be a template... [More]
curious about what the real speedup is
from using -O2, so I did a few
runs on an old machine we have sitting
around in our shop. I used XLC
V11.1 and XLF V13.1 to measure the old
SPEC CPU2000 benchmark suite. I did
two measurements: one with -O2 and one
without optimization. The results are
presented below in a table and they
confirm what I suspected – Code
compiled with -O2 consistently performs 2-3
times faster than the same code compiled
without optimization! ... [More]
In this meeting, Bjarne Stroustrup opined that "The Atomics have become unstable at Fermilab".. Of course, Fermilab is a wonderful place, where one of the first sub-atomic particle, the top-quark was discovered. The architecture of this facility stands out uniquely with pi-shaped main building, telephone poles, and Archimedean spiral pumping stations. Much of the facility is opened to public visit. The main mission of the Lab is one of keen interest to our future and that is the search for Dark matter, Dark Energy which of course can... [More]
The AIX tprof utility is a valuable tool for optimization which provides features to identify performance bottlenecks within programs and to aid in analysis of performance-critical code. The IBM XL C/C++ Compiler provides features to aid in the use of tprof for performance analysis of programs. This document provides a brief introduction to select features of the tprof utility, with focus on features which interact with XL compiler listing files to allow performance analysis at the source-line or instruction level. In its most simple usage,... [More]
The XL C/C++ V2R1M1 web deliverable for z/OS 2.1 will become generally available on February 16, 2015 to provide support for the recently launched IBM z13 Mainframe , the most powerful and secure system ever built.
This will be done through new ARCH(11) and TUNE(11) parameters designed to take advantage of the new instructions to better optimize your generated code. The compiler also supports the single instruction, multiple data (SIMD) instructions provided with the z13 vector extension facility and corresponding vector... [More]
When migrating your application from big endian to little endian on the IBM POWER8 platform, there are a number of differences that need to be considered. This can range from vectors, storage association between items of different sizes, long doubles, complex numbers, and serialization. The IBM XL C/C++ for little endian Linux on Power Systems contains new options and built-in functions to help with your migration. Here's a link to an article that will help you understand what to look out for and provide suggestions on... [More]
Today, IBM announced a brand new C/C++ compiler for Linux on z Systems. Built on top of the advanced optimization technology already in use by the Java and Enterprise COBOL compilers, the XL C/C++ for Linux on z Systems compiler generate highly optimized code to significantly improve runtime performance of applications. It leverages the Clang open source infrastructure for a portion of the compiler front end resulting in a high level of source compatibility with GCC and includes partial support of the latest C11 and C++11 language standards. In... [More]
In June 2014, documentation for XL C/C++ for AIX and Linux, V13.1 was published successfully on IBM Knowledge Center, instead of information center.
Prior to IBM Knowledge Center, IBM product documentation was hosted on various information center servers and maintained separately by various product teams. IBM Knowledge Center provides a central repository for all IBM product documentation. With IBM Knowledge Center, you can easily perform the following tasks with product documentation:
1. Read and search documentation... [More]
The XL C and XL C/C++ compilers support the following compiler options and function attributes that control function inlining.
The noinline function attribute (IBM extension): prevents the function to which it is applied from being inlined.
The always_inline function attribute (IBM extension): instructs the compiler to inline a function.
The -qinline compiler option: attempts to inline functions instead of generating calls to those functions, for improved performance.
The SuperComputing Conference has served as the crossroads for the entire HPC/Technical Computing community for 25 years. The conference connects with the latest developments through the diverse programs: technical programs, exhibit hall, and HPC Interconnections . During the SC13 silver anniversary celebration this year, IBM was honored to present computer artifacts and a graphical timeline spanning over 67 years of HPC innovation.
The IBM Compiler Team had two of its members in attendance:
Yaoqing Gao,... [More]
I attended Supercomputing in my third year as OpenMP CEO to both represent IBM and OpenMP. This was a big year for us as we closed with many milestones in what I call a Significant Paradigm shift in Parallelism. The most significant milestone was that t he OpenMP Consortium has released OpenMP 4.0 in 2013 with new parallelism features that are productive, portable, and performant across C, C++, and Fortran. OpenMP 4.0 contains significant additions for accelerators, standardized for a broad set of architectures, and an industry-first support... [More]
The usage and advantage of the decltype specifier are introduced in Part I. For details, see
The deduction rules of decltype are introduced in Part II. For details, see
In this section, I will state the inheritance of... [More]
In Part 1 of this C++ Standard September, 2013 meeting trip report, I wanted to mostly go over the core, library issues that affects C++14 and are urgent for the new Standard to emerge. What some people forget is that while this drive for C++14 is happening, there are still some parts of the Committee working on large and small features beyond C++14. This part will describe the many future feature proposals. Many of these proposals may only get full air time during the plenary session and these plenary sessions are getting longer and... [More]
We are pleased to announce the Managed Beta Program for IBM®XL C/C++ for Linux on System z. This Beta Program is separated into two stages, namely, features and compatibility, and, quality and performance.
Clients participating in the Managed Beta program will join developers and product management for education and discussions. Participants will evaluate code and have access to a private website. The beta website will include a tool for reporting problems and feature requests. There will also be a forum for... [More]
Having trouble identifying the correct compiler version installed on your AIX machine? There are a couple of ways such as using the -qversion compiler option or lslpp for the correct compiler filesets.
Feel free to checkout the technote below for more information.
How to determine the installed XL C/C++ for AIX compiler version?
Please let me know if you find this useful.
The IBM XL C and XL C/C++ compilers support the -qalias option. This option indicates whether a program contains certain categories of aliasing or does not conform to C/C++ standard aliasing rules. The -qalias option takes several suboptions, including ansi and typeptr .
When ansi is in effect, type-based aliasing is used during optimization; that is, pointers can only point to an object of the same type. The only exception is that a char* dereference can alias any other types.
typeptr complies to more... [More]
As C++ templates and generic programming become popular, programmers find it sometimes difficult to express the type for a variable or function. People are in urgent need of a mechanism to automatically deduce types for expressions. This new programming mechanism didn't appear until the appearance of decltype. Decltype solves the problem through getting the type or derived type of an expression and acting as the type specifier of another expression whose type needs to be deduced. Here is an example:
In the C++11 standard, the auto keyword is no longer a storage class specifier, but acts as a type specifier that directs the compiler to deduce the type of a declared variable from its initialization expression.
With the auto type deduction feature enabled, you no longer need to specify a type while declaring a variable. Instead, the compiler deduces the type of an auto variable from the type of its initializer expression. For example:
auto i = 1.1; // i : double
You can... [More]
Check out updated exercises in the Power sandbox. You can find them here You can learn about tracking compiler use, performance, auto-vectorization, optimization, interoperability, debugging and reporting.
Those of us who develop C++ applications for a living, often hit a dilemma when analyzing functional errors. Should I debug my application using a symbolic debugger, or should I just add prints and traces to the code to understand its behavior? Too often developers choose the latter, slowing down the application development cycle. Not only must they recompile parts of the application to pick up these changes, but they need to know ahead of time what data to examine, which is often hard to predict in advance. This effectively creates a long... [More]
I've worked out a plan so I can hopefully put a regular post on this blog. My plan is to talk about interesting things the compiler does with templates including lots of examples.
As a compiler developer, I tend to work with small examples that show or test how the compiler is behaving rather than examples that show how you might use a compiler feature in an application. Perhaps some will find this take on things interesting. I have many ideas for topics, but I'm also open to suggestions. One of the things I find interesting is how... [More]
Hi all, I was invited to give two talks on C++0x and Transactional Memory at the newly formed European conference on native C++ at Prien am Chiemsee, near Munich in Germany. http://cpp.adc2011.de/Agenda.aspx Although I was invited to give a talk, I do not know a lot about this conference. However, I know a lot more more about the background after talking with the organizers. It turns out that this is a conference that is split off from another conference which dealt with managed C++. There seems to be a lot of people still with keen interest in... [More]
Great news everybody, The development team for Rational
Developer for Power have been very busy producing videos and demos to
illustrate how to install configure, use projects, edit, navigate
source, validate, build, debug on our supported languages on IBM i, AIX,
and Linux. Check it out. Learning how to effectively use these tools has never been easier. http ://p ubli b.bo ulde r.ib m.co m/in foce nter /ied uass t/rt nv1r 0/in dex. jsp? topi c=/c om.i bm.i ea.r dp/p lugi n_co verp age. html
This is my first post on our C/C++ Cafe that has been long in coming. If you are like me, then you are a new zOS programmer. The learning ride has been quite turbulent and there are ways to go yet. If you are a devoted programmer then you feel quiet excitement of your new program almost working, tempered by the chance of another large manual being 'thrown' at you. zOS is one of those products that has too much of a good thing, that is there is a LOT of documentation. This fact very quickly becomes an advantage as one gains more experience. No... [More]
In a couple of previous posts ( TOC Overflow: what is it, and why should you care? , Dealing with TOC overflow: the traditional approach ) I have presented the issue of TOC overflow. Now I will discuss some features of the XL compilers that can help bypass TOC overflow while minimizing any negative effects on runtime performance.
1. Minimal TOC: The option -qminimaltoc makes the compiler generate code that uses a single entry in the TOC for each compilation unit (in C/C++ a compilation unit is a source file). In order to do this, a... [More]