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 by IBM product... [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 -qinline+< function_name > option: specifies that the named... [More]
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, Rational STSM in... [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 https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/c_11_the_decltype_specifier_part_i?lang=en The deduction rules of decltype are introduced in Part II. For details, see https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/c_11_the_decltype_specifier_part_ii?lang=en In this section, I will state the inheritance of cv-qualifiers and the disposal of redundant... [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 questions and... [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 restrictive aliasing rules... [More]
Have you ever wondered why your child threads in a multi-threaded application on AIX fail to acquire a large amount of memory from the stack (even though your ulimits are set to unlimited) ? The reason is simple. For a 32-bit compiled application on AIX, the default pthread stacksize is 96 KB; and for a 64-bit compiled application on AIX, the default stacksize is 192 KB. Both of these default values are defined in the pthread.h header file. Let's use the following test case as an example. $ cat test.c ... [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: int i;... [More]
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 also qualify the auto keyword with... [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]