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



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

schedule(type[, chunk]) – опция задаёт, каким образом итерации 
цикла распределяются между нитями. 
collapse(n) 
— 
опция 
указывает, 
что 

последовательных 
тесновложенных циклов ассоциируется с данной директивой; для циклов 
образуется общее пространство итераций, которое делится между нитями; 
если опция collapse не задана, то директива относится только к одному 
непосредственно следующему за ней циклу. 
ordered – опция, говорящая о том, что в цикле могут встречаться 
директивы ordered; в этом случае определяется блок внутри тела цикла, 
который должен выполняться в том порядке, в котором итерации идут в 
последовательном цикле. 
nowait – в конце параллельного цикла происходит неявная барьерная 
синхронизация 
параллельно 
работающих 
нитей: 
их 
дальнейшее 
выполнение происходит только тогда, когда все они достигнут данной 
точки; если в подобной задержке нет необходимости, опция nowait 
позволяет нитям, уже дошедшим до конца цикла, продолжить выполнение 
без синхронизации с остальными.
Предполагается, что корректная программа не должна зависеть от 
того, какая именно нить какую итерацию параллельного цикла выполнит. 
Нельзя использовать побочный выход из параллельного цикла. 
Если директива параллельного выполнения стоит перед набором 
вложенных циклов, завершающихся одним оператором, то директива 
действует только на самый внешний цикл [3]. 
Пример 3.11. 
#include 
#include 
int main() 

 
int s, i, n; 
 
s=0; 
#pragma omp parallel private (i,n) reduction(+:s) 

n=omp_get_thread_num(); 
#pragma omp for 
for (i=1;i<10;i++) 



62 
s=s+i; 
printf("Нить %d сложила элементы с номером %d\n", n, i); 


return 0; 
} 
Пример демонстрирует нахождение суммы чисел от 1 до 10 с 
помощью распараллеливания цикла. На экран выводится номер нити и 
номера итераций цикла, которые эта нить выполнила. 
Параметрами опции schedule являются следующие:


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




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

    Басты бет