Содержание
- 2. Управление центральным процессором… Реализация многопоточности с использованием технологии OpenMP
- 3. Стандарт OpenMP Стандарт OpenMP был разработан в 1997г. как API, ориентированный на написание портируемых многопоточных приложений.
- 4. Активизация OpenMP Прежде чем заниматься кодом, вы должны знать, как активизировать реализованные в компиляторе средства OpenMP.
- 5. Параллельная обработка в OpenMP Работа OpenMP-приложения начинается с единственного потока (основного). В приложении могут содержаться параллельные
- 6. Конструкции OpenMP OpenMP прост в использовании и включает лишь два базовых типа конструкций: директивы pragma и
- 7. Конструкции OpenMP Функции OpenMP служат в основном для изменения и получения параметров среды. Кроме того, OpenMP
- 8. Формат директивы pragma Для реализации параллельного выполнения блоков приложения нужно просто добавить в код директивы pragma
- 9. Директивы pragma OpenMP поддерживает директивы parallel, for, parallel for, section, sections, single, master, critical, flush, ordered
- 10. Реализация параллельной обработки Самая важная и распространенная директива - parallel. Она создает параллельный регион для следующего
- 11. Реализация параллельной обработки Директива parallel сообщает компилятору, что структурированный блок кода должен быть выполнен параллельно, в
- 12. Пример параллельной обработки В качестве примера рассмотрим классическую программу «Hello World»: #pragma omp parallel { printf("Hello
- 13. Пример параллельной обработки В двухпроцессорной системе вы, конечно же, рассчитывали бы получить следующее: Hello World Hello
- 14. Директива #pragma omp for Директива #pragma omp for сообщает, что при выполнении цикла for в параллельном
- 15. Пример параллельной обработки #pragma omp parallel { #pragma omp for for(int i = 1; i x[i]
- 16. Директива #pragma omp parallel for Так как циклы являются самыми распространенными конструкциями, где выполнение кода можно
- 17. Пример параллельной обработки #pragma omp parallel for for(int i = 1; i x[i] = (y[i-1] +
- 18. Задание числа потоков Чтобы узнать или задать число потоков в группе, используйте функции omp_get_num_threads и omp_set_num_threads.
- 19. Алгоритмы планирования По умолчанию в OpenMP для планирования параллельного выполнения циклов for применяется алгоритм, называемый статическим
- 20. Алгоритмы планирования Однако OpenMP поддерживает и другие механизмы планирования, оптимальные в разных ситуациях: динамическое планирование (dynamic
- 21. Алгоритмы планирования Чтобы задать один из этих механизмов планирования, используйте раздел schedule в директиве #pragma omp
- 22. Динамическое планирование При динамическом планировании каждый поток выполняет указанное число итераций (по умолчанию равно 1). После
- 23. Управляемое планирование При управляемом планировании число итераций, выполняемых каждым потоком, определяется по следующей формуле: число_выполняемых_потоком_итераций =
- 24. Примеры задания алгоритмов планирования #pragma omp parallel for schedule(dynamic, 15) for(int i = 0; i #pragma
- 25. Планирование в период выполнения Планирование в период выполнения - это скорее даже не алгоритм планирования, а
- 27. Скачать презентацию