Parallel computers are easy to build -- it's the software that takes work.
This tutorial provides a comprehensive overview of parallel computing and supercomputing, emphasizing those aspects most relevant to the user. It is suitable for new or prospective users, managers, students, and anyone seeking a general overview of parallel computing. It discusses software and hardware, with an emphasis on standards, portability, and systems that are commercially or freely available. Systems examined include clusters, tightly integrated supercomputers, and GPUs.
The tutorial provides training in parallel computing concepts and terminology, and uses examples selected from large-scale engineering, scientific, and data intensive applications. These real-world examples are targeted at distributed memory systems using MPI, shared memory systems using OpenMP, and hybrid systems that combine the MPI and OpenMP programming paradigms. GPU programming is also discussed. The tutorial shows basic parallelization approaches and discusses some of the software engineering aspects of the parallelization process, including the use of state-of-the-art tools. The tools introduced range from parallel debugging tools to performance analysis and tuning packages.
We use large-scale projects as examples to help the attendees understand the issues involved in developing efficient parallel programs. Examples include: crash simulation (a complex distributed memory application parallelized for Ford Motor); climate modeling (an application highlighting distributed, shared, and vector computing ideas with examples from NCAR, NASA and ECMWF); space weather prediction (an adaptive mesh code scaling to well over 1000 processors, funded by NASA/DoD/NSF); and design of ethical clinical trials (a memory-intensive application funded by NSF). Attendees find the lessons convincing, and occasionally humourous, because we discuss mistakes as well as successes.
Anyone needing a 1-day overview of parallel computing and supercomputing. This includes new or prospective users, managers, or people needing a refresher on current systems and techniques, with pointers to additional resources and follow-up material.
Approximately 70% of the presentation is at the beginner level, 30% intermediate level. If you are at the truly beginner level, you can always first look at my slightly whimsical explanation of parallel computing.
This is usually presented as a full-day (6 hour) tutorial, in 4 segments of 1.5 hours each. This can be adjusted to fit the circumstances. For example, some companies may want to use is a part of their technical training, and it can be expanded to include some hands-on work on their systems. With special arrangements, a more comprehensive class on parallel computing can be taught.
For people near Ann Arbor, they can attend Quentin Stout's class on parallel computing, EECS 587, taught each fall semester. Groups at more remote locations might be able to arrange for this class to be broadcast to them.
Quentin F. Stout
Computer Science and Engineering
University of Michigan, Ann Arbor, MI 48109-2121 USA
+1-734-763-1518 (voice, messages) +1-734-763-4617 (fax)
qstout @ umich.edu www.eecs.umich.edu/~qstout/
Copyright © 2005-2015 Quentin F. Stout |