Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalari universiteti kompyuter arxetekturasi fanidan



Yüklə 0,98 Mb.
Pdf görüntüsü
səhifə1/2
tarix08.12.2022
ölçüsü0,98 Mb.
#73146
  1   2
Fazliddin Yakubjonov 4-Amaliy



 
 
 
 
Muhammad al-Xorazmiy nomidagi Toshkent axborot 
texnologiyalari universiteti 
KOMPYUTER ARXETEKTURASI FANIDAN 
AMALIY ISH 
Topshirdi: Yakubjonov 
Fazliddin 
Qabul qildi: 
Saydazimov Javlonbek
 


MAVZU: OpenMP TEXNOLOGIYASI VA UNING IMKONIYATLARI
 
Ishdan maqsad: OpenMP texnologiyasini va uning samarali natijalarini o’rganish 
hamda CUDA, OpenCL kabi texnologiyalar bilan taqqoslash va tahlil qilish. OpenMP 
texnologiyasini va uning samarali natijalarini o’rganish hamda OpenMP 
texnologiyasi yordamida misollar yechish. 
Nazariy qism: 
OpenMP (Ochiq Multi-Processing) - bu C, C++ va Fortran tillarida ko'p platformali 
umumiy xotirali multiprocessing dasturlashni qo'llab-quvvatlaydigan amaliy 
dasturlash interfeysi (API) ko'plab platformalarda, ko'rsatmalar to'plami 
arxitekturalarida va operatsion tizimlarda, jumladan Solaris, AIX, FreeBSD , HP-UX, 
Linux, macOS va Windows. U ishlash vaqtidagi xatti-harakatlarga ta'sir qiluvchi 
kompilyator direktivalari, kutubxona tartiblari va muhit o'zgaruvchilari to'plamidan 
iborat. 
OpenMP, Arm, AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC kabi etakchi 
kompyuter uskunalari va dasturiy ta'minot sotuvchilari tomonidan birgalikda 
aniqlangan OpenMP Architecture Review Board (yoki OpenMP ARB) notijorat 
texnologiyalar konsortsiumi tomonidan boshqariladi. , Red Hat, Texas Instruments 
va Oracle korporatsiyasi 
OpenMP portativ, kengaytiriladigan modeldan foydalanadi, bu dasturchilarga 
standart ish stoli kompyuteridan superkompyutergacha bo'lgan platformalar uchun 
parallel ilovalarni ishlab chiqish uchun oddiy va moslashuvchan interfeysni beradi. 


Parallel dasturlashning gibrid modeli bilan yaratilgan dastur OpenMP va Message 
Passing Interface (MPI) yordamida kompyuter klasterida ishlashi mumkin, shuning 
uchun OpenMP (ko'p yadroli) tugun ichida parallellik uchun, MPI esa tugunlar 
orasidagi parallellik uchun ishlatiladi. . Bundan tashqari, OpenMP ni MPI ga tarjima 
qilish va umumiy bo'lmagan xotira tizimlari uchun OpenMP ni kengaytirish uchun 
tarqatilgan umumiy xotira tizimlarida OpenMP ni ishga tushirishga harakat qilindi. 
OpenMP ko'p ish zarrachalarining amalga oshirilishi bo'lib, birlamchi ip (ketma-ket 
bajariladigan 
ko'rsatmalar 
qatori) 
ma'lum 
miqdordagi pastki iplarni ajratib turadi va tizim ular 
orasida vazifani ajratadigan parallellashtirish 
usulidir. Keyin iplar bir vaqtning o'zida ishlaydi, ish 
vaqti muhiti iplarni turli protsessorlarga ajratadi. 
Parallel ishlash uchun mo'ljallangan kod bo'limi 
tegishli ravishda kompilyator direktivasi bilan 
belgilanadi, bu bo'lim bajarilishidan oldin iplarning 
shakllanishiga olib keladi. Har bir ipga identifikator 
biriktirilgan, uni funksiya yordamida olish mumkin 
(omp_get_thread_num()). Tarmoq identifikatori butun son bo'lib, asosiy ip 
identifikatori 0 ga teng. Parallellashtirilgan kod bajarilgandan so'ng, iplar dasturning 
oxirigacha davom etadigan asosiy ipga qaytadan qo'shiladi. 
Odatiy bo'lib, har bir oqim kodning parallellashtirilgan qismini mustaqil ravishda 
bajaradi. Ish almashish konstruksiyalari vazifani iplar o'rtasida taqsimlash uchun 


ishlatilishi mumkin, shunda har bir ip kodning ajratilgan qismini bajaradi. Shu tarzda 
OpenMP yordamida vazifalar parallelligi va ma'lumotlar parallelligiga erishish 
mumkin. 
Ish vaqti muhiti foydalanish, mashina yuki va boshqa omillarga qarab 
protsessorlarga yo’llarni ajratadi. Ish vaqti muhiti muhit o'zgaruvchilari asosida ish 
zarralari sonini belgilashi mumkin yoki kod buni funksiyalar yordamida amalga 
oshirishi mumkin. OpenMP funksiyalari C/C++ da omp.h deb nomlangan sarlavha 
fayliga kiritilgan. 
1. omp for yoki omp do: sikl konstruksiyalari deb ham ataladigan oqim orasida 
sikl iteratsiyalarini ajratish uchun ishlatiladi. 
2. bo'limlar: turli mavzularga ketma-ket, lekin mustaqil kod bloklarini belgilash 
3. yagona: faqat bitta oqim tomonidan bajariladigan kod blokini ko'rsatish, 
oxirida to'siq nazarda tutiladi 


4. master: bittaga o'xshaydi, lekin kod bloki faqat asosiy oqim tomonidan 
bajariladi va oxirida hech qanday to'siq bo'lmaydi. 
Amaliy misollar:
Ishning bir qismini bajarish uchun har bir yo’ldan foydalanib, parallel ravishda katta 
massivning qiymatini for takrorlash operatori yordamida ishga tushirish! 
int
main
(
int
argc,
char
**
argv) 

int
a[
100000
]; 
#pragma omp parallel for
for
(
int
i
=
0
;
i
<
100000
;
i
++
)

a[i]
=
2
*
i; 

return
0


Endi barcha dasturlash tillarida birinchi o’rganganimiz “Hello word” sozini OMP 
kutubxonasi yordamida parallel oqimli ekranga chop etamiz 
#include

#include

int
main
(
void


#pragma omp parallel
printf(
"Hello, world.

Yüklə 0,98 Mb.

Dostları ilə paylaş:
  1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin