0Pricing
CUDA Academy · Pelajaran

Fungsi __device__ dan __host__

Pelajari tempat setiap jenis fungsi dapat dijalankan.

Fungsi __device__ dan __host__ adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar CUDA Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus CUDA Academy mencakup 4 pelajaran total.

Melampaui Kernel

Kernel adalah titik masuk, tetapi sebagian besar kode berada dalam fungsi pembantu. CUDA menyediakan dua penentu tambahan untuk menyatakan di mana fungsi biasa dapat berjalan. Mari kita kenali keduanya.

Penentu __device__

Fungsi __device__ berjalan di GPU dan hanya dapat dipanggil dari kode GPU lain, seperti kernel atau fungsi perangkat lainnya.

__device__ int square(int x) {
    return x * x;
}

Fungsi Pembantu untuk Kernel

Anggap fungsi __device__ sebagai kotak alat GPU Anda. Fungsi tersebut membuat kernel tetap rapi dengan menyimpan logika yang digunakan ulang oleh utas perangkat.

Penentu __host__

Penentu __host__ berarti kode CPU biasa. Penentu ini adalah bawaan, sehingga fungsi C++ biasa sudah merupakan fungsi host.

__host__ void setup() {
    // runs on the CPU
}

Bawaan adalah Host

Jika semua penentu dihilangkan, fungsi Anda secara bawaan hanya berjalan di host. Itulah sebabnya C++ biasa tetap dapat dikompilasi di dalam berkas .cu.

Keduanya Sekaligus

Gabungkan keduanya, dan fungsi akan dikompilasi untuk kedua sisi. nvcc membuat satu versi untuk CPU dan satu versi untuk GPU.

__host__ __device__ int dbl(int x) {
    return x + x;
}

Mengapa Dikompilasi Ganda?

Menandai fungsi pembantu dengan __host__ __device__ memungkinkan matematika yang sama berjalan dalam kode acuan CPU dan di dalam kernel, tanpa pengulangan kode. ✨

Aturan Pemanggilan

Kode host tidak boleh memanggil fungsi __device__, dan kode perangkat tidak boleh memanggil fungsi yang hanya untuk host. Kompilator menegakkan batas ini.

Tidak Ada __global__ dari Perangkat

Fungsi __device__ tidak dapat diluncurkan. Hanya kernel __global__ yang menerima peluncuran kurung sudut tiga dari host.

Inlining untuk Kecepatan

Kompilator sering menyisipkan fungsi __device__ yang kecil, sehingga membungkus logika dalam fungsi pembantu biasanya tidak menimbulkan biaya saat program berjalan.

Pilih Penanda yang Tepat

Pilih berdasarkan tempat fungsi berjalan: __device__ untuk fungsi pembantu GPU, __host__ untuk kode CPU, dan keduanya jika logikanya digunakan bersama.

Pemeriksaan Singkat

Saatnya menguji penentu perangkat dan host.

Rangkuman

Anda telah mempelajari bahwa __device__ berjalan di GPU, __host__ berjalan di CPU, bawaan adalah host, dan penggabungan keduanya memungkinkan satu fungsi digunakan di kedua dunia. 🎯

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi __device__ dan __host__” gratis?

Ya — teks lengkap “Fungsi __device__ dan __host__” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus CUDA Academy, upgrade ke CoddyKit PRO. Kursus CUDA Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi __device__ dan __host__”?

Pelajari tempat setiap jenis fungsi dapat dijalankan. Kamu berlatih CUDA Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai CUDA Academy?

Tidak diperlukan pengalaman sebelumnya. CUDA Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Fungsi __device__ dan __host__” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran CUDA Academy ini?

Ya. Setiap pelajaran CUDA Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kualifikasi Fungsi __global__
  2. Fungsi __device__ dan __host__
  3. Ruang Alamat Terpisah
  4. Siklus Hidup Program CUDA
← Kembali ke CUDA Academy