GPU Computing – რა არის ეს?
მუდმივად გესმით GPU გამოთვლის ან აჩქარების შესახებ, მაგრამ არ ხართ დარწმუნებული, რას ნიშნავს ისინი? აქ არის ყველაფერი რაც თქვენ უნდა იცოდეთ.

GPU ან გრაფიკული დამუშავების ერთეულები წარმოდგენილია ყველა ელექტრონულ სქემებში, რომლებიც წარმოქმნიან დისპლეის ამა თუ იმ ფორმას, განსაკუთრებით კომპიუტერში.
ადრეული გრაფიკული პროცესორები შედარებით მარტივი იყო. მაგრამ თამაშების, 3D ანიმაციისა და ვიდეო რენდერის ამოცანების მოსვლასთან ერთად, რამაც CPU-ები სცილდება მათ საზღვრებს, უფრო მძლავრი GPU-ები უნდა გამოსულიყვნენ სამაშველოში.
ეს ახალი GPU ბარათები დროთა განმავლობაში იზრდებოდა სიმძლავრით და სირთულით, სხვადასხვა კომპანიები და მკვლევარები ეძებდნენ გზებს, რათა გამოიყენონ მათი პარალელური შესრულების უპირატესობა. ეს პოსტი გაჩვენებთ, როგორ მიდიოდა აქამდე.
რა არის GPU?
GPU ან გრაფიკული დამუშავების განყოფილება არის სპეციალიზებული წრე, რომელიც შექმნილია მონაცემების მანიპულირებისთვის, რათა დაეხმაროს გამოსახულების შექმნას ჩვენებისთვის. სხვა სიტყვებით რომ ვთქვათ, GPU არის სისტემა, რომელიც ქმნის სურათებს, რომლებსაც ხედავთ ეკრანის ნებისმიერ ზედაპირზე, როგორიცაა კომპიუტერის მონიტორი, სმარტფონის ეკრანი, სათამაშო კონსოლები და ა.შ.
GPU თავდაპირველად იყო მარტივი მოწყობილობები, რომლებიც აერთიანებდნენ გრაფიკულ ელემენტებს კონკრეტული მოწყობილობისთვის იდეალური გამოსავლის შესაქმნელად. თუმცა დროთა განმავლობაში და კომპიუტერული თამაშების მოსვლასთან ერთად, GPU-ებმა დაიწყეს სირთულის და სიმძლავრის ზრდა, რამაც გამოიწვია GPGPU ან ზოგადი დანიშნულების გამოთვლა GPU-ებზე.
რა არის GPU Computing?
GPU გამოთვლა ან GPGPU არის GPU-ს გამოყენება გრაფიკის მიღმა გამოთვლებისთვის. ეს ნიშნავს კომპიუტერის ვიდეო ბარათში ჩაშენებული GPU-ების გამოყენებას და თავდაპირველად განკუთვნილი კომპიუტერული გრაფიკის დასამუშავებლად სხვა ტიპის მონაცემების გამოსათვლელად, როგორიცაა სამეცნიერო სიმულაციები, კრიპტოვალუტის მოპოვება, ალგებრის გამოთვლები, ამინდის პროგნოზირება, ნერვული ქსელები და ა.შ.
GPU გამოთვლის ამ ევოლუციის მიზეზი მომდინარეობს გრაფიკული დამუშავების ერთეულების შთამბეჭდავი განვითარება, რაც მოდის თანამედროვე GPU სისტემების განაწილებული პარალელური არქიტექტურიდან.
როდესაც კომპიუტერის CPU ძლიერდებოდა და უფრო რთულ პროგრამებსა და თამაშებს უმკლავდებოდა, ვიდეო ბარათების შემქმნელები ასევე ცდილობდნენ თვალყური ადევნონ თანამედროვე გამოთვლით და 3D გრაფიკის განვითარებას. Nvidia-მ გამოაქვეყნა GeForce 256 1999 წელს, როგორც მსოფლიოში პირველი GPU ვიდეო ბარათი და ყველაფერი იქიდან განვითარდა.
GPU ბარათების მთავარი უპირატესობა CPU-ებთან შედარებით არის მათი პარალელური დამუშავების არქიტექტურა, რაც მათ საშუალებას აძლევს დაამუშავონ დიდი მონაცემთა ამოცანები განაწილებული, პარალელურად, რაც ხელს უშლის შეფერხებებს და CPU-ს გაყინვას.
რა არის აპლიკაციები GPU გამოთვლებისთვის?
GPU გამოთვლის აპლიკაციები ბევრია, აქ არის რამოდენიმე ძირითადი გამოყენება:
- მანქანათმცოდნეობა და ნერვული ქსელები
- საეჭვო ლოგიკა
- ბიოინფორმატიკა
- მოლეკულური მოდელირება
- ვიდეოს რენდერი
- გეომეტრიული გამოთვლა
- კლიმატის კვლევა და ამინდის პროგნოზი
- ასტროფიზიკა
- კრიპტოგრაფიის
- კომპიუტერული ხედვა
- პაროლის გაუქმება
- კვანტური კვლევა
GPU Vs CPU დამუშავება
GPU და CPU ორივე ამუშავებს ციფრულ მონაცემებს, მაგრამ ისინი ამას აკეთებენ სხვადასხვა გზით. CPU ან ცენტრალური დამუშავების ერთეული განკუთვნილია სერიული დამუშავებისთვის მაღალი სიჩქარით, ხოლო GPU განკუთვნილია პარალელური დამუშავებისთვის გაცილებით დაბალი სიჩქარით. რა თქმა უნდა, CPU-ს შეუძლია გამოიყენოს ჰიპერთრედინგი თითო ბირთვზე 2 ძაფის მისაღებად, ან თუნდაც ჰქონდეს ათობით ბირთვი, მაგრამ ისინი ფუნდამენტურად სერიული პროცესორებია.
მიუხედავად იმისა, რომ პროცესორებს შეიძლება ჰქონდეთ რამდენიმე ბირთვი, თანამედროვე GPU-ებს აქვთ ათასობით ბირთვი, მაგალითად, Nvidia GeForceRTX 3090 რომელიც აღჭურვილია 10K+ ბირთვით. CPU-ებთან შედარებით უპირატესობის მისაღებად, მონაცემებს უნდა ჰქონდეს პარალელური დამუშავების უნარი, მაგალითად, ნაკადის დამუშავება, რომელიც შეიცავს ათასობით სურათს.
GPU Vs ASIC
ASIC ნიშნავს Application Specific Integrated Circuit-ს და ეს ნიშნავს, რომ მას შეუძლია შეასრულოს მხოლოდ ერთი დავალება – ეს არის დავალება, რომლის შესასრულებლადაც შეიქმნა. ASIC არის უნიკალური მანქანა, რომელიც შემუშავებულია ნულიდან და საჭიროებს ტექნიკის პროფესიონალურ ცოდნას მის შესაქმნელად. ASIC ჩვეულებრივ გამოიყენება კრიპტოვალუტის მაინინგში, რადგან ისინი გვთავაზობენ კარგ პარალელური დამუშავების სარგებელს და უკეთეს ეფექტურობას, ვიდრე GPU.
ამ ორს შორის მთავარი განსხვავება ისაა, რომ GPU უფრო მრავალმხრივია. მაგალითად, შეგიძლიათ მარტივად ააწყოთ კრიპტოვალუტის მაინინგ რგოლი GPU-ების გამოყენებით. ნაწილები ადვილად ხელმისაწვდომია და თუ მაინინგს დაასრულებთ, ყოველთვის შეგიძლიათ GPU ბარათი გეიმერებს ან სხვა მაინერებს მიყიდოთ. თუმცა, ASIC-ებით, თქვენ შეგიძლიათ მიყიდოთ მხოლოდ მეორადი მანქანა სხვა მაინერებს, რადგან ძნელად შეგიძლიათ გააკეთოთ სხვა რამ.
კრიპტოვალუტის მაინინგის მიღმა, კიდევ უფრო რთული ხდება ASIC აპარატზე ხელის დადება, რადგან ისინი არ არიან მასობრივი პროდუქტები. ეს ძლიერ ეწინააღმდეგება GPU სისტემებს, რომელთა მიღება ყველგან შეგიძლიათ და მარტივად დააკონფიგურიროთ.
GPU Vs Cluster Computing
მიუხედავად იმისა, რომ ერთი GPU ბარათი შეიცავს ათასობით ბირთვს, რომელიც უზარმაზარ ენერგიას მატებს ნებისმიერ კომპიუტერს, რომელზეც მას მიამაგრებთ, თეორიულად შეგიძლიათ დაამატოთ იმდენი GPU ბარათი კომპიუტერის მთავარ დაფაზე, რამდენიც მას შეუძლია და კიდევ გაზარდოთ მისი დამუშავების შესაძლებლობა.
კომპიუტერის კლასტერი, მეორეს მხრივ, ეხება მრავალ კომპიუტერს, რომლებიც ერთმანეთთან არის დაკავშირებული, რათა ფუნქციონირონ როგორც ერთი დიდი კომპიუტერი - სუპერკომპიუტერი. თითოეულ კომპიუტერს ქსელში ეწოდება კვანძი და შეიძლება ჰქონდეს მრავალბირთვიანი CPU, ასევე ერთი ან მეტი GPU ბარათი.
თითოეულ კლასტერს უნდა ჰქონდეს ძირითადი კვანძი, რომელიც არის წინა კომპიუტერი, რომელიც პასუხისმგებელია მისი მუშა კვანძების მართვასა და დაგეგმვაზე. ის ასევე შეიცავს პროგრამულ უზრუნველყოფას, რომელიც გამოყოფს მონაცემებსა და პროგრამებს თავისი მუშა კვანძებისთვის შედეგების გამოსათვლელად და დასაბრუნებლად.
GPU აჩქარება Vs Hyper-threading
CPU შექმნილია იმისთვის, რომ ერთდროულად გაუმკლავდეს რამდენიმე დავალებას და სწორედ ამიტომ მუშაობს ძალიან მაღალი სიჩქარით, გეგმავს დამუშავების დროს ამ მრავალ პროცესს შორის. თუმცა, როდესაც ის ხვდება გამოთვლით ინტენსიურ ფუნქციას, მაშინ შესაძლოა გარკვეული დრო გაატაროს ციკლში, სანამ სხვა პროცესებს დაუბრუნდება. ეს ჩვეულებრივ იწვევს კომპიუტერის ზოგად შენელებას და უარეს შემთხვევაში, სისტემის სრულ გაყინვას.
კომპიუტერის დიზაინერებს შეუძლიათ აირიდონ ეს საშინელი სცენარი ჰიპერ-თრედინგის ან GPU აჩქარების გამოყენებით. Hyper-threading საშუალებას აძლევს ერთ CPU ბირთვს იმოქმედოს როგორც ორი დამუშავების თემა. ასე რომ, როდესაც ერთი ძაფი იჭედება გამოთვლით ინტენსიურ მარყუჟში, მეორე ძაფს შეუძლია სისტემა შეაერთოს.
თანამედროვე კომპიუტერებს ახლა აქვთ მრავალი ბირთვი 2-დან 4-მდე, 8, 16, 32 და ა.შ. გარდა ამისა, მათ აქვთ ჰიპერ-თრედინგი, ამიტომ 2 ბირთვიანი CPU გთავაზობთ 4 ძაფს, 4 ბირთვიანი გთავაზობთ 8 ძაფს და ა.შ.
მრავალბირთვიანი CPU-ებით ჰიპერ-თრედინგი გადაჭრის გამოთვლითი პრობლემების უმეტესობას, ხელს უშლის შეფერხებებს და უზრუნველყოფს უმაღლეს შესრულებას მარტივი თამაშებით, მუსიკის წარმოებით და მცირე გრაფიკული, ვიდეო და მანქანათმცოდნეობის პროექტებით. მაგრამ როცა ამაზე მეტი ენერგია გჭირდებათ, მაშინ GPU ხშირად სწორი გამოსავალია.
GPU ან ტექნიკის აჩქარება არის პროგრამული აპლიკაციის შესაძლებლობა გამოიყენოს GPU-ის პარალელური დამუშავების სიმძლავრე დიდი რაოდენობით მონაცემების დასაჭრელად, CPU-ს დაბნევის გარეშე. ბევრი პროფესიონალური აპლიკაცია დამოკიდებულია GPU-ს აჩქარებაზე, რათა კარგად იმოქმედოს. ეს მოიცავს ვიდეო და ანიმაციის დიზაინის/რენდერის პროგრამებს, ენკოდერებს, კრიპტოგრაფიას, დიდ ნერვულ ქსელებს და ა.შ.
GPGPU პროგრამირების საფუძვლები
GPU-ების ზოგადი დანიშნულების პროგრამირება თავდაპირველად ხდებოდა გამოყენებით DirectX მდე OpenGL ბიბლიოთეკები. ისინი შემუშავებული იყო მკაცრად გრაფიკის განვითარებისთვის, თუმცა, თქვენ მოგიწიათ თქვენი მონაცემების ხელახალი დანიშნულება გრაფიკულ მოდელებში მუშაობისთვის.
საბედნიეროდ, წლების განმავლობაში იყო მნიშვნელოვანი წინსვლა GPGPU-ში, რამაც გამოიწვია ბიბლიოთეკები, პროგრამირების ენები და ჩარჩოები. ამ ჩარჩოებიდან ყველაზე პოპულარულია CUDA Nvidia-დან.
CUDA უადვილებს ნებისმიერ დეველოპერს GPU პროგრამირებაში ჩასვლას კლასიკური GPU პროგრამირების ცოდნის გარეშე. ის უზრუნველყოფს ფუნქციებს, რომლებიც აძლიერებს განვითარებას გრაფიკის მიღმა, ბევრი ერთეულით კი აღჭურვილია მანქანური სწავლების სპეციფიკური ფუნქციებით.
ხელმისაწვდომი ბიბლიოთეკები ასევე აადვილებს ახალი GPU-ით დაჩქარებული პროგრამების შექმნას ნულიდან ან წინასწარ დაწერილის ადაპტირებას პარალელურ დამუშავებაზე. თქვენ ირჩევთ სწორ ბიბლიოთეკას, ოპტიმიზაციას უკეთებთ თქვენს კოდს პარალელური მარყუჟებისთვის, ხელახლა აწყობთ და ეს არის ის.
CUDA Cores vs ნაკადის პროცესორები
ხშირად, ტერმინებს წააწყდებით კუდის ბირთვები მდე ნაკადის პროცესორები. ორივე ტერმინი უბრალოდ ეხება GPU ბირთვს ან არითმეტიკული ლოგიკური ერთეულები GPU-ს. CUDA Core არის Nvidia-ს საკუთრების ტექნოლოგია, ხოლო Stream პროცესორები AMD-დან.
კიდევ ერთი ტერმინი, რომელსაც შეიძლება წააწყდეთ არის Streaming Multi-Processor ან SM. ეს არის კიდევ ერთი Nvidia ტექნოლოგია, რომელიც თავდაპირველად აჯგუფებდა 8 CUDA ბირთვს თითო SM-ზე. ის ახორციელებს 32 ძაფიან გადახვევებს ერთ ბრძანებაზე 4 საათის ციკლის გამოყენებით. უახლესი დიზაინები ახლა შეიცავს 100-ზე მეტ ბირთვს თითო ნაკადის მრავალპროცესორზე.
საუკეთესო GPU ენები და ბიბლიოთეკები
არსებობს უამრავი ბიბლიოთეკა და ენა, რომლებიც მუშაობს როგორც Nvidia CUDA, ასევე AMD პლატფორმებზე. ქვემოთ მოცემულია მხოლოდ რამდენიმე:
- Nvidia cuBLAS – ძირითადი წრფივი ალგებრის ქვეპროგრამები CUDA-სთვის
- cuDNN - ღრმა ნერვული ქსელების ბიბლიოთეკა
- OpenCL – ღია სტანდარტი პარალელური პროგრამირებისთვის
- Openmp – AMD GPU–სთვის
- HIP - C++ ბიბლიოთეკა
- Nvidia CURAND - შემთხვევითი რიცხვების თაობა
- cuFFT – სწრაფი ფურიეს გარდაქმნისთვის
- Nvidia NPP - 2D გამოსახულების და სიგნალის დამუშავება
- GPU VSIPL - ვექტორული გამოსახულების და სიგნალის დამუშავება
- OpenCV - GPU ბიბლიოთეკა კომპიუტერული ხედვისთვის
- OpenACC – ენა პარალელური განვითარებისთვის
- PyCU-ში – პითონი CUDA პლატფორმისთვის
- TensorRT - ღრმა სწავლა CUDA-სთვის
- CUDA C++ - C++ ენა CUDA-სთვის
- CUDA C – C ენა CUDA-სთვის
- CUDA Fortran – CUDA FORTRAN დეველოპერებისთვის
საუკეთესო GPU კლასტერული პროექტები
2022 წლის ივნისის მდგომარეობით, მსოფლიოში 8 ყველაზე სწრაფი სუპერკომპიუტერიდან 10 GPU-ით არის დაჩქარებული. ისინი ყველა იზიარებენ Linux OS-ს და არიან შემდეგი:
| რანგის | სახელი | პეტაფლოპსი | CPU Cores | GPU ბირთვით | სიმძლავრე (კვტ) | წელი |
| 1. | სასაზღვრო | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | ოთახი | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | სამიტზე | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | sierra | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | პერლმუტერი | 64.59 | N / A | N / A | 2,589 | 2021 |
| 6. | Selene | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | თიანე -2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | ადასტრა | 46.1 | 21,632 | 297,440 | 921 | 2022 |
დასკვნა
GPU გამოთვლების ამ ჩაძირვის დასასრულს და ყველაფერს, რაც მას თან ახლავს, ახლა უკვე უნდა გქონოდათ წარმოდგენა მისი სიმძლავრისა და მასშტაბის შესახებ.
დამატებითი ინფორმაციისთვის შეგიძლიათ გაეცნოთ დეველოპერის პლატფორმას Nvidia აქ ან რომ AMD აქ.




