CUDA Academy · Lektion

Geräte aufzählen und auswählen

cudaSetDevice und Kontexte pro GPU

Lektion 1 von 413 Schritte

Geräte aufzählen und auswählen ist eine kostenlose CUDA Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Mehr als eine GPU

Eine einzelne Maschine kann mehrere GPUs enthalten. Um sie alle zu verwenden, muss Ihr Programm zunächst ermitteln, wie viele Geräte vorhanden sind, bevor es Arbeit an sie sendet.

Geräte zählen

Ein Aufruf teilt Ihnen mit, wie viele GPUs die Laufzeitumgebung erkennen kann. cudaGetDeviceCount schreibt diese Zahl in eine von Ihnen übergebene int-Variable.

int count;
cudaGetDeviceCount(&count);

Geräte sind nummeriert

Jede GPU erhält eine ganzzahlige ID von 0 bis Anzahl minus eins. Über diese Geräte-ID richten Sie die Laufzeitumgebung auf eine bestimmte Karte.

Aktives Gerät auswählen

Mit cudaSetDevice wählen Sie aus, auf welche GPU Ihre nächsten Aufrufe zielen. Danach erfolgen Speicherreservierungen und Kernelstarts auf dieser Karte.

cudaSetDevice(1);

Es gibt ein aktuelles Gerät

Für den aufrufenden Thread ist zu jedem Zeitpunkt genau eine GPU das aktuelle Gerät. Jeder cudaMalloc-Aufruf und jeder Kernelstart wird auf dem gerade aktuellen Gerät ausgeführt.

Ein Gerät untersuchen

Bevor Sie einer GPU vertrauen, können Sie ihre technischen Daten auslesen. cudaGetDeviceProperties füllt eine struct mit Name, Speichergröße und Compute Capability.

cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);

Eigenschaften auslesen

Die Eigenschaften-struct enthält viele Informationen. Felder wie name und totalGlobalMem helfen Ihnen, die beste Karte auszuwählen oder eine zu kleine Karte zu überspringen.

Jedes Gerät besitzt seinen eigenen Speicher

Ein von cudaMalloc zurückgegebener Zeiger gehört zu der GPU, die zu diesem Zeitpunkt aktuell war. Wenn Sie ihn verwenden, während ein anderes Gerät aktuell ist, ist ein Fehler vorprogrammiert.

Kontexte pro Gerät

Hinter jeder GPU befindet sich ein Kontext, der ihre Speicherreservierungen und Streams enthält. Beim Wechsel des aktuellen Geräts wechseln Sie in den Kontext dieses Geräts.

Alle GPUs durchlaufen

Ein gängiges Muster ist eine Schleife, die für jede ID cudaSetDevice aufruft und anschließend die Einrichtung auf dieser Karte vornimmt. So verteilen Sie die Arbeit auf jedes Gerät.

for (int d = 0; d < count; d++) {
  cudaSetDevice(d);
}

Vor dem Verlassen zurückwechseln

Wenn eine Hilfsfunktion das aktuelle Gerät ändert, wechseln Sie danach wieder zurück. Wenn das aktuelle Gerät geändert bleibt, kann dies den restlichen Code überraschen.

Schnelltest

Rufen Sie sich in Erinnerung, welcher Aufruf die GPU für Ihre nächsten Speicherreservierungen und Kernelstarts auswählt.

Zusammenfassung

Sie zählen die GPUs, wählen eine mit cudaSetDevice aus und untersuchen sie anhand ihrer Eigenschaften. Jedes Gerät besitzt eigenen Speicher und einen eigenen Kontext. Als Nächstes: Arbeit auf mehrere Geräte aufteilen. ✨

Kostenlos starten

Lerne C++ mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Geräte aufzählen und auswählen“ kostenlos?

Ja — der vollständige Text von „Geräte aufzählen und auswählen“ 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 „Geräte aufzählen und auswählen“?

cudaSetDevice und Kontexte pro GPU 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 1 von 4.

Wie lange dauert die Lektion „Geräte aufzählen und auswählen“?

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. Geräte aufzählen und auswählen
  2. Arbeit auf mehrere GPUs verteilen
  3. Peer-to-Peer-Speicherzugriff
  4. Multi-GPU mit NCCL
← Zurück zu CUDA Academy