Print indd



Download 18,42 Mb.
Pdf ko'rish
bet72/366
Sana31.12.2021
Hajmi18,42 Mb.
#276933
1   ...   68   69   70   71   72   73   74   75   ...   366
Bog'liq
(Lecture Notes in Computer Science 10793) Mladen Berekovic, Rainer Buchty, Heiko Hamann, Dirk Koch, Thilo Pionteck - Architecture of Computing Systems – ARCS

5.2
Optimization Proposal
GNU OpenMP library wait policy implies that on the same barrier some threads
can do active wait whereas others can sleep. When no thread is sleeping, the
expensive call to the wake-up function (“futex wake”) is not required. Hence, we
propose to keep an information of the waiting mode of the threads participating
to the barrier. If no thread is sleeping, we skip the call to the wake-up function.
Else, we perform the call if at least one sleeping thread has to be awaken.
The idea is to tag the barrier as “barrier to be awaken” as soon as one thread
of the barrier calls the function to go to sleep. To achieve this purpose, we keep
a list of “barriers to be awaken”. We chose to implement a global list and not a
scalar in the barrier structure to ease the implementation by reducing as much
as possible the impact on the existing code.
When the last thread of a barrier starts the awakening process, it reads this
list. If the identifier (address) of the current barrier is in the list, the thread
removes the identifier from it and calls the wake-up function. Else, if the current
barrier identifier is not in the list, the call to the wake-up function is skipped.
The list implemented is a single linked list without peculiar requirements.
Indeed, since the number of simultaneous barriers in OpenMP programs is
reduced, the search process in the list is relatively fast. Based on this assumption
and on the use cases of the list (only a thread performing the release process),
concurrent access to the list is supposed very sporadic. Hence we decide to sim-
ply protect the list by a global lock. After its registration in the list, but before
going into sleep mode, a thread checks again the wait flag, thanks to the linux
sleeping futex function, in order to prevent potential race between threads.
This optimization is only 50 lines of codes long affecting 2 files of the library.
The use of this optimization requires only a library update to speed-up pro-
gram execution, while the application code does not change at all.

Download 18,42 Mb.

Do'stlaringiz bilan baham:
1   ...   68   69   70   71   72   73   74   75   ...   366




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