Загрузил Maqsudbek Akbarov

opin MP

реклама
Muhammad Al-Xorazmiy nomidagi
Toshkent axborot texnologiyalari universiteti
TATU - 2022
KOMPYUTER ARXITEKTURASI FANIDAN 4-TOPSHIRIQ
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.
I.
Nazariy qism
OpenMP (Open Multoqimrocessing) kompilyator direktivasiga asoslangan parallel
dasturlash modeli boʻlib, dastur ishlab chiquvchilarga oʻzlarining dastur kodlariga
parallelizmni bosqichma-bosqich qoʻshish imkonini beradi.
OpenMP - bu ko'p ish zarralarini amalga oshirish , parallellashtirish usuli bo'lib, bunda
birlamchi oqim (ketma-ket bajariladigan ko'rsatmalar qatori) ma'lum miqdordagi pastki
oqimlarni ajratib turadi va tizim ular orasida vazifani taqsimlaydi. Keyin oqimlar birvaqtning
o'zida ishlaydi , ish vaqti muhiti oqimlarni turli protsessorlarga ajratadi.
har bir oqim kodning parallellashtirilgan qismini mustaqil ravishda bajaradi. Ish
almashish konstruksiyalari vazifani oqimlar o'rtasida taqsimlash uchun ishlatilishi mumkin,
shunda har bir oqim kodning ajratilgan qismini bajaradi. Shu tarzda OpenMP yordamida
vazifalar parallelligi va ma'lumotlar parallelligiga erishish mumkin.
Ma'lumotlar parallelligi - bu parallel hisoblash muhitida bir nechta protsessorlar
bo'ylab parallellashtirish. U ma'lumotlarni parallel ravishda ishlaydigan turli tugunlar
bo'ylab ma'lumotlarni tarqatishga qaratilgan. U har bir element ustida parallel ravishda
ishlash orqali massivlar va matritsalar kabi oddiy ma'lumotlar tuzilmalarida qo'llanilishi
mumkin. Bu parallelizmning boshqa shakli sifatida vazifa parallelizmidan farq qiladi.
Vazifa parallelizmi (shuningdek, funksiya parallelligi va boshqaruv parallelligi deb
ham ataladi ) parallel hisoblash muhitida bir nechta protsessorlarda kompyuter kodini
parallellashtirish shaklidir . Vazifa parallelizmi turli protsessorlar bo'ylab jarayonlar yoki
oqimlar tomonidan bir vaqtning o'zida bajariladigan vazifalarni taqsimlashga qaratilgan .
Parallel dasturlash uchun OpenMP API spetsifikatsiyasi ko'pgina platformalarda C,
C++ va Fortran tillarida ko'p platformali umumiy xotira ko'p ishlov berish dasturlashni
qo'llab-quvvatlaydigan amaliy dasturlash interfeysini (API) taqdim etadi. U ishlash
vaqtidagi xatti-harakatlarga ta'sir qiluvchi kompilyator direktivalari, kutubxona tartiblari va
OpenMP tugun ichidagi parallelizmga (umumiy xotirani ko'p ishlov berish) e'tibor
qaratganligi sababli, uni bir nechta tugunlarda bajarish uchun MPI kabi xabarlarni uzatuvchi
dasturlash modellari bilan birlashtirish mumkin.
OpenMP kompilyator direktivalari toʻplami hamda C, C++ yoki FORTRAN tillarida
yozilgan dasturlar uchun API boʻlib, umumiy xotira muhitlarida parallel dasturlashni
qoʻllab-quvvatlaydi. OpenMP parallel hududlarni parallel ravishda ishlashi mumkin bo'lgan
kod bloklari sifatida belgilaydi. Ilova ishlab chiquvchilari parallel hududlarda o'z kodlariga
kompilyator direktivalarini kiritadilar va bu direktivalar OpenMP ish vaqti kutubxonasiga
mintaqani parallel ravishda bajarishni buyuradi. Quyidagi C dasturi printf() ifodasini o'z
ichiga olgan parallel hudud ustidagi kompilyator direktivasini ko'rsatadi –
#include <omp.h>
#include <stdio.h>
int main(int argc, char *argv[]){
/* ketma-ket kod */
#pragma omp parallel{
printf("Men parallel mintaqaman"); /// parallell buyrug’i
}
/* ketma-ket kod */
return 0;
}
OpenMP texnologiyasining versiyalari
№
Versiya
Til
Ishlab chiqarilish
sanasi
1
OpenMP 4.5
C/C++/Fortran
2015-11-01
2
OpenMP 4.0
C/C++/Fortran
2013-07-01
3
OpenMP 3.1
C/C++/Fortran
2011-07-01
4
OpenMP 3.0
C/C++/Fortran
2008-05-01
5
OpenMP 2.5
C/C++/Fortran
2005-05-01
6
OpenMP 2.0c
C/C++
2002-03-01
7
OpenMP 2.0f
Fortran
2000-11-01
8
OpenMP 1,0c
C/C++
1998-10-01
9
OpenMP 1.0f
Fortran
1997-10-01
#include <iostream>
#include <omp.h>
using namespace std;
int main()
{
#pragma omp parallel for
int n;
cout<<"Massiv o'lchamini kiriting:";cin>>n;
int mass[n];
for(int i = 0; i < n; i++)
{
mass[i]=i+5;
cout<<mass[i]<<endl;
}
return 0;
}
Tizimda yadrolarni qayta ishlaydigan ko'plab oqimlarni yaratadi. Shunday qilib, ikki yadroli
tizim uchun ikkita oqim yaratiladi, to'rt yadroli tizim uchun to'rtta yaratiladi; va hokazo. Keyin
barcha oqimlar bir vaqtning o'zida parallel hududni bajaradi. Har bir oqim parallel hududdan
chiqqanda, u tugatiladi. OpenMP kod mintaqalarini parallel ravishda ishga tushirish uchun bir
nechta qo'shimcha ko'rsatmalar beradi, shu jumladan parallellashtirish tsikllari.
Parallellashtirish bo'yicha ko'rsatmalarni taqdim etishdan tashqari, OpenMP ishlab
chiquvchilarga parallelizmning bir nechta darajalaridan birini tanlash imkonini beradi.
Masalan, ular oqimlar sonini qo'lda belgilashlari mumkin. Bundan tashqari, u ishlab
chiquvchilarga ma'lumotlar oqimlar o'rtasida almashilganligini yoki oqim uchun shaxsiy
ekanligini aniqlash imkonini beradi. OpenMP Linux, Windows va Mac OS X tizimlari uchun
bir nechta ochiq manbali va tijorat kompilyatorlarida mavjud.
Скачать