Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Устранение информационных зависимостей в циклах средствами OpenMP, директива reduction



Информационные зависимости. Зависимости по данным (a=1;b=a). Зависимости по управлению (if(a){ x=c+d; y=1;}). Информационные зависимости в цикле:

for(j = 0; j < n; j ++) { a[j] = a[j – 1] + a[j – 2]; }

Опция reduction определяет что на выходе из параллельного блока переменная получит комбинированное значение. Пример:

#pragma omp for reduction(+: x)

Допустимы следующие операции: +, *, -, &, |, ^, &&, ||

Опция reduction определяет значение переменных, входящих в список ее аргументов, на главном потоке после завершения параллельного участка как результат выполнения редуктивной операции. На каждом из потоков, выполняющих параллельный участок, переменная инициализируется значением, соответствующим редуктивной операции.

Пусть параллельный участок выполнялся n потоками, и до него переменная имела значение v. Если в конце выполнения параллельного участка локальные копии переменной a имели значения v1, …, vn, то после параллельного участка переменная a на главном потоке получит значение, равное (v x v1 x v2 x … x vn). Инициализация для reduction:

Операция Значение

+ 0

* 1

- 0

& 0

| 0

^ 0

&& 1

|| 0

#pragma omp parallel for reduction(+:s)

for(i = 0; i < n; i ++){

s += g(a + i * h + 0.5 * h);

}

Итого: OpenMP – удобное средство разработки программ для общей памяти. Основные достоинства:

Высокая скорость разработки параллельных програм, Стандартизованный интерфейс, поддерживаемый ведущими разработчиками трансляторов.

Недостатки: Только для общей памяти (среда cluster OpenMP не получила распространения)

Отсутствует низкоуровневый контроль за создаваемыми потоками





Дата публикования: 2015-01-13; Прочитано: 596 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...