The objective of “High Performance Computing” course is to introduce parallel programming paradigms and platforms, to teach efficient and optimized parallel algorithms which runs on supercomputers, computer grids and parallel processors to speed up computational tasks, and provide a solid background on designing, implementing and testing parallel algorithms using OpenMP and MPI tools.
Prerequisite(s)
-
Corequisite(s)
-
Special Requisite(s)
The minimum qualifications that are expected from the students who want to attend the course.(Examples: Foreign language level, attendance, known theoretical pre-qualifications, etc.)
“High Performance Computing: Modern Systems and Practices”, T.Sterling, M.Anderson, M.Brodowicz, MK Publishing, 2018.
“Introduction to High Performance Scientific Computing”, V.Eijkhout, lulu.com, 2014.
Course Schedules
Week
Contents
Learning Methods
1. Week
Introduction to High Performance Computing (HPC)
Theory
2. Week
Parallelization, Parallel Programming
Theory, Practice
3. Week
Parallel Programming Platforms
Theory
4. Week
Parallel Programming Models
Theory
5. Week
Parallel Programming with Message Passing - I
Theory, Practice
6. Week
Parallel Programming with Message Passing – II (OpenMP)
Theory, Practice
7. Week
Parallel Programming with Shared Memory Model – I
Theory, Practice
8. Week
Parallel Programming with Shared Memory Model – II (MPI)
Theory, Practice
9. Week
Midterm Exam
Exam
10. Week
Parallel Algorithms – I (Dense Matrix Algorithms)
Theory, Practice
11. Week
Parallel Algorithms – II (Sorting Algorithms)
Theory, Practice
12. Week
Parallel Algorithms – III (Graph Algorithms)
Theory, Practice
13. Week
Parallel Algorithms – IV (Dynamic Programming)
Theory, Practice
14. Week
Parallel Programing Tools
Theory, Practice
15. Week
16. Week
17. Week
Assessments
Evaluation tools
Quantity
Weight(%)
Midterm(s)
1
30
Project(s)
1
30
Final Exam
1
40
Program Outcomes
PO-1
Have scientific research in mathematics and computer science in the level of theoretical and practical knowledge.
PO-2
On the basis of undergraduate level qualifications, develop and deepen the same or a different areas of information at the level of expertise, and analyze and interpret by using statistical methods
PO-3
Develop new strategic approaches for the solution of complex problems encountered in applications related to the field and unforeseen and take responsibility for the solution.
PO-4
Evaluate critically skills acquired in the field of information in the level of expertise and assess the learning guides.
PO-5
Transfer current developments in the field and their work to the groups inside and outside the area supporting with quantitative and qualitative datas as written, verbal and visual by a systematic way.
PO-6
Use information and communication technologies with computer software in advanced level.
PO-7
Develop efficient algorithms by modeling problems faced in the field and solve such problems by using actual programming languages.
PO-8
Respect to social, scientific, cultural and ethical values at the stages of data collection related to the field, interpretation, and implementation.
PO-9
To solve problems related to the field, establish functional interacts by using strategic decision making processes.
PO-10
Establish and discuss in written, oral and visual communication in an advanced level by using at least one foreign language.
Learning Outcomes
LO-1
I. Realize the importance and role of High Performance Computing in science and engineering.
LO-2
II. Analyze the given problem and identify whether the problem is convenient to be solved using parallel programming techniques.
LO-3
III. Identify effective hardware and algorithms for HPC based projects.
LO-4
IV. Compare and contrast the efficiency of message passing and shared memory parallel programming models.
LO-5
V. Design, implement and test parallel algorithms running both on shared and distributed memory platforms.