High-performance computing refers to a specialized use and programming of (parallel) supercomputers, computer clusters, and everything from software to hardware to speed up computations. The course will discuss topics related to fundamental concepts and techniques in parallel computation structuring and design, architectures of high-performance computing systems, accessing high performance computing resources, optimization techniques for data access, developing applications for those resources, and executing developed applications.
The contents of the course provide a balance of theoretical and practical aspects in high performance computing. In this course the students will learn how to write faster code that is highly optimized for modern multi-core processors and clusters, using modern software development tools, performance profilers, specialized algorithms, parallelization strategies, and advanced parallel programming constructs in OpenMP and MPI. The practical part of this course is also covered in the lab through group projects in setting up a cluster using an open-source toolkit, exercises and practical assignments.
The aims of this course are:
Upon the successful completion of this course, students should be able to:
Textbooks:
References:
Evaluation | Marks | Percentage |
---|---|---|
Tutorial | 10 Marks | 10% |
Assignment/Project/Presentation | 30 Marks | 30% |
Final Examination | 60 Marks | 60% |