Anatomi Kernel
Signature, tipe kembalian, dan aturan void.
Anatomi Kernel adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Apa Itu Kernel
Kernel adalah satu fungsi C++ yang berjalan pada GPU dan dieksekusi secara bersamaan oleh ribuan thread. Anda menulisnya sekali, lalu perangkat keras menyebarkannya. 🚀
Penanda __global__
Anda menandai kernel dengan kualifikasi __global__. Ini memberi tahu nvcc bahwa fungsi tersebut dipanggil dari CPU, tetapi sebenarnya berjalan pada perangkat.
__global__ void myKernel() {
// runs on the GPU
}Kernel Mengembalikan void
Setiap kernel harus mengembalikan void. Tidak ada nilai yang dikembalikan, sehingga hasil dikirim keluar melalui pointer ke memori perangkat.
__global__ void k() { /* void only */ }Mengapa Tidak Mengembalikan Nilai?
Ribuan thread menjalankan kernel Anda secara bersamaan, jadi satu nilai pengembalian tidak masuk akal. Setiap thread menulis ke slotnya sendiri dalam larik keluaran.
Parameter Diteruskan Berdasarkan Nilai
Parameter kernel disalin ke setiap thread, jadi teruskan data berukuran kecil: bilangan bulat, ukuran, dan pointer. Jangan pernah meneruskan objek besar berdasarkan nilai.
__global__ void add(float* out, float* a, int n) {}Teruskan Pointer, Bukan Larik
Untuk memberikan larik kepada kernel, teruskan pointer perangkat. Kernel membaca dan menulis memori GPU yang ditunjuk oleh pointer tersebut.
__global__ void scale(float* data, float k) {}Setiap Thread Memilih Pekerjaannya
Kode yang sama berjalan di setiap thread, jadi masing-masing menggunakan indeksnya untuk menentukan elemen yang akan disentuh. Begitulah satu fungsi dapat mencakup seluruh larik.
int i = threadIdx.x; // who am I?Kernel Lengkap yang Sederhana
Berikut kernel lengkap: kernel ini menggandakan satu elemen per thread. Perhatikan penanda __global__, pengembalian void, dan parameter pointer secara bersamaan.
__global__ void doubleIt(float* x) {
int i = threadIdx.x;
x[i] = x[i] * 2.0f;
}Kode Host Tetap Terpisah
Fungsi CPU biasa Anda, yang sering kali bernama main, merupakan kode host. Fungsi ini menyiapkan semuanya, lalu meminta GPU menjalankan kernel.
int main() {
// host side: prepare and launch
}Tanpa Rekursi atau Kejutan I/O
Kernel berjalan pada perangkat keras dengan aturan ketat, jadi buatlah tetap sederhana: hindari rekursi yang dalam dan pemanggilan pustaka standar yang berat di dalamnya.
Memberi Nama Kernel
Perlakukan kernel seperti fungsi apa pun: berikan nama yang jelas dan berbentuk kata kerja, seperti vectorAdd. Nama yang baik membuat peluncuran jauh lebih mudah dibaca.
__global__ void vectorAdd(float* c, float* a, float* b);Pemeriksaan Cepat
Mari kita periksa aturan tanda tangan kernel.
Rangkuman: Anatomi Kernel
Kernel adalah fungsi __global__ void yang dijalankan oleh banyak thread. Teruskan pointer dan nilai berukuran kecil, lalu biarkan setiap thread menggunakan indeksnya. Kerja bagus! 🎉
Belajar C++ dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Anatomi Kernel” gratis?
Ya — teks lengkap “Anatomi Kernel” 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 “Anatomi Kernel”?
Signature, tipe kembalian, dan aturan void. 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 1 dari 4.
Berapa lama pelajaran “Anatomi Kernel” 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
- Anatomi Kernel
- Peluncuran dengan Tiga Kurung Sudut
- printf di Dalam Kernel
- Penjelasan cudaDeviceSynchronize