2011 Par Lab Boot Camp - Short Course on Parallel Programming

Program Details

Homework Assignments
Although accounts on the parallel server for the hands-on activity are
only available to on-site attendees, online attendees are welcome to do
the homework on their own platforms. Please check back for a link to the lab assignment.

Final Agenda

Monday, August 15

*9:00 - 9:30- Introduction and Welcome (Dave Patterson, UCB & Jim Demmel, UCB) Slides and Video
Greeting, Overview, and talk about logistics

*9:30 - 12:00- Introduction to Parallel Architectures and Pthreads (John Kubiatowicz, UCB) Slides and Video
Why parallelism is our future, and what programmers need to know about the hardware in order to write efficient programs. We also introduce parallel programming with Pthreads. (includes 30 min break)

*12:00 - 1:15- Lunch

*1:15 - 2:15- Shared Memory Programming with OpenMP (Tim Mattson, Intel) Slides and Video
We discuss parallel programming on multicore processors using OpenMP.

*2:15 - 3:00- Prototyping Parallel Code: Intel(R) Advisor (Gary Carleton, Intel Corp, EECS ‘74) Slides and Video
We will discuss and demonstrate a tool that allows developers to prototype alternatives in parallelizing a serial program.

*3:00 - 3:30- Break

*3:30 - 4:30- Parallel Programming in the .NET Framework 4 (Igor Ostrovsky, Microsoft) Session One Slides Session Two Slides and Video
Parallel programming is the next big thing in the world of software development. In this session, we will talk about why it is so important, dive into the parallel programming functionality introduced in the .NET Framework 4 (often referred to as the Parallel Extensions to .NET), and explore several demos and C# code samples. The session should be accessible to those new to parallel programming while providing enough content to keep the interest of those who are more familiar with the subject.

*4:30 - 5:00- Break/ Transition to 306 Soda, 3rd Fl. Soda Hall

*5:00 - 6:00- Hands-on Overview:
Microsoft Tools

*6:00 - 7:00- Reception at 1015 Evans Hall

Tuesday, August 16

*8:45 - 9:45- Sources of Parallelism in Simulation (Jim Demmel, UCB) Slides and Video
We show how to recognize recurring opportunities to exploit parallelism in simulating real or artificial "worlds", as well as opportunities to minimize data movement.

*9:45 - 10:45- Architecting Parallel Software with Design Patterns (Kurt Keutzer, UCB) Slides and Video
We give an overview of design patterns and how complex parallel software systems can be architected with them.

*10:45 - 11:15- Break

*11:15 - 12:15-Distributed Memory Programming in MPI and UPC (Kathy Yelick, UCB) Slides and Video
The largest and highest performance computers have distributed memory instead of shared memory, and are programmed using message passing (MPI)or new languages like UPC.

*12:15 - 1:30- Lunch

*1:30 - 2:30- GPU, CUDA, OpenCL Programming (Bryan Catanzaro, NVIDIA Research) Slides and Video
GPUs (Graphics Processing Units) have evolved into programmable manycore parallel processors. We will discuss the CUDA and OpenCL programming models, GPU architecture, and how to write high performance code on GPUs, illustrating with case studies from application domains such as image and video processing.

*2:30 - 3:00- Break/ Transition to Room TBD, Soda Hall

*3:00 - 6:00- Hands-on Activity
Microsoft Tools Exercises
UCB Exercises

Wednesday, August 17

*8:45 - 10:45- Autotuning of Common Computational Patterns (Jim Demmel, UCB) Slides and Video

We discuss several recurring computational patterns (eg linear algebra and stencils) whose fastest implementations are written automatically by other programs called autotuners.

*10:45 - 11:15- Break

*11:15 - 12:15- Finding Deadlock Conditions: Intel(R) Inspector XE (Gary Carleton, Intel Corp, EECS ‘74) Slides and Video
This session will discuss technologies to detect the potential for deadlocks to occur. We will discuss and demonstrate a tool to do this.

*12:15 - 1:30- Lunch

*1:30 - 2:30- Cloud Computing (Ben Hindman, UCB) Slides

Cloud computing allows users to easily exploit large commerical compute clusters available at many companies. We discuss programming tools (eg Hadoop, MapReduce) that make them easy to use.

*2:30 - 3:30- Performance Tools (David Skinner, LBL) Slides and Video

When a parallel program runs slower than expected, "performance debugging" may be done most effectively using a variety of tools that automatically instrument and display performance data.

*3:30 - 4:00- Break

*4:00 - 5:00 - ParLab Applications: Speech, Music, Health and Browsers (Gerald Friedland, David Wessel, Tony Keaveny, Ras Bodik, UCB) Slides and Video