Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Оператор-выражение





, где оператор-выражение должен иметь одну из следующих форм:

  • x binop = выражение
  • x++
  • ++x
  • x—
  • --x

В предыдущих выражениях:

x - переменная.

выражение - должно быть выражением скалярного типа.

binop - должен быть одним из следующих операторов: +, *, -, /, &, |, <<;,или >>;.

По сути atomic и critical решают одну и ту же проблему, но директива atomic более эффективна, чем critical.

Пример: Следующий пример исключает условие «гонки», т.е. одновременное изменение элемента x несколькими нитями, путем использования директивы atomic:

 

#pragma omp parallel for shared(x, y, n)

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

#pragma omp atomic

x[i] += work1(i);

y[i] += work2(i);

}

 

Преимущество использования директивы atomic в этом примере состоит в том, что директива позволяет изменить значения двух различных элементов x параллельно. Если вместо директивы atomic была бы использована директива critical, то все модификации элементов x должны были быть выполнены последовательно (хотя и в не гарантированном порядке).

Заметим, что директива atomic приемлема только к оператору, непосредственно следующему за директивой. И как следствие, в этом примере, элемент y не модифицируется атомарно.

 

4. barrier выполняет явную синхронизацию работы всех нитей в группе. При достижении оператора barrier, каждая нить останавливается и ожидает, пока остальные нити достигнут этой точки, после чего все нити продолжают работать дальше в параллельном режиме.

Синтаксис директивы barrier:

#pragma omp barrier

5. flush Поскольку в современных параллельных вычислительных системах может использоваться сложная структура и иерархия памяти, пользователь должен иметь гарантии того, что в необходимые ему моменты времени каждая нить будет видеть единый согласованный образ памяти. Для этих целей и предназначена директива flush.

flush определяет пересечение нитей (cross-thread) в точке оценки, где требуется гарантия того, что все нити в группе имеют одно и то же видение некоторых объектов памяти. Это означает, что предыдущие вычисления выражений, которые ссылаются на эти объекты памяти, были завершены, а последующие вычисления не начаты.

Синтаксис директивы flush:

#pragma omp flush [(список)]

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

Директива flush без списка синхронизирует все разделяемые переменные (такой способ синхронизации будет иметь значительные накладные расходы по сравнению с директивой flush со списком). Директива flush без списка может использоваться в директивах:

  • barrier.
  • При ходе или выходе из конструкции critical.
  • При ходе или выходе из конструкции ordered.
  • При выходе из конструкции parallel.
  • При выходе из конструкции for.
  • При выходе из конструкции sections.
  • При выходе из конструкции single.

 

Директиву flush нельзя использовать, если присутствует оператор nowait (т.е. выполнение без синхронизации).

 

Ограничения к использованию директивы flush:

1. Переменная, определенная в директиве flush, не должна быть ссылкой.

2. программная конструкция, которая содержит директиву barrier, должна быть блоком (или составным оператором).

 

6. ordered - директивадолжна находиться внутри конструкций for или parallel for. Программный блок, непосредственно следующий за директивой ordered, выполняется в порядке, в котором итерации цикла выполнялись бы в последовательном режиме.

Синтаксис директивы ordered:

#pragma omp ordered







Дата добавления: 2015-08-12; просмотров: 431. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

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

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия