Flow Graph Feature in TBB 4.0 with Michael Voss - Parallel Programming Talk #121

It’s time for Parallel Programming Talk This is show  #121– Clay and I will be talking with Intel Software Architect Mike Voss

But first the news:

The News

There is now an open source implementation of Cilk™ Plus based on gcc 4.7. Can you explain why this is good news?  Information on how to contribute is at: /en-us/articles/contribute-to-intel-cilk-plus/ Source is at: /en-us/articles/download-intel-cilk-plus-source/ I’ll also include links to a couple of hot blogs on the subject – both are drawing high site traffic!

 The Intel Developer Forum is less than a month away– September 13-15 at the Moscone Center in San Francisco http://www.intel.com/idf/  Clay and I have some things planned – we’ll  both be interviewing folks – a few Parallel Programming Talk shows will be done and we will have them available for viewing shortly thereafter.  ISN is doing something new at IDF – we are sponsoring a lab, being run by our newest Community Black Belt Developer Noah Clemons.  

                           Faces of Parallelism Open Lab: Parallel Models for Multi/Many Core

    •  Join this open lab whenever you want. It will be open from Wed, September 14 - 1:05 – 5:15pm. All levels of experience are welcome. You will experience Intel® Software Programming  Tools and the wide variety of programming models supported. This hands-on-lab provides attendees the opportunity to see how the latest Intel® silicon features are unlocked via Intel’s optimized Software Tools product line.  You will have the opportunity to provide feedback on your experience, by blog or video (we will provide everything needed)and those who choose to do so will be entered into a contest. Four prizes will be awarded. Don't miss this one.  

      Read more about the lab, contest, etc. Session ID: SFTL004

 Threading Challenge - Intel® Threading Challenge 2011 Phase 1 Problem 2 Apprentice and Master Winners Announced.  Master Level Winner - Akshay Singh, India, Apprentice Level - Rick LaMont, USA 


OOPSLA (Now a part of SPLASH - Systems, Programming, Languages and Applications: Software for Humanity.) October 22-27 in Portland  - a panel discussion on “Multicore, Manycore, and Cloud Computing: Is a new programming language paradigm required?http://splashcon.org/2011/program/panels/229-multicore-manycore-and-cloud-computing-is-a-new-programming-language-paradigm-required 

The Intel Academic Community will soon be hosting new rounds of microgrant funding to create parallel programming training material. The first round will be focused on Data Structures. If you’re in academia and have some ideas about teaching parallelism, go to the IAC microgrant site for more information. I’ll have the URL in the show notes or you can find it from the academic community homepage.

If you have comments, questions, suggestions for guests or show topics, news to share that you think would be of interest, we’d love to hear from you. Clay, where can they send those ideas?

K: Now for something we know you’ll really like – our guest.

Questions asked during the show:

    • Welcome to Parallel Programming Talk – Michael. Before we get into the TBB Flow Graph discussion, could you tell us a little about yourself – background, what do you do at Intel

    • C: In case our viewers don’t know, what is TBB and why are Flow Graphs important – how does this compare with the TBB Graph API? 

              M:Used to be called “the TBB graph API” is now the “TBB flow graph”.

    • K: What is this used for?

               M:The TBB flow graph can express acyclic dependency graphs, as well as acyclic and cyclic messaging graphs.

    • C: How long has this feature existed? Who has used it? What kind of response have you received?

              M: Has been a Community Preview feature since Intel® TBB 3.0 U5 (Dec 2010) and now is a full feature in TBB 4.0 (? September 2011 ?) Since Dec 2010, evaluated by customers across media, gaming,       financial services and technical computing

    • K: What were customers doing before the flow graph?

              M: Forced apps in to the linear Intel® TBB pipeline, Built their own abstractions over Intel® TBB tasks, Or built their own thread-based graph libraries

    • C: What can flow graphs be used for? Do you have any examples you can share?

              M:A flow graph is made of a graph object, nodes and edges.  The nodes may execute user code, buffer or direct messages.  The graph object is the parent of all of the tasks executing in the graph.  The edges make the connections between nodes explicit. 

Watch Video to see the examples

             M:Some apps that fit a flow graph can already be expressed using the TBB pipeline or a graphs of tasks

    • If an app can be fit into a pipeline

        • the flow graph version and pipeline version usually have similar performance

        • The pipeline version will tend to require less code, since the edges are implicit and there is no need for join or split nodes

        • If an app can be fit into a graph of tasks

            • the flow graph version and task graph version usually have similar performance

            • the flow graph version will be simpler to implement and require less code

            • Many apps are impractical to express as a pipeline or graph of tasks, but can be handled by the TBB flow graph

    • C:Can viewers try this out for themselves?

    • K: Michael, thanks for being our guest today – how can our community members  learn more?

                    M: Lots of blogs will be available soon at /en-us/blogs/tag/flow_graph

If you have comments, questions, suggestions for guests or show, send those ideas    

To  parallelprogrammingtalk@intel.com

Today’s show was posted September 9. There will not be a new show on September 27.  We will have a number of recordings and special episodes available soon after. Weekly Tuesday morning streamed shows will resume taping on September 20 with a release on the following Friday. Watch the calendar on the Parallel Programming Home page for the latest info on Parallel Programming Talk and additional Community Events.

A wise old programmer once told me - a trouble parallelized is a trouble halved