Geräte aufzählen und auswählen
cudaSetDevice und Kontexte pro GPU
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. ✨
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
- Geräte aufzählen und auswählen
- Arbeit auf mehrere GPUs verteilen
- Peer-to-Peer-Speicherzugriff
- Multi-GPU mit NCCL