Parallel hisoblashning afzallik tomonlari
Mavzu: Parallel hisoblashning afzallik tomonlari Reja: 1. Nima uchun Parallel Hisoblash kerak ? 2. Nima uchun biz ortib boradigan ishlashga muhtojmiz? 3. Nima uchun parallel tizimlarni ko’ramiz. 4.Nega parallel dasturlarni yozish kerak. 5. Parallel dasturlarni yozish.
Nima uchun Parallel Hisoblash kerak ? 1986 yildan 2002 yilgacha mikroprotsessorlarning ishlashi yiliga o'rtacha 50% ga oshdi. Bu misli ko'rilmagan o'sish foydalanuvchilar va dasturiy ta'minot ishlab chiquvchilari degani edi. ko'pincha mikroprotsessorlarning keyingi avlodini kutish mumkin edi. 2002 yildan beri bitta protsessorli ish faoliyatini yaxshilash yiliga taxminan 20% gacha sekinlashdi. Bu farq juda katta: yiliga 50%, unumdorlik deyarli bir omilga oshadi ichida 60 ga, 20% bo'lsa, u atigi 6 baravarga oshadi. 2005 yilga kelib, yirik ishlab chiqaruvchilarning ko'pchiligi parallellik yo'nalishida mikroprotsessorlar tez sur'atlar bilan o'sib borishi uchun yo'l deb qaror qildi. Har doim tezroq rivojlanishni davom ettirishga harakat qilish o'rniga monolit protsessorlar, ishlab chiqaruvchilar bir nechta to'liq protsessorlarni qo'yishni boshladilar. Ushbu o'zgarish dasturiy ta'minot ishlab chiquvchilari uchun juda muhim oqibatlarga olib keladi: oddiygina qo'shish ketma-ket dasturlarning aksariyati , ya'ni bitta dasturda ishlash uchun yozilgan dasturlar protsessor katta hajmdagi ish faoliyatini sehrli ravishda yaxshilamaydi. Bunday dasturlar bir nechta protsessorlar mavjudligidan bexabar va bir nechta protsessorli tizimda bunday dasturning ishlashi bo'ladi. Bularning barchasi bir qator savollarni tug'diradi: 1. Nima uchun biz qayg'uramiz? Yagona protsessorli tizimlar yetarlicha tez emasmi? Axir, har biriga 20% yil hali ham ancha sezilarli yaxshilanishdir. 2. Nima uchun protsessor tizimlari mikroprotsessor ishlab chiqaruvchilari yanada tezroq singl ishlab chiqishda davom eta olmaydilar? Nega parallel tizimlar qurish kerak? 3. Nima uchun biz ketma-ket dasturlarni ichiga parallel dasturlar , ya'ni mavjudligidan foydalanadigan dasturlar bir nechta protsessorlar avtomatik ravishda o'zgartiradigan dasturlarni yoza olmaymiz? Keling, ushbu savollarning har birini qisqacha ko'rib chiqaylik. 2.Nima uchun biz ortib boradigan ishlashga muhtojmiz? O'nlab yillar davomida fan, Internet va o'yin-kulgi kabi turli xil biz zavqlanayotgan hisoblash quvvatining ulkan o'sishi kabi sohalardagi eng dramatik yutuqlarning markazida bo'ldi. Internet Qidiruvlar o'sishlarsiz va yanada real kompyuter o'yinlarining barchasi imkonsiz bo'lar edi. Haqiqatan ham, hisoblash quvvatining yaqinda o'sishi oldingi o'sishlarsiz, agar imkonsiz bo'lmasa, qiyin bo'lar edi. Lekin biz qila olamiz hech qachon to'xtamang. Bizning hisoblash quvvatimiz oshgani sayin, muammolar soni hal qilishni jiddiy o'ylab ko'rishimiz mumkin bo'lgan narsalar ham ortadi . Quyida bir nechtasi keltirilgan misollar :.
Iqlimni modellashtirish . Iqlim o'zgarishini yaxshiroq tushunish uchun bizga ko'proq narsa kerak aniq kompyuter modellari, atmosfera o'rtasidagi o'zaro ta'sirlarni o'z ichiga olgan modellar, qattiq quruqlik va qutblardagi muzliklar turli aralashuvlar global miqyosga qanday ta'sir qilishi haqida batafsil tadqiqotlar o'tkazishga qodir iqlim . Protein qatlamlari . Noto'g'ri qatlamli oqsillar kasalliklarda ishtirok etishi mumkin, deb ishoniladi, ammo bizning o'qish qobiliyatimiz oqsillar kabi murakkab molekulalarning konfiguratsiyasi joriy hisoblash quvvati tomonidan jiddiy cheklangan Dori kashfiyoti . Hisoblash quvvatini oshirishning ko'plab usullari mavjud, yangi tibbiy muolajalar bo'yicha tadqiqotlarda foydalanish mumkin . Misol uchun, juda ko'p azob chekayotganlarning nisbatan kichik qismini ba'zi kasalliklardan davolashda samarali bo'lgan dorilar . Ehtiyotkorlik bilan muqobil davolash usullarini ishlab chiqishimiz mumkin davolash ma'lum bo'lgan shaxslarning genomlarini tahlil qilish samarasizdir . Biroq, genomlar bu keng qamrovli hisoblash tahlilini o'z ichiga oladi. Energiya tadqiqotlari . Hisoblashbatareyalar quvvatining oshishi ancha batafsil modellari dasturlash imkonini beradi. ushbu dasturlar uzoqni qurish uchun zarur bo'lgan yanada samarali toza energiya manbalari ma'lumotlarni taqdim etishi mumkin . Ma'lumotlarni tahlil qilish . Biz katta hajmdagi ma'lumotlarni yaratamiz. Ba'zi hisob-kitoblarga ko'ra, ular miqdori har ikki yilda ikki baravar ko'payadi , lekin juda katta va ularning aksariyati umuman foydasizdir. Misol tariqasida, bilish Inson DNKsidagi nukleotidlar ketma- ketligi o'z-o'zidan kam qo'llaniladi. Tushunish uchun u qanday ta'sir qiladi va qanday qilib kasallikka olib kelishi mumkin keng tahlil qilinishi kerak. Genomikaga qo'shimcha ravishda katta hajmdagi ma'lumotlar ham ishlab chiqariladi CERNdagi Katta adron kollayderi kabi zarrachalar kollayderlari, tibbiy tasvirlar , astronomik tadqiqotlar va veb-qidiruv tizimlari - bir nechtasini nomlash mumkin. 3. N EGA BIZ PA RA LLEL TIZIMLA RN I KURA Y A BIZ Yagona protsessor unumdorligidagi integratsiyalashgan tranzistorlar - elektron kalitlarning doimiy ortib borayotgan zichligi bilan sxemalar ulkan o'sishning aksariyati sabab bo'ldi. Tranzistorlar hajmi kamayishi bilan ularning tezligini oshirish mumkin va integral mikrosxemaning umumiy tezligini oshirish mumkin. Biroq, tezligi sifatida tranzistorlar ortadi, ularning quvvat sarfi ham ortadi. Bu kuchning katta qismi tarqaladi va integral sxema juda qizib ketganda, u ishonchsiz bo'ladi.
Yigirma birinchi asrning birinchi o'n yilligida havo bilan sovutilgan integral mikrosxemalar issiqlikni tarqatish qobiliyatining chegarasiga yetdi. Shu sababli, integratsiya tezligini oshirishni davom ettirish imkonsiz bo'lib bormoqda. Biroq, tranzistor zichligi o'sishi - hech bo'lmaganda bir muddat davom etishi mumkin . Bundan tashqari, bizning mavjudligimizni yaxshilash uchun hisoblash imkoniyatlarini hisobga olgan holda, hisoblash quvvatini oshirishni davom ettirish uchun deyarli axloqiy shart mavjud. Nihoyat, agarintegral mikrosxemalar sanoati yangi va yaxshiroq mahsulotlarni ishlab chiqarishni davom ettirmaydi, amalda mavjud bo'lishni to'xtatadi. Qanday qilib biz tranzistor zichligining doimiy o'sishidan foydalanishimiz mumkin? javob parallelizm . Tezroq, murakkabroq, monolit qurishdan ko'ra protsessorlar , sanoat bir nechta, nisbatan oddiy, to'liq protsessorlar bitta chipda qo'yishga qaror qildi. Bunday integral mikrosxemalar k o'p y adroli deb at aladi protsessorlar,va y adro markaziy protsessor yoki protsessor bilan sinonimga aylandi. Ushbu tizim sozlama bitta protsessorli an'anaviy protsessor ko'pincha bit t a y adroli deb at aladi . 4. N EGA PA RA LLEL DA STURLA RN I Y OZISH KERA K An'anaviy, bir yadroli tizimlar uchun yozilgan dasturlarning aksariyati buni qila olmaydi. bir nechta yadrolarning mavjudligidan foydalanamiz. Biz ko'p yadroli tizimda dasturning bir nechta nusxalarini ishga tushirishimiz mumkin, lekin bu ko'pincha ozgina yordam beradi. Yoki ketma-ket dasturlarimizni ular foydalanishi uchun bir nechta yadrolar yoki tarjima dasturlarini yozing, ya'ni avtomatik ravishda ishlaydigan dasturlar parallel bo'lishi uchun ketma-ket dasturlarni parallel dasturlarga aylantirish qayta yozing . Yomon xabar shundaki, tadqiqotchilar bor tillardagi ketma-ket dasturlarni o'zgartiruvchi juda cheklangan muvaffaqiyatga erishish dasturlariga C va C ++ kabi parallel dasturlarga ega edi. Bu juda ajablanarli emas. Biz umumiy taniydigan dasturlarni yozishimiz mumkin,konstruksiyalarni amalga oshiradi va bu konstruksiyalarni avtomatik ravishda tarjima qiladi, samarali parallel
konstruktsiyalar, parallel konstruktsiyalar ketma-ketligi juda samarasiz bo'lishi mumkin. Masalan, ikkita n _ n matritsalar nuqta hosilalari ketma- ketligi sifatida ko'paytirishni ko'rishimiz mumkin , lekin matritsani ko'paytirishni nuqta hosilalari ketma-ketligi sifatida parallellashtirish, parallel nuqta mahsulotlari ko'p tizimlarda juda sekin bo'lishi mumkin. Ketma-ket dasturni samarali parallel amalga oshirish uning har bir bosqichining samarali parallellashuvlarini topish tomonidan olinmasligi mumkin. Aksincha, eng yaxshi parallelizatsiya orqaga chekinish va butunlay yangi algoritmni ishlab chiqish orqali olinishi mumkin. Misol tariqasida, biz n ta qiymatni hisoblashimiz va ularni birlashtirishimiz kerak, deylik. Buni quyidagi ketma-ket kod yordamida amalga oshirish mumkinligini bilamiz: sum = 0; for (i = 0; i < n; i++) { x = Compute next value(. . .); sum += x; } Aytaylik, bizda ham p yadro bor va p n dan ancha kichik . Keyin har bir yadro mumkin n = p qiymatlarning qisman yig'indisini hosil qiling: my sum = 0; my first i = . . . ; my last i = . . . ; for (my i = my first i; my i < my last i; my i++) { my x = Compute next value(. . .); my sum += my x; } my prefiksi har bir yadro o'ziga xos, shaxsiy o'zgaruvchilardan foydalanishini bildiradi. har bir yadro ushbu kod blokini boshqa yadrolardan mustaqil ravishda bajarishi mumkin. Har bir yadro ushbu kodning bajarilishini tugatgandan so'ng, uning o'zgaruvchisi mening summamda saqlanadi. Keyingi qiymatni hisoblash uchun qo'ng'iroqlari bilan hisoblangan qiymatlar yig'indisi . Masalan, agar sakkiz yadro bo'lsa, n D 24 va keyingi qiymatni hisoblash uchun 24 ta qo'ng'iroqlar qiymatlar