0Pricing
CUDA Academy · Lektion

Thrust: Reduce, Scan und Sort

Hochrangige Primitive mit einem Aufruf

Thrust: Reduce, Scan und Sort ist eine kostenlose CUDA Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des CUDA Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Komplexe Algorithmen, eine Zeile

Reduktionen, Scans und Sortierungen sind von Hand schwierig schnell zu implementieren. Thrust stellt optimierte Varianten über einen einzigen Funktionsaufruf bereit. 🎁

Reduce führt auf einen Wert zusammen

thrust::reduce kombiniert jedes Element zu einem einzigen Ergebnis, etwa beim Summieren eines Arrays – intern vollständig parallel.

int total = thrust::reduce(d.begin(), d.end());

Benutzerdefinierte Reduktionsoperatoren

Reduce verwendet standardmäßig die Addition. Sie können jedoch einen Startwert und eine binäre Operation übergeben, um ein Produkt, ein Maximum oder eine beliebige assoziative Berechnung zu bestimmen.

int m = thrust::reduce(d.begin(), d.end(),
  0, thrust::maximum<int>());

Scan führt die laufende Summe

Ein Scan oder Präfixsumme gibt an jeder Position die laufende Summe aus. Er bildet die Grundlage für Kompaktierung, Sortierung und Stream-Allokation.

Inklusiv oder exklusiv

inclusive_scan bezieht das aktuelle Element in seine Summe ein, exclusive_scan dagegen nicht. Die richtige Auswahl verhindert einen Off-by-one-Fehler.

thrust::inclusive_scan(d.begin(), d.end(),
  out.begin());

Scan lässt sich nicht offensichtlich parallelisieren

Eine Präfixsumme wirkt sequentiell, doch Thrust führt sie mit einem cleveren Baumalgorithmus parallel aus, den Sie nicht selbst schreiben müssen.

In-place sortieren

thrust::sort sortiert einen device_vector direkt am Speicherort mithilfe einer schnellen GPU-Radix- oder Mergesort-Implementierung – bei großen Datenmengen deutlich schneller als eine CPU-Sortierung.

thrust::sort(d.begin(), d.end());

Nach Schlüssel sortieren

sort_by_key sortiert ein Array und ordnet ein zweites Wertearray entsprechend neu an – ideal, um Datensätze ihren Schlüsseln zugeordnet zu halten.

thrust::sort_by_key(keys.begin(),
  keys.end(), values.begin());

Primitiven kombinieren

In realen Pipelines werden diese Operationen verkettet: transform und dann reduce oder sort und dann scan. Jeder Schritt ist ein optimierter Aufruf, sodass Sie sich auf die Logik konzentrieren können.

Gefaltetes transform_reduce

transform_reduce bildet Werte ab und summiert sie in einem Durchlauf. So lassen sich beispielsweise Skalarprodukte oder Quadratsummen ohne temporäres Array berechnen.

float ss = thrust::transform_reduce(
  d.begin(), d.end(), sq, 0.0f, thrust::plus<float>());

Lassen Sie die Bibliothek gewinnen

Diese Primitiven werden von NVIDIA stark optimiert. Meist ist es besser, zuerst zu ihnen zu greifen, als einen eigenen Kernel zu schreiben – und Sie sparen Stunden Arbeit.

Kurztest

Rufen Sie sich ins Gedächtnis, was eine Präfixsumme erzeugt.

Zusammenfassung

Sie haben Daten mit reduce zusammengeführt, laufende Summen mit scan gebildet, Arrays mit sort geordnet und Schritte mit transform_reduce zusammengefasst. 🏁

Häufig gestellte Fragen

Ist die Lektion „Thrust: Reduce, Scan und Sort“ kostenlos?

Ja — der vollständige Text von „Thrust: Reduce, Scan und Sort“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CUDA Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Thrust: Reduce, Scan und Sort“?

Hochrangige Primitive mit einem Aufruf Du übst CUDA Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um CUDA Academy zu starten?

Keine Vorkenntnisse erforderlich. CUDA Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Thrust: Reduce, Scan und Sort“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser CUDA Academy-Lektion Code schreiben und ausführen?

Ja. Jede CUDA Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. cuBLAS-GEMM richtig einsetzen
  2. Thrust-Vektoren und -Transformationen
  3. Thrust: Reduce, Scan und Sort
  4. cuDNN für Deep Learning
← Zurück zu CUDA Academy