<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" version="2.0">
  <channel>
    <title>Parallel and Multi-Core Computing with C/C++</title>
    <link>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore</link>
    <description />
    <pubDate>Thu, 06 Aug 2009 17:57:16 GMT</pubDate>
    <generator>Clearspace 1.10.7 (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2009-08-06T17:57:16Z</dc:date>
    <item>
      <title>IBM's Alphaworks Software Transactional Memory Compiler</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/08/11/ibms-alphaworks-software-transactional-memory-compiler</link>
      <description>Transactional Memory (TM) is a high level abstraction for supporting a safe mutable shared state, such that the user does not have to worry about the low-level details of locking and sharing of global resources. It is basically a class of optimistic speculation techniques such that groups of memory operations are bundled as an atomic operation such that it can resolves the problems with locks, possibly support composability. &lt;br /&gt;
&lt;br /&gt;
The basic idea is to move your group of atomic operations through, assuming that it will be successful, and only rollback when a conflict actually occurs. &lt;br /&gt;
&lt;br /&gt;
At the moment, much of the ideas of TM are there as a way to test out the idea, and possibly be integrated into some future hybrid system. Even practitioners of TM knows there is a certain amount of hype that we have to deal with in any new technology before it drops to a trough and rebounds back to a realistic plateau.&lt;br /&gt;
&lt;br /&gt;
A number of vendors have planned both hardware and software implementations of Transactional Memory. &lt;br /&gt;
&lt;br /&gt;
The software transactional memory compilers from different vendors all use different syntax, and this creates a basic problem with interoperability, and common porting of code. I will deal with this in the next post.&lt;br /&gt;
&lt;br /&gt;
IBM is also working in this area, and has released an Alphaworks compiler supporting Software Transaction, actually last year.&lt;br /&gt;
&lt;br /&gt;
The &lt;a class="jive-link-external" href="http://www.alphaworks.ibm.com/tech/xlcstm"&gt;IBM XL C/C++ for Transactional Memory for AIX&lt;/a&gt; is also accessible from the &lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/docs/DOC-2608"&gt;Resource Library&lt;/a&gt; of the C/C++ Cafe.&lt;br /&gt;
&lt;p /&gt;
The public domain STM runtime is compatible with the AlphaWorks XLC STM release.&lt;br /&gt;
It was released through the &lt;a class="jive-link-external" href="http://sourceforge.net/projects/amino-cbbs/"&gt;Amino Concurrency Building Blocks project&lt;/a&gt;&lt;br /&gt;
The source code is &lt;a class="jive-link-external" href="http://sourceforge.net/projects/amino-cbbs/files/cbbs/0.5.3/cbbs-cpp-src-0.5.3.tar.gz/download"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I will have more to say about the Amino Building Blocks in a future post.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">transactional_memory</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">stm</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">amino</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">concurrency</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">building</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">blocks</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">c/c++</category>
      <pubDate>Tue, 11 Aug 2009 17:02:44 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/08/11/ibms-alphaworks-software-transactional-memory-compiler</guid>
      <dc:date>2009-08-11T17:02:44Z</dc:date>
      <clearspace:dateToText>3 months, 2 weeks ago</clearspace:dateToText>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/comment/ibms-alphaworks-software-transactional-memory-compiler</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/feeds/comments?blogPostID=1231</wfw:commentRss>
    </item>
    <item>
      <title>The View (trip report) from BoostCon09</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/05/27/the-view-trip-report-from-boostcon09</link>
      <description>I apologize for lack of updates recently as an addition to the family has kept me hopping. &lt;br /&gt;
&lt;br /&gt;
I have still been keeping up my parallel programming work by a recent talk on C++0x Multithreading at BoostCon 09:&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.boostcon.com/program#schedule"&gt;http://www.boostcon.com/program#schedule&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
My two talks (the other one was an overview of C++0x and compiler support which can be seen here: &lt;br /&gt;
&lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/05/26/the-view-or-trip-report-from-the-mar-2009-c-standard-meeting"&gt;http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/05/26/the-view-or-trip-report-from-the-mar-2009-c-standard-meeting&lt;/a&gt;)  seem packed with about 60 people in an auditorium for about 90 minutes. Here is a trip report from a fellow speaker Justin Gottschlich who attended my talks:&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://par-con.blogspot.com/"&gt;http://par-con.blogspot.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The slides and video should be online soon.&lt;br /&gt;
A second trip report review is by Emil Dotchevski:&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://revergestudios.com/reblog/index.php?n=ReCode.BoostCon09"&gt;http://revergestudios.com/reblog/index.php?n=ReCode.BoostCon09&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Justin gave an excellent talk on a proposed Boost Transactional Memory Library which he is collaborating with the Father of TM: Maurice Herlihy. &lt;br /&gt;
&lt;br /&gt;
I have been involved in Transactional Memory for a few years now and knows its hype, promise and pitfalls. Still I felt I was stirred by Justin's excellent oratory skills, pitching this technology. The idea of doing TM as a pure library is not easy, although it does get the technology into the hands of everyone as fast as possible.  Language changes take time to get right. I should know and will discuss in a future post.&lt;br /&gt;
&lt;br /&gt;
Please read their excellent trip reports for the details. I will turn my discussion on something else that is also interesting to me personally, but may not have much to do with Parallel programming.&lt;br /&gt;
&lt;br /&gt;
BoostCon 09, as with previous BoostCon was an exciting experience. Without intentionally touting my own horn, BoostCon09 is rich with speakers of experience in the field. They choose their speaker carefully from the pantheon of C++. Last year was Bjarne Stroustrup. This year was Andrei Alexandrescu, whose topic is Iterators Must Go.&lt;br /&gt;
&lt;br /&gt;
Andrei gave many reasons why iterators, once a good idea,  are unsuitable as we move forward. For me, the most interesting argument is that iterators are not well suited to multithreaded programming, because many of the idea of stack pop and push can only work in single thread unless we change the interface.&lt;br /&gt;
&lt;br /&gt;
BoostCon, in my opinion is rapidly becoming the leading C++ conference, in  direct competition with SD West, and ACCU. All are packed with workshops, and knowledgeable speakers.&lt;br /&gt;
&lt;br /&gt;
This year, there was a distinct track of parallel programming theme, which included:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Joel Falcou: High-Level Parallel Programming EDSL - A BOOST libraries use case&lt;/li&gt;
&lt;li&gt;Stephan T. Lavavej: Parallel Patterns Library in Visual Studio 2010&lt;/li&gt;
&lt;li&gt;Justin Gottschlich, Jeremy Siek: Boost + Software Transactional Memory&lt;/li&gt;
&lt;li&gt;Troy Straszheim: Kamasu: Parallel computing on the GPU with boost::proto&lt;/li&gt;
&lt;/ul&gt;
and of course, yours truly's:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Michael Wong: Multithreaded C++0x: The Dawn of a New Standard&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
All this makes me want to suggest a special track for parallel programming for Boost in future years.&lt;br /&gt;
&lt;br /&gt;
I attended some of the 0x tutorials and found that I still had things that I didn't know. This is not surprising given the depth of C++0x.&lt;br /&gt;
&lt;br /&gt;
The other interesting part was the Cmake tutorial. Boost build has used bjam since the beginning. This build tool, while interesting in its own right has many peculiarities which makes its adoption not a trivial task for building Boost on IBM systems. From the stories we heard around Boostcon, the same seems to apply to other environments.&lt;br /&gt;
&lt;br /&gt;
Recently, there has been a move towards using cmake as a truly better build tool. From what I can see from the workshop, they are right and I am eager to move our Boost build to a cmake system, especially if Boost is moving in that direction, to rid us of the problems that bjam has caused.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.cmake.org/"&gt;http://www.cmake.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
How does cmake differ form the traditional unix make?&lt;br /&gt;
Unlike make, it does not actually do the software build, but instead generates standard build scripts (makefiles on Unix, project file for Windows, workspaces for Eclipse/CDT), that makes it easier to adopt to various systems. &lt;br /&gt;
&lt;br /&gt;
Cmake was started as part of the Insight visual ToolKit build from Kitware, and has since migrated into many products. The real explosion occurred with adoption of cmake by KDE. Since then, even more software is converting to cmake.&lt;br /&gt;
&lt;br /&gt;
Cmake is so far able to build Boost, but is not able yet to run its builtin tests. This is a problem that I am sure will be rectified.&lt;br /&gt;
&lt;br /&gt;
The beauty is that cmake is available already as a binary on AIX systems.&lt;br /&gt;
&lt;br /&gt;
I worked with Troy Straszheim and Brad King to try getting cmake working on our Boost build. I got half way but found a problem which I hope to resolve.&lt;br /&gt;
&lt;br /&gt;
We support Boost because IBM AIX and Linux xlC++ compilers have been tested with Boost with support in V8 with 1.32, then V9 with 1.34, and V10.1 with 1.34.1.&lt;br /&gt;
&lt;br /&gt;
You can see our Boost test results here:&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.ibm.com/support/docview.wss?rs=2239&amp;#38;context=SSJT9L&amp;#38;uid=swg27006911"&gt;http://www.ibm.com/support/docview.wss?rs=2239&amp;#38;context=SSJT9L&amp;#38;uid=swg27006911&lt;/a&gt;</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">boost</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">boostcon</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">conference</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">cmake</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">transactional_memory</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/tags">parallel_programming</category>
      <pubDate>Thu, 28 May 2009 00:47:16 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/05/27/the-view-trip-report-from-boostcon09</guid>
      <dc:date>2009-05-28T00:47:16Z</dc:date>
      <clearspace:dateToText>6 months, 2 days ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/comment/the-view-trip-report-from-boostcon09</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/feeds/comments?blogPostID=1203</wfw:commentRss>
    </item>
  </channel>
</rss>

