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



Pdf көрінісі
бет36/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   32   33   34   35   36   37   38   39   ...   53
ParProg MPI OpenMP

3.3.2 Директивы single и master 
Директива OpenMP single используется для выделения участков 
программы в области параллельных структурных блоков, выполняющихся 
только в одном из параллельных потоков. Во всех остальных 
параллельных потоках выделенный директивой single участок программы 
не выполняется, однако параллельные процессы, выполняющиеся в 


56 
остальных потоках, ждут завершения выполнения выделенного участка 
программы, т. е. неявно реализуется процедура синхронизации. Какая 
именно нить будет выполнять выделенный участок программы, не 
специфицируется. Одна нить будет выполнять данный фрагмент, а все 
остальные нити будут ожидать завершения её работы (при отсутствии 
опции nowait). 
#pragma omp single [опция [[,] опция]...] 
Рассмотрим возможные опции данной директивы. 
private(список) – задает список переменных, для которых порождается 
локальная копия в каждой нити; начальное значение локальных копий 
переменных из списка не определено. 
firstprivate(список) – задаёт список переменных, для которых порождается 
локальная копия в каждой нити; локальные копии переменных 
инициализируются значениями этих переменных в нити-мастере. 
copyprivate(список)после выполнения нити, содержащей конструкцию 
single, новые значения переменных списка будут доступны всем 
одноименным частным переменным (private и firstprivate), описанным в 
начале параллельной области и используемым всеми её нитями; опция не 
может использоваться совместно с опцией nowait; переменные списка не 
должны быть перечислены в опциях private и firstprivate данной 
директивы single
nowait – после выполнения выделенного участка происходит неявная 
барьерная синхронизация параллельно работающих нитей: их дальнейшее 
выполнение происходит только тогда, когда все они достигнут данной 
точки; если в подобной задержке нет необходимости, опция nowait 
позволяет нитям, уже дошедшим до конца участка, продолжить 
выполнение без синхронизации с остальными [3]. 


Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   53




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

    Басты бет