Muhammad Al-Xorazmiy Nomidagi Toshkent Axborot Texnoligiyalari Universiteti Mustaqil ish Mavzu: Zamonaviy protsessorlarda vector ko’rsatmalaridan foydalanishni o’rganing. Bajardi: Nurmamatov Asliddin Tekshirdi
-rasm. Asosiy tizim arxitekturasi va misol ijro stsenariysi: ( a
Download 100.9 Kb.
|
k a
- Bu sahifa navigatsiya:
- 3.Vektorlashtirish muammolari
- Shu bilan bir qatorda: CPU va vektor birliklarida skalyar ish yuklarini parallel bajarish
1-rasm. Asosiy tizim arxitekturasi va misol ijro stsenariysi: ( a ) RISC-V raketasi yadrosi va Hwacha vektor birligi, va ( b ) protsessordagi boshqaruv ipi va parallel ravishda alohida ish ipining ijro namunasi vektor birligi.
Nazorat chizig'iga kelsak, protsessordagi Hwacha boshqaruv ko'rsatmalari oddiy ko'rsatmalarga o'xshash tarzda bajariladi. Hwacha ko'rsatmalari protsessordan olinganda, dekodlangan ma'lumot besh bosqichli quvur liniyasi orqali Hwachaga uzatiladi. Yo'riqnomani dekodlash bosqichida protsessor ko'rsatmalarni tushunish orqali kerakli ma'lumotlarni ishlab chiqaradi va keyin RoCC interfeysi yordamida ma'lumotni Hwacha-ga yuboradi. Masalan, vmca va vf ko'rsatmalari ma'lum xotira manzillarini Hwachaga o'tkazadi. Hwacha ijro birligidan foydalanish uchun vf ko'rsatmasi maqsadli mikro ipning dastur hisoblagichidan (PC) o'tadi. Kompyuter qiymatiga asoslanib, Hwacha-dagi vektor xotira birligi (VMU) mikro-ipdan ko'rsatmalar oladi. Shuning uchun, 3.Vektorlashtirish muammolariKo'pgina zamonaviy protsessor dizaynlari vektor bloklarini o'z ichiga olgan bo'lsa-da, ular ko'pincha kam foydalaniladi yoki ko'plab ilovalarda unumli foydalanilmaydi. Kam foydalanish, birinchi navbatda, samarali vektor ko'rsatmalar oqimlarini yaratishdagi qiyinchiliklardan kelib chiqadi; Buning sababi, kompilyator yoki dasturchi maqsadli dastur xususiyatlarini tushunishi kerak. Birinchi yechim - tajribali dasturchilar algoritmni to'liq tushunishlari va keyin to'liq asosiy ma'lumotlar parallelligini vektorlashtirilgan kodga tarjima qilishlari kerak. Shubhasiz, bu oddiy dasturchilar uchun qiyin va har safar yangi ilovalar joriy etilganda dasturchilardan yuqori rivojlanish sa'y-harakatlarini talab qiladi. Ikkinchi yechim - turli xil keng tarqalgan kompilyatorlar tomonidan qo'llaniladigan odatiy yondashuv bo'lgan avtomatik kompilyator darajasidagi vektorlashtirish texnikasidan foydalanish. Biroq, 2-rasmda keng qo'llaniladigan kompilyatorlarning avtomatik vektorizatsiya qamrovi ko'rsatilgan: GCC va Clang . Biz Polybench toʻplamidan 9 ta mezon boʻyicha 17 ta koʻchadan vektorlashtirdik, ularni -O3 optimallashtirish darajasi va -mavx2 mikroarxitektura variantlari yordamida kompilyatsiya qildik. 2-rasmda ko'rsatilganidek, Clang va GCC mos ravishda looplarning faqat 29% va 59% ni muvaffaqiyatli vektorlashtira oladi. Aniqroq qilib aytadigan bo'lsak, Clang va GCC maqsadli halqalarning 29 foizida (ikkala kompilyatorda bir xil tsikllar) ichki pastadir darajasidagi vektorizatsiyani qo'llashi mumkin, GCC esa vektorizatsiyani 30% ko'proq halqalarga qo'llashi mumkin, bu esa ilg'or usullardan foydalangan holda ko'lamni kengroq ko'rib chiqishi mumkin. eng ichki halqa. Kompilyatorlarning hisobotlariga ko'ra, murakkab kirish shakllari, ko'rsatmalarni qayta tartiblash bilan bog'liq xavfsizlik muammolari va past kutilgan samaradorlik tufayli pastadir vektorizatsiyasi qo'llanilmadi. Rasm 2. Mavjud kompilyatorlarning avtomatik vektorizatsiyasi qamrovi. Biz GCC 7.4.1 va Clang 11.1.0 ni -O3 optimallashtirish darajasi va -mavx2 mikroarxitektura imkoniyatlari bilan sinovdan o'tkazdik. Polybench dan 9 ta ko'rsatkich bo'yicha jami 17 ta sinovdan o'tkazildi. Qolgan variantlar vektorlashtirishni optimallashtirish statistikasi haqida hisobot berish uchun ishlatilgan. Shu bilan bir qatorda: CPU va vektor birliklarida skalyar ish yuklarini parallel bajarishKo'rib chiqilganidek, an'anaviy yondashuvlar yordamida vektor birliklaridan to'liq foydalanish qiyin. Shuning uchun, vektorizatsiyasiz tez-tez bo'sh turgan yoki to'liq foydalanilmagan vektor birliklaridan samarali foydalanish va ish faoliyatini sezilarli darajada yaxshilash uchun ilg'or yondashuv talab etiladi. Vektor birliklaridan samarali foydalanish uchun biz ularni oddiy ko'rsatmalar tarjimalari orqali qo'shimcha skalyar birliklar sifatida ishlatishga qaror qildik. Umumiy ishlashni yaxshilash uchun vektor birliklarining vazifasi qisman yuklanishi mumkin. Shu munosabat bilan protsessor va vektor birliklari parallel ravishda ishlashi kerak, bu ko'pchilik vektor birliklari asosiy protsessorlardan ajratilganligi sababli mumkin. Qolgan muammo sifatida, chunki protsessorlar vazifalarni vektor birliklariga belgilashlari kerak, Protsessor tomonidagi har bir ishning bajarilishi kechikishlarini, tushirish yukini va mos keladigan vektor birlik tomonidagi ishini tekshirish uchun Polybench to'plamidan umumiy matritsalarni ko'paytirish (GEMM) ilovasini bajarishda bajarilish vaqtidagi farqni o'lchadik . Bajarish vaqtini aniqroq o'lchashga erishish uchun tsikl-aniq simulyatsiya amalga oshirildi. 3-rasmda markaziy protsessor va vektor birligi tomonida protsessorga yukni tushirish bilan bog'liq ish uchun issiq kod mintaqasining bajarilish vaqti (tsikllar soni) ko'rsatilgan. 3 -a-rasmda protsessor faqat protsessorda issiq kod hududini bajarganda protsessor tomonidagi ishning bajarilish vaqti ko'rsatilgan. 3-rasmb vektor birligidan foydalanilganda bajarilish vaqtini ko'rsatadi. Yukni tushirish uchun qo'shimcha xarajatlar protsessor vektor blokining registrlarini sozlash va issiq kod mintaqasini vektor blokiga tushirish vaqtidir. Vektor birligi tomonidagi ish - bu vektor birligi protsessor tomonidan ajratilgan issiq kod mintaqasini bajaradigan vaqt. Download 100.9 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling