Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Snufkin - 21.11.25 - klo:12.42

Otsikko: CUDA GPU-operaatiot
Kirjoitti: Snufkin - 21.11.25 - klo:12.42
Yritin etsiä netistä listaa, jossa olisi listattuna (tai verrattuna CPU:hun) GPU:n käskykantaa esim. C-kielellä. En onnistunut. Eli osaisiko joku auttaa linkillä tai oikeilla hakusanoilla. Eli haussa yleistieto, mitä kaikkia käskyjä/operaatioita GPU-prosessorin core (SP) voi lopulta suorittaa. Siis miten monimutkaista koodia voi kirjoittaa __global__ kerneliin? Voiko siellä ajaa esim. silmukoita tai ehtolauseita vain vaan simppeleitä matemaattisia operaatioita ja ehkä bittioperaatioita? En hae vastausta mihinkään, vaan yleisason ymmärrystä. CUDA-kieli.

Otsikko: Vs: CUDA GPU-operaatiot
Kirjoitti: nm - 21.11.25 - klo:17.30
CUDA tukee suoraan C-kielen koko syntaksia kernelien kehittämisessä. Eli C-kielisessä CUDA-kernelifunktiossa toimivat kaikki ehtolauseet ja silmukat samoin kuin tavallisessa C-kielisessä funktiossa. Muiden funktioiden kutsuminen kernelin sisältä sen sijaan on rajoitettua. Muistin varaukset tehdään kernelin ulkopuolella, eikä CPU:n puolella suoritettavia funktioita voi luonnollisesti kutsua CUDA-kernelistä.

Perusteet:
https://developer.nvidia.com/blog/even-easier-introduction-cuda/

Monimutkaisempia esimerkkejä:
https://github.com/NVIDIA/cuda-samples
Katso vaikkapa Samples/5_Domain_Specific/ (https://github.com/NVIDIA/cuda-samples/tree/master/Samples/5_Domain_Specific)

Pykälää matalammalla tasolla CUDA-kerneleitä voi koodata PTX-kielellä (https://en.wikipedia.org/wiki/Parallel_Thread_Execution), joka vastaa perinteisten prosessorien symbolista konekieltä (assembly).
Otsikko: Vs: CUDA GPU-operaatiot
Kirjoitti: Snufkin - 21.11.25 - klo:17.59
CUDA tukee suoraan C-kielen koko syntaksia kernelien kehittämisessä. Eli C-kielisessä CUDA-kernelifunktiossa toimivat kaikki ehtolauseet ja silmukat samoin kuin tavallisessa C-kielisessä funktiossa. Muiden funktioiden kutsuminen kernelin sisältä sen sijaan on rajoitettua. Muistin varaukset tehdään kernelin ulkopuolella, eikä CPU:n puolella suoritettavia funktioita voi luonnollisesti kutsua CUDA-kernelistä.

Mitä tarkoitat C-kielen syntaksilla? Sitä kielen ydintä vai ml. standardikirjastoja vastaavia?

Tuo muistinkäyttö alkaa olemaan tuttua.

Otsikko: Vs: CUDA GPU-operaatiot
Kirjoitti: nm - 21.11.25 - klo:21.46
Mitä tarkoitat C-kielen syntaksilla? Sitä kielen ydintä vai ml. standardikirjastoja vastaavia?

Tarkoitan kielen peruskomentoja ja rakennetta: aritmeettisia ja loogisia operaatioita, muuttujia, ehtolauseita, silmukoita ja muita ohjausrakenteita. Ne toimivat CUDA-kerneleissä samaan tapaan kuin muissa C-funktioissa. CUDA-koodista ei voi kutsua standardikirjaston funktioita tai muuta CPU:lla suoritettavaa koodia. Käytännössä kernelistä kutsutaan ainoastaan __device__ -tagilla merkittyjä omia funktioita tai CUDA:n tarjoamia kirjastofunktioita.
Otsikko: Vs: CUDA GPU-operaatiot
Kirjoitti: Snufkin - 21.11.25 - klo:22.01
Tarkoitan kielen peruskomentoja ja rakennetta: aritmeettisia ja loogisia operaatioita,...

Ok, kiitos selvennyksestä!