Subject » BMEVIIIMB02
Parallel Programming Laboratory
Párhuzamos programozás laboratórium
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
—
| Subject name (Hungarian, English) |
Párhuzamos programozás laboratórium
Parallel Programming Laboratory
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Subject code | BMEVIIIMB02 | ||||||||||||
| Subject type | — | ||||||||||||
| Training Level | — | ||||||||||||
| Course types and hours (weekly/semester) |
|
||||||||||||
| Assessment type | félévközi érdemjegy | ||||||||||||
| Credits | 4 | ||||||||||||
| Subject coordinator |
Dr. Tóth Balázs György
contact:
tbalazs@iit.bme.hu
|
||||||||||||
| Responsible department |
Irányítástechnika és Informatika Tanszék
|
||||||||||||
| Faculty | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Subject website | http://cg.iit.bme.hu/portal/oktatott-targyak/parhuzamos-programozas-laboratorium | ||||||||||||
| Primary curriculum type | — | ||||||||||||
| Direct prerequisites – Strong prerequisite | none | ||||||||||||
| Direct prerequisites – Weak prerequisite | none | ||||||||||||
| Direct prerequisites – Parallel prerequisite | none | ||||||||||||
| Direct prerequisites – Milestone prerequisite | none | ||||||||||||
| Direct prerequisites – Exclusion | none |
Objectives
Programme
1. Introduction.
The aim of the lab is to get familiar with the parameter scan, which is a commonly used parallel algorithm and many applications based on it.
2. Check-point in distributed environment.
The purpose of the lab is to expand the program created the previous time by creating a simple check-point. Measuring the effect of check-point on run times. Estimate SpeedUp.
3. Parallel programs with threads in a UNIX environment.
The goal of the lab is to explore the capabilities of the POSIX threads. Creating a simple parallel program with POSIX threads. Measuring running times. Estimate SpeedUp.
4. Creating a parallel program in OpenMP environment.
The goal of the lab is to explore the OpenMP toolkit. Convert the previous task to OpenMP. Measuring run times and comparing them with implementations made in the previous lab.
5. Parallel programs in MPI environment.
The goal of the lab is to explore the MPI toolkit. During the lab students should test simple communication schemes, the effect of different schemes on running time.
6. Understanding Mathematical Libraries (MKL, LAPACK, BLAS).
The purpose of the lab is to implement a computationally demanding task with a BLAS library on a GPGPU card. During the lab, the completed implementation is also measured.
7. Migrating a simple task to the IaaS cloud.
The goal of the lab is to learn how to connect cloud-based remote resources and local applications. During the lab we present cloud management tools and the creation of cloud-based services.
8. Creating simple CUDA programs.
The goal of the lab is to experiment with parallel applications running on graphics hardware. During the lab, we present the Thrust container library available in the CUDA environment, and some applications based on it.
9. Develop an application based on MPI and CUDA.
The lab presents the possibilities of integrating different parallelization strategies within a program. By combining massively parallel and distributed systems, we can combine their positive features and partially eliminate the drawbacks of each scheme.
The aim of the lab is to get familiar with the parameter scan, which is a commonly used parallel algorithm and many applications based on it.
2. Check-point in distributed environment.
The purpose of the lab is to expand the program created the previous time by creating a simple check-point. Measuring the effect of check-point on run times. Estimate SpeedUp.
3. Parallel programs with threads in a UNIX environment.
The goal of the lab is to explore the capabilities of the POSIX threads. Creating a simple parallel program with POSIX threads. Measuring running times. Estimate SpeedUp.
4. Creating a parallel program in OpenMP environment.
The goal of the lab is to explore the OpenMP toolkit. Convert the previous task to OpenMP. Measuring run times and comparing them with implementations made in the previous lab.
5. Parallel programs in MPI environment.
The goal of the lab is to explore the MPI toolkit. During the lab students should test simple communication schemes, the effect of different schemes on running time.
6. Understanding Mathematical Libraries (MKL, LAPACK, BLAS).
The purpose of the lab is to implement a computationally demanding task with a BLAS library on a GPGPU card. During the lab, the completed implementation is also measured.
7. Migrating a simple task to the IaaS cloud.
The goal of the lab is to learn how to connect cloud-based remote resources and local applications. During the lab we present cloud management tools and the creation of cloud-based services.
8. Creating simple CUDA programs.
The goal of the lab is to experiment with parallel applications running on graphics hardware. During the lab, we present the Thrust container library available in the CUDA environment, and some applications based on it.
9. Develop an application based on MPI and CUDA.
The lab presents the possibilities of integrating different parallelization strategies within a program. By combining massively parallel and distributed systems, we can combine their positive features and partially eliminate the drawbacks of each scheme.
Students can get
acquainted in practice with the use of cloud-based systems and related
development and test tools, and learn the steps and methods of parallel
programming through specific tasks. They will also learn about the criteria and steps for migrating traditional IT applications to the cloud. Students solve most of the lab tasks in a cloud environment provided with the CIRCLE system.
Learning outcomes
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Knowledge
No learning outcomes recorded.
Skills
No learning outcomes recorded.
Attitudes
No learning outcomes recorded.
Autonomy and responsibility
No learning outcomes recorded.
Oktatási módszertan
In
the labs students solve most of the tasks in a cloud environment
provided by the CIRCLE system and receive individual homework. The evaluation is based on the average of the grades obtained on each class and on the grade obtained for the homework.
Tanulástámogató anyagok
Not provided.
Recommended preliminary knowledge for completing the subject
Knowledge type competencies
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
Programming, data structures, algorithms, mathematics.
Skill type competencies
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Recommended (non-compulsory) preliminary competencies
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
Programming, data structures, algorithms, mathematics.
General rules
Requirements:
Laboratory visits according to the TVSZ and preparing homework at the end of the semester. The mark at the end of the semester is the result of the completed labs (50%) and the homework (50%).
Assessment methods
In-term assessments
No detailed assessments provided.
Weight of in-term assessments
No weights provided.
Exam-period assessments
No detailed assessments provided.
Weight of exam elements
No weights provided.
Grade calculation
No grade thresholds provided.
Attendance requirements
No attendance requirements provided.
Rules for retake and resubmission
Not provided.
Short description
Not provided.
Detailed description
Not provided.
Recommended courses
Basic C++ programming knowledge.
- BMEVIIIMA06 High performance parallel computing.
- BMEVIIIMB01 GPGPU applications.
Workload to complete the subject
No workload breakdown provided.
Validity of subject requirements
Requirements valid from:
—
Requirements valid until:
—
Curriculum placement
No curriculum placements recorded for this subject version.