Изучение структуры и работы пакета OpenMP


Download 65.94 Kb.
bet1/3
Sana31.01.2024
Hajmi65.94 Kb.
#1820128
TuriПрограмма
  1   2   3
Bog'liq
Практическая работа №5


Тема: Изучение структуры и работы пакета OpenMP.
OpenMP (Open Multi-Processing) - это набор директив, библиотечных вызовов и переменных окружения для параллельного программирования на языках C, C++ и Fortran. Он предоставляет простой и удобный способ написания параллельных программ, позволяя использовать многопоточность для распараллеливания работы программы на несколько потоков.
Теоретическая часть:
1. Директивы OpenMP:
- #pragma omp parallel: Создание параллельной области, в которой выполняются несколько потоков.
- #pragma omp for: Распараллеливание циклов.
- #pragma omp sections: Создание разделов кода для выполнения в параллельных потоках.
- #pragma omp critical: Обеспечивает доступ к блоку кода только одним потоком одновременно.
- #pragma omp barrier: Создание барьера, который останавливает выполнение программы до завершения всех потоков.
2. Функции и переменные OpenMP:
- omp_get_thread_num(): Возвращает номер потока.
- omp_get_num_threads(): Возвращает общее количество потоков.
- omp_set_num_threads(): Устанавливает количество потоков для выполнения параллельной области.
- OMP_NUM_THREADS: Переменная окружения, устанавливающая количество потоков.
Практическая работа:
Программа на Фортране-77, создающая заранее неизвестное число потоков (оно определяется переменной окружения OMP_NUM_THREADS перед запуском программы), каждый из которых выводит приветствие вместе со своим номером; ведущий поток (имеющий номер 0) также выводит общее число потоков, но только после того, как все они «пройдут» директиву BARRIER:
PROGRAM HELLO
INTEGER ID, NTHRDS
INTEGER OMP_GET_THREAD_NUM, OMP_GET_NUM_THREADS
C$OMP PARALLEL PRIVATE(ID)
ID = OMP_GET_THREAD_NUM()
PRINT *, 'HELLO WORLD FROM THREAD', ID
C$OMP BARRIER
IF ( ID .EQ. 0 ) THEN
NTHRDS = OMP_GET_NUM_THREADS()

Download 65.94 Kb.

Do'stlaringiz bilan baham:
  1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling