CUDA Academy · Pelajaran

cuBLAS GEMM dengan Cara yang Tepat

Handle, urutan kolom, dan dimensi awal

Pelajaran 1 dari 413 langkah

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 * C

Setiap 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 stride

Trik 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 GEMM

Periksa 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. 🎯

Gratis untuk memulai

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

  1. cuBLAS GEMM dengan Cara yang Tepat
  2. Vektor dan Transformasi Thrust
  3. Reduce, Scan, dan Sort pada Thrust
  4. cuDNN untuk Pembelajaran Mendalam
← Kembali ke CUDA Academy