Summer School for Parallel Programming at University of Illinois U-C.

I spent a week in late June 2009 at the University of Illinois Urbana-Champaign's Universal Parallel Computing Research Center Summer School for Multicore Programming. The UPCRC team produced a top notch event that immersed all of the participants in the fundamental of parallel programing.

UPCRC Co-Director Marc Snir kicked it off with an Introduction to Parallelism. His broad overview touched on many of the classic issues and opportunities facing all developers as they refactor their sequential code (refactoring is the process of changing the structure of an application without changing its external function).

Professor Snir stressed that we need to write applications that scale and address the nasty issue that arise from multiple processor using shared memory.  He presented the three programming levels and the pros and cons of each approach:

  • Do it yourself (Pthreads & POSIX threads)

  • Framework for parallel tasks (Java parallel framework, Threading building blocks (C++), OpenMP, C# TPL)

  • Parallel Languages (Java, C#, Ct)


Professor Danny Dig then covered the topic of Parallelism with Java and Code Refactoring.

Dr. Clay "Master of the Parallel Universe" Breshears introduced the class to OpenMP & Intel Threading Building Blocks. Both of his talked centered on shared memory control with each of the frameworks.

Dr. David Padua presented Data Parallelism and Implicit Parallelism.

UPCRC Co-Director Wen-mei Hwu presented an over view of CUDA.

Dr. Snir then reviewed and compared the programming models presented and discussed mechanisms for implementing a parallel programming model. He also covered desired features in parallel programming models. The class then joined in a discussion of how features of applications and of parallel architecture influence the choice of model.

UPCRC sponsors Intel & Microsoft both presented research and products in development.

Bob Kuhn, Intel Software Product Engineer, discussed Intel Parallel Studio and processor technology roadmap. Daniel Moth presented the recently beta released of Visual Studio 2010 and demonstrated the newest C# libraries and code/memory/processor analysis tools.

One of the best parts of the program was the hands on lab time. All of the students engaged in labs using Java, OpenMP, TBB, CUDA & Ct with lecturers and teaching assistants close by to guide students through any issue or technical gap. Each of the labs started after the topic lecture and many students took advantage of after dinner lab hours to complete each of the assignment. It had been a while since I spent an evening in the lab debugging code. It kind of make me nostalgic for those bitter sweet college days.

In addition to the great learnings it was also a great opportunity to meet and learn from all the class participants. The whole class shared breakfast, lunch and dinner together for the whole week and spent Thursday evening at the University of Illinois Student Union relaxing over billiards & bowling.

It has been a few weeks since the program concluded and I've had some time to reflect upon my experience. Kudos to the entire UPCRC team most especially Mark Smith, Cheri Helregel, & Andrea Whitesell who made all of the participants feel comfortable, engaged, well fed and focused on the learning.
For more complete information about compiler optimizations, see our Optimization Notice.

Comments

Tudor's picture

Wow, sound like the event was awesome... wish we had events like this over here. :(

aaron-tersteeg (Intel)'s picture

Thanks Tudor. Your right it was AMAZING!
I'll talk with our team in EU and see if we can get something going!

Hernan Martinez's picture

Really awesome. I just graduated from computing engineering college. Sounds like i'm saving money right now to attend next year's classes (hope they will have it again)