Graphic Cards for Technical Computing
This course is currently only offered as a custom program. The below description should be taken as an example of content and can be tailored to meet company needs. If you have been thinking about a customized course for your group of 25 or more, please review additional information on the Custom Programs page.
Any computer with a modern high-end graphics card contains a high-speed parallel computer that can perform technical computations much faster than the host machine's CPU. This course focuses on using programmable graphics chips (GPUs) to accelerate single and multi-computer technical computing calculations. The techniques covered provide a potentially powerful way to extract much more performance out of a computer system for a given amount of power and for a modest budget. The course includes both practical hands-on activities, exploring the technologies that are available today to program these devices, and a critical overview of relevant parallel programming paradigms. Together these topics provide an in-depth perspective on emerging GPU technology, covering its potential benefits as well as its challenges. The course is suited to both hands-on technical computing practitioners and technically knowledgeable decision makers interested in understanding how desktop, power efficient parallel computing technologies might impact their domain. The course will include multiple worked example application scenarios from numerical computing simulations using partial and ordinary differential equations and employing implicit and explicit methods.
Fundamentals: Core concepts, understandings and tools (30%)
Latest Developments: Recent advances and future trends (30%)
Industry Applications: Linking theory and real-world (40%)
Lecture: Delivery of material in a lecture format (40%)
Discussion or Groupwork: Participatory learning (20%)
Labs: Demonstrations, experiments, simulations (40%)
Introductory: Appropriate for a general audience (20%)
Specialized: Assumes experience in practice area or field (70%)
Advanced: In-depth explorations at the graduate level (10%)
- Understand the origin of GPU performance.
- Examine the programming abstractions that GPUs offer.
- Understand what algorithms are or are not suitable for GPUs.
- Apply software strategies that make sense.
- Learn how to use GPUs singly and in parallel clusters.
Who Should Attend
The course is designed for technical professionals who are interested in understanding how GPU technology applies to real-world technical computing applications. The course will mix lectures with hands-on computer lab sessions that will give participants a chance to try out, either singly or in groups, lecture material. Some elementary knowledge of computers is assumed.
Participants should have some understanding of computer programming. Typical participants will be interested in learning how parallel processing using graphics cards can accelerate the solution time for technical computing problems in science, mathematics and engineering.
Program Details & Outline
This course looks at the opportunities and challenges of deploying technical computing applications on programmable graphics hardware, GPUs. Modern, low-cost graphics cards contain programmable arrays of floating point processors and, in ideal circumstances, are able to stream data through those processors at rates of close to 1 trillion arithmetic operations per second, tens to hundreds times the performance of a desktop PC CPU. In this course we will use lectures and hands-on sessions to look at:
(i) how and in what situations GPUs can achieve these levels of performance
(ii) what are the technical challenges of using GPUs within large software projects
(iii) what are the current limitations of GPU technology
(iv) how can multiple GPUs be used together
(v) how do GPUs compare to Cell and FPA technologies
At the end of this course you will have (a) detailed knowledge of current GPU technology, (b) a framework for understanding whether GPU technology applies to a specific problem or algorithm and (c) hands-on experience in end-to-end GPU application development.
- Introductions and overview of course objectives
- GPU overview lecture
- Demonstration of GPU applications
- Hands-on computer lab session to modify and test simple GPU program
- Thinking about parallel programs and scalability lecture
- Demonstration of scalability issues
- Hands-on computer lab session beginning numerical application development
- GPU performance and memory layout lecture
- Demonstration of memory layout testing
- Hands-on computer lab session applying memory layout knowledge to numerical application
- Reception and demonstration of high-end GPU visual and numerical codes
- Integrating GPU code within existing software environments lecture
- Demonstration of integration approaches
- Hands-on computer lab session applying integration techniques to numerical application
- Running multiple GPUs in parallel
- Demonstration of multi GPU processing
- Hands-on computer lab session applying multiple GPU techniques to numerical application
For this course we will have dedicated access to a 30 machine, parallel cluster of NVidia GeForce GPU machines. We will also have shared access to a cluster of NVidia Tesla systems. The focus of the hands-on sessions will be NVidia CUDA technology, but we will also cover alternate technologies such as Cg and CTM in class sessions.
Staff Software Engineer, Digimarc Corporation
"Good experience with a knowledgeable instructor, giving me a good overall understanding of GPU programming."
Technical Staff, MIT Lincoln Laboratory
"A good mix of analysis of hardware and hands-on learning."
Senior Digital Signal Processing Engineer, BAE Systems
"All materials were very current, which is important in such a quickly changing field. They were also very applicable and practical to the course goals."
Principal Research Scientist in the Department of Earth, Atmospheric & Planetary Sciences at MIT.
There are no updates at this time.