|
OpenMP texnologiyasining versiyalari
|
bet | 2/3 | Sana | 17.12.2023 | Hajmi | 182,62 Kb. | | #121856 |
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
#include
int main (int argc, char *argv[])
{
#pragma omp parallel
{
printf ("Hello world! I'm thread %d out of %d threads.\n",
omp_get_thread_num(), omp_get_num_threads());
}
return 0;
}
#pragma omp parallel
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.
OpenMP - umumiy xotira qurilmalarida dasturlash usuli. Bu shuni anglatadiki, parallelizm har bir parallel oqim barcha ma'lumotlaringizga kirish huquqiga ega bo'lgan joyda sodir bo'ladi.
1-rasm. Parallell ishlash jarayoni
OpenMP da biz #pragma omp parallel kalit so'zidan foydalanib, biz uni parallel qiladigan mintaqani eslatib o'tishimiz kerak. #pragma omp parallel parallelga o'ralgan ishni bajarish uchun qo'shimcha oqimlar uchun ishlatiladi. Parallel mintaqa yaratish uchun kod:
#pragma omp parallel
{
//Parallel mintaqa kodi
}
Ya’ni yuqorida ko’rsatilgan //Parallel mintaqa kodi ni o’rnniga biz quyidagi kodni yozamiz.
#pragma omp parallel
{
printf("Salom dunyo... mavzudan = %d\n",
omp_get_thread_num());
}
Yuqorida keltrilgan 1-rasmga ko'ra, kompilyator parallel mintaqalar kodiga duch kelganidan so'ng, asosiy TID = 0 (identifikatori 0 ga ega bo'lgan oqim ) ko'rsatilgan oqimlar soniga bog'lanadi. Bu yerda u 5 ta oqimga bo'linadi, chunki OMP_NUM_THREADS=5 buyrug'i yordamida bajariladigan oqimlar sonini 5 deb ishga tushiramiz. Parallel mintaqadagi butun kod bir vaqtning o'zida barcha oqimlar tomonidan bajariladi. Parallel hudud tugagach, barcha oqimlar asosiy (TID = 0) oqimga birlashtiriladi.
#include
int main(int argc, char* argv[])
{
// ketma-ketlik dastur kodlari
#pragma omp parallel { //parallellashtrishning boshlanishi
printf("Hello World... from thread = %d\n",
omp_get_thread_num());
}
// parallellashtrishning tugashi
}
|
| |