0Pricing
CUDA Academy · Lección

cuBLAS GEMM bien hecho

Handles, orden principal por columnas y dimensiones principales

cuBLAS GEMM bien hecho es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CUDA Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CUDA Academy incluye 4 lecciones en total.

Apóyese en los hombros de NVIDIA

Escribir a mano una multiplicación de matrices rápida es difícil. cuBLAS incluye un GEMM probado exhaustivamente que ya exprime su GPU casi hasta el máximo rendimiento. 🚀

Qué significa GEMM

GEMM significa multiplicación general de matrices. Calcula C = alpha * A * B + beta * C, el motor de los gráficos y el aprendizaje profundo.

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

Toda llamada necesita un handle

cuBLAS mantiene su estado en un handle. Cree uno al iniciar, reutilícelo en cada llamada y destrúyalo al terminar.

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

La sorpresa del orden por columnas

cuBLAS espera matrices en column-major, el formato de Fortran. Sus arreglos de C++ suelen estar en orden por filas, por lo que esta discrepancia causa problemas a casi todo el mundo.

Dimensión líder

La leading dimension indica a cuBLAS el salto entre columnas en memoria. En una matriz M por N en orden por columnas y almacenada de forma contigua, es simplemente M.

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

El truco de la transposición

Una solución ingeniosa: A por B en orden por filas equivale a la transpuesta de B por A en orden por columnas. Muchas personas simplemente intercambian los operandos en lugar de transponer los datos.

Los escalares viven en alpha y beta

Debe pasar alpha y beta como punteros. Use alpha = 1 y beta = 0 para obtener un C = A * B sin añadir nada más.

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

Llamar a cublasSgemm

cublasSgemm es el GEMM de punto flotante de precisión simple. Su extensa lista de argumentos solo contiene dimensiones, indicadores de transposición, escalares y los tres punteros a memoria del dispositivo.

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

Los punteros deben estar en el dispositivo

dA, dB y dC apuntan a device memory. Si pasa por error punteros del host, cuBLAS devuelve un error en lugar de un resultado.

Elija el sufijo de precisión

La letra codifica el tipo: S para float, D para double, y C y Z para tipos complejos. Elija Dgemm cuando necesite doble precisión.

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

Compruebe el estado devuelto

Cada llamada a cuBLAS devuelve un cublasStatus_t. Compárelo con CUBLAS_STATUS_SUCCESS para que un handle o una dimensión incorrectos no pasen inadvertidos.

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

Comprobación rápida

Piense en el formato de datos que presupone cuBLAS.

Repaso

Creó un handle, respetó el formato por columnas y las dimensiones líderes, estableció alpha y beta, y llamó a Sgemm con punteros al dispositivo. 🎯

Preguntas frecuentes

¿La lección «cuBLAS GEMM bien hecho» es gratis?

Sí — el texto completo de «cuBLAS GEMM bien hecho» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CUDA Academy, actualiza a CoddyKit PRO. El curso de CUDA Academy incluye 4 lecciones en total.

¿Qué aprenderé en «cuBLAS GEMM bien hecho»?

Handles, orden principal por columnas y dimensiones principales Practicas CUDA Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar CUDA Academy?

No se requiere experiencia previa. CUDA Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «cuBLAS GEMM bien hecho»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de CUDA Academy?

Sí. Cada lección de CUDA Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. cuBLAS GEMM bien hecho
  2. Vectores y transformaciones de Thrust
  3. Reduce, Scan y Sort de Thrust
  4. cuDNN para deep learning
← Volver a CUDA Academy