
RENT or NORENT
Here we are eleven days into a new year; and I would like to wish all of you a happy belated 2009! May this be a year of making technology less complex, more intuitive, friendlier and greener. Is it clear why we have RENT|NORENT compiler option? Do you know that C++ always uses constructed re-enterancy? Can you imagine how applications can benefit most from this? Recently, I developed a greater appreciation for RENT option, that is after I banged my head against the wall to REALLY understand what RENT is all about in order to fix a related... [More]
Tags:  cppcafe compiler-option commercial c rent c++ performance zos norent |
OpenCL 1.0 released
One of the most important thing that happened in the last month of 2008, was the release of the OpenCL specification by Khronos: http://www.khronos.org/registry/cl/ An in-depth overview which breaksdown by Clause of the specification shows some of the capabilities of this specification. A shorter summary will provide an overview. IBM is part of the group that wrote this specification. What is OpenCL? The original intent of OpenCL was to raise the abstraction of graphics programming. Game programmers will recall the battle for graphic... [More]
Tags:  opencl cppcafe cell |
TOC Overflow: what is it, and why should you care?
When building large applications on AIX or pSeries Linux you may have experienced the dreaded TOC overflow. This is a situation reported the system linker that causes it to abort and fail to generate an executable. What is this situation and what are the strategies for coping with it? Basically, the TOC or table-of-contents is a table that the program uses to reference global symbols. Since these symbols can be referenced from multiple object files, their memory location is unknown until link time, so the code generated by the compiler to... [More]
Tags:  c aix linux commercial cppcafe c++ |
How does OpenMP 3.0 work better with C++ (Part 3)?
Let's get to the good stuff. OpenMP 2.5 did not really specify what constructors should be called with various private/first/lastprivate/threadprivate: In some cases, it did not even specify that they should apply to non-PODs (Plain'ol Data, i.e. C structs). OpenMP 3.0 changed that. Beside specifying non-PODs, it also specified precise rules for the constructor sequence that is in line with what the semantics would require. Firstprivate: For instance, it would specify that a firstprivate for a class type variable should expect an accessible... [More]
Tags:  openmp cppcafe c++ |
High Performance a Balancing Act ...
Dual cores have become household products, yet we see little change in the performance of the application that run on these machines. Just this morning, I started Firefox and Lotus Notes at the same time on my dual core T60p laptop, and had to wait a long time before I could use either one of the applications. To take full advantage of hardware horse power: software has to keep up, compiler has to generate better code, or both. Recently, I have been experimenting with compiler options to see how much I can tune the size and performance of the... [More]
Tags:  commercial c++ performance loop-unroll c z/os cppcafe |
C++0x delegating constructors
Something that Java, C++/CLI, and C# already has, is called delegating constructor. This is the ability for one constructor to delegate to another within the same class.C++03 does not have this capability because you cannot name a constructor within the same class in one of its constructor's initializer list. It can use constructors of other class types, including base classes and member objects. In fact, it causes a serious problem when people who learn these other language come to C++, and try using it because what looks reasonable, will... [More]
Tags:  mystery_of_the_week cppcafe c++0x delegating_constructor refactoring |
How does OpenMP 3.0 work better with C++ (Part 2)?
This part will talk about enabling threadprivatization of static class member variables. In 2.5, as a result of ambiguous language, the support for this was inconsistent. In general, it would claim that a threadprivate variable must be namespace, file or block scope. In 3.0, this code is now allowed: class T { public: static int i; #pragma omp threadprivate(i) }; This may seem a trivial change, but for C++, it enables a powerful idiom of singletons and allocators, which all rely on static class member variable. Next posting will... [More]
Tags:  openmp cppcafe c++ |
How does OpenMP 3.0 work better with C++?
This was one of the question asked at SC 08. I will try to answer that here. I will start and add more as I move through the various topics. OpenMP 3.0 had better support for C++ in the following areas: Parallelization of RandomAccess Iterator loops with strict canonical operators Threadprivatization of static class members Unsigned loop control variable support Fully specify constructor call requirement in private/first/lastprivate/threadprivate better match with the C++0x memory model For-Worksharing with Iterator loops: We specifically... [More]
Tags:  openmp cppcafe c++0x memory_model |
OpenMP Booth at SuperComputing 08
I should include an obligatory photo of the OpenMP Booth with our CEO Larry Meadows. Many members worked tirelessly, especially Larry at making sure the Booth was put up, taken down and staffed properly. We also met many people who specifically dropped by to see what was going on, in this first year where we had a booth. Many Thanks.
Tags:  conference openmp cppcafe supercomputing |
Visit with Bjarne Stroustrup at Texas A&M University
Hi, I had the honor and pleasure of being invited to visit Professor Bjarne Stroustrup at Texas A & M University yesterday, delivering a talk on C++ in OpenMP: http://parasol.tamu.edu/seminar/abstract.php?talk_id=586 I will say something more about this subject in the Parallel Computing blog. But I am interested in announcing something that Bjarne shared with me while I was in his office. This is a new C++0x FAQ which he is preparing on this page: http://www.research.att.com/~bs/C++0xFAQ.html I will put this link up as a permanent link on... [More]
Tags:  bjarne_stroustrup cppcafe standard c++ |
Announcing XL C/C++ for Multicore Acceleration V10.1
Today, IBM announced two new C/C++ products designed to exploit the unique performance capabilities offered by the hybrid Cell Broadband Engine processor architecture. They are: XL C/C++ for Multicore Acceleration for Linux on x86 Systems XL C/C++ for Multicore Acceleration for Linux® on Power Systems Both XL C/C++ products are cross compilers. They are hosted on either Linux on x/86 or Linux for IBM POWER systems and cross compile to the target IBM BladeCenter QS21 and BladeCenter QS22 systems. In this release, advanced compilation... [More]
Tags:  cppcafe c/c++ |
C/C++ Single Source Compiler available
As mentioned below Programming the Cell/B.E. architecture just got better , the latest version of the IBM XL C/C++ compiler for the CELL has just been released. I am the technical lead for the IBM XL compilers on CELL, and the team lead for the TOBEY optimizer (one of two optimizers in the XL compilers, and I am overjoyed that the Single Source compiler has joined our dual source compilers on CELL. The dual source compilers are the separate invocations for compiles for the PPU and for the SPU. This is how CELL has been programmed until now. ... [More]
Tags:  cppcafe cell c single_source c++ |
Compilers, what they might do ...
Ever wonder what compiler does to your code? I suppose this is of little importance if binary is generated quickly, it executes fast and yields correct result. I regard compiler as an interactive tool. Given that the destination is the same (the executable), compiler provides many routes for your source code to reach it. Whether you are invoking the compiler via a JCL, under TSO, or ISPF panel, or you are using c89/xlc commands in z/OS USS environment, you can utilize a variety of compiler options that can affect how the source is treated... [More]
Tags:  cppcafe c++ commercial c compiler-option option_override z/os |
Speedy debugging on z/OS
z/OS 1.10 introduces the dbgld utility. It will significantly improve the startup time and performance of dbx . So how does it work, and how do I take advantage of it? Read on for more details. When you specify -g option during C/C++ compilation, a debug sidefile (.dbg) is generated for each input source file. To debug an application, dbx would need to locate all of its debug sidefiles, and process debug information stored within them, this is a necessary but time consuming task. dbgld can perform this task before dbx is invoked. In addition,... [More]
Tags:  c c++ cppcafe z/os debugger |
Introducing the IBM XL C/C++ Compiler Family
Many applications that companies run their businesses on are developed in C and C++. Therefore it is very important to use a compiler that is proven and is able to provide the performance needed for optimizing business-critical applications. IBM has a long history of delivering innovative, high-quality C/C++ compiler products to the marketplace. We delivered our first C compiler in 1988 on S/370 and first C++ compiler in 1992 on RISC System/6000. There are currently 10 products in the IBM XL C/C++ compiler family. They are: XL C for AIX XL... [More]
Tags:  cppcafe c/c++ |
TOP500 SuperComputer for November 2008 released at SC08
Of course, we are very proud that the new list for TOP500 computers has been released here at SC08 on Tuesday at an evening BOF. http://www.top500.org/blog/2008/11/20/top500_bof_session_slides_now_available This is the list of the fastest supercomputers in the world. IBM's Roadrunner has been on this list for some time. The rumor before the conference was whether Oakridge's Cray Jaguar would catch a RoadRunner. Now we know that a Jaguar is not faster then a RoadRunner. http://www.top500.org/lists/2008/11/press-release Also of importance in... [More]
Tags:  supercomputing green cppcafe top500 |
OpenMP at SuperComputing 08
The OpenMP Birds-of-a-Feather session at SC08 was very well attended. The room was full to overflowing, with approximately 60-80 people. while OpenMP had BOFs at SC in prior years, this is actually the first year that OpenMP has had a Booth on the Exhibitor floor as well. The BOF had many elements, including what is new in OpenMP 3.0. They were: 1. Welcome and summary of ARB news - 5 mins - Larry Meadows 2. The three greatest things about OpenMP 3.0 and the three most important things left out of OpenMP 3.0 - 15 mins - Tim Mattson 3. Tasking -... [More]
Tags:  bofs supercomputing cppcafe openmp |
Questions on C/C++ volatile from SC08 Tutorial S08: A Hands-on Introduction to OpenMP
On Sunday, I attended the OpenMP Tutorial hosted by some of my colleagues from the OpenMP committee, Tim Mattson and Larry Meadows. It was an excellent tutorial, full of features and pointing out the behavioral differences between OpenMP 2.5 and 3.0. Tim has been doing this tutorial for almost 20 years and Larry, as the OpenMP CEO has been involved in this for the same amount of time. I must point out that IBM xl C/C++ 10.1 compiler for AIX and Linux both have support for OpenMP 3.0, in addiiton to the compilers mentioned during the tutorial.... [More]
Tags:  c++ cppcafe conference openmp tutorial c supercomputing volatile |
Supercomputing 08
Hi, all. This is Michael Wong. I am at the International Conference for High Performance Computing, Networking, Storage and Analysis, commonly called SC 08, courtesy of IBM http://sc08.supercomputing.org/ I am specifically here to participate in the OpenMP sessions, where we have a booth, a BOF, and other discussion panels. Over the next few posts, I hope to bring you some of the exciting events that are going on at this conference. Looking at the program, there are a number of sessions aimed at Parallel Computing. If there are sessions you... [More]
Tags:  parallel cppcafe supercomputing conference |
My first blog in the Cafe'
For my first blog I want to talk about Compiler Technology (hi)story on z/OS. I know what you are thinking and I don't blame you. z/OS has been around longer than many of us. I'll promise you, I will keep it interesting and above the fold. Compiler characteristics can change based on the options passed to it. With each release came a different set of new options, or existing ones with new default values. You can use these options to detect and correct errors in your code, CHECKOUT, WARN64, DEBUG, etc., control the optimization process,... [More]
Tags:  commercial c++ cppcafe c |
Welcome to Scientific Computing with C/C++
Welcome to the blog on Scientific Computing with C/C++. IBM has a long history of Scientific Computing starting with the creation of FORTRAN in 1957 to the control systems for the Apollo missions in the 1960s. Today, various user groups and wikis exist to support IBM’s scientific computer users: SCICOMP (see http://www.spscicomp.org/ ) SPXXL (see http://www.spxxl.org/new_website/html/index.html ) HPC Central (see http://www.ibm.com/developerworks/wikis/display/hpccentral/HPC+Central ) My Name is Roch Archambault and I have over 20 years... [More]
Tags:  nsf doe hpc performance scientific applications programmers darpa cppcafe |
Some useful performance features in z/OS C/C++
z/OS C/C++ Performance Features Compliers are an important tool in your development environment. A good optimizing compiler generates performance code without you worrying about the low level details of the OS, internals of the runtime environment and hardware architecture. You can concentrate on the business logic in your application. But optimization can take up a lot of resources, both in terms of compilation time and memory space. XL C/C++ provides an optimization option with 3 levels (called suboption 1, 2 and 3). Level 1 and 2 represent... [More]
Tags:  cppcafe z/os optimization c c++ performance |
Welcome to the C/C++ Market Place Blog
Welcome to the C/C++ Café. My name is Roland Koo. I am the Product Line Manager for Compilers. XL C and XL C/C++ are key products in portfolio. I have been with IBM for 19 years and for my entire career, I have been involved in compilation technology. IBM XL C/C++ compilers are specially designed to allow applications to take advantage of virtually all the hardware features provided by IBM processors. They include POWER, System z, Blue Gene, and Cell Broadband Engine architectures. By utilizing leading-edge optimization technologies in... [More]
Tags:  cppcafe c/c++ |
Welcome to the C Standard blog
Welcome to the blog dedicated to the development of the C standard! Hi, my name is Edison Kwok. I'm the tech lead of the IBM XL C compiler front-end team, and the current Canadian representative in the ISO/IEC JTC1/SC22/WG14 working group. The group is composed of a panel of international experts, charged to oversee the development and standardization of the C programming language. We meet twice a year in different locations, with the next meeting scheduled to be held the last week of March, 2009 at the IBM Canada Lab in Markham, Ontario. With... [More]
Tags:  standard c cppcafe |
Dealing with TOC overflow: the traditional approach
In a previous posting ( TOC Overflow: what is it, and why should you care? ) I discussed the TOC overflow condition, which is common when developing large commercial applications on AIX. These are some of the common solutions to this problem: 1. Change your application The most obvious solution to this problem is to change the application to reduce the number of global symbols being defined. One way to do this is by grouping some global variables into a global structure, or changing them from external to static. This can be time-consuming and... [More]
Tags:  cppcafe toc ipa |
Welcome to the Commercial Computing with C/C++ blog
Hello. Welcome to the blog dedicated to commercial application development in C/C++. My name is Raul Silvera. I'm one of the technical leaders in charge of the IBM XL C/C++ compilers. My background is on compiler optimization, and during my career at IBM I have had experience helping large ISVs leverage IBM's investments on static compilation technology. I hope to be able to share some of these experiences in this blog, and with the help of some of my colleagues at IBM, discuss common issues, tips & techniques relevant to the development of... [More]
Tags:  isv cppcafe commercial welcome |
Sept 14-20, 2008 C++ Standard Meeting Trip report
Well, this is it! In this meeting, we voted out a Committee Draft for the new C++0x, which means all the work items are complete.This is like the C++0x Standard going out as a Beta. A link to the draft C++ Standard is in the Overview page under the Links section. This draft will be available for public comment which we expect to take all of 2009. The plan is that after addressing those public comments, the committee hope to vote out a Final Committee Draft for more comments in 2010, then its straight to the Final Draft International Standard,... [More]
Tags:  cppcafe standard c++ |
The Dawn of a new Standard
We live in interesting times. At no times is this more true then today's C++ as we move towards a new Standard code named C++0x, to be released, tentatively 2009. But x could be A, B, C, D, E, F Hi, my name is Michael Wong. I am the Canadian C++ Standard representative for evolution and language. Robert Klarer is the representative for library. We would like to invite you to watch this blog for discussion on C++ Standard happenings. We will use this space to file trip reports on the C++ Standard meetings, as well as interesting happenings in... [More]
Tags:  cppcafe standard c++ |
Next Generation Systems
TANSTAAFL =" There ain't no such thing as a free lunch " with apologies to Robert Heinlein in "The Moon is a Harsh Mistress" One noted author quotes this in reference to the end of the free performance improvement that Moore's Law offers on single chip clock speed every 18 months. This heralds performance improvement in future will need to do more then just sit on your hands waiting for the next clock speedup, but that you have to program in latent parallelism into your code to take advantage of more cores as they come out. This requires a new... [More]
Tags:  multicore parallel cppcafe |