Mavzu: Parallel jarayonlarni tashkil etish
Parallel hisoblash - Parallel computing
"Parallelization" bu erga yo'naltiradi. Manifoldlarni parallellashtirish uchun qarang Parallelizatsiya (matematika).
IBM kompaniyalari Moviy gen / P. katta darajada parallel superkompyuter
Parallel hisoblash ning bir turi hisoblash bu erda ko'plab hisob-kitoblar yoki bajarilish jarayonlar bir vaqtning o'zida amalga oshiriladi.[1] Katta muammolarni ko'pincha kichikroq muammolarga bo'lish mumkin, keyinchalik ularni bir vaqtning o'zida hal qilish mumkin. Parallel hisoblashning bir necha xil shakllari mavjud: bit darajali, ko'rsatma darajasi, ma'lumotlarva vazifa parallelligi. Parallelizm uzoq vaqtdan beri ishlatilgan yuqori samarali hisoblash, ammo jismoniy cheklovlarning oldini olish tufayli keng qiziqish uyg'otdi chastota miqyosi.[2] So'nggi yillarda kompyuterlar tomonidan elektr energiyasini iste'mol qilish (va natijada issiqlik ishlab chiqarish) tashvishga solmoqda.[3] parallel hisoblash inverktiv paradigma bo'ldi kompyuter arxitekturasishaklida, asosan ko'p yadroli protsessorlar.
Parallel hisoblash bilan chambarchas bog'liq bir vaqtda hisoblash- ular tez-tez birgalikda ishlatiladi va ko'pincha bir-biriga qarama-qarshi bo'lib turadi, garchi ikkalasi bir-biridan farq qiladi: bir-biriga o'xshashliksiz parallellik bo'lishi mumkin (masalan, bit darajasidagi parallellik) va parallelliksiz bir vaqtda (masalan, tomonidan ko'p vazifalarni bajarish kabi) vaqtni taqsimlash bitta yadroli protsessorda).[5][6] Parallel hisoblashda hisoblash vazifasi odatda mustaqil ravishda qayta ishlanishi mumkin bo'lgan va natijalari tugagandan so'ng birlashtiriladigan bir nechta, ko'pincha juda o'xshash kichik vazifalarga bo'linadi. Aksincha, bir vaqtda hisoblashda turli jarayonlar ko'pincha tegishli vazifalarni hal qilmaydi; ular qilganda, odatdagidek tarqatilgan hisoblash, alohida vazifalar har xil xarakterga ega bo'lishi mumkin va ko'pincha ba'zi birlarini talab qiladi jarayonlararo aloqa ijro paytida.
Parallel kompyuterlar, taxminan, apparatlarning parallellikni qo'llab-quvvatlash darajasiga qarab tasniflanishi mumkin ko'p yadroli va ko'p protsessor bir nechta kompyuterlar ishlov berish elementlari bitta mashina ichida esa klasterlar, MPPlarva panjara bitta topshiriq ustida ishlash uchun bir nechta kompyuterlardan foydalaning. Ixtisoslashgan parallel kompyuter arxitekturalari ba'zida an'anaviy vazifalarni tezlashtirish uchun an'anaviy protsessorlar bilan birga qo'llaniladi.
Ba'zi hollarda parallellik dasturchi uchun shaffof, masalan, bit darajasida yoki buyruq darajasidagi parallellikda, ammo aniq parallel algoritmlar, ayniqsa, paralellikdan foydalanadiganlarni yozishdan ko'ra qiyinroq ketma-ket birlari,[7] chunki bir xillik potentsialning bir nechta yangi sinflarini taqdim etadi dasturiy ta'minotdagi xatolar, ulardan poyga shartlari eng keng tarqalgan. Aloqa va sinxronizatsiya turli xil kichik topshiriqlar orasida, odatda, dasturning optimal parallel ishlashini ta'minlash uchun eng katta to'siqlar mavjud.
Fon
An'anaga ko'ra, kompyuter dasturlari uchun yozilgan ketma-ket hisoblash. Muammoni hal qilish uchun algoritm ko'rsatmalarning ketma-ket oqimi sifatida qurilgan va amalga oshirilgan. Ushbu ko'rsatmalar a-da bajariladi markaziy protsessor bitta kompyuterda. Bir vaqtning o'zida faqat bitta ko'rsatma bajarilishi mumkin - bu buyruq tugagandan so'ng keyingisi bajariladi.[8]
Parallel hisoblash, boshqa tomondan, muammoni hal qilish uchun bir vaqtning o'zida bir nechta ishlov berish elementlaridan foydalanadi. Bunga har bir ishlov berish elementi boshqalar bilan bir vaqtda algoritmning bir qismini bajarishi uchun muammoni mustaqil qismlarga ajratish orqali erishiladi. Qayta ishlash elementlari xilma-xil bo'lishi mumkin va bir nechta protsessorlarga ega bo'lgan bitta kompyuter, bir nechta tarmoq kompyuterlari, ixtisoslashtirilgan qo'shimcha qurilmalar yoki yuqoridagi har qanday kombinatsiya kabi manbalarni o'z ichiga oladi.[8] Tarixiy parallel hisoblash ilmiy hisoblash va ilmiy muammolarni simulyatsiya qilish uchun ishlatilgan, ayniqsa tabiiy va muhandislik fanlari, masalan. meteorologiya. Bu parallel apparat va dasturiy ta'minotni loyihalashtirishga olib keldi, shuningdek yuqori samarali hisoblash.[9]
Chastotani o'lchash yaxshilanishining ustun sababi edi kompyuterning ishlashi 1980 yillarning o'rtalaridan 2004 yilgacha ish vaqti dasturning bir buyruq uchun o'rtacha vaqtga ko'paytirilgan ko'rsatmalar soniga teng. Har bir narsani doimiy ravishda ushlab turish, soat chastotasini ko'paytirish ko'rsatmani bajarish uchun o'rtacha vaqtni pasaytiradi. Shunday qilib chastotaning ko'payishi hamma uchun ish vaqtini pasaytiradi hisoblash bilan bog'langan dasturlar.[10] Biroq, quvvat sarfi P chip tomonidan tenglama bilan berilgan P = C × V 2 × F, qayerda C bo'ladi sig'im soat tsikliga o'tish (kirishlari o'zgaradigan tranzistorlar soniga mutanosib), V bu Kuchlanishva F protsessor chastotasi (sekundiga tsikllar).[11] Chastotaning ko'payishi protsessorda ishlatiladigan quvvat hajmini oshiradi. Protsessorning quvvat sarfini oshirish oxir-oqibat bunga olib keldi Intel2004 yil 8 mayda uning bekor qilinishi Tejas va Jayxavk protsessorlar, bu odatda dominant kompyuter arxitekturasi paradigmasi sifatida chastota masshtabining oxiri sifatida keltirilgan.[12]
Elektr energiyasini iste'mol qilish va katta qizib ketish muammosini hal qilish markaziy protsessor (CPU yoki protsessor) ishlab chiqaruvchilar bir nechta yadroli energiya tejaydigan protsessorlarni ishlab chiqarishni boshladilar. Yadro protsessorning hisoblash birligidir va ko'p yadroli protsessorlarda har bir yadro mustaqil bo'lib, bir vaqtning o'zida bir xil xotiraga kira oladi. Ko'p yadroli protsessorlar ga parallel hisoblash olib keldi ish stoli kompyuterlar. Shunday qilib, ketma-ket dasturlarni parallellashtirish asosiy dasturlash vazifasiga aylandi. 2012 yilda to'rt yadroli protsessorlar standart bo'ldi ish stoli kompyuterlar, esa serverlar 10 va 12 yadroli protsessorlarga ega. Kimdan Mur qonuni har 18-24 oyda bir protsessor uchun yadrolar soni ikki baravar ko'payishini taxmin qilish mumkin. Bu 2020 yildan keyin odatdagi protsessor o'nlab yoki yuzlab yadrolarga ega bo'lishini anglatishi mumkin.[13]
An operatsion tizim mavjud bo'lgan yadrolarda turli xil vazifalar va foydalanuvchi dasturlarining parallel ravishda bajarilishini ta'minlashi mumkin. Biroq, ketma-ket dasturiy ta'minot dasturi ko'p yadroli arxitekturadan to'liq foydalanishi uchun dasturchi kodni qayta tuzishi va parallel qilishi kerak. Ilova dasturiy ta'minotining ishlash vaqtini tezlashtirish endi chastotalarni kattalashtirish orqali amalga oshirilmaydi, aksincha dasturchilar ko'p yadroli arxitekturalarning hisoblash quvvatining ortib borishi uchun o'zlarining dasturiy ta'minot kodlarini parallellashtirishlari kerak.[14]
Amdahl qonuni va Gustafson qonuni
Ning grafik tasviri Amdahl qonuni. Parallellashtirishdan dasturning tezlashishi dasturning qanchasini parallel qilish bilan cheklanadi. Masalan, agar dasturning 90 foizini parallellashtirish mumkin bo'lsa, qancha hisoblash protsessoridan qat'i nazar, parallel hisoblash yordamida nazariy maksimal tezlashtirish 10 baravar ko'p bo'ladi.
Vazifaning ikkita mustaqil qismi bor deb taxmin qiling, A va B. Qism B butun hisoblash vaqtining taxminan 25% ni oladi. Juda qattiq ishlash orqali, kimdir ushbu qismni 5 barobar tezroq bajarishi mumkin, ammo bu butun hisoblash uchun vaqtni biroz qisqartiradi. Aksincha, qismni bajarish uchun kamroq ish qilish kerak bo'lishi mumkin A ikki baravar tezroq bo'ling. Bu qismni optimallashtirishga qaraganda hisoblashni ancha tezlashtiradi Bqisman bo'lsa ham B 's tezligi nisbati bo'yicha kattaroq (5 marta 2 marta).
Optimal ravishda tezlikni oshirmoq parallellashtirishdan chiziqli bo'ladi - ishlov berish elementlari sonini ikki baravar ko'paytirish ish vaqtini, ikkinchi marta ikki baravar oshirish ish vaqtini yana qisqartirishi kerak. Biroq, juda kam parallel algoritmlar optimal tezlikni ta'minlaydi. Ularning ko'pchiligida oz sonli ishlov berish elementlari uchun chiziqli tezlashuv mavjud bo'lib, ular ko'p sonli ishlov berish elementlari uchun doimiy qiymatga tenglashadi.
Parallel hisoblash platformasida algoritmning potentsial tezlashishi quyidagicha berilgan Amdahl qonuni[15]
qayerda
Skechikish salohiyat tezlikni oshirmoq yilda kechikish butun vazifani bajarish;
s vazifaning parallel qismining bajarilishining kechikishidagi tezlashtirish;
p bu butun topshiriqni bajarish vaqtining vazifaning parallel qismiga nisbatan foizidir parallellashtirishdan oldin.
Beri Skechikish < 1/(1 - p), bu shuni ko'rsatadiki, dasturning parallashtirilishi mumkin bo'lmagan kichik bir qismi parallellashtirishda mavjud bo'lgan umumiy tezlikni cheklaydi. Katta matematik yoki muhandislik muammosini echadigan dastur odatda bir nechta parallel va bir nechta parallel bo'lmagan (ketma-ket) qismlardan iborat bo'ladi. Agar dasturning parallel bo'lmagan qismi ish vaqtining 10 foizini tashkil etsa (p = 0.9), qancha protsessor qo'shilishidan qat'i nazar, biz 10 martadan ko'p bo'lmagan tezlikni olamiz. Bu ko'proq parallel ijro birliklarini qo'shish foydaliligiga yuqori chegarani qo'yadi. "Agar ketma-ket cheklovlar tufayli vazifani taqsimlab bo'lmaydigan bo'lsa, ko'proq kuch sarflash jadvalga ta'sir qilmaydi. Bolani tug'ilishi, qancha ayol tayinlanganiga qaramay, to'qqiz oy davom etadi."[16]
Ning grafik tasviri Gustafson qonuni
Amdahl qonuni faqat muammo kattaligi aniqlangan hollarda qo'llaniladi. Amalda, ko'proq hisoblash resurslari mavjud bo'lganda, ular katta muammolarga (katta ma'lumotlar to'plamlariga) o'rganishga moyil bo'ladilar va parallel ravishda sarflanadigan vaqt odatda seriyali ishlarga qaraganda ancha tez o'sadi.[17] Ushbu holatda, Gustafson qonuni parallel ishlashni kamroq pessimistik va aniqroq baholaydi:[18]
Amdahl qonuni ham, Gustafson qonuni ham dasturning ketma-ket qismining ishlash vaqti protsessorlar soniga bog'liq emas deb hisoblaydi. Amdahl qonuni barcha muammoni aniq o'lchamda bo'lishini nazarda tutadi, shuning uchun parallel ravishda bajariladigan ishlarning umumiy miqdori ham protsessorlar sonidan mustaqil, Gustafson qonunida esa bajariladigan ishlarning umumiy miqdori parallel ravishda amalga oshiriladi protsessorlar soniga qarab chiziqli ravishda o'zgaradi.
Bog'liqliklar
Tushunish ma'lumotlar bog'liqliklari amalga oshirishda muhim ahamiyatga ega parallel algoritmlar. Hech bir dastur qaram hisob-kitoblarning eng uzun zanjiridan tezroq ishlay olmaydi ( tanqidiy yo'l), chunki zanjirdagi oldingi hisob-kitoblarga bog'liq hisob-kitoblar tartibda bajarilishi kerak. Biroq, aksariyat algoritmlar faqat qaram hisob-kitoblarning uzoq zanjiridan iborat emas; parallel ravishda mustaqil hisob-kitoblarni amalga oshirish uchun odatda imkoniyatlar mavjud.
Ruxsat bering Pmen va Pj ikkita dastur segmenti bo'ling. Bernshteynning shartlari[19] ikkalasi mustaqil bo'lgan va parallel ravishda bajarilishi mumkin bo'lgan vaqtni tasvirlang. Uchun Pmen, ruxsat bering Menmen barcha kiritilgan o'zgaruvchilar bo'lishi va Omen chiqish o'zgaruvchilari va shunga o'xshash Pj. Pmen va Pj agar ular qoniqtirsalar mustaqil
Birinchi shartning buzilishi oqimga bog'liqlikni keltirib chiqaradi, ikkinchi segment tomonidan qo'llaniladigan natijani beradigan birinchi segmentga mos keladi. Ikkinchi shart, ikkinchi segment birinchi segmentga kerak bo'lgan o'zgaruvchini hosil qilganda, qaramlikka qarshilikni anglatadi. Uchinchi va yakuniy shart chiqishga bog'liqlikni anglatadi: ikkita segment bir joyga yozganda, natija mantiqan oxirgi bajarilgan segmentdan kelib chiqadi.[20]
Bir necha turdagi bog'liqliklarni ko'rsatadigan quyidagi funktsiyalarni ko'rib chiqing:
1: funktsiya Dep (a, b) 2: c: = a * b3: d: = 3 * c4: yakuniy funktsiya
Ushbu misolda 3 buyrug'i 2 buyrug'idan oldin (yoki hatto unga parallel ravishda) bajarilishi mumkin emas, chunki 3 buyrug'i 2 buyrug'ining natijasidan foydalanadi. Bu 1 shartni buzadi va shu bilan oqimga bog'liqlikni keltirib chiqaradi.
1: funktsiya NoDep (a, b) 2: c: = a * b3: d: = 3 * b4: e: = a + b5: end funktsiyasi
Ushbu misolda ko'rsatmalar o'rtasida bog'liqliklar mavjud emas, shuning uchun ularning hammasi parallel ravishda bajarilishi mumkin.
Bernshteynning shartlari xotirani turli jarayonlar o'rtasida bo'lishishga imkon bermaydi. Buning uchun kirishlar o'rtasida buyurtmani bajarishning ba'zi vositalari zarur, masalan semaforalar, to'siqlar yoki boshqasi sinxronizatsiya usuli.
Musobaqa shartlari, o'zaro chiqarib tashlash, sinxronizatsiya va parallel sekinlashuv
Parallel dasturdagi kichik topshiriqlar ko'pincha chaqiriladi iplar. Ba'zi parallel kompyuter arxitekturalari deb nomlanuvchi iplarning kichikroq, engil versiyalaridan foydalaniladi tolalar, boshqalar esa ma'lum bo'lgan katta versiyalardan foydalanadilar jarayonlar. Biroq, "iplar" odatda subtasks uchun umumiy atama sifatida qabul qilinadi.[21] Tez-tez iplar kerak bo'ladi sinxronlashtirildi ga kirish ob'ekt yoki boshqa manba, masalan, qachon ular yangilanishi kerak o'zgaruvchan bu ular o'rtasida taqsimlanadi. Sinxronizatsiya qilinmasdan, ikkita ip orasidagi ko'rsatmalar har qanday tartibda o'zaro bog'lanishi mumkin. Masalan, quyidagi dasturni ko'rib chiqing:
Ip A B mavzu
1A: V o'zgaruvchini o'qing 1B: V o'zgaruvchini o'qing
2A: V o'zgaruvchiga 1 qo'shing 2B: V o'zgaruvchiga 1 qo'shing
3A: V o'zgaruvchiga qaytadan yozing 3B: V o'zgaruvchiga qaytadan yozing
Agar 1B buyrug'i 1A va 3A oralig'ida bajarilsa yoki 1A buyrug'i 1B va 3B orasida bajarilsa, dastur noto'g'ri ma'lumotlar hosil qiladi. Bu a sifatida tanilgan poyga holati. Dasturchi a dan foydalanishi kerak qulflash ta'minlash uchun o'zaro chiqarib tashlash. Qulf bu dasturlash tili konstruktsiyasidir, bu bitta o'zgaruvchiga o'zgaruvchini boshqarish va shu qator o'zgaruvchisi ochilmaguncha boshqa oqimlarning uni o'qish yoki yozishdan saqlanishiga imkon beradi. Qulfni ushlab turgan ip uni bajarishi mumkin muhim bo'lim (ba'zi bir o'zgaruvchiga eksklyuziv kirishni talab qiladigan dastur bo'limi) va tugagandan so'ng ma'lumotlarni qulfdan chiqarish. Shuning uchun dasturning to'g'ri bajarilishini kafolatlash uchun yuqoridagi dastur qulflardan foydalanish uchun qayta yozilishi mumkin:
Ip A B mavzu
1A: V o'zgaruvchini qulflash 1B: V o'zgaruvchini qulflash
2A: V o'zgaruvchini o'qing 2B: V o'zgaruvchini o'qing
3A: V o'zgaruvchiga 1 qo'shing 3B: V o'zgaruvchiga 1 qo'shing
4A: V o'zgaruvchiga qaytadan yozing 4B: V o'zgaruvchiga qaytadan yozing
5A: V o'zgaruvchining qulfini oching 5B: V o'zgaruvchining qulfini oching
Bitta ip V o'zgaruvchini muvaffaqiyatli bloklaydi, ikkinchisi esa shunday bo'ladi qulflangan- V qayta ochilguncha davom etish mumkin emas. Bu dasturning to'g'ri bajarilishini kafolatlaydi. Qatorlar manbalarga kirishni ketma-ketlashtirish kerak bo'lganda dasturning to'g'ri bajarilishini ta'minlash uchun qulflar kerak bo'lishi mumkin, ammo ulardan foydalanish dasturni juda sekinlashtirishi va ta'sir qilishi mumkin ishonchlilik.[22]
Yordamida bir nechta o'zgaruvchini blokirovka qilish atom bo'lmagan qulflar dasturning imkoniyatlarini taqdim etadi boshi berk. An atom qulfi bir vaqtning o'zida bir nechta o'zgaruvchini qulflaydi. Agar ularning hammasini qulflay olmasa, ularning hech birini qulflamaydi. Agar har ikkala ip bir xil ikkita o'zgaruvchini atom bo'lmagan qulflar yordamida qulflashi kerak bo'lsa, ehtimol bitta ip ulardan birini, ikkinchisi esa ikkinchi o'zgaruvchini blokirovka qilishi mumkin. Bunday holatda, har ikkala ip ham tugallanmaydi va natijada blokirovkaga olib keladi.[23]
Ko'pgina parallel dasturlar ularning pastki topshiriqlarini bajarishni talab qiladi sinxronlikda harakat qilish. Buning uchun a dan foydalanish kerak to'siq. To'siqlar odatda qulf yoki a yordamida amalga oshiriladi semafora.[24] Deb nomlanuvchi algoritmlarning bir klassi qulfsiz va kutishsiz algoritmlar, qulflar va to'siqlardan foydalanishni butunlay oldini oladi. Biroq, ushbu yondashuvni amalga oshirish umuman qiyin va to'g'ri ishlab chiqilgan ma'lumotlar tuzilmalarini talab qiladi.[25]
Hamma parallellik ham tezlikni keltirib chiqarmaydi. Umuman olganda, vazifa tobora ko'proq yo'nalishlarga bo'linib ketganligi sababli, ushbu mavzular o'zlarining vaqtining tobora ko'payib boradigan qismini bir-biri bilan muloqot qilish yoki resurslardan foydalanish uchun bir-birlarini kutish bilan o'tkazadilar.[26][27] Resurs qarama-qarshiligi yoki aloqa xarajatlari boshqa hisob-kitoblarga sarflanadigan vaqtni ustun qilgandan so'ng, yana parallellashtirish (ya'ni ish hajmini ko'proq iplarga bo'lish) tugatish uchun zarur bo'lgan vaqtni qisqartirish o'rniga kuchayadi. Sifatida tanilgan ushbu muammo parallel sekinlashuv,[28] ba'zi hollarda dasturiy ta'minotni tahlil qilish va qayta ishlash orqali yaxshilanishi mumkin.[29]
Nozik taneli, qo'pol donali va uyatli parallellik
Ilovalar ko'pincha ularning pastki topshiriqlari bir-birlari bilan sinxronlashi yoki aloqa qilishi zarurligiga qarab tasniflanadi. Ilova nozik paralellikni namoyish etadi, agar uning pastki vazifalari soniyada ko'p marta aloqa qilishlari kerak bo'lsa; u soniyada bir necha marta aloqa qilmasa, qo'pol tanazzulni namoyish etadi va namoyish etadi uyatli parallellik agar ular kamdan-kam hollarda yoki hech qachon muloqot qilishlari shart bo'lmasa. Sharmandali ravishda parallel dasturlarni parallellashtirish eng oson deb hisoblanadi.
Muvofiqlik modellari
Asosiy maqola: Muvofiqlik modeli
Parallel dasturlash tillari va parallel kompyuterlarda a bo'lishi kerak izchillik modeli (xotira modeli sifatida ham tanilgan). Muvofiqlik modeli operatsiyalarni bajarish qoidalarini belgilaydi kompyuter xotirasi yuzaga keladi va natijalar qanday hosil bo'ladi.
Birinchi qat'iylik modellaridan biri edi Lesli Lamport"s ketma-ketlik model. Ketma-ketlik izchilligi - bu parallel dasturning xususiyati, uning parallel bajarilishi ketma-ket dastur bilan bir xil natijalarni beradi. Xususan, agar dastur har qanday bajarilish natijalari bir xil ketma-ketlikda bajarilgan bo'lsa, va har bir alohida protsessorning operatsiyalari ushbu ketma-ketlikda o'z dasturi tomonidan belgilangan tartibda paydo bo'ladigan bo'lsa, ketma-ket izchil bo'ladi. ".[30]
Dastur tranzaktsion xotirasi izchillik modelining keng tarqalgan turi. Dastur tranzaktsion xotirasi qarz oladi ma'lumotlar bazasi nazariyasi tushunchasi atom operatsiyalari va ularni xotiraga kirish uchun qo'llaydi.
Matematik jihatdan ushbu modellar bir necha usulda namoyish etilishi mumkin. 1962 yilda kiritilgan, Petri to'rlari izchillik modellari qoidalarini kodlashtirishga dastlabki urinishlar edi. Dataflow nazariyasi keyinchalik bularga asoslangan va Dataflow arxitekturalari ma'lumotlar oqimi nazariyasini jismoniy amalga oshirish uchun yaratilgan. 1970-yillarning oxiridan boshlab, jarayon toshlari kabi Aloqa tizimlarining hisob-kitobi va Ketma-ket jarayonlar haqida ma'lumot berish o'zaro ta'sir qiluvchi tarkibiy qismlardan tashkil topgan tizimlar to'g'risida algebraik fikr yuritishga ruxsat berish uchun ishlab chiqilgan. Jarayonni hisoblash oilasiga so'nggi qo'shimchalar, masalan b-hisob, dinamik topologiyalar haqida fikr yuritish qobiliyatini qo'shdi. Lamport kabi mantiq TLA +va shunga o'xshash matematik modellar izlar va Aktyor voqealari diagrammasi, bir vaqtning o'zida tizimlarning xatti-harakatlarini tavsiflash uchun ishlab chiqilgan.
Shuningdek qarang: Ruxsat etilgan ketma-ketlik
Flinn taksonomiyasi
Maykl J. Flinn parallel (va ketma-ket) kompyuterlar va dasturlar uchun eng qadimgi tasniflash tizimlaridan birini yaratdi Flinn taksonomiyasi. Flinn dasturlarni va kompyuterlarni bitta to'plam yoki bir nechta ko'rsatmalar to'plamidan foydalanganligi va ushbu ko'rsatmalar bitta to'plam yoki bir nechta ma'lumotlar to'plamidan foydalanganligi yoki qilmaganligi bo'yicha tasnifladi.
Flinn taksonomiyasi
Yagona ma'lumotlar oqimi
SISDMiss
Bir nechta ma'lumot oqimlari
SIMDMIMDSPMDMPMD
Bitta ko'rsatma - bitta ma'lumot (SISD) tasnifi butunlay ketma-ket dasturga teng. Bitta ko'rsatma - ko'p ma'lumotlar (SIMD) tasnifi katta hajmdagi ma'lumotlar to'plamida bir xil operatsiyani takroriy bajarishga o'xshaydi. Bu odatda amalga oshiriladi signallarni qayta ishlash ilovalar. Ko'p ko'rsatma-bitta ma'lumot (MISD) kamdan kam ishlatiladigan tasnifdir. Bunga qarshi kurashish uchun kompyuter arxitekturalari ishlab chiqilgan (masalan sistolik massivlar), ushbu sinfga mos keladigan bir nechta dastur amalga oshirildi. Ko'p buyruq-ko'p ma'lumotli (MIMD) dasturlar hozirgacha parallel dasturlarning eng keng tarqalgan turi hisoblanadi.
Ga binoan Devid A. Patterson va Jon L. Xennessi, "Ba'zi bir mashinalar, albatta, ushbu toifadagi duragaylardir, ammo bu klassik model sodda, tushunarli va yaxshi taxminiylikni bergani uchun saqlanib qoldi. Bu, ehtimol, tushunarliligi tufayli ham - eng keng tarqalgan sxemadir. . "[31]
Parallellik turlari
Bit darajadagi parallellik
Asosiy maqola: Bit darajadagi parallellik
Kelishidan juda keng ko'lamli integratsiya (VLSI) kompyuter chiplarini ishlab chiqarish texnologiyasi 1970-yillarda taxminan 1986 yilgacha kompyuter arxitekturasida tezlikni ikki baravar oshirish kompyuter so'zining hajmi- protsessor bir tsiklda boshqarishi mumkin bo'lgan ma'lumot miqdori.[32] So'z hajmini oshirish protsessor o'lchamlari so'z uzunligidan kattaroq bo'lgan o'zgaruvchilar bo'yicha operatsiyani bajarish uchun bajarishi kerak bo'lgan ko'rsatmalar sonini kamaytiradi. Masalan, qaerda 8-bit protsessor ikkitasini qo'shishi kerak 16-bit butun sonlar, protsessor avvaliga standart qo'shish buyrug'i yordamida har bir butun sondan 8 ta pastki tartibli bitni qo'shishi kerak, so'ngra ko'tarish bilan qo'shish buyrug'i va 8 ta yuqori tartibli bitni qo'shish kerak ko'tarib bit pastki buyurtma qo'shimchasidan; Shunday qilib, 8 bitli protsessor bitta operatsiyani bajarish uchun ikkita ko'rsatmani talab qiladi, bu erda 16 bitli protsessor bitta buyruq bilan operatsiyani bajarishi mumkin edi.
Tarixiy jihatdan, 4-bit mikroprotsessorlar 8 bitli, so'ngra 16 bitli, so'ngra 32 bitli mikroprotsessorlar bilan almashtirildi. Ushbu tendentsiya odatda 32-bitli protsessorlarning joriy etilishi bilan yakunlandi, bu yigirma yil davomida umumiy hisoblashda standart bo'lib kelgan. 2000-yillarning boshlarida emas, balki paydo bo'lishi bilan x86-64 me'morchilik, qildi 64-bit protsessorlar odatiy holga aylanadi.
Ko'rsatma darajasidagi parallellik
Asosiy maqola: Ko'rsatma darajasidagi parallellik
Kanonik protsessor quvur liniyasi. Bitta yo'riqnomani bajarish uchun beshta soat tsikli kerak bo'ladi va shu sababli protsessor subklader ishlashini chiqarishi mumkin (IPC = 0,2 <1).
Kanonik besh bosqich quvurli protsessor. Eng yaxshi stsenariyda bitta ko'rsatmani bajarish uchun bitta soat tsikli kerak bo'ladi va shu bilan protsessor skaler ishlashini chiqarishi mumkin (IPC = 1).
Kompyuter dasturi bu mohiyatan protsessor tomonidan bajariladigan ko'rsatmalar oqimidir. Ko'rsatma darajasidagi parallelliksiz protsessor faqat bittadan kamini chiqarishi mumkin soat tsikli bo'yicha ko'rsatma (IPC <1). Ushbu protsessorlar sifatida tanilgan obunalar protsessorlar. Ushbu ko'rsatmalar bo'lishi mumkin qayta buyurtma qilingan va keyinchalik dastur natijasini o'zgartirmasdan parallel ravishda bajariladigan guruhlarga birlashtirildi. Bu ko'rsatma darajasidagi parallellik deb nomlanadi. 80-yillarning o'rtalaridan 1990-yillarning o'rtalariga qadar kompyuter me'morchiligida ko'rsatma darajasidagi parallellikning rivojlanishi.[33]
Barcha zamonaviy protsessorlar ko'p bosqichli ko'rsatma quvurlari. Quvur liniyasining har bir bosqichi protsessor ushbu bosqichda ushbu ko'rsatma bo'yicha bajaradigan boshqa harakatlarga mos keladi; bilan protsessor N- bosqichli quvur liniyasi qadar bo'lishi mumkin N bajarilishning turli bosqichlarida turli xil ko'rsatmalar va shuning uchun soat tsikli uchun bitta ko'rsatma berilishi mumkin (IPC = 1). Ushbu protsessorlar sifatida tanilgan skalar protsessorlar. Quvurli protsessorning kanonik misoli a RISC protsessor, beshta bosqichdan iborat: buyruqlarni olish (IF), buyruqlarni dekodlash (ID), bajarish (EX), xotiraga kirish (MEM) va qayta yozishni ro'yxatdan o'tkazish (WB). The Pentium 4 protsessor 35 bosqichli quvur liniyasiga ega edi.[34]
Kanonik besh bosqich quvurli superskalar protsessor. Eng yaxshi vaziyatda, ikkita yo'riqnomani bajarish uchun bitta soat tsikli kerak bo'ladi va shu bilan protsessor superskalar ko'rsatkichini chiqarishi mumkin (IPC = 2> 1).
Aksariyat zamonaviy protsessorlarda bir nechta mavjud ijro birliklari. Ular, odatda, ushbu xususiyatni truboprovod bilan birlashtiradi va shu sababli soat tsikli uchun bir nechta ko'rsatmalar berishi mumkin (IPC> 1). Ushbu protsessorlar sifatida tanilgan superskalar protsessorlar. Ko'rsatmalarni faqatgina yo'q bo'lganda guruhlash mumkin ma'lumotlarga bog'liqlik ular orasida. Storbord va Tomasulo algoritmi (bu skorbordga o'xshaydi, lekin undan foydalanadi qayta nomlashni ro'yxatdan o'tkazing) buyruqdan tashqari bajarish va ko'rsatmalar darajasidagi parallellikni amalga oshirishning eng keng tarqalgan usullaridan biri.
Vazifa parallelligi
Asosiy maqola: Vazifa parallelligi
Vazifa parallelligi - bu parallel dasturning o'ziga xos xususiyati bo'lib, "bir xil yoki turli xil ma'lumotlar to'plamida butunlay boshqacha hisob-kitoblarni amalga oshirish mumkin".[35] Bu ma'lumotlar parallelligi bilan zid keladi, bu erda bir xil hisoblash bir xil yoki turli xil ma'lumotlar to'plamida amalga oshiriladi. Vazifalar parallelligi vazifani pastki vazifalarga ajratishni va keyinchalik har bir kichik vazifani bajarish uchun protsessorga ajratishni o'z ichiga oladi. Keyin protsessorlar ushbu kichik vazifalarni bir vaqtning o'zida va ko'pincha hamkorlikda bajaradilar. Vazifa parallelligi odatda muammo kattaligi bilan kengaymaydi.[36]
Superword darajasi parallelligi
Superword darajasi parallelligi a vektorlashtirish asoslangan texnika tsiklni ochish va asosiy blok vektorlashtirish. U tsiklni vektorlashtirish algoritmlaridan foydalanishi mumkinligi bilan ajralib turadi parallellik ning ichki kod, masalan, koordinatalarni, rangli kanallarni yoki qo'lda yozilmagan ko'chadan manipulyatsiya qilish.[37]
Uskuna
Xotira va aloqa
Parallel kompyuterdagi asosiy xotira ham umumiy xotira (bitta ishlov berishning barcha elementlari o'rtasida taqsimlanadi) manzil maydoni), yoki tarqatilgan xotira (unda har bir ishlov berish elementi o'zining mahalliy manzil maydoniga ega).[38] Tarqatilgan xotira bu xotira mantiqan taqsimlanganligini anglatadi, lekin ko'pincha uning jismoniy taqsimlanganligini ham anglatadi. Tarqatilgan umumiy xotira va xotirani virtualizatsiya qilish ishlov berish elementi o'zining mahalliy xotirasiga va mahalliy bo'lmagan protsessorlarda xotiraga kirishga ega bo'lgan ikkita yondashuvni birlashtiring. Mahalliy xotiraga kirish odatda mahalliy bo'lmagan xotiraga qaraganda tezroq. Ustida superkompyuterlar, taqsimlangan umumiy xotira maydoni kabi dasturlash modeli yordamida amalga oshirilishi mumkin PGAS. Ushbu model bitta hisoblash tugunidagi jarayonlarga boshqa hisoblash tugunining masofaviy xotirasiga shaffof kirish imkoniyatini beradi. Barcha hisoblash tugunlari yuqori tezlikda o'zaro bog'lanish orqali tashqi umumiy xotira tizimiga ulangan, masalan Infiniband, bu tashqi umumiy xotira tizimi sifatida tanilgan portlash buferiodatda massivlardan qurilgan doimiy xotira jismoniy ravishda bir nechta I / O tugunlari bo'yicha taqsimlanadi.
A ning mantiqiy ko'rinishi bir xil bo'lmagan xotiraga kirish (NUMA) arxitekturasi. Bitta katalogdagi protsessorlar ushbu katalog xotirasiga boshqa katalog xotirasidagi xotiradan kamroq kechikish bilan kirishlari mumkin.
Asosiy xotiraning har bir elementiga teng ravishda kirish mumkin bo'lgan kompyuter arxitekturalari kechikish va tarmoqli kengligi sifatida tanilgan bir xil xotiraga kirish (UMA) tizimlari. Odatda, bunga faqat a erishish mumkin umumiy xotira xotira jismonan taqsimlanmagan tizim. Ushbu xususiyatga ega bo'lmagan tizim a sifatida tanilgan bir xil bo'lmagan xotiraga kirish (NUMA) arxitekturasi. Tarqatilgan xotira tizimlari bir xil bo'lmagan xotiraga kirish imkoniyatiga ega.
Kompyuter tizimlari foydalanadi keshlar- protsessor yaqinida joylashgan kichik va tezkor xotiralar, ular xotira qiymatlarining vaqtinchalik nusxalarini saqlaydi (jismoniy va mantiqiy ma'noda). Parallel kompyuter tizimlarida bir xil qiymatni bir nechta joyda saqlashi mumkin bo'lgan keshlar bilan bog'liq muammolar mavjud, chunki dastur noto'g'ri bajarilishi mumkin. Ushbu kompyuterlar uchun a keshning muvofiqligi keshlangan qiymatlarni hisobga oladigan va ularni strategik jihatdan tozalaydigan tizim, shu bilan dasturning to'g'ri bajarilishini ta'minlaydi. Avtobusni kuzatib borish qaysi qiymatlarga erishilishini kuzatib borishning eng keng tarqalgan usullaridan biridir (va shuning uchun ularni tozalash kerak). Katta, yuqori mahsuldorlikdagi tezkor keshlash tizimlarini loyihalashtirish kompyuter arxitekturasida juda qiyin muammo hisoblanadi. Natijada, umumiy xotira kompyuterlarining arxitekturalari, shuningdek taqsimlangan xotira tizimlari miqyosini kengaytirmaydi.[38]
Protsessor - protsessor va protsessor - xotira aloqasi apparatda bir necha usullar bilan, shu jumladan birgalikda (ko'p sonli yoki multiplekslangan) xotira, a to'siqni almashtirish, birgalikda avtobus yoki son-sanoqsiz ulanish tarmog'i topologiyalar shu jumladan Yulduz, uzuk, daraxt, giperkub, yog 'giperkubasi (tugunida bir nechta protsessor joylashgan giperkub) yoki n o'lchovli mash.
O'zaro bog'langan tarmoqlarga asoslangan parallel kompyuterlarning qandaydir turlari bo'lishi kerak marshrutlash to'g'ridan-to'g'ri bog'liq bo'lmagan tugunlar o'rtasida xabarlarni uzatishni ta'minlash uchun. Protsessorlar orasidagi aloqa uchun ishlatiladigan vosita katta ko'p protsessorli mashinalarda ierarxik bo'lishi mumkin.
Parallel kompyuterlar sinflari
Parallel kompyuterlar, taxminan, apparatlarning parallellikni qo'llab-quvvatlash darajasiga qarab tasniflanishi mumkin. Ushbu tasnif asosan asosiy hisoblash tugunlari orasidagi masofaga o'xshashdir. Bular bir-birini istisno qilmaydi; masalan, nosimmetrik multiprotsessorlarning klasterlari nisbatan keng tarqalgan.
Ko'p yadroli hisoblash
Asosiy maqola: Ko'p yadroli protsessor
Ko'p yadroli protsessor - bu bir nechta o'z ichiga olgan protsessor ishlov berish birliklari ("yadrolar" deb nomlanadi) xuddi shu chipda. Ushbu protsessor a dan farq qiladi superskalar bir nechta o'z ichiga olgan protsessor ijro birliklari va bitta buyruq oqimidan (ipdan) soat tsikli uchun bir nechta ko'rsatmalar chiqarishi mumkin; farqli o'laroq, ko'p yadroli protsessor bir nechta buyruqlar oqimidan soat sikliga bir nechta ko'rsatmalar chiqarishi mumkin. IBM"s Uyali mikroprotsessor, foydalanish uchun mo'ljallangan Sony PlayStation 3, taniqli ko'p yadroli protsessor. Ko'p yadroli protsessorning har bir yadrosi, shuningdek, superskalar bo'lishi mumkin, ya'ni har bir soat tsiklida har bir yadro bitta ipdan bir nechta ko'rsatmalar chiqarishi mumkin.
Bir vaqtning o'zida ko'p ishlov berish (ulardan Intelniki Hyper-Threading eng taniqli) psevdo-multi-coreismning dastlabki shakli edi. Bir vaqtning o'zida ko'p qirrali ishlov berishga qodir bo'lgan protsessor bir xil protsessorda bir nechta ijro etuvchi birliklarni o'z ichiga oladi, ya'ni u superskalar arxitekturasiga ega - va soat tsikli uchun bir nechta ko'rsatmalar berishi mumkin. bir nechta iplar. Vaqtinchalik ko'p ishlov berish boshqa tomondan, bitta protsessor blokidagi bitta ijro etuvchi bo'linmani o'z ichiga oladi va bir vaqtning o'zida bitta buyruq chiqarishi mumkin bir nechta iplar.
Nosimmetrik ko'p ishlov berish
Asosiy maqola: Nosimmetrik ko'p ishlov berish
Nosimmetrik multiprotsessor (SMP) - bu xotirani birgalikda ishlatadigan va avtobus.[39] Avtobusdagi ziddiyat avtobus arxitekturalarini masshtablashdan saqlaydi. Natijada, SMPlar odatda 32 dan ortiq protsessorni o'z ichiga olmaydi.[40] Protsessorlarning kichkina kattaligi va katta keshlar tomonidan ta'minlangan avtobusning o'tkazuvchanligi uchun talablarning sezilarli darajada kamayganligi sababli, bunday nosimmetrik multiprotsessorlar etarli miqdorda xotira o'tkazuvchanligi mavjud bo'lgan taqdirda juda tejamkor bo'ladi.[39]
Tarqatilgan hisoblash
Asosiy maqola: Tarqatilgan hisoblash
Tarqatilgan kompyuter (tarqatilgan xotira multiprotsessori deb ham ataladi) - bu tarqatuvchi xotira kompyuter tizimi, unda ishlov berish elementlari tarmoq bilan bog'langan. Tarqatilgan kompyuterlar juda miqyosli. Shartlar "bir vaqtda hisoblash"," parallel hisoblash "va" taqsimlangan hisoblash "bir-biriga juda mos keladi va ular o'rtasida aniq farq yo'q.[41] Xuddi shu tizim "parallel" va "taqsimlangan" sifatida tavsiflanishi mumkin; odatdagi taqsimlangan tizimdagi protsessorlar parallel ravishda bir vaqtda ishlaydi.[42]
Klasterli hisoblash
Asosiy maqola: Kompyuter klasteri
A Beowulf klasteri
Klaster - bu bir-biri bilan chambarchas bog'liq bo'lgan, bir-biriga bog'langan, bir-biriga bog'langan kompyuterlar guruhidir.[43] Klasterlar tarmoq bilan bog'langan bir nechta mustaqil mashinalardan iborat. Klasterdagi mashinalar nosimmetrik bo'lishi shart emas, yuklarni muvozanatlash agar ular bo'lmasa, qiyinroq. Klasterning eng keng tarqalgan turi bu Beowulf klasteri, bu bir nechta bir xilda amalga oshirilgan klaster savdo-sotiq bilan bog'langan kompyuterlar TCP / IP Ethernet mahalliy tarmoq.[44] Beowulf texnologiyasi dastlab tomonidan ishlab chiqilgan Tomas Sterling va Donald Beker. Barchasining 87% Top500 superkompyuterlar klasterlardir.[45] Qolganlari quyida tushuntirilgan massiv parallel protsessorlar.
Tarmoqli hisoblash tizimlari (quyida tavsiflangan) sharmandali parallel muammolarni osonlikcha echishi mumkinligi sababli, zamonaviy klasterlar odatda qiyinroq muammolarni hal qilish uchun ishlab chiqilgan - bu tugunlarni oraliq natijalarni tez-tez bir-biri bilan bo'lishishini talab qiladigan muammolar. Buning uchun yuqori tarmoqli kengligi va eng muhimi, pastkechikish o'zaro bog'liqlik tarmog'i. Ko'pgina tarixiy va dolzarb superkompyuterlar Cray Gemini tarmog'i kabi klasterli hisoblash uchun maxsus ishlab chiqilgan, yuqori mahsuldorlikka ega tarmoq moslamasidan foydalanadilar.[46] 2014 yildan boshlab aksariyat hozirgi superkompyuterlar tez-tez standart bo'lmagan ba'zi bir qo'shimcha qurilmalardan foydalanadilar Mirinet, InfiniBand, yoki Gigabit chekilgan.
Katta miqdordagi parallel hisoblash
Asosiy maqola: Katta darajada parallel (hisoblash)
Shkaf IBM"s Moviy gen / L katta darajada parallel superkompyuter
Ommaviy parallel protsessor (MPP) - ko'plab tarmoq protsessorlari bo'lgan bitta kompyuter. MPPlar klasterlar bilan bir xil xususiyatlarga ega, ammo MPlar o'zaro bog'langan ixtisoslashgan tarmoqlarga ega (klasterlar tarmoq uchun tovar texnikasidan foydalanadi). MPPlar klasterlardan kattaroq bo'lib, odatda 100 protsessordan "ancha ko'proq".[47] MPP-da "har bir protsessor o'z xotirasini va operatsion tizim va dasturning nusxasini o'z ichiga oladi. Har bir quyi tizim boshqalar bilan yuqori tezlikda bog'lanish orqali aloqa o'rnatadi."[48]
IBM"s Moviy gen / L, eng tez beshinchi superkompyuter 2009 yil iyun oyiga ko'ra dunyoda TOP500 reytingi, MPP.
Tarmoqli hisoblash
Asosiy maqola: Tarmoqli hisoblash
Tarmoqli hisoblash - bu parallel hisoblashning eng ko'p tarqalgan shakli. Bu orqali aloqa qiladigan kompyuterlardan foydalanadi Internet berilgan muammo ustida ishlash. Internetda mavjud bo'lgan tarmoqli kengligi va juda yuqori kechikish tufayli, tarqatilgan hisoblash odatda faqat ishlaydi xijolat bilan parallel muammolar. Ko'plab tarqatilgan hisoblash dasturlari yaratilgan, shulardan SETI @ uy va @ Home katlanmoqda eng taniqli misollar.[49]
Ko'pgina tarmoqlarni hisoblash dasturlaridan foydalaniladi o'rta dastur (tarmoq resurslarini boshqarish va dastur interfeysini standartlashtirish uchun operatsion tizim va dastur o'rtasida joylashgan dasturiy ta'minot). Eng keng tarqalgan tarqatiladigan hisoblash vositasi Berkli Tarmoq hisoblash uchun ochiq infratuzilma (BOINC). Ko'pincha tarqatilgan hisoblash dasturlari kompyuter bo'sh turgan paytlarda hisob-kitoblarni amalga oshirib, "zaxira tsikllar" dan foydalanadi.
Ixtisoslashgan parallel kompyuterlar
Parallel hisoblashda, qiziqarli joylar bo'lib qoladigan ixtisoslashgan parallel qurilmalar mavjud. Ammo yo'q domenga xos, ular parallel muammolarning faqat bir nechta sinflariga mos keladi.
Dalada dasturlashtiriladigan eshik massivlari bilan qayta tuziladigan hisoblash
Qayta sozlanadigan hisoblash foydalanish a maydonda programlanadigan eshiklar qatori (FPGA) umumiy maqsadli kompyuterning birgalikda protsessori sifatida. FPGA, mohiyatan, ma'lum bir vazifani bajarish uchun o'zini qayta tiklashi mumkin bo'lgan kompyuter chipidir.
FPGA-lar dasturlash mumkin apparat tavsiflash tillari kabi VHDL yoki Verilog. Biroq, ushbu tillarda dasturlash zerikarli bo'lishi mumkin. Bir nechta sotuvchilar yaratdilar C - HDL sintaksisini va semantikasini taqlid qilishga urinadigan tillar C dasturlash tiliKo'pgina dasturchilar tanish bo'lgan. C dan HDL tillariga eng yaxshi ma'lum bo'lganlar Mitrion-C, Impuls C, DIME-Cva Handel-C. Ning o'ziga xos kichik to'plamlari SystemC C ++ asosida ham shu maqsadda foydalanish mumkin.
AMD-ni ochish to'g'risidagi qarori HyperTransport uchinchi tomon sotuvchilariga texnologiya yuqori mahsuldorlik bilan qayta tiklanadigan hisoblash uchun qulay texnologiyaga aylandi.[50] Maykl R. D'Amourning so'zlariga ko'ra, Operatsion direktor DRC Computer Corporation, "biz AMD-ga birinchi marta kirganimizda, ular bizni" the "deb atashdi rozetka o'g'rilar. ' Endi ular bizni sheriklarimiz deyishadi. "[50]
Grafikni qayta ishlash bloklarida umumiy maqsadli hisoblash (GPGPU)
Asosiy maqola: GPGPU
Nvidia Tesla GPGPU kartasi
Umumiy maqsadlar uchun hisoblash grafik ishlov berish birliklari (GPGPU) - bu kompyuter muhandisligi tadqiqotlarining juda so'nggi tendentsiyasi. GPU - bu juda optimallashtirilgan qo'shma protsessorlar kompyuter grafikasi qayta ishlash.[51] Kompyuter grafikasini qayta ishlash ma'lumotlar parallel operatsiyalari, xususan, ustunlik qiladigan maydon chiziqli algebra matritsa operatsiyalar.
Dastlabki kunlarda GPGPU dasturlari dasturlarni bajarish uchun oddiy grafik APIlardan foydalangan. Biroq, ikkalasi bilan ham GPU-larda umumiy hisoblashni amalga oshirish uchun bir nechta yangi dasturlash tillari va platformalari qurildi Nvidia va AMD bilan dasturlash muhitlarini chiqarish CUDA va SDK-ni oqimlash navbati bilan. Boshqa GPU dasturlash tillari o'z ichiga oladi BrookGPU, PeakStreamva RapidMind. Nvidia has also released specific products for computation in their Tesla series. The technology consortium Khronos Group has released the OpenCL specification, which is a framework for writing programs that execute across platforms consisting of CPUs and GPUs. AMD, olma, Intel, Nvidia and others are supporting OpenCL.
Ilovaga xos integral mikrosxemalar
Asosiy maqola: Ilovaga xos integral mikrosxemalar
Bir nechta dasturga xos integral mikrosxema (ASIC) approaches have been devised for dealing with parallel applications.[52][53][54]
Because an ASIC is (by definition) specific to a given application, it can be fully optimized for that application. As a result, for a given application, an ASIC tends to outperform a general-purpose computer. However, ASICs are created by UV fotolitografiyasi. This process requires a mask set, which can be extremely expensive. A mask set can cost over a million US dollars.[55] (The smaller the transistors required for the chip, the more expensive the mask will be.) Meanwhile, performance increases in general-purpose computing over time (as described by Mur qonuni) tend to wipe out these gains in only one or two chip generations.[50] High initial cost, and the tendency to be overtaken by Moore's-law-driven general-purpose computing, has rendered ASICs unfeasible for most parallel computing applications. However, some have been built. One example is the PFLOPS RIKEN MDGRAPE-3 machine which uses custom ASICs for molekulyar dinamikasi simulyatsiya.
Vektorli protsessorlar
Asosiy maqola: Vektorli protsessor
The Cray-1 is a vector processor
A vector processor is a CPU or computer system that can execute the same instruction on large sets of data. Vector processors have high-level operations that work on linear arrays of numbers or vectors. An example vector operation is A = B × C, qayerda A, Bva C are each 64-element vectors of 64-bit suzuvchi nuqta raqamlar.[56] They are closely related to Flynn's SIMD classification.[56]
Cray computers became famous for their vector-processing computers in the 1970s and 1980s. However, vector processors—both as CPUs and as full computer systems—have generally disappeared. Zamonaviy processor instruction sets do include some vector processing instructions, such as with Freescale yarim o'tkazgich"s AltiVec va Intel"s SIMD kengaytmalarini oqimlash (SSE).
Dasturiy ta'minot
Parallel programming languages
Asosiy maqola: Bir vaqtda va parallel dasturlash tillari ro'yxati
Bir vaqtda dasturlash tillari, kutubxonalar, API-larva parallel programming models (kabi algorithmic skeletons) have been created for programming parallel computers. These can generally be divided into classes based on the assumptions they make about the underlying memory architecture—shared memory, distributed memory, or shared distributed memory. Shared memory programming languages communicate by manipulating shared memory variables. Distributed memory uses xabar o'tmoqda. POSIX mavzulari va OpenMP are two of the most widely used shared memory APIs, whereas Xabarni uzatish interfeysi (MPI) is the most widely used message-passing system API.[57] One concept used in programming parallel programs is the future concept, where one part of a program promises to deliver a required datum to another part of a program at some future time.
CAPS entreprise va Pathscale are also coordinating their effort to make hybrid multi-core parallel programming (HMPP) directives an open standard called OpenHMPP. The OpenHMPP directive-based programming model offers a syntax to efficiently offload computations on hardware accelerators and to optimize data movement to/from the hardware memory. OpenHMPP directives describe masofaviy protsedura chaqiruvi (RPC) on an accelerator device (e.g. GPU) or more generally a set of cores. The directives annotate C yoki Fortran codes to describe two sets of functionalities: the offloading of procedures (denoted codelets) onto a remote device and the optimization of data transfers between the CPU main memory and the accelerator memory.
The rise of consumer GPUs has led to support for yadrolarni hisoblash, either in graphics APIs (referred to as hisoblash shaderlari), in dedicated APIs (such as OpenCL), or in other language extensions.
Avtomatik parallellashtirish
Asosiy maqola: Avtomatik parallellashtirish
Automatic parallelization of a sequential program by a kompilyator is the "holy grail" of parallel computing, especially with the aforementioned limit of processor frequency. Despite decades of work by compiler researchers, automatic parallelization has had only limited success.[58]
Mainstream parallel programming languages remain either aniq parallel or (at best) partially implicit, in which a programmer gives the compiler direktivalar for parallelization. A few fully implicit parallel programming languages exist—SISAL, Parallel Xaskell, Tartib L, Tizim C (uchun FPGA), Mitrion-C, VHDLva Verilog.
Ilovani tekshirish punkti
Asosiy maqola: Ilovani tekshirish punkti
As a computer system grows in complexity, the muvaffaqiyatsizliklar orasidagi o'rtacha vaqt usually decreases. Ilovani tekshirish punkti is a technique whereby the computer system takes a "snapshot" of the application—a record of all current resource allocations and variable states, akin to a yadro chiqindisi-; this information can be used to restore the program if the computer should fail. Application checkpointing means that the program has to restart from only its last checkpoint rather than the beginning. While checkpointing provides benefits in a variety of situations, it is especially useful in highly parallel systems with a large number of processors used in yuqori samarali hisoblash.[59]
Algoritmik usullar
As parallel computers become larger and faster, we are now able to solve problems that had previously taken too long to run. Fields as varied as bioinformatika (uchun oqsilni katlama va ketma-ketlikni tahlil qilish) and economics (for matematik moliya) have taken advantage of parallel computing. Common types of problems in parallel computing applications include:[60]
Zich chiziqli algebra
Sparse linear algebra
Spectral methods (such as Cooley–Tukey fast Fourier transform)
N-body problems (kabi Barns-Hut simulyatsiyasi)
tuzilgan panjara problems (such as Panjara Boltsman usullari)
Tuzilmagan tarmoq problems (such as found in cheklangan elementlarni tahlil qilish)
Monte-Karlo usuli
Kombinatsion mantiq (kabi brute-force cryptographic techniques)
Grafik o'tish (kabi algoritmlarni saralash)
Dinamik dasturlash
Filial va bog'langan usullari
Grafik modellar (such as detecting yashirin Markov modellari va qurilish Bayes tarmoqlari)
Oxirgi holatdagi mashina simulyatsiya
Xatolarga bardoshlik
Qo'shimcha ma'lumotlar: Nosozliklarga chidamli kompyuter tizimi
Parallel computing can also be applied to the design of xatolarga chidamli kompyuter tizimlari, ayniqsa orqali blokirovka systems performing the same operation in parallel. Bu ta'minlaydi ortiqcha in case one component fails, and also allows automatic xatolarni aniqlash va xatolarni tuzatish if the results differ. These methods can be used to help prevent single-event upsets caused by transient errors.[61] Although additional measures may be required in embedded or specialized systems, this method can provide a cost-effective approach to achieve n-modular redundancy in commercial off-the-shelf systems.Entsiklopediya site:ewikiuz.top
Do'stlaringiz bilan baham: |