|
Dasturlash uslublari va paradigmalar
|
bet | 27/30 | Sana | 26.01.2024 | Hajmi | 0,97 Mb. | | #146384 |
Bog'liq PARADIGMA YN37- Parallel dasturlash.
Parallel dasturlash - bu muammoni tezroq hal qilish uchun bir nechta vazifalar yoki jarayonlarni bir vaqtning o'zida bajarishni o'z ichiga olgan dasturlash paradigmasi. Maqsad murakkab hisoblashni bir vaqtning o'zida bajarilishi mumkin bo'lgan kichikroq, boshqariladigan qismlarga bo'lishdir. Bu ish faoliyatini yaxshilashga olib kelishi mumkin, chunki bir nechta protsessorlar yoki yadrolar birgalikda muammoni bitta protsessorga qaraganda kamroq vaqt ichida hal qilish uchun ishlaydi.
Parallel dasturlashning asosiy tushunchalari va jihatlari:
Parallellik: tezroq natijalarga erishish uchun bir nechta vazifalarni bir vaqtning o'zida bajarishni o'z ichiga oladi. Bu, birinchi navbatda, hisoblashni tezlashtirish bilan bog'liq. Bir vaqtning o'zida bir nechta vazifalarni bajarishni o'z ichiga oladi. Bu ko'proq bir nechta vazifalarni boshqarish va ularning o'zaro ta'siri bilan bog'liq.
Parallelizm turlari:
Vazifalarning parallelligi: dasturni mustaqil ravishda bajarilishi mumkin bo'lgan kichikroq vazifalarga bo'linishni o'z ichiga oladi. Keyin har bir vazifa boshqa protsessor yoki yadroga tayinlanadi.
Ma'lumotlar parallelligi: ma'lumotlarni kichikroq bo'laklarga bo'lish va bir vaqtning o'zida ushbu qismlarga ishlov berishni o'z ichiga oladi. Bunga ko'pincha parallel halqalardan foydalanish orqali erishiladi.
Parallel hisoblash modellari:
Umumiy xotira parallelligi: Bir nechta protsessorlar umumiy manzil maydonini baham ko'radi, bu ularga umumiy o'zgaruvchilar va ma'lumotlar tuzilmalariga bevosita kirish imkonini beradi.
Taqsimlangan xotira parallelligi: Har bir protsessor o'zining shaxsiy xotirasiga ega va protsessorlar o'rtasidagi aloqa xabarlarni uzatish orqali amalga oshiriladi.
Parallel dasturlash paradigmalari:
Ko'p ish zarralari: dasturni iplarga bo'linishni o'z ichiga oladi, bunda har bir ip mustaqil bajarilish ketma-ketligini ifodalaydi. Mavzular bir xil xotira maydonini bo'lishib, bir xil jarayon ichida bir vaqtning o'zida ishlashi mumkin.
Xabarni uzatish: aniq xabar uzatish orqali alohida jarayonlar o'rtasidagi aloqani o'z ichiga oladi. Jarayonlar klasterdagi turli protsessorlar yoki tugunlarda ishlashi mumkin.
Parallel dasturlash tillari:
OpenMP: C, C++ va Fortran tillarida umumiy xotira parallel dasturlash uchun kompilyator direktivalari va kutubxona tartiblari toʻplami.
MPI (Message Passing Interface): Ko'pincha taqsimlangan xotira parallel dasturlashda foydalaniladigan xabarlarni o'tkazish kutubxonalari uchun standart.
CUDA (Compute Unified Device Architecture): NVIDIA tomonidan GPUlar uchun ishlab chiqilgan parallel hisoblash platformasi va dasturlash modeli.
Parallel dasturlashdagi qiyinchiliklar:
Bir vaqtning o'zida bir nechta mavzular yoki jarayonlar umumiy ma'lumotlarga kirishda va ulardan kamida bittasi ma'lumotlarni o'zgartirganda.
O'chirishlar: Ikki yoki undan ortiq jarayon davom eta olmaganida yuzaga keladi, chunki har biri ikkinchisi resursni chiqarishni kutmoqda.
Yukni muvozanatlash: samaradorlikni oshirish uchun ish yukining barcha protsessorlar o'rtasida teng taqsimlanishini ta'minlash.
Parallel apparat arxitekturasi:
Simmetrik ko'p ishlov berish (SMP): Bir nechta protsessorlar umumiy xotiraga ega va bitta avtobusga ulangan.
Klaster hisoblash: Bir nechta mustaqil kompyuterlar (tugunlar) muammoni hal qilish uchun tarmoqda birgalikda ishlaydi.
GPU tezlashuvi: Parallel hisob-kitoblarni amalga oshirish uchun grafik ishlov berish birliklaridan (GPU) foydalanish, ayniqsa mashinani o'rganish kabi vazifalarda.
Asboblar va kutubxonalar (Tools and Libraries):
Intel Threading Building Blocks (TBB), OpenACC va boshqalar kabi turli xil vositalar va kutubxonalar parallel dasturlashda yordam beradi.
Samarali parallel dasturlash asosiy apparat arxitekturasini chuqur tushunishni, parallel vazifalarni sinchkovlik bilan sinxronlashtirishni va ma'lumotlarga bog'liqlik va aloqani samarali boshqarish qobiliyatini talab qiladi.
|
| |