Skip to main content



Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
July 19-20, 2009

In conjunction with International Symposium on Software Testing and Analysis
((ISSTA 2009 ISSTA dates: July 19-23, 2009))
Chicago, Illinois

The tutorials are "hands-on" and are included in the workshop registration. Please bring a laptop with wireless capability and the ability to ssh into other machines as we will provide access to several quad-core machines for experimentation. You may also consider installing Intel's TBB and Cilk++ on your machine before the workshop.

Intel®'s Threading Building Blocks - a Shared Memory Parallel Programming Library
By Arch Robison, Senior Principal Engineer, Intel Corporation

This tutorial is an introduction to Intel's Threading Building Blocks (Intel's TBB), a commercially supported open-source C++ template library for shared-memory parallel programming, notably for multi-core processors. Though threads are a popular means of shared-memory parallel programming, they are a low-level unstructured construct whose undisciplined use can cause both correctness and performance problems. This tutorial explains these problems and how TBB addresses them, without resorting to special compilers or languages. The tutorial will explain the architecture of TBB, its motivation, and how to effectively apply TBB to problems by using parallel generic programming. Attendees will get some hands on experience with TBB.

Multicore Programming with Cilk++
By Pablo Halpern, Member of Technical Staff, Cilk Arts

This hands-on tutorial is an introduction to Cilk++, a faithful extension of C++ into the multicore realm. The tutorial will introduce key parallel programming concepts impacting performance and reliability, and illustrate how to multicore-enable existing C++ applications using Cilk++. In a hands-on lab exercise featuring both Linux GCC and Visual Studio environments, attendees will:

  • Apply the Cilk++ keywords to expose parallelism in a sequential application
  • Use the Parallel Performance Analyzer to optimize the application
  • Use the Cilkscreen Race Detector to identify race bugs
  • Apply Cilk++ hyperobjects to eliminate data races on global variables

Content navigation

PADTAD General Chair

PADTAD Program Chair

PADTAD Community Chair