CUDA Academy · Lektion

Transfers vom Host zum Device

Laden Sie Eingabedaten auf die GPU hoch.

Lektion 1 von 413 Schritte

Transfers vom Host zum Device 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.

Zwei Speicher, ein Ziel

Ihre Daten beginnen im Host-RAM, aber die GPU kann nur Zahlen verarbeiten, die in ihrem eigenen Gerätespeicher liegen. Zuerst müssen Sie die Daten übertragen. 🚚

cudaMemcpy kennenlernen

Die Funktion cudaMemcpy ist Ihr Lieferwagen: Sie kopiert einen Block von Bytes von einer Adresse zu einer anderen, unabhängig davon, ob diese auf dem Host oder dem Gerät liegt.

cudaMemcpy(dst, src, bytes, kind);

Die Upload-Richtung

Um Eingabedaten an die GPU zu senden, verwenden Sie cudaMemcpyHostToDevice. Die Quelle ist der Host-RAM, das Ziel ist der Gerätespeicher.

cudaMemcpy(d_a, h_a, n*sizeof(float), cudaMemcpyHostToDevice);

Die Reihenfolge der Argumente ist entscheidend

Wie bei memcpy kommt zuerst das Ziel, danach die Quelle. Wenn Sie sie versehentlich vertauschen, bleibt Ihr GPU-Puffer leer. 😬

cudaMemcpy(d_dst, h_src, bytes, cudaMemcpyHostToDevice);

Zählen Sie Bytes, keine Elemente

Das Größenargument wird in Bytes angegeben. Multiplizieren Sie daher die Anzahl der Elemente mit der Größe des Typs, und verwenden Sie dafür sizeof.

size_t bytes = n * sizeof(float);

Vor dem Kopieren allokieren

Der Device-Pointer muss bereits auf echten GPU-Speicher zeigen. Allokieren Sie das cudaMalloc-Ziel immer, bevor Sie Daten dorthin übertragen.

cudaMalloc(&d_a, bytes);
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);

Synchrones Warten

Ein gewöhnliches cudaMemcpy ist blockierend: Ihr CPU-Thread wartet, bis jedes Byte sicher auf der GPU angekommen ist.

Starten Sie anschließend Ihren Kernel

Zuerst übertragen, dann berechnen. Sobald die Eingabe auf dem Device liegt, kann Ihr Kernel sie lesen und die eigentliche Arbeit beginnen.

cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);
myKernel<<<blocks, threads>>>(d_a, n);

Die Größen müssen übereinstimmen

Stellen Sie sicher, dass die Anzahl der übertragenen Bytes in den allokierten Puffer passt. Mehr zu kopieren, als reserviert wurde, ist ein klassischer Overflow-Fehler.

Prüfen Sie den Rückgabecode

cudaMemcpy gibt einen cudaError_t zurück. Prüfen Sie ihn, damit ein ungültiger Pointer oder eine falsche Größe deutlich fehlschlägt, anstatt Ihren Programmlauf zu beschädigen.

cudaError_t err = cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);

Kopien sind nicht kostenlos

Jede Übertragung führt über den langsamen PCIe-Bus. Kopieren Sie daher nur die Daten, die Sie wirklich auf dem Device benötigen.

Schnelltest

Sie möchten ein Eingabearray aus dem CPU-RAM an die GPU senden. Welcher Aufruf ist korrekt?

Zusammenfassung

Sie haben gelernt, Daten mit cudaMemcpyHostToDevice zu übertragen: Allokieren Sie den Device-Puffer, setzen Sie das Ziel an die erste Stelle, geben Sie die Größe in Bytes an und kopieren Sie vor dem Start. 🎉

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 „Transfers vom Host zum Device“ kostenlos?

Ja — der vollständige Text von „Transfers vom Host zum Device“ 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 „Transfers vom Host zum Device“?

Laden Sie Eingabedaten auf die GPU hoch. 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 „Transfers vom Host zum Device“?

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. Transfers vom Host zum Device
  2. Transfers vom Device zum Host
  3. Das Enum für die Kopierrichtung
  4. Der PCIe-Transferengpass
← Zurück zu CUDA Academy