Содержание
- 2. Технология OpenMP Одно из наиболее популярных средств программирования компьютеров с общей памятью (в том числе многоядерных
- 3. OpenMP: последовательные и параллельные секции Весь текст программы разбит на последовательные и параллельные области. В начальный
- 4. Сравнение OpenMP и MPI В отличие от MPI, реализующей модель распределенной памяти, OpenMP ориентирована на компьютерные
- 5. OpenMP: общие и локальные переменные В параллельной области все переменные программы разделяются на два класса: общие
- 6. Модель OpenMP Рассмотренные два понятия: области и классы переменных, – определяют идею написания параллельной программы в
- 7. OpenMP: как организовать параллельные области Выделение параллельного блока программы: #pragma OMP parallel [описание переменных] { структурный
- 8. OpenMP: Пример C\C++: #pragma omp parallel [options, variables] { } #include main () { // Serial
- 9. OpenMP: явный параллелизм Функция omp_get_thread_num возвращает номер нити. Функция omp_get_num_threads возвращает кол-во нитей. Функция omp_set_num_threads устанавливает
- 10. #include #include int main() { int nthreads, tid; // open parallel section omp_set_num_threads(3) #pragma omp parallel
- 11. Запуск OpenMP-программы на HybriLIT Загрузкамодуля (GNU или Intel): GNU: default (v.4.4.7) module add hlit/gcc/4.9.3 (или 4.8.4
- 12. Как установить число нитей Функция omp_set_num_theads (установка числа нитей во всех параллельных секциях кода) omp_set_num_threads(2); #pragma
- 13. Пример: функция omp_set_num_threads(); опция num_threads #include #include int main(int argc, char *argv[]) { omp_set_num_threads(2); #pragma omp
- 14. Пример: применение опции reduction Подсчет общего количества порождённых нитей. #include int main() { int count =
- 15. Высокоуровневый параллелизм: pragma omp sections #pragma omp parallel { #pragma omp sections { #pragma omp section
- 16. Высокоуровневый параллелизм: параллельное выполнение цикла Если в параллельной области встретился оператор цикла, каждая нить выполнит все
- 17. Open MP: синхронизация нитей (1) Директива SINGLE используется для однократного выполнения части кода, если в параллельной
- 18. Open MP: синхронизация нитей (2) Критическая секция оформляется с помощью директивы #pragma omp critical [name] {
- 19. Example: pragma omp critical #include #include int main() { int sum = 0; int expr =
- 20. Open MP: синхронизация нитей (3) Согласование памяти. Синхронизация этого типа используется для обновления локальных переменных в
- 21. OpenMP: плюсы и минусы Технология изначально спроектирована, чтобы пользователь мог работать с единым текстом для параллельной
- 23. Скачать презентацию