MA 5490-02: High Performance Computing
University of Wyoming Handbook DescriptionCourse DescriptionThis course will take students from novices or intermediates to experts in how high performance computers (HPC) have changed the world, including computationally and scientifically. Students will learn that large-scale computational science projects require a diversity of backgrounds in order to accomplish far more than the individuals could hope to accomplish individually or in very small teams.PrerequisitesES 1060 Intro to Engineering Problem Solving or COSC 1010 Intro to Computer Science I and MATH 2210 Calculus III or equivalents.Office227 Ross HallSuggested readingI will be lecturing out of a number of sources, including the following:
There will other resources used during the course, such as
- Peter Pacheco, An Introduction to Parallel Programming, Morgan Kaufmann; 1st edition (January 21, 2011). ISBN-10: 9780123742605, ISBN-13: 978-0123742605 (a Kindle version is also available from Amazon).
- Jim Handy, Cache Memory Book, Morgan Kaufmann, 2nd edition (January 15, 1998). ISBN-10: 0123229804, ISBN-13: 978-0123229809.
- David Loshan, Efficient Memory Programming, McGraw-Hill, New York, 1998. ISBN-10: 0070388687.
- Derrick C. Cerwinsky, Craig C. Douglas, Mookwon Seo, and Xiaoban Wu, An Introduction to C and Parallel Programming with Applications, 2014. Online through the class web site.
- Anand Rajaraman, Jure Leskovec, and Jeffrey D. Ullman, Mining of Massive Datasets, Stanford, 2013 (self published on http://www.mmds.org).
Some other good books include
- http://www.openmp.org or http://en.wikipedia.org/wiki/OpenMP
- http://www.openmpi.org or http://en.wikipedia.org/wiki/MPI
- C. T. Kelley, Iterative Methods for Linear and Nonlinear Equations, SIAM, Philadelphia, 1995.
- C. T. Kelley, ISolving Nonlinear Equations with Newton's Method, SIAM, Philadelphia, 2003.Topics
Topics will include
- A historical look at how high performance computers developed and what features appeared at what point(s) (history repeats itself in this field).
- Programming high performance computer systems:
- Which languages are used, in which countries, and why.
- Prototyping of applications.
- How to write high performance programs.
- Visualizing results.
- Using a high performance system, e.g., ARCC (http://arcc.uwyo.edu).
- Study and use an open source HPC applications in detail, e.g., an oil reservoir simulator, a transaction system, search engine, etc.
- Using memory caches effectively.
- Communications systems and how to exploit them:
- Parallel computing using OpenMP.
- Parallel computing using MPI.
- Multilevel communications.
- Hybrid computing: CPU + GP-GPU.
- Big Data Techniques for high performance computers.
- Futuristic high performance computers.