Parallel Programming
Course Description
The course points to the need for algorithms that can take advantage of the increasing availability of parallel computational power. It describes the principles of parallel algorithm development and parallel programming models. The course also presents parallel programming utilities and enables the students to utilize the presented techniques.
General Competencies
Students will have good understanding of existing parallel computer and parallel programming models. Students will be able to design and implement a parallel algorithm maintaining the desired quality properties. Students will have practical knowledge of basic programming tools for parallel program design and quantitative performance analysis.
Learning Outcomes
- describe parallel computation and parallel programming models
- describe PRAM computer model
- apply PRAM programming model in parallel programming
- apply MPI technology in parallel program development
- recognize phases of parallel algorithm design
- combine parallel algorithm development elements
- evaluate efficiency and scalability of parallel algorithms
Forms of Teaching
Lectures
Teaching is organized into two teaching cycles (15-week classes). First cycle consists of 7-week classes and midterm exam. Second cycle consists of 6-week classes and final exam.
ExamsMidterm exam. Final exam.
ConsultationsConsultation hours will be given at the first lecture
Programming ExercisesProgramming tasks.
Grading Method
By decision of the Faculty Council, in the academic year 2019/2020. the midterm exams are cancelled and the points assigned to that component are transferred to the final exam, unless the teachers have reassigned the points and the grading components differently. See the news for each course for information on knowledge rating.
Continuous Assessment | Exam | |||||
---|---|---|---|---|---|---|
Type | Threshold | Percent of Grade | Threshold | Percent of Grade | ||
Homeworks | 0 % | 12 % | 0 % | 0 % | ||
Attendance | 0 % | 3 % | 0 % | 0 % | ||
Mid Term Exam: Written | 0 % | 35 % | 0 % | |||
Final Exam: Written | 0 % | 50 % | ||||
Exam: Written | 50 % | 50 % | ||||
Exam: Oral | 50 % |
Comment:
All homework assignments must be handed in (regardless of the number of points) as a condition for taking the exam
Week by Week Schedule
- Parallel computer models. Parallel programming paradigms. Properties of parallel programs. Sequential to parallel program conversion.
- MPI - Message Passing Interface standard
- Synchronous shared memory parallel computer model (PRAM).
- Sum of prefixes algorithm.
- Asynchronous parallel computer (APRAM). Model and program complexity.
- Designing parallel algorithms. Design phases.
- Algorithm partitioning. Communication structure definition.
- (Midterm)
- Task agglomeration. Task to processor mapping.
- Examples of parallel algorithms designs.
- Evolutionary and genetic algoritms principles. Genetic algorithm parallelization. Parallel evolutionary algorithms.
- Quantitative analysis of parallel algorithms. Algorithm performance definitions.
- Parallel algorithm scalability analysis.
- Development of modular parallel programs. Modular development support in MPI.
- (Final exam)
Study Programmes
University graduate
Computer Engineering (profile)
Specialization Course
(2. semester)
Computer Science (profile)
Specialization Course
(2. semester)
Software Engineering and Information Systems (profile)
Specialization Course
(2. semester)
Literature
I. Foster (1995.), Designing and Building Parallel Programs, Addison-Wesley
J. Reif (ed.) (1993.), Synthesis of Parallel Algorithms, Morgan Kaufmann
W. Gropp, E. Lusk, A. Skjellum (1999.), Using MPI, 2nd ed., MIT Press
Lecturers
General
ID 34524
Summer semester
4 ECTS
L1 English Level
L1 e-Learning
30 Lectures
0 Exercises
0 Laboratory exercises
0 Project laboratory
Grading System
88 Excellent
75 Very Good
63 Good
50 Acceptable