Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2


 Распараллеливание оператора цикла



Pdf көрінісі
бет40/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   36   37   38   39   40   41   42   43   ...   53
ParProg MPI OpenMP

3.4.2 Распараллеливание оператора цикла 
Если в параллельной области встретился оператор цикла без 
дополнительных указаний, то он будет выполнен всеми нитями текущей 
группы, то есть каждая нить выполнит все итерации данного цикла. Для 
распределения итераций цикла между различными нитями можно 
использовать директиву for. Эта директива относится к следующему за 
ней блоку, содержащему оператор for.
На языке Си директива выглядит следующим образом: 
 
#pragma omp for [опция [[, ] опция …] 
Рассмотрим опции данной директивы. 
private(список) задает список переменных, для которых 
порождается локальная копия в каждой нити; начальное значение 
локальных копий переменных из списка не определено. 
firstprivate(список) – задаёт список переменных, для которых 
порождается локальная копия в каждой нити; локальные копии 
переменных инициализируются значениями этих переменных в нити-
мастере. 
lastprivate(список)переменным, перечисленным в списке, 
присваивается результат с последнего витка цикла. 
reduction(оператор:список) – определяется оператор - операции ( +, 
-, *, / и т. п.) или функции, для которых будут вычисляться 
соответствующие 
частичные 
значения 
в 
параллельных 
потоках 
последующего 
параллельного 
структурного 
блока; 
кроме 
того, 
определяется список локальных переменных, в котором будут сохраняться 


61 
соответствующие 
частичные 
значения; 
после 
завершения 
всех 
параллельных процессов частичные значения складываются (вычитаются, 
перемножаются и т. п.), и результат сохраняется в одноименной общей 
переменной. 


Достарыңызбен бөлісу:
1   ...   36   37   38   39   40   41   42   43   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет