Thrust Reduce, Scan en Sort
Hoogwaardige primitives met één aanroep
Thrust Reduce, Scan en Sort is een gratis CUDA Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject CUDA Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus CUDA Academy bevat in totaal 4 lessen.
Complexe algoritmen, één regel
Reducties, scans en sorteringen zijn lastig om zelf snel te schrijven. Thrust biedt geoptimaliseerde versies via één functieaanroep. 🎁
Reduceert alles tot één waarde
thrust::reduce combineert elk element tot één resultaat, bijvoorbeeld door een array op te tellen, volledig parallel onder de motorkap.
int total = thrust::reduce(d.begin(), d.end());Aangepaste reductieoperatoren
Reduce gebruikt standaard optelling, maar u kunt een beginwaarde en een binaire bewerking doorgeven om een product, maximum of andere associatieve bewerking te berekenen.
int m = thrust::reduce(d.begin(), d.end(),
0, thrust::maximum<int>());Scan houdt het lopende totaal bij
Een scan, oftewel prefixsom, produceert op elke positie het lopende totaal. Dit vormt de basis van compactie, sortering en streamtoewijzing.
Inclusief versus exclusief
inclusive_scan neemt het huidige element mee in de som; exclusive_scan doet dat niet. Door de juiste variant te kiezen voorkomt u een fout van één positie.
thrust::inclusive_scan(d.begin(), d.end(),
out.begin());Een scan laat zich niet vanzelf paralleliseren
Een prefixsom lijkt sequentieel, maar Thrust voert deze parallel uit met een slim boomalgoritme dat u niet zelf hoeft te schrijven.
Ter plekke sorteren
thrust::sort sorteert een device_vector ter plekke met een snelle radix- of mergesort op de GPU, veel sneller dan sorteren op de CPU bij grote hoeveelheden gegevens.
thrust::sort(d.begin(), d.end());Sorteren op sleutel
sort_by_key sorteert één array en herschikt een tweede waardenarray zodat deze overeenkomt. Dit is ideaal om records uitgelijnd met hun sleutels te houden.
thrust::sort_by_key(keys.begin(),
keys.end(), values.begin());Primitieven combineren
In echte verwerkingsketens worden deze bewerkingen gecombineerd: transform en daarna reduce, of sort en daarna scan. Elke stap is één geoptimaliseerde aanroep, zodat u zich op de logica kunt richten.
Gefuseerde transform_reduce
transform_reduce voert in één doorgang een mapping en optelling uit en berekent bijvoorbeeld een inproduct of som van kwadraten zonder tijdelijke array.
float ss = thrust::transform_reduce(
d.begin(), d.end(), sq, 0.0f, thrust::plus<float>());Laat de bibliotheek het werk doen
Deze primitieven zijn door NVIDIA sterk geoptimaliseerd. Ze eerst gebruiken is meestal beter dan een aangepaste kernel en bespaart uren werk.
Snelle controle
Haal u voor de geest wat een prefixsom oplevert.
Samenvatting
U bracht gegevens terug tot één waarde met reduce, bouwde lopende totalen met scan, ordende arrays met sort en combineerde stappen met transform_reduce. 🏁
Leer C++ met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Thrust Reduce, Scan en Sort” gratis?
Ja — de volledige tekst van “Thrust Reduce, Scan en Sort” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus CUDA Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus CUDA Academy bevat in totaal 4 lessen.
Wat leer ik in “Thrust Reduce, Scan en Sort”?
Hoogwaardige primitives met één aanroep Je oefent met CUDA Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met CUDA Academy te beginnen?
Ervaring vooraf is niet nodig. CUDA Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Thrust Reduce, Scan en Sort”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over CUDA Academy?
Ja. Elke les over CUDA Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- cuBLAS GEMM goed toegepast
- Thrust-vectoren en transformaties
- Thrust Reduce, Scan en Sort
- cuDNN voor deep learning