8. openmp asosida parallel dasturlash


Download 48.95 Kb.
bet1/14
Sana19.04.2023
Hajmi48.95 Kb.
#1365571
  1   2   3   4   5   6   7   8   9   ...   14
Bog'liq
openmself


8. OPENMP ASOSIDA PARALLEL DASTURLASH

8.1. OpenMP ga kirish


OpenMP - umumiy xotiraga ega tizimlar uchun parallel dasturlarni yozish mexanizmi. Kompilyator direktivalari va kutubxona funktsiyalari to'plamidan iborat. C / C ++, Fortran tillarida ko'p tarmoqli ilovalarni osongina yaratishga imkon beradi. Uskuna ishlab chiqaruvchilari (Intel, HP, SGI, Sun, IBM), kompilyator ishlab chiquvchilari (Intel, Microsoft, KAI, PGI, PSR, APR, Absoft) tomonidan qo'llab-quvvatlanadi.
OpenMP dasturlash modelida asosiy ish zarrachalari kerak bo'lganda bola iplarini hosil qiladi. Fork-join modelida dasturlash dasturning manba kodining asosiy joylariga kompilyator direktivalarini kiritish orqali amalga oshiriladi. Kompilyator ushbu direktivalarni sharhlaydi va kod bo'limlarini parallellashtirish uchun dasturning tegishli joylariga kutubxona qo'ng'iroqlarini kiritadi. Masalan:
Ketma-ketlikdagi kod:
void main()
{
double[1000];
for(i=0; i<1000; i++)
{
calc smth(&x[i]);
}}
Parallel kod:
void main()( double x[1000];
#pragma omp parallel for ... for(i=0; i<1000; i++){
calc smth(&x[i]);
}
}
#pragma omp parallel for bu qismi berilgan siklni iplar orasidagi iteratsiyalarga bo'lish kerakligini ko'rsatadi.
Tarmoqlar sonini dasturdan yoki dasturning ish vaqti muhiti o'zgaruvchisi orqali boshqarish mumkin
OMP_NUM_THREADS.
Shuni ta'kidlash kerakki, ishlab chiquvchi ip sinxronizatsiyasi va ma'lumotlarga bog'liqlik uchun javobgardir. OpenMP-ni qo'llab-quvvatlaydigan dasturni kompilyatsiya qilish uchun kompilyator qo'shimcha kalitni ko'rsatishi kerak:

icc –openmp prog.c

ifc –openmp prog.f


Umumiy xotira modelida iplar umumiy o'zgaruvchilar orqali o'zaro ta'sir qiladi. Dasturda bunday o'zgaruvchilar bilan noto'g'ri ishlash raqobat xatolar (race condition) iga olib kelishi mumkin. Buning sababi shundaki, iplar parallel ravishda bajariladi va shunga mos ravishda umumiy o'zgaruvchilarga kirish ketma-ketligi bir dasturni ishga tushirishdan boshqasiga farq qilishi mumkin.
Raqobat xatolarini nazorat qilish uchun iplarning ishi sinxronlashtirilishi kerak. Buning uchun muhim bo'limlar, to'siqlar, atom operatsiyalari va qulflar kabi sinxronizatsiya primitivlari qo'llaniladi. Shuni ta'kidlash kerakki, sinxronizatsiya dasturdan qo'shimcha xarajatlarni talab qilishi mumkin va ma'lumotlarni sinxronizatsiya nuqtalari soni minimallashtiriladigan tarzda o'ylash va tarqatish yaxshiroqdir.
Sintaksis. Asosan, OpenMP konstruksiyalari kompilyator direktivalaridir.C/C++ uchun direktivalar quyidagicha:

Download 48.95 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7   8   9   ...   14




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