CUDA Academy · Pelajaran

Pemindahan Hos ke Peranti

Muat naik data input ke GPU.

Pelajaran 1 daripada 413 langkah

Pemindahan Hos ke Peranti ialah pelajaran CUDA Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran CUDA Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Dua Memori, Satu Matlamat

Data anda bermula dalam RAM hos, tetapi GPU hanya boleh memproses nombor yang berada dalam memori perantinya sendiri. Mula-mula anda perlu memindahkannya. 🚚

Perkenalkan cudaMemcpy

Fungsi cudaMemcpy ialah trak penghantaran anda: ia menyalin sekumpulan bait dari satu alamat ke alamat lain, sama ada hos atau peranti.

cudaMemcpy(dst, src, bytes, kind);

Arah Muat Naik

Untuk menghantar data input ke GPU, gunakan cudaMemcpyHostToDevice. Sumbernya ialah RAM hos dan destinasinya ialah memori peranti.

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

Susunan Argumen Penting

Seperti memcpy, destinasi datang dahulu, kemudian sumber. Jika tersilap menukarnya, penimbal GPU anda kekal kosong. 😬

cudaMemcpy(d_dst, h_src, bytes, cudaMemcpyHostToDevice);

Kira Bait, Bukan Elemen

Argumen saiz diukur dalam bait, jadi darabkan bilangan elemen dengan saiz jenis menggunakan sizeof.

size_t bytes = n * sizeof(float);

Peruntukkan Sebelum Menyalin

Penuding peranti mestilah sudah menunjuk ke memori GPU sebenar. Sentiasa gunakan cudaMalloc untuk memperuntukkan destinasi sebelum memuat naik data ke dalamnya.

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

Penungguan Segerak

cudaMemcpy biasa bersifat menyekat: benang CPU anda berhenti seketika sehingga setiap bait selamat tiba di GPU.

Kemudian Lancarkan Kernel Anda

Muat naik dahulu, lakukan pengiraan kemudian. Setelah input berada pada peranti, kernel anda boleh membacanya dan memulakan kerja sebenar.

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

Saiz Mestilah Sepadan

Pastikan bilangan bait yang anda muat naik muat dalam penimbal yang diperuntukkan. Menyalin lebih daripada ruang yang ditempah ialah pepijat limpahan klasik.

Periksa Kod Pulangan

cudaMemcpy mengembalikan cudaError_t. Periksanya supaya penuding atau saiz yang salah menghasilkan kegagalan yang jelas, bukannya merosakkan pelaksanaan anda.

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

Penyalinan Bukan Percuma

Setiap muat naik bergerak melalui bas PCIe yang perlahan, jadi salin hanya data yang benar-benar anda perlukan pada peranti.

Semakan Pantas

Anda mahu menghantar tatasusunan input daripada RAM CPU ke GPU. Panggilan manakah yang betul?

Imbas Kembali

Anda telah mempelajari cara memuat naik data dengan cudaMemcpyHostToDevice: peruntukkan penimbal peranti, letakkan destinasi dahulu, tentukan saiz dalam bait, dan salin sebelum melancarkan. 🎉

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Pemindahan Hos ke Peranti” percuma?

Ya — teks penuh “Pemindahan Hos ke Peranti” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus CUDA Academy, tingkat taraf kepada CoddyKit PRO. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pemindahan Hos ke Peranti”?

Muat naik data input ke GPU. Anda berlatih CUDA Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan CUDA Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran CUDA Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Pemindahan Hos ke Peranti” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran CUDA Academy ini?

Ya. Setiap pelajaran CUDA Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pemindahan Hos ke Peranti
  2. Pemindahan Peranti ke Hos
  3. Enum Arah Salinan
  4. Bottleneck Pemindahan PCIe
← Kembali ke CUDA Academy