This course is a gentle introduction to high performance computing. It would cover the basics of multi-threading, synchronization, concurrent data structures, profiling, and GPU programming.
Introduce fundamentals of high performance computing and develop skills to implement efficient parallel programs.
- Why do we need HPC concepts?
- Why shouldn't we wait for a free lunch?
- Issues with Multi-threading?
- What is the role of synchronization primitives?
- How to design a few synchronization primitives?
- What are different synchronization techniques and how to use the techniques?
- What is the need for Concurrent Data Structures and how to design the structures?
- What are the parameters to be considered for measuring the performance of an application?
- How to use different performance monitoring tools?
- What is needed for GPU Programming and how to write a few GPU programs?
- What is the need for Heterogeneous Computing and how to write the progrms?
- How to analyze parallel algorithms?
Who should attend?
- Students interested in parallel programming
- Practitioners working with parallel programming models
- Instructors teaching parallel programming and data structures
What do I get from the workshop?
After successful completion of the course, an e-certificate will be awarded to each registered participant attending at least 10 out of 12 sessions fully.
- Understanding of the fundamental principles of concurrency
- Pointers to tools and techniques for practical use
- Possible research topics for further exploration