8. openmp asosida parallel dasturlash
Download 48,95 Kb.
|
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.cifc –openmp prog.fUmumiy 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling