Kernelien käynnistäminen kernelistä
Laitetason rekursio ja tarkentaminen
Kernelien käynnistäminen kernelistä on ilmainen CUDA Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.
Kernelit käynnistävät kerneleitä
Dynaamisen rinnakkaisuuden avulla suoritettava GPU-kernel voi käynnistää itse toisen kernelin ilman paluuta CPU:lle. 🚀
Sama syntaksi laitteella
Käynnistys näyttää samalta kuin isäntäkoneelta tehtävä käynnistys: tutut kolmoissulkeet toimivat suoraan laitekoodissa.
__global__ void child(int* d);
__global__ void parent(int* d) {
child<<<1, 32>>>(d);
}Laske tuleva laskenta
Isäntäsäie päättää suorituksen aikana, kuinka paljon työtä tarvitaan, ja käynnistää sitten täsmälleen oikean kokoisen lapsikernelin.
child<<<blocks, threads>>>(buf);Suunniteltu epäsäännöllisille muodoille
Tämä on hyödyllistä, kun työ riippuu datasta: säie, joka löytää lisää tehtävää, voi käynnistää lisää säikeitä heti.
Rekursio laitteella
Kernel voi jopa käynnistää itsensä, jolloin GPU:lla voidaan käyttää todellista rekursiota hajota ja hallitse -ongelmissa.
__global__ void solve(int lo, int hi) {
if (hi - lo > 1) solve<<<1, 2>>>(lo, mid);
}Isäntä- ja lapsivirrat
Jokainen lapsen käynnistys liittyy streamiin. Oletuksena lapset käyttävät isäntäsäikeen lohkon streamia, mutta voitte nimetä oman streamin.
child<<<g, b, 0, myStream>>>(d);Synkronointi kernelin sisällä
Isäntä voi odottaa lapsiaan kutsumalla laitekoodista cudaDeviceSynchronize-funktiota ja lukea sen jälkeen niiden tulokset.
child<<<1, 64>>>(d);
cudaDeviceSynchronize();Lapsen implisiittinen valmistuminen
Ilman manuaalista odotustakin kaikkien käynnistettyjen lasten taataan valmistuvan ennen kuin isäntäkernel itse palaa.
Molempien näkemä muisti
Isäntä ja lapsi jakavat globaalin muistin, joten välitetyt osoittimet pysyvät kelvollisina. Paikalliset ja jaetut tiedot eivät kuitenkaan ylitä käynnistysrajaa.
Kääntäkää laitekäynnistystä varten
Teidän on käännettävä koodi käyttäen relocatable device code -asetusta ja linkitettävä laitteen ajonaikainen ympäristö, jotta sisäkkäiset käynnistykset toimivat.
nvcc -rdc=true -lcudadevrt prog.cuKäynnistyksillä on enimmäissyvyys
Sisäkkäisyyttä rajoitetaan: käynnistyssyvyydellä on enimmäisarvo, ja liian syvälle mentäessä palautetaan virhe uusien kernelien sijaan.
Pikatarkistus
Mistä dynaamisesti käynnistetty kernel saa alkunsa?
Kertaus: laitekäynnistykset
Kernel voi käynnistää muita kerneleitä samalla kolmoissuljesyntaksilla ja jopa itsensä. Jakakaa globaali muisti ja kääntäkää koodi asetuksella -rdc=true. Hienosti tehty! 🎉
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 ”Kernelien käynnistäminen kernelistä” ilmainen?
Kyllä – oppitunnin ”Kernelien käynnistäminen kernelistä” 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 ”Kernelien käynnistäminen kernelistä”?
Laitetason rekursio ja tarkentaminen 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 1/4.
Kuinka kauan ”Kernelien käynnistäminen kernelistä”-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
- Kernelien käynnistäminen kernelistä
- Milloin dynaaminen rinnakkaisuus kannattaa
- Työn tallentaminen graafiksi
- Graafien toistaminen yleiskustannusten pienentämiseksi