Muallif : Rahmonov Shaxzod . murajaat uchun : telefon ishlatmaydi😂😂 7.04.2023
Mavzu: Oqimlarni sinxronizasiyalovchi direktivalar critical, avtomic, barrier.Ichki parallellik.
Critical directivasi – ushbu direktivadan keying hudud oqimlar o’rtasida ketma-ket bajariladi yani ushbu hududga faqatgina bittagina oqim kira oladi.Bu hudud bir oqim bajajarib bo’lingandan so’ng ikkinchi oqim bu hududga kira oladi.Direktiva quyidagicha kurinishda buladi: #pragma omp critical [(name)]. Bu yerda name critic hudud nomi va bu parametrni ishlatish ixtiyoriy. Mutexga uxshab ishlaydi.
Barrier -direktivasi. Barrier direktivasini parallel hudud Ichida qullash orqali barcha oqimlarni o’z ishini bajarishini kuttiriladi. Direktiva quyidagi tarzda yoziladi : #pragma omp barrier. Bu direktiva optsiyalarni qo’llab quvvatlamaydi.
Atomic – direktivasi. Atomar operatsiya : umumiy bulgan o’zgaruvchiga bir vaqtning uzida murajaatni cheklagan xolda bu uzgaruvchi bilan turli xil amallar bajarish atomar operatsiya deyiladi. Atomar bulmagan operatsiyalar poyga xodisasiga olib keladi bu esa turli xil xatoliklarga olib keladi. Uzgaruvhi bilan atomar operatsiyani amalga oshirish uchun atomic direktivasidan orqali amalga oshiriladi. Atomic hudud ichidagi biror bir ifodaning chap tomonidagi uzgaruvchiga murojaat navbatma-navbat buladi. Bu esa xatoliklarni oldini oladi.
Ichki parallellik. Jimlik buyicha ichki parallelik uchiq buladi. Ichki parallellikni yoqish uchun omp_set_nested(int nested) funksiyasidan foydalanamiz. Funksiya parametriga no’l qiymat berish orqali ichki parallelik uchiriladi, nuldan farqli bulgan qiymat berish orqali (odatda 1) ichki paralelik yoqiladi. Ichki parallelik yoqilgan xolatda parallel hudud Ichida yana bir parallel hudud xosil qilinsa bu hududagi vazifalarni birinchi parallel hududda yaratilgan oqimlar yaratgan oqimlar bajaradi. Birinchi parallel hududagi oqimlar ikkinchi parellel hudud ichida master(asosiy) oqimga aylanadi.
Ichki parallelik yoqilgan yoki yoqilmaganligini omp_get_nested() funksiyasi orqali aniqlaymiz. Bu funskiya butun tipdagi qiymat qaytaradi, agar 0 qiymat qaytarsa ichki parallelik uchiq, 1 qiymat qaytarsa yoniqligini bildiradi.
omp_in_parallel() funksiyasi. Ko’rinish sohasi: int omp_in_parallel(void) bu funksiya butun tipdagi qiymat qaytaradi. Bu funksiyani parallel hudud Ichida ishatilsa 1 qiymat qaytaradi, ketma ket hududda ishlatilsa 0 qiymat qaytaradi.bundan kelib chiqadiku bu funksiya orqali malum bir vazifalarni qaysi hududda bajararilayotganligini bilish mumkin.