__device__- ja __host__-funktiot
Missä kumpikin funktiotyyppi voi suorittua.
__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. 🎯
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
- __global__-funktiomääre
- __device__- ja __host__-funktiot
- Erilliset osoiteavaruudet
- CUDA-ohjelman elinkaari