Содержание
- 2. Хотим все, сразу и бесплатно Программисты всегда мечтали, что в их программы параллелизм проберется сам, незаметно
- 3. OpenMP Открытый стандарт OpenMP Architecture Review Board Windows, Linux, Mac OS X, Solaris «Учредители»:
- 4. Поддержка OpenMP Microsoft Visual Studio 2005 и 2008 поддерживает OpenMP 2.0 в редакциях Professional и Team
- 5. Что такое OpenMP? Стандарт Библиотека времени выполнения Поддержка в компиляторе
- 6. Что такое OpenMP? OpenMP подразумевает маркировку параллельного кода специальными директивами. Параллелизация происходит «почти автоматически». Паралелльные участки
- 7. OpenMP-программа Типичная схема Главный поток создает несколько вспомогательных и заставляет их считать задачу параллельно
- 8. Лучше один раз увидеть… double a[N], b[N], c[N]; int i; omp_set_dynamic(0); omp_set_num_threads(10); #pragma omp parallel shared(a,
- 9. Формат директив #pragma omp [directive] [clause [clause] …] [directive] – название директивы [clause] - условие Продление
- 10. Подключение в C++ /openmp – флаг компилятору в VS
- 11. Инкрементальный параллелизм Не нужно выкидывать старую программу и писать новую Можно постепенно переписывать код на использование
- 12. Модель с разделяемой памятью Все потоки имеют доступ к глобальной разделяемой памяти (метка shared для переменных)
- 13. По умолчанию Все переменные shared общие, кроме: Индексов параллельных циклов Переменных, объявленных внутри параллельных регионов
- 14. Уровни параллельности SPMD MPMD MDMD
- 15. Parallel Начинает параллельное выполнение блока в {} Создает “команду” потоков Количество потоков чаще всего равняется количеству
- 16. Параллельный регион Параллельный регион в OpenMP – блок кода, который исполняется всеми потоками параллельно.
- 17. Условный паралеллизм Если условие равно 0 параллельность не работает
- 18. For Без pragma parallel выполняется в один поток
- 19. Parallel for С pragma parallel выполняется в текущей «команде» потоков
- 20. Num_threads(N) Определяет количество потоков в «команде»
- 21. Циклы, которые нельзя распараллелить Рекурсивные зависимости for (int i = 1; i a[i] = a[i-1] +
- 22. Зависимости Решение зависимостей: перегруппировка кода переписывание алгоритмов расстановка барьеров Если зависимости есть, но мы с ними
- 23. Sheduling Static Dynamic Guided Auto
- 24. Ordered Код внутри ordered выполняется в установленном циклом последовательности
- 25. collapse Используется для вложенных циклов
- 26. Sections Определяют, что должно быть параллельным Work1, Work2 + Work3 and Work4 – выполняются паралелльно, но
- 27. Atomic Определяет атомарную операцию
- 28. critical Гарантирует выполнение участка кода только одним потоком
- 29. Типы переменных Private –копия переменной shared
- 30. Private, firstprivate K kx
- 31. reduction Совмещает private, shared, и atomic Вначале блока копирует значение shared переменной В конце блока возвращается
- 33. Скачать презентацию