cuBLAS GEMM dengan Cara yang Tepat
Handle, urutan kolom, dan dimensi awal
cuBLAS GEMM dengan Cara yang Tepat 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.
Berdiri di Atas Bahu NVIDIA
Menulis perkalian matriks yang cepat secara manual tidaklah mudah. cuBLAS menyediakan GEMM yang telah teruji dan mampu memaksimalkan kinerja GPU Anda hingga mendekati batas maksimal. 🚀
Arti GEMM
GEMM adalah singkatan dari perkalian matriks umum. Operasi ini menghitung C = alpha * A * B + beta * C, yang menjadi dasar berbagai operasi grafis dan pembelajaran mendalam.
C = alpha * (A * B) + beta * CSetiap Pemanggilan Membutuhkan Handle
cuBLAS menyimpan statusnya dalam sebuah handle. Anda membuatnya saat memulai program, menggunakannya kembali untuk setiap pemanggilan, lalu menghancurkannya di akhir.
cublasHandle_t h;
cublasCreate(&h);
// ... use h ...
cublasDestroy(h);Kejutan Urutan Kolom
cuBLAS mengharapkan matriks dalam urutan kolom-major, seperti tata letak Fortran. Array C++ Anda biasanya menggunakan urutan baris-major, sehingga ketidaksesuaian ini sering membingungkan hampir semua orang.
Dimensi Utama
Dimensi utama memberi tahu cuBLAS jarak antar-kolom di memori. Untuk matriks kolom-major M-kali-N yang tersusun rapat, nilainya cukup M.
int lda = M; // rows, column-major strideTrik Transposisi
Solusi praktisnya: A baris-major dikalikan B sama dengan transposisi dari B kolom-major dikalikan A. Banyak orang cukup menukar operand daripada mentransposisi data.
Skalar Disimpan dalam alpha dan beta
Anda meneruskan alpha dan beta sebagai pointer. Gunakan alpha = 1 dan beta = 0 untuk menghitung C = A * B biasa tanpa tambahan apa pun.
const float alpha = 1.0f, beta = 0.0f;Memanggil cublasSgemm
cublasSgemm adalah GEMM dengan presisi tunggal bertipe float. Daftar argumennya yang panjang hanya berisi dimensi, penanda transposisi, skalar, dan tiga pointer perangkat.
cublasSgemm(h, CUBLAS_OP_N, CUBLAS_OP_N,
M, N, K, &alpha, dA, M, dB, K, &beta, dC, M);Pointer Harus Berada di Perangkat
dA, dB, dan dC menunjuk ke memori perangkat. Jika Anda tidak sengaja meneruskan pointer host, cuBLAS akan mengembalikan kesalahan, bukan hasil.
Pilih Sufiks Presisi
Hurufnya menunjukkan tipe data: S untuk float, D untuk double, serta C dan Z untuk bilangan kompleks. Pilih Dgemm jika Anda memerlukan presisi double.
cublasDgemm(...); // double precision GEMMPeriksa Status Pengembalian
Setiap pemanggilan cuBLAS mengembalikan cublasStatus_t. Bandingkan nilainya dengan CUBLAS_STATUS_SUCCESS agar handle atau dimensi yang salah tidak pernah luput dari perhatian.
if (status != CUBLAS_STATUS_SUCCESS) { /* handle */ }Pemeriksaan Singkat
Pikirkan tata letak data yang diasumsikan cuBLAS.
Ringkasan
Anda telah membuat handle, menggunakan tata letak kolom-major dan dimensi utama dengan benar, menetapkan alpha dan beta, lalu memanggil Sgemm dengan pointer perangkat. 🎯
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 “cuBLAS GEMM dengan Cara yang Tepat” gratis?
Ya — teks lengkap “cuBLAS GEMM dengan Cara yang Tepat” 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 “cuBLAS GEMM dengan Cara yang Tepat”?
Handle, urutan kolom, dan dimensi awal 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 “cuBLAS GEMM dengan Cara yang Tepat” 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
- cuBLAS GEMM dengan Cara yang Tepat
- Vektor dan Transformasi Thrust
- Reduce, Scan, dan Sort pada Thrust
- cuDNN untuk Pembelajaran Mendalam