Lección 35: cuBLAS, Thrust y cuándo no escribir un kernel
A lo largo del curso escribimos bastantes kernels a mano — suma de vectores, reducción, multiplicación de matrices. Pero para operaciones estándar, NVIDIA y la comunidad de CUDA ya escribieron implementaciones optimizadas agresivamente durante años: cuBLAS para álgebra lineal (multiplicación de matr
Antes de construir una sierra eléctrica desde cero para cortar una tabla, revisa si ya hay una sierra excelente en la tienda. cuBLAS y Thrust son las herramientas profesionales ya hechas: para operaciones comunes casi siempre son mejores que cualquier cosa que puedas construir solo en una noche.
- cuBLAS
- La biblioteca de NVIDIA para álgebra lineal en la GPU. Incluye sgemm (multiplicación de matrices) y más, ajustada para el máximo rendimiento.
- Thrust
- Una biblioteca de C++ al estilo STL para CUDA: thrust::reduce, thrust::sort, thrust::transform y más, corriendo en la GPU.
- thrust::reduce
- Realiza una reducción (por ejemplo, una suma) sobre un rango, en la GPU, en una sola línea — reemplazando un kernel de reducción escrito a mano.
- thrust::device_vector
- Un contenedor de Thrust que vive en la memoria del device y administra la asignación/liberación automáticamente, como std::vector.