Learn OpenMP in C++ (parallel programming)
What you'll learn
- The student will learn how to implement the different types of openMP construct like worksharing, environment variables, FOR construct,data variables, task etc.
- The student will learn how to translate a serial C and C++ program to a parallel program
- The learner would learn what is OpenMP, and its application in parallel processing.
- The student would be able to write parallel programs in C and C++
Requirements
- basic understanding of the C++ or C language.
Description
Welcome.
This is a practical course on C and C++ high level language which teaches parallel programming using openMP. We start by explaining what a parallel program is, its applications and different examples of it. Then we introduced the two main API used for parallel programming which are openMP and MPi . We also learn the difference between concurrency and parallelism.
We also discussed shared memory model, distributed memory model and hybrid model etc relative to their implementation in parallel programming.
We discussed what a task region is, and how to declare one.
Then we dived in to writing parallel programs using openMP APi.
Some of the programs demonstrated each of the openMP work sharing constructs including;
1. Parallel Regions –
e.g #pragma omp parallel
2. Runtime functions/environment variables –e.g
int my_thread_id = omp_get_num_threads(); – omp_set_num_threads(8);
3. Synchronization –
e.g #pragma omp barrier
4. Work sharing –
e.g #pragma omp for, #pragma omp sections
5. Data Environment –
e.g #pragma omp parallel shared/private (…)
6. tasks. etc.
A lot of practical examples are also included in most lectures to enable the reader get a good grasp of the concept being discussed.
At the end of the course the student would be able to efficiently implement parallel programming to improve the speed and standard of programs written in C and C++.
Thank you .
Who this course is for:
- C++ and C developers
Instructor
With over 7years designing vhdl, verilog projects on fpga.
Emmanuel is an embedded c++ system developer. He has strong knowledge in FPGA (Field Programmable Gate Array) development, Digital Electronics, Circuit Board design, and VHDL design and modeling of hardware systems using Logism. His focus of study in school was embedded systems with specialization in soc system on chip, processor core, serial communication protocols and encryption.