GPU Computing – Ano Ito?
Patuloy ka bang nakakarinig tungkol sa GPU computing o acceleration, ngunit hindi sigurado kung ano ang ibig sabihin ng mga ito? Narito ang lahat ng kailangan mong malaman.

Ang GPU o Graphics Processing Units ay nasa lahat ng electronic circuit na gumagawa ng isang anyo ng display o iba pa, lalo na ang computer.
Ang mga naunang graphics processor ay medyo simple. Ngunit sa pagdating ng paglalaro, 3D animation, at mga gawain sa pag-render ng video na nagtulak sa mga CPU nang lampas sa kanilang mga limitasyon, kailangang sumagip ang mas malalakas na GPU.
Ang mga bagong GPU card na ito ay lumago sa kapangyarihan at pagiging kumplikado sa paglipas ng panahon, na may iba't ibang kumpanya at mananaliksik na naghahanap ng mga paraan upang magamit ang kanilang parallel execution advantage. Ang post na ito ay nagpapakita sa iyo kung paano ito nangyayari sa ngayon.
Ano ang GPU?
Ang GPU o Graphics Processing Unit ay isang espesyal na circuit na idinisenyo para sa pagmamanipula ng data upang tumulong sa paglikha ng mga imahe para ipakita. Sa madaling salita, ang GPU ay isang system na lumilikha ng mga larawang nakikita mo sa anumang display surface, gaya ng monitor ng computer, screen ng smartphone, mga game console, at iba pa.
Ang mga GPU sa una ay mga simpleng device na nagsasama-sama ng mga graphic na elemento upang lumikha ng perpektong output para sa isang partikular na device. Sa paglipas ng panahon, gayunpaman, at sa pagdating ng computer gaming, ang mga GPU ay nagsimulang lumago sa pagiging kumplikado at kapangyarihan, na nagsilang ng GPGPU o General Purpose Computing sa mga GPU.
Ano ang GPU Computing?
Ang GPU computing o GPGPU ay ang paggamit ng GPU para sa pag-compute na lampas sa graphics. Nangangahulugan ito ng paggamit ng mga GPU na naka-embed sa video card ng computer at orihinal na nilayon para sa pagproseso ng mga computer graphics para sa pag-compute ng iba pang mga uri ng data, tulad ng mga scientific simulation, cryptocurrency mining, algebra computations, weather forecasting, neural network, at iba pa.
Ang dahilan para sa ebolusyong ito ng GPU computing ay nagmumula sa kahanga-hangang pag-unlad ng mga graphics processing unit, na nagmumula sa distributed parallel architecture ng mga modernong GPU system.
Habang lumalakas ang CPU ng computer at kayang humawak ng mas kumplikadong mga programa at laro, sinubukan din ng mga gumagawa ng video card na makasabay sa mga pag-unlad sa modernong computing at 3D graphics. Inihayag ni Nvidia ang GeForce 256 noong 1999 bilang kauna-unahang GPU video card sa mundo at mga bagay na nagbago mula roon.
Ang pangunahing bentahe ng mga GPU card sa mga CPU ay ang kanilang parallel processing architecture, na ginagawang magagawa nilang iproseso ang malalaking data task sa isang distributed, parallel na paraan na pumipigil sa mga bottleneck at CPU freeze.
Ano Ang Mga Aplikasyon Para sa GPU Computing?
Ang mga application ng GPU computing ay marami, narito ang isang pagtingin sa ilang nangungunang gamit:
- Machine learning at mga neural network
- Malabo na lohika
- Bio-informatics
- Pagmomodelo ng molekular
- Pag-render ng video
- Geometric computing
- Pananaliksik sa Klima at pagtataya ng panahon
- Astrophysics
- Cryptography
- Pangitain sa computer
- Pag-crack ng password
- Quantum research
GPU vs CPU Processing
Ang mga GPU at CPU ay parehong nagpoproseso ng digital data, ngunit ginagawa nila ito sa iba't ibang paraan. Ang CPU o central processing unit ay idinisenyo para sa serial processing sa mataas na bilis, habang ang mga GPU ay idinisenyo para sa parallel processing sa mas mababang bilis. Siyempre, ang isang CPU ay maaaring gumamit ng hyper-threading upang makakuha ng 2 mga thread sa bawat core, o kahit na magkaroon ng dose-dosenang mga core, ngunit ang mga ito ay pangunahing mga serial processor.
Habang ang mga CPU ay maaaring magkaroon ng ilang mga core, ang mga modernong GPU ay may kasamang libu-libong mga core, halimbawa, ang Nvidia GeForceRTX 3090 na nagtatampok ng 10K+ core. Upang makakuha ng isang kalamangan sa mga CPU, ang data ay dapat na may kakayahang parallel na pagproseso, tulad ng pagproseso ng isang stream na naglalaman ng libu-libong mga imahe sa isang go.
Mga GPU vs ASIC
Ang ASIC ay kumakatawan sa Application Specific Integrated Circuit at nangangahulugan ito na maaari lamang itong magsagawa ng isang gawain - iyon ay, ang gawain na idinisenyo upang gawin. Ang ASIC ay isang natatanging makina na binuo mula sa simula at nangangailangan ng ekspertong kaalaman sa hardware upang bumuo. Ang mga ASIC ay karaniwang ginagamit sa pagmimina ng cryptocurrency, dahil nag-aalok ang mga ito ng mahusay na parallel processing benefits at mas mahusay na kahusayan kaysa sa mga GPU.
Ang pangunahing pagkakaiba sa pagitan ng dalawa, gayunpaman, ay ang mga GPU ay mas maraming nalalaman. Halimbawa, madali kang makakagawa ng cryptocurrency mining rig gamit ang mga GPU. Ang mga bahagi ay madaling makuha at kung tapos ka na sa pagmimina, maaari mong palaging ibenta ang GPU card sa mga manlalaro o iba pang mga minero. Gayunpaman, sa mga ASIC, maaari ka lamang magbenta ng ginamit na makina sa ibang mga minero, dahil halos wala ka nang magagawa dito.
Higit pa sa pagmimina ng cryptocurrency, nagiging mas mahirap na ipatong ang iyong mga kamay sa isang makina ng ASIC, dahil hindi sila mga produkto ng masa. Malaki ang kaibahan nito sa mga GPU system na maaari mong makuha kahit saan at madaling i-configure.
GPU vs Cluster Computing
Bagama't ang isang GPU card ay naglalaman ng libu-libong mga core, na nagdaragdag ng napakalaking kapangyarihan sa anumang computer kung saan mo ito ikinakabit, ayon sa teorya ay maaari kang magdagdag ng maraming GPU card sa mainboard ng computer hangga't maaari nitong hawakan, at higit pang dagdagan ang kakayahan sa pagproseso nito.
Ang kumpol ng computer, sa kabilang banda, ay tumutukoy sa maraming computer na pinagsama-sama sa network upang gumana bilang isang malaking computer – isang supercomputer. Ang bawat computer sa network ay tinatawag na node at maaaring magkaroon ng multi-core na CPU, pati na rin ang isa o higit pang GPU card na nakasakay.
Ang bawat cluster ay dapat may master node, na siyang front computer na responsable sa pamamahala at pag-iskedyul ng mga worker node nito. Maglalaman din ito ng software na naglalaan ng data at mga programa para sa mga worker node nito upang mag-compute at magbalik ng mga resulta.
Pagpapabilis ng GPU Kumpara sa Hyper-threading
Ang CPU ay idinisenyo upang pangasiwaan ang maraming gawain nang sabay-sabay, at iyon ang dahilan kung bakit ito tumatakbo sa napakataas na bilis, na nag-iiskedyul ng oras ng pagproseso sa pagitan ng maraming prosesong iyon. Gayunpaman, kapag nakatagpo ito ng isang compute-intensive na function, maaaring magtagal ito sa loop bago ito bumalik sa iba pang mga proseso. Ito ay kadalasang nagreresulta sa isang pangkalahatang pagbagal ng computer, at mas malala pang mga kaso, isang kumpletong pag-freeze ng system.
Maiiwasan ng mga computer designer ang nakakatakot na senaryo na ito sa pamamagitan ng paggamit ng hyper-threading o GPU acceleration. Ang hyper-threading ay nagbibigay-daan sa isang CPU core na gumana bilang dalawang processing thread. Kaya, kapag ang isang thread ay nakulong sa isang compute-intensive loop, ang kabilang thread ay maaari pa ring pagsamahin ang system.
Ang mga modernong computer ay mayroon na ngayong maraming mga core mula 2 hanggang 4, 8, 16, 32, at iba pa. Dagdag pa, nagtatampok ang mga ito ng hyper-threading, kaya ang isang 2-core na CPU ay nag-aalok ng 4 na mga thread, ang isang 4-core ay nag-aalok ng 8 mga thread, at iba pa.
Ang hyper-threading na may mga multi-core na CPU ay malulutas ang karamihan sa mga problema sa pag-compute, maiwasan ang mga bottleneck, at maghahatid ng nangungunang pagganap sa mga simpleng laro, paggawa ng musika, at maliliit na graphics, video, at mga proyekto sa pag-aaral ng makina. Ngunit kapag kailangan mo ng higit na kapangyarihan kaysa doon, kadalasan ang isang GPU ang tamang solusyon.
Ang GPU o hardware acceleration ay ang kakayahan ng isang software application na gamitin ang isang GPU parallel processing power para ma-crunch ang malaking bilang ng data, nang hindi nababalisa ang CPU. Maraming propesyonal na application ang umaasa sa GPU acceleration para gumana nang maayos. Kabilang dito ang mga video at animation design/rendering program, encoder, cryptography, malalaking neural network, at iba pa.
Mga Pangunahing Kaalaman sa Programming ng GPGPU
Ang pangkalahatang layunin na programming ng mga GPU ay unang ginawa gamit DirectX at OpenGL mga aklatan. Ang mga ito ay mahigpit na idinisenyo para sa pagbuo ng mga graphic, gayunpaman, kaya kinailangan mong gawing muli ang iyong data sa mga modelong tulad ng graphic upang gumana.
Sa kabutihang-palad, nagkaroon ng malalaking pag-unlad sa GPGPU sa paglipas ng mga taon, na humahantong sa mga aklatan, programming language, at frameworks. Ang pinakasikat sa mga framework na ito ay ang CUDA mula sa Nvidia.
Pinapadali ng CUDA para sa sinumang developer na sumisid sa GPU programming nang hindi kailangang malaman ang napakahusay ng klasikong GPU programming. Nagbibigay ito ng mga feature na nagpapahusay sa pag-unlad nang higit sa mga graphics, na may maraming unit na nagtatampok ng mga function na partikular sa machine-learning.
Pinapadali din ng mga available na library ang paggawa ng mga bagong GPU-accelerated program mula sa simula o ang pag-angkop ng mga paunang nakasulat sa parallel processing. Pinili mo ang tamang library, i-optimize ang iyong code para sa mga parallel na loop, muling mag-compile, at iyon lang.
Mga Core ng CUDA Kumpara sa Mga Processor ng Stream
Kadalasan, makakatagpo ka ng mga tuntunin Mga cuda core at stream processors. Ang parehong termino ay tumutukoy lamang sa GPU core o Arithmetic Logic Units ng isang GPU. Ang CUDA Core ay isang proprietary technology mula sa Nvidia, habang ang mga Stream processor ay mula sa AMD.
Ang isa pang termino na maaari mong makita ay ang Streaming Multi-Processor o SM. Ito ay isa pang teknolohiya ng Nvidia na orihinal na nakapangkat ng 8 CUDA core bawat SM. Nagsasagawa ito ng 32-thread warps nang sabay-sabay, gamit ang 4 na clock cycle sa bawat command. Nagtatampok na ngayon ang mga mas bagong disenyo ng higit sa 100 mga core bawat streaming multi-processor.
Nangungunang Mga Wika at Aklatan ng GPU
Napakaraming mga aklatan at wika doon na gumagana sa parehong mga platform ng Nvidia CUDA at AMD. Ang mga sumusunod ay ilan lamang:
- Nvidia cuBLAS – Basic linear algebra subprograms para sa CUDA
- cuDNN - Malalim na library ng mga neural network
- OpenCL – Buksan ang pamantayan para sa parallel programming
- Openmp – Para sa mga AMD GPU
- HIP – C++ library
- Nvidia cuRAND – Random na pagbuo ng numero
- cuFFT – Para sa Fast Fourier transform
- Nvidia NPP – 2D na imahe at pagpoproseso ng signal
- GPU VSIPL – Vector image at pagpoproseso ng signal
- OpenCV – GPU library para sa computer vision
- OpenACC – Wika para sa parallel development
- Sa PyCU – Python para sa CUDA platform
- TensorRT – Malalim na pag-aaral para sa CUDA
- CUDA C++ – C++ na wika para sa CUDA
- CUDA C – C wika para sa CUDA
- CUDA Fortran – CUDA para sa mga developer ng FORTRAN
Nangungunang Mga Proyekto ng GPU Cluster
Simula noong Hunyo 2022, 8 sa 10 pinakamabilis na supercomputer sa mundo ang GPU-accelerated. Lahat sila ay nagbabahagi rin ng Linux OS, at ang mga sumusunod:
| Ranggo | Pangalan | Petaflops | CPU Cores | GPU Cores | Kapangyarihan (kW) | taon |
| 1. | Hangganan | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | KWARTO | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | Rurok | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | kadena ng mga bundok | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | Perlmutter | 64.59 | N / A | N / A | 2,589 | 2021 |
| 6. | Selene | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | Tianhe-2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | adastra | 46.1 | 21,632 | 297,440 | 921 | 2022 |
Konklusyon
Sa pag-abot sa dulo ng pagsisid sa GPU computing at lahat ng kasama nito, dapat ay nakuha mo na ang ideya ng kapangyarihan at saklaw nito sa ngayon.
Para sa karagdagang impormasyon, maaari mong tingnan ang platform ng developer ng Nvidia dito o ng AMD dito.




