Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция по ПП 3.pdf
Скачиваний:
12
Добавлен:
02.06.2015
Размер:
4.72 Mб
Скачать

Примеры

sum = 0;

for (i=0; i < 100; i++)

{

sum += array[i];

// этапеременнаядолжнабытьобщаядля получениякорректного результата,

// однако также должнабытьи индивидуальнойдляобеспечениядоступа несколькихпотоков.

}

53

ОсновыOpenMP

Для разрешенияэтой ситуациивOpenMP предоставляетсявыражениеreduction, которое применяетсядляэффективного сочетанияматематического уменьшения однойилинесколькихпеременныхв цикле.

Вследующемциклеиспользуется выражениеreductionдляполучения правильныхрезультатов.

54

Примеры

sum = 0;

#pragma omp parallel for reduction(+:sum) for (i=0; i < 100; i++)

{

sum += array[i];

}

55

ОсновыOpenMP

Информацияопланированиицикла передаетсявOpenMPспомощью директивыparallel,имеющейследующий формат.

1 #pragma omp parallel for schedule(kind [, chunk size])

56

Четыре различных типа

планирования цикла в OpenMP,