
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 |