CUDA Academy · Oppitunti

__device__- ja __host__-funktiot

Missä kumpikin funktiotyyppi voi suorittua.

Oppitunti 2/413 vaihetta

__device__- ja __host__-funktiot on ilmainen CUDA Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu CUDA Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. CUDA Academy-kurssilla on yhteensä 4 oppituntia.

Ytimen tuolle puolen

Ytimet ovat aloituspisteitä, mutta suurin osa koodista sijaitsee apufunktioissa. CUDA tarjoaa kaksi muuta määritettä, joilla ilmaistaan, missä tavallinen funktio voi suorittua. Tutustutaan niihin.

__device__-määrite

__device__-funktio suoritetaan GPU:lla, ja sitä voi kutsua vain muu GPU-koodi, kuten ydin tai toinen device-funktio.

__device__ int square(int x) {
    return x * x;
}

Ytimien apufunktiot

Ajatelkaa __device__-funktioita GPU:n työkalupakkina. Ne pitävät ytimet selkeinä sijoittamalla niihin logiikan, jota laitteen säikeet käyttävät uudelleen.

__host__-määrite

__host__-määrite tarkoittaa tavallista CPU-koodia. Se on oletusarvo, joten tavalliset C++-funktiot ovat jo valmiiksi host-funktioita.

__host__ void setup() {
    // runs on the CPU
}

Oletus on host

Jos jätätte kaikki määritteet pois, funktio on oletusarvoisesti vain host-funktio. Siksi tavallinen C++-koodi kääntyy edelleen .cu-tiedostossa.

Molemmat kerralla

Yhdistämällä nämä kaksi funktio käännetään molemmille puolille. nvcc rakentaa siitä yhden version CPU:lle ja toisen GPU:lle.

__host__ __device__ int dbl(int x) {
    return x + x;
}

Miksi kääntää kahdesti?

Kun apufunktioon merkitään __host__ __device__, sama matematiikka voi toimia CPU:n vertailukoodissa ja ytimien sisällä ilman koodin monistamista. ✨

Kutsusäännöt

Host-koodi ei saa kutsua __device__-funktiota, eikä device-koodi saa kutsua vain hostille tarkoitettua funktiota. Kääntäjä valvoo tätä rajaa.

Ei __global__-funktiota devicelta

__device__-funktiota ei voi käynnistää. Vain __global__-ytimet hyväksyvät hostilta tulevan kolmoishakasulkeilla tehdyn käynnistyksen.

Sisäistys nopeuttaa

Kääntäjä sisäistää usein pienet __device__-funktiot, joten logiikan sijoittaminen apufunktioihin ei yleensä maksa mitään suoritusaikana.

Valitse oikea määrite

Valitkaa määrite suorituspaikan perusteella: __device__ GPU:n apufunktioille, __host__ CPU-koodille ja molemmat, kun logiikka on yhteistä.

Pikatarkistus

Nyt testataan device- ja host-määritteet.

Kertaus

Opitte, että __device__ suoritetaan GPU:lla, __host__ CPU:lla, oletus on host ja molempien yhdistelmä jakaa yhden funktion näiden maailmojen kesken. 🎯

Aloita maksutta

Opi C++ tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”__device__- ja __host__-funktiot” ilmainen?

Kyllä – oppitunnin ”__device__- ja __host__-funktiot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko CUDA Academy-kurssin, päivitä CoddyKit PROhon. CUDA Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”__device__- ja __host__-funktiot”?

Missä kumpikin funktiotyyppi voi suorittua. Harjoittelet CUDA Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni CUDA Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin CUDA Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”__device__- ja __host__-funktiot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä CUDA Academy-oppitunnilla?

Kyllä. Jokainen CUDA Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. __global__-funktiomääre
  2. __device__- ja __host__-funktiot
  3. Erilliset osoiteavaruudet
  4. CUDA-ohjelman elinkaari
← Takaisin: CUDA Academy