Учебное пособие Казань 018 удк


Фиксация порядка выполнения



Download 2,08 Mb.
Pdf ko'rish
bet92/98
Sana16.12.2022
Hajmi2,08 Mb.
#888158
TuriУчебное пособие
1   ...   88   89   90   91   92   93   94   95   ...   98
Bog'liq
ParVychGafGal

Фиксация порядка выполнения.
Директива 
ordered
в параллельных 
циклах (только там она может встречаться) говорит о том, что указанный блок 
должен исполняться в строго фиксированной последовательности. Внутри 
ordered
секции одновременно может находиться только один поток. 
Синтаксис на С/С++ 
#pragma omp ordered 
Структурный блок 
Пример. 
#pragma omp parallel private(myid) 

myid = omp_get_thred_num(); 
#pragma omp for private(i) 
for(i=0; i<8; i++) 


138 
#pragma omp ordered 
printf("T%d: %d\n", myid, i); 

Результат работы кода следующий: 
T0: 0 
T0: 1 
T0: 2 
T0: 3 
T1: 4 
T1: 5 
T1: 6 
T1: 7 
Конcтрукция flush.
Эта конструкция осуществляет немедленный сброс 
значений разделяемых переменных в память. Таким образом гарантируется, что 
во всех потоках значение переменной будет одинаковое. Неявно 
flush
присутствует в следующих директивах: 
barrier
, начале и конце критических 
секций, параллельных циклов, параллельных областей, 
single
секций. 
С ее помощью можно посылать сигналы потоком используя переменную 
как семафор. Когда поток видит, что значение разделяемой переменной 
изменилось, то это говорит, что произошло событие и, следовательно, можно 
продолжить выполнение программы далее. (Пример не работает. Не 
происходит блокирования) 
Синтаксис: 
#pragma omp flush(var1[, var2, ...]) 
8.8. Расширенные возможности OpenMP 
Рассмотрим средства OpenMP, которые позволяют более эффективно 
писать параллельные программы. К таким средствам относится директива 
threadprivate
, которая позволяет один раз объявить приватную переменную 
для всех параллельных секций в рамках одного файла. Чтобы было возможно ее 


139 
использовать, переменная должна быть объявлена как статическая, директива 
threadprivate
должна присутствовать до объявления первой параллельной 
секции и количество потоков в программе должно быть постоянным. 
Синтаксис: 
#pragma omp threadprivate(var1[, var2 ...]) 
Другим расширением OpenMP является возможность использовать 
синхронизацию потоков посредством блокировок. Блокировки в OpenMP 
аналогичны мютексам в POSIX threads. Даже набор функций для работы с ними 
аналогичен. 

Download 2,08 Mb.

Do'stlaringiz bilan baham:
1   ...   88   89   90   91   92   93   94   95   ...   98




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish