Kirjoittaja Aihe: CUDA GPU-operaatiot  (Luettu 254 kertaa)

Snufkin

  • Käyttäjä
  • Viestejä: 773
    • Profiili
CUDA GPU-operaatiot
« : 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.

Xubuntu 22.04 LTS, Fujitsu Lifebook E754

nm

  • Käyttäjä
  • Viestejä: 16853
    • Profiili
Vs: CUDA GPU-operaatiot
« Vastaus #1 : 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/

Pykälää matalammalla tasolla CUDA-kerneleitä voi koodata PTX-kielellä, joka vastaa perinteisten prosessorien symbolista konekieltä (assembly).

Snufkin

  • Käyttäjä
  • Viestejä: 773
    • Profiili
Vs: CUDA GPU-operaatiot
« Vastaus #2 : 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.

Xubuntu 22.04 LTS, Fujitsu Lifebook E754

nm

  • Käyttäjä
  • Viestejä: 16853
    • Profiili
Vs: CUDA GPU-operaatiot
« Vastaus #3 : 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.
« Viimeksi muokattu: 21.11.25 - klo:21.47 kirjoittanut nm »

Snufkin

  • Käyttäjä
  • Viestejä: 773
    • Profiili
Vs: CUDA GPU-operaatiot
« Vastaus #4 : 21.11.25 - klo:22.01 »
Tarkoitan kielen peruskomentoja ja rakennetta: aritmeettisia ja loogisia operaatioita,...

Ok, kiitos selvennyksestä!
Xubuntu 22.04 LTS, Fujitsu Lifebook E754