In this course, I teach the essence of what is needed for researchers to take advantage of the machines' power, and I spend an extra effort to hold the researchers' hand in parallelizing, debugging and optimizing some of their respective codes.
The scaling of parallel algorithms has not yet matched peak speed, and the programming burden for parallel machines remains heavy. Hence, the applications must be programmed to exploit parallelism in the most efficient way possible. Today, the responsibility for achieving the vision of scalable parallelism remains in the hands of the application developers.
This course illustrates the state-of-the-art of parallel computing, and links theory to applications, through demonstrations and training. This course should be of interest to engineers, programmers and code developers.
Course Modules and Description:
Each module, where applicable, begins with a list of objectives, includes an introduction that describes the best suited applications or algorithms, and denotes typical uses, detailed descriptions of routines, lots of examples, and ends with a test that relates back to the objectives.