|
Cuda arxitekturasi ikkita asosiy maqsadni hisobga olgan holda ishlab chiqilgan
|
Sana | 19.08.2024 | Hajmi | 44,23 Kb. | | #269652 |
Grafik protsessorlarga mo‘ljallangan parallel dasturlar yaratish asoslari. CUDA texnologiyasi
Dastlab, CPU va GPU turli vazifalar uchun mo'ljallangan. Markaziy protsessorlar umumiy ilovalar yaratish uchun, grafik protsessorlar uch o'lchamli grafik va tasvirlar bilan ishlash uchun ishlatiladi. Hozirgi vaqtda GPU yordamida hisob-kitoblarni amalga oshirish tobora ommalashib bormoqda. Dastlab, hamma narsa aniq ko'rinadi: GPUlar markaziy protsessorlarga qaraganda ancha yuqori ishlashga ega. Biroq, barcha hisob-kitoblarni markaziy protsessordan grafik protsessorga o'tkazish mumkinligini aytish mumkin emas va buning uchun CPU va GPU arxitekturasini hisobga olish kerak. Ba'zi umumiyliklarga qaramay, GPU va CPU sezilarli farqlarga ega.
Aytishimiz mumkinki, zamonaviy umumiy maqsadli protsessorlardan farqli o'laroq, GPU ko'p sonli arifmetik operatsiyalar bilan parallel hisob-kitoblar uchun mo'ljallangan. GPU hisob-kitoblari ma'lumotlarni parallel qayta ishlashdan foydalanadigan algoritmlarda, ya'ni katta hajmdagi ma'lumotlarga matematik operatsiyalarning bir xil ketma-ketligi qo'llanilganda ajoyib natijalarni ko'rsatadi.
GPUda parallel hisoblashni amalga oshirish uchun NVIDIA ishlab chiquvchilari universal parallel hisoblash arxitekturasini - NVIDIA CUDA (Compute Unified) ishlab chiqdilar.
Qurilma arxitekturasi). U ISA (Instruction Set Architecture) ko'rsatmalar to'plamini va GPUda parallel hisoblashni amalga oshirishni o'z ichiga oladi. Dasturlash uchun ishlab chiquvchi eng keng tarqalgan yuqori darajadagi C va C++ tillaridan foydalanishi mumkin [1].
CUDA arxitekturasi ikkita asosiy maqsadni hisobga olgan holda ishlab chiqilgan:
– dasturchiga standart dasturlash tillarini kengaytiruvchi va faqat parallel algoritmlarni amalga oshirish imkonini beruvchi funksiya va imkoniyatlarni taqdim etish;
– heterojen hisoblashni qo‘llab-quvvatlash, ya’ni bir vaqtning o‘zida markaziy protsessor va grafik protsessordan algoritmning ketma-ket qismlari protsessorda, parallel qismlari esa GPUda bajariladigan tarzda foydalaniladigan hisob-kitoblarni ta’minlash.
CUDA-ga dasturiy ta'minot nuqtai nazaridan qarashdan oldin ip, burilish, blok va to'r tushunchalarini ko'rib chiqish kerak.
Thread - qayta ishlash uchun asosiy ma'lumotlar to'plami. Shuni ta'kidlash kerakki, CPU va GPU iplari turli xil ma'nolarga ega. Yuqorida ta'kidlab o'tilganidek, ikkita oqim o'rtasida almashish GPU-da resurs talab qiladigan operatsiya emas.
Warp - CUDA multiprotsessorlarida SIMD usuli bilan qayta ishlangan ma'lumotlarning minimal miqdori. Boshqacha qilib aytganda, bu 32 ta ipdan iborat guruh.
Blok - o'zaro bog'langan oqimlar guruhi. Bloklarning maksimal soni - 65535.
Tarmoq (tarmoq) - qayta ishlanishi kerak bo'lgan bloklar to'plami. Tarmoq uch o'lchovli o'lchamga ega bo'lishi mumkin.
Dasturiy ta'minot nuqtai nazaridan, CUDA, C yoki C++ tillari uchun kengaytmalar to'plamidan iborat va quyidagi kengaytma turlariga ega:
1. berilgan funksiya qanday chaqirilishi va bajarilishini ko‘rsatuvchi funksiya kengaytmalari;
2. xotira bilan ishlash, shu jumladan xotirani ajratish, chiqarish va nusxalash;
3. panjara, bloklar va iplar bilan ishlashni osonlashtiradigan oldindan belgilangan o'zgaruvchilar;
4. dasturning bajarilish vaqtini hisoblash imkonini beruvchi yordamchi funksiyalar.
Arifmetik operatsiyalarni parallel bajarishda GPU haqiqatan ham protsessordan oldinda yoki yo'qligini bilish uchun keling, quyidagi holatlar sodir bo'lgan dasturlarni sinab ko'raylik:
1. hisob-kitoblarni ketma-ket bajarish;
2. OpenMP yordamida protsessorda hisob-kitoblarni parallellashtirish;
3. NVIDIA CUDA yordamida GPUda hisob-kitoblarni amalga oshirish.
Sinov masalasi sifatida Monte-Karlo usuli yordamida ℼ sonini hisoblashni olaylik. Ushbu usul birlik kvadratiga o'ralgan birlik radiusining chorak doirasini ishlatadi. Usulning mohiyati nuqtalarni kvadrat maydonga tasodifiy tarqatish va nuqtalar soniga qarab ℼ sonini hisoblashdan iborat [4].
Sinov uchun biz 14 nm, yadrolar soni - 4, oqimlar soni - 4, asosiy soat chastotasi - 3,4 gigagertsli texnik jarayon xususiyatlariga ega Intel Core i5-7500 protsessoridan foydalandik.
Sinov uchun biz xotira xususiyatlariga ega GeForce GTX 1060 video kartasidan foydalandik – 6 GB GDDR5/X, CUDA yadrolari soni – 1280, ishlab chiqarish jarayoni – 16 nm, asosiy takt chastotasi – 1506 MGts.
Protsessorda parallel hisoblash uchun biz OpenMP parallel dasturlash standartidan foydalanamiz, bu dastur bajarilishini oqimlarga bo'lish imkonini beradi. Sinov uchun 2 va 4 ta oqim ishlatiladi. Oqimlar sonining yanada ko'payishi tezlashishiga olib kelmaydi.
Sinov natijalari shunday ko'rinadi.
Sinov natijalari
Sinov natijalaridan siz GPU-da hisob-kitoblarni bajarish protsessorda ketma-ket hisob-kitoblarga nisbatan 7 baravar va parallel hisob-kitoblarga nisbatan 2 baravardan ko'proq tezlashishni ko'rishingiz mumkin.
protsessor bo'yicha hisob-kitoblar asosida quyidagi xulosalar chiqarish mumkin.
- hisob-kitoblar uchun GPU-dan foydalanish unumdorlikning sezilarli o'sishiga olib keladi, ammo bu o'sish butunlay dasturga, ya'ni parallel ravishda bajarilishi mumkin bo'lgan kodga bog'liq. Boshqa hollarda, tezlashuv boshqacha bo'lishi yoki butunlay yo'q bo'lishi mumkin. Shuning uchun dasturchining dastur kodini parallel bajarish uchun o'zgartirish qobiliyati muhim;
- markaziy protsessor yuklangan bo'lib qoladi, ya'ni tizimlarda kuchli, ko'p yadroli markaziy protsessorlardan foydalanish dolzarbligicha qolmoqda.
|
| |