0Pricing
CUDA Academy · Урок

Правильное использование GEMM в cuBLAS

Дескрипторы, порядок столбцов и ведущие размерности

«Правильное использование GEMM в cuBLAS» — бесплатный урок CUDA Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Stand on NVIDIA's Shoulders

Writing a fast matmul by hand is hard. cuBLAS ships a battle-tested GEMM that already squeezes your GPU near peak performance. 🚀

What GEMM Means

GEMM stands for general matrix-matrix multiply. It computes C = alpha * A * B + beta * C, the workhorse behind graphics and deep learning.

C = alpha * (A * B) + beta * C

Every Call Needs a Handle

cuBLAS keeps its state in a handle. You create one at startup, reuse it for every call, and destroy it at the end.

cublasHandle_t h;
cublasCreate(&h);
// ... use h ...
cublasDestroy(h);

The Column-Major Surprise

cuBLAS expects column-major matrices, the Fortran layout. Your C++ arrays are usually row-major, so this mismatch trips up almost everyone.

Leading Dimension

The leading dimension tells cuBLAS the stride between columns in memory. For a tightly packed M-by-N column-major matrix, it is simply M.

int lda = M; // rows, column-major stride

The Transpose Trick

A neat fix: row-major A times B equals the transpose of column-major B times A. Many people just swap the operands instead of transposing data.

Scalars Live in alpha and beta

You pass alpha and beta as pointers. Use alpha = 1 and beta = 0 for a plain C = A * B with nothing added in.

const float alpha = 1.0f, beta = 0.0f;

Calling cublasSgemm

cublasSgemm is the single-precision float GEMM. Its long argument list is just dimensions, transpose flags, scalars, and the three device pointers.

cublasSgemm(h, CUBLAS_OP_N, CUBLAS_OP_N,
  M, N, K, &alpha, dA, M, dB, K, &beta, dC, M);

Pointers Must Be on the Device

dA, dB, and dC point to device memory. Pass host pointers by mistake and cuBLAS returns an error instead of a result.

Pick the Precision Suffix

The letter encodes the type: S for float, D for double, C and Z for complex. Choose Dgemm when you need double precision.

cublasDgemm(...); // double precision GEMM

Check the Return Status

Every cuBLAS call returns a cublasStatus_t. Compare it to CUBLAS_STATUS_SUCCESS so a bad handle or dimension never passes unnoticed.

if (status != CUBLAS_STATUS_SUCCESS) { /* handle */ }

Quick Check

Think about the data layout cuBLAS assumes.

Recap

You created a handle, respected column-major layout and leading dimensions, set alpha and beta, and called Sgemm with device pointers. 🎯

Часто задаваемые вопросы

Урок «Правильное использование GEMM в cuBLAS» бесплатный?

Да — полный текст урока «Правильное использование GEMM в cuBLAS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.

Чему я научусь в уроке «Правильное использование GEMM в cuBLAS»?

Дескрипторы, порядок столбцов и ведущие размерности Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CUDA Academy?

Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Правильное использование GEMM в cuBLAS»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CUDA Academy?

Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Правильное использование GEMM в cuBLAS
  2. Векторы и преобразования Thrust
  3. Сокращение, сканирование и сортировка в Thrust
  4. cuDNN для глубокого обучения
← Назад к CUDA Academy