#pragma omp atomic
Ushbu koʻrsatma, uning chap tomonidagi umumiy oʻzgaruvchi bilan toʻgʻri ishlashni kafolatlaydigan (ishlatiladigan konstruktsiyalar juda tushunarli cheklovlarga duchor boʻlgan) darhol keyingi tayinlash operatoriga tegishli. Operatorning bajarilish davomida ushbu oʻzgaruvchiga kirish amalni bajaruvchi ipdan tashqari barcha joriy iplar uchun bloklanadi. Faqat tayinlash operatorining chap tomonidagi oʻzgaruvchi bilan ishlash atomar hisoblanadi, oʻng tomondagi hisoblar esa atomar boʻlishi shart emas.
4-misol atomic direktivasidan foydalanishni koʻrsatadi. Ushbu misol, ochilgan oqimlarning umumiy sonini hisoblab chiqadi. Buning uchun har bir oqim count oʻzgaruvchisining qiymatini bittaga oshiradi. atomic direktivasi bir nechta oqimlarning bir vaqtning oʻzida belgilash operatorining chap tomonidagi oʻzgaruvchining qiymatini oʻzgartirishiga yoʻl qoʻymaslik uchun ishlatiladi.
4-misol. C tilida atomic direktivasi
#include
#include
int main(int argc, char *argv[])
{
int count = 0;
#pragma omp parallel
{
#pragma omp atomic
count++;
}
printf("Oqimlar soni: %d\n", count);
}
16-ma’ruza. Sodda parallel algoritmlar 16.1. Matritsa-vektorni koʻpaytirishning parallel usullari
Matritsalar va matritsalar operatsiyalari turli xil jarayonlar, hodisalar va tizimlarni matematik modellashtirishda keng qoʻllaniladi. Matritsali hisoblar koʻplab ilmiy va muhandislik hisob-kitoblarining asosini tashkil qiladi - hisoblash matematikasi, fizika, iqtisod va boshqalarni qoʻllash sohalari orasida koʻrsatish mumkin.
Matritsali hisob-kitoblarni samarali bajarish muhimligini hisobga olgan holda, koʻpgina standart dastur kutubxonalarida turli matritsa operatsiyalari uchun protseduralar mavjud. Matritsalarni qayta ishlash uchun dasturiy ta’minot hajmi doimiy ravishda oʻsib bormoqda - maxsus turdagi matritsalar uchun yangi tejamkor saqlash tuzilmalari ishlab chiqilmoqda, algoritmlarning turli xil yuqori samarali mashinaga bogʻliq amalga oshirilishi yaratilmoqda, nazariy tadqiqotlar matritsalarni hisoblashning tezroq usullarini topish uchun olib borilmoqda.
Hisoblash uchun koʻp vaqt talab qiladigan matritsali hisoblash parallel hisoblash uchun klassik qoʻllash sohasidir. Bir tomondan, yuqori unumdor multiprotsessorli tizimlardan foydalanish hal qilinayotgan vazifalarning murakkabligini sezilarli darajada oshirishi mumkin. Boshqa tomondan, matritsa operatsiyalari juda sodda tuzilganligi sababli, parallel dasturlashning koʻplab texnika va usullarini namoyish qilish uchun ajoyib imkoniyatdir.
Bu mavzuda matritsa-vektor koʻpaytirish amali uchun parallel hisoblash usullari koʻrib chiqiladi. Quyidagi materialni taqdim etishda biz koʻrib chiqilayotgan matritsalar zich, ya’ni ulardagi nol elementlarning soni matritsa elementlarining umumiy soniga nisbatan ahamiyatsiz deb hisoblaymiz.
Do'stlaringiz bilan baham: |