CUDA Academy · Oppitunti

Määritä __shared__-taulukoita

Nopea lohkokohtainen työmuisti.

Oppitunti 1/413 vaihetta

Määritä __shared__-taulukoita 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.

Oma työtila kullekin lohkolle

Jokainen lohko saa pienen ja nopean sirumuistialueen nimeltä jaettu muisti. Ajatelkaa sitä työtilana, johon koko lohko voi kirjoittaa ja josta se voi lukea yhdessä.

Miksi se on niin nopeaa

Jaettu muisti sijaitsee suoraan suoratoistoprosessorissa, joten se on noin 100 kertaa nopeampaa kuin globaali muisti. Käyttäkää sitä välttääksenne hitaan sirun ulkopuolisen DRAM-muistin jatkuvan käytön. 🚀

__shared__-avainsana

Se ilmoitetaan kernelin sisällä __shared__-määreellä. Tämän yhden taulukon jakavat sitten kaikki lohkon säikeet.

__global__ void kern() {
    __shared__ float tile[256];
}

Kiinteä koko käännösaikana

Kun annatte koon hakasulkeissa, kyseessä on staattinen jaettu muisti. Kääntäjän on tunnettava koko, joten sen on oltava vakio eikä ajonaikainen arvo.

__shared__ int counts[128];

Yksi kopio, ei yhtä joka säikeelle

Tämä on keskeinen ajatus: __shared__-taulukko luodaan kerran lohkoa kohti, ei kerran säiettä kohti. Kaikki säikeet näkevät täsmälleen saman taulukon.

Säikeet toimivat yhteistyössä

Koska jokainen säie näkee saman datan, jaettu muisti mahdollistaa säikeiden yhteistyön. Yksi säie voi tallentaa arvon ja viereinen säie noutaa sen.

Lohkon näkyvyysalue, ei sen yli

Sen elinikä vastaa lohkon elinikää. Taulukko luodaan lohkon käynnistyessä ja poistuu sen päättyessä, joten sen näkyvyysalue rajoittuu lohkoon. 🧱

Kullakin säikeellä on oma paikka

Yleinen toimintatapa on varata yksi paikka säiettä kohti ja indeksoida se threadIdx.x-arvolla. Kukin säie lataa oman alkionsa jaettuun muistiin rinnakkain.

__shared__ float s[256];
s[threadIdx.x] = input[i];

Pieni mutta arvokas resurssi

Jaettua muistia on vähän, usein vain 48–100 kt SM-yksikköä kohti. Liian suuri määrä lohkoa kohti vähentää samanaikaisesti suoritettavien lohkojen määrää.

Klassinen käyttötapa: tiilien valmistelu

Yleisin tehtävä on valmistella globaaleista tiedoista tiili, jotta lohko voi käyttää sitä uudelleen monta kertaa palaamatta hitaaseen DRAM-muistiin.

Muut lohkot eivät näe sitä

Muistakaa raja: jaettu muisti on lohkokohtaista. Kaksi eri lohkoa saa kumpikin oman erillisen kopionsa, eivätkä ne voi tarkastella toistensa dataa.

Pikatarkistus

Tarkistetaan, miten jaetun muistin näkyvyysalue toimii.

Kertaus

Opitte, että __shared__ antaa kullekin lohkolle nopean sirumuistissa sijaitsevan työtilan, joka luodaan kerran lohkoa kohti ja sopii ihanteellisesti uudelleenkäytettävän datan valmisteluun. Seuraavaksi pidämme säikeet tahdissa. 🎯

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 ”Määritä __shared__-taulukoita” ilmainen?

Kyllä – oppitunnin ”Määritä __shared__-taulukoita” 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 ”Määritä __shared__-taulukoita”?

Nopea lohkokohtainen työmuisti. 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 ”Määritä __shared__-taulukoita”-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. Määritä __shared__-taulukoita
  2. Synkronoi __syncthreads-funktiolla
  3. Vältä muistipankkikonflikteja
  4. Dynaaminen jaettu muisti
← Takaisin: CUDA Academy