What I did on my Summer vacation

The UPCRC (Universal Parallel Computing Research Center) at the University of Illinois, Urbana-Champaign (UIUC), held their second Multicore Summer School this past July. Like I did last year, I participated as an instructor for some of the modules offered. Specifically I taught about programming with OpenMP and Intel Threading Building Blocks. Since the lab systems were using the Microsoft Windows OS, I also gave a presentation on how to use the Intel Parallel Inspector and Intel Parallel Amplifier tools to find threading errors and performance issues.

During the five days of the Summer School, the following topics were covered:

  • Introduction to Parallelism and Multicore Technology

  • Explicit Mutlithreading

  • Parallelism with Java

  • Refactoring for Parallelism

  • Shared Memory Control Parallelism with OpenMP

  • Shared Memory Control Parallelism with Intel Threading Building Blocks

  • Parallel Code Debugging and Tuning

  • Parallel Programming in Visual Studio 2010

  • Vectorization

  • GPU Programming

  • Special Lecture: Intel Parallel Advisor

  • A Taxonomy of Parallel Programming Models

The majority of the above modules were presented by University of Illinois faculty, many of them internationally known for their work in parallel programming. Phil Pennington and James Rapp from Microsoft delivered the lecture and labs for using Microsoft Visual Studio 2010. The students came from all across America and from different points around the world (e.g., Pakistan, Australia, Brazil, Ireland).

 The course lectures were streamed live for those students that could not join us in Illinois.  The videos were also recorded for those off-site participants that could not conveniently attend the lectures in real-time. Also, the taped lectures were slated to be used at a sister site in Singapore in order to conduct the same course without needing to transport all of the module instructors halfway around the world.

Hands on lab exercises were offered to students for the programming modules. The labs were well attended by participants that were on site at UIUC and the machines were available to all off-site students to give them the chance to work on the labs and practice what they had seen in the lectures.

During live lectures, a student moderator took questions from offline students as they watched the video feed. An online forum for each lecture and lab was set up to allow students to keep in touch with the course instructors and lab assistants when they were not lecturing. If a question came up and no one was available to answer the question, the student was off-site or the student had returned to their room for the night, she could post a question on the forum. Other students, the student lab assistants, and the instructors could chime in with an answer. This was a most valuable interaction method for the off-site students.

Everyone I talked to said the whole experiences was very valuable and they learned quite a bit. For some pictures that were taken during the week (and where I got the pics included in ths post) click here. I've always said that this week-long course is like a Whitman's Sampler where you can get a taste of many different types of parallel programming and the issues involved. After you've had some practice, you can delve deeper on that specific topic or methodology you find to be most  beneficial for your needs.

Plans are already afoot for the 2011 Summer School. If you want a quick introduction to current issues and methods for parallel programming on shared memory architectures, you will want to check out the offerings for next year. Since I'm in town already, I should be back for a couple modules. I hope to see you there, too.
For more complete information about compiler optimizations, see our Optimization Notice.