Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Устранение информационных зависимостей в циклах средствами 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-03; Просмотров: 574; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.