High Performance Systems and Computing

Објавено: June 28, 2022
1. Course Title High Performance Systems and Computing
2. Code 4ФЕИТ07Л022
3. Study program КТИ
4. Organizer of the study program (unit, institute, department) Faculty of Electrical Engineering and Information Technologies
5. Degree (first, second, third cycle) First cycle
6. Academic year/semester IV/8 7. Number of ECTS credits 6
8. Lecturer D-r Daniel Denkovski
9. Course Prerequisites Passed: Data structures and algorithm analysis, Operating Systems
10. Course Goals (acquired competencies): Knowledge in the domains of high-performance computing systems and parallel programming. Upon completion of the course, students will be able to independently use high performance computing systems, analyze and design parallel algorithms and develop appropriate software solutions using the MPI, Pthreads and OpenMP libraries.
11. Course Syllabus: Introduction to parallel hardware and software. Basic concepts in parallel processing. Task and data-level parallelism. Design concepts and considerations for parallel programs. Synchronization and barriers. Scheduling. Process/thread inter-dependences and non-determinism in parallel programs. Shared and distributed memory parallel systems. Introduction to distributed memory parallel programming and MPI. Point-to-point and collective communications in MPI. Practical examples with MPI. Shared memory programs and threads. Introduction to Pthreads and OpenMP for shared memory parallel program. Critical sections, mutexes, locks. Practical examples with Pthreads and OpenMP. Introduction to GPUs and GPU programming. Performance evaluation, efficiency of parallel programs.
12. Learning methods: Theoretical and practical classes, laboratory exercises, individual work on project assignments and seminar works
13. Total number of course hours 2 + 2 + 1 + 0
14. Distribution of course hours 180
15. Forms of teaching 15.1. Lectures-theoretical teaching 30
15.2. Exercises (laboratory, practice classes), seminars, teamwork 45
16. Other course activities 16.1. Projects, seminar papers 30
16.2. Individual tasks 30
16.3. Homework and self-learning 45
17. Grading 17.1. Exams 0
17.2. Seminar work/project (presentation: written and oral) 30
17.3. Activity and participation 30
17.4. Final exam 40
18. Grading criteria (points) up to 50 points 5 (five) (F)
from 51to 60 points 6 (six) (E)
from 61to 70 points 7 (seven) (D)
from 71to 80 points 8 (eight) (C)
from 81to 90 points 9 (nine) (B)
from 91to 100 points 10 (ten) (A)
19. Conditions for acquiring teacher’s signature and for taking final exam Regular following of lectures and tutorial classes and complete fulfillment of all lab exercises
20. Forms of assessment One partial written exam during the semester (in the middle of the semester) with a duration of 120 minutes or one final written exam in a corresponding exam session with a duration of 120 minutes. Every student must do an independent obligatory project. The student may opt to do an additional supplementary project. The final grade includes points from the exam and the obligatory project work and from the supplementary project (if one is made). Usage of books, hand-written materials or any kind of supplementary text book during the exam is allowed, but electronic devices are not.
21. Language Macedonian and English
22. Method of monitoring of teaching quality Internal evaluation and questionnaires
23. Literature
23.1. Required Literature
No. Author Title Publisher Year
1 Peter Pacheco An Introduction to Parallel Programming Morgan Kaufmann 2011
2 G. Barlas Multicore and GPU Programming: An Integrated Approach Morgan Kaufmann 2015
23.2. Additional Literature
No. Author Title Publisher Year
1 D. B. Kirk and W. W. Hwu Programming Massively Parallel Processors: A Hands-on Approach Morgan Kaufmann 2017
2 B. Schmidt, J. Gonzalez-Dominguez, C. Hundt and M. Schlarba Parallel Programming: Concepts and Practice Morgan Kaufmann 2018