Direktivalar va funksiyalar. OpenMP funksiyalarining katta qismi kompilyator direktivalari yordamida amalga oshiriladi. Dasturning parallel ishlashiga ruxsat berish uchun ular foydalanuvchi tomonidan aniq kiritilishi kerak. C tilida #pragma omp bilan boshlanadigan preprotsessor koʻrsatmalari bilan boshlanadi. omp kalit soʻzi OpenMP direktiva nomlarining boshqa nomlar bilan tasodifiy mos kelishini oldini olish uchun ishlatiladi.
C / C++ da direktiv formati:
#pragma omp directive-name [opsiya[[,] opsiya]...]
Koʻpgina direktivlarning harakat obyekti dasturning dastlabki kodidagi direktiva oldidan bitta bayonot yoki blokdir. OpenMP-da bunday bayonotlar yoki bloklar direktiva bilan bogʻlangan (assotsiativ) deb ataladi. Bogʻlangan blokning boshida bitta kirish nuqtasi va oxirida bitta chiqish nuqtasi boʻlishi kerak. Direktiv tavsifidagi variantlar tartibi ahamiyatsiz, bitta direktivda koʻpchilik variantlar bir necha marta paydo boʻlishi mumkin. Ba’zi variantlardan keyin vergul bilan ajratilgan oʻzgaruvchilar roʻyxati kelishi mumkin.
Barcha OpenMP direktivalarini 3 toifaga boʻlish mumkin: parallel maydonni aniqlash, ishni taqsimlash, sinxronizatsiya. Har bir direktiva bir nechta qoʻshimcha atributlarga ega boʻlishi mumkin - opsiyalar (clause). Turli direktivalarning atributlari boʻlishi mumkin boʻlgan oʻzgaruvchilar sinflarini belgilash variantlari alohida koʻrsatilgan.
OpenMP ish vaqti kutubxonasi (ish vaqti) funksiyalaridan foydalanish uchun dasturga omp.h sarlavha faylini kiritish kerak. Agar siz ilovangizda faqat OpenMP direktivalaridan foydalansangiz, ushbu faylni kiritishingiz shart emas. Parametrlarni belgilash funksiyalari mos keladigan muhit oʻzgaruvchilardan ustundir.
OpenMP da ishlatiladigan barcha funksiyalar omp_ prefiksi bilan boshlanadi. Agar foydalanuvchi dasturda bunday prefiks bilan boshlangan nomlardan foydalanmasa, OpenMP obyektlari bilan hech qanday ziddiyat boʻlmaydi. C tilida, qoʻshimcha ravishda, funksiyalar nomlaridagi belgilarning holati muhim ahamiyatga ega. OpenMP funksiya nomlari kichik harflar bilan yoziladi.
Oddiy kompilyator uchun OpenMP funksiyalaridan foydalanadigan dastur toʻgʻri boʻlib qolishi uchun har bir funksiya uchun mos keladigan "stub"(“tiqin,qopqoq”) ni belgilaydigan maxsus kutubxona bogʻlanishi mumkin. Masalan, Intel kompilyatorida tegishli kutubxona –openmp-stub kalitini belgilash orqali ulanadi.
Do'stlaringiz bilan baham: |