Aula 35: cuBLAS, Thrust e quando não escrever um kernel
Ao longo do curso escrevemos vários kernels na mão — soma de vetores, redução, multiplicação de matrizes. Mas para operações padrão, a NVIDIA e a comunidade CUDA já escreveram implementações otimizadas agressivamente ao longo de anos: cuBLAS para álgebra linear (multiplicação de matrizes sgemm, prod
Antes de construir uma serra elétrica do zero para cortar uma tábua, veja se já existe uma serra ótima na loja. cuBLAS e Thrust são as ferramentas profissionais prontas: para operações comuns, elas quase sempre são melhores do que qualquer coisa que você construiria sozinho numa noite.
- cuBLAS
- A biblioteca de álgebra linear para GPU da NVIDIA. Inclui sgemm (multiplicação de matrizes) e mais, ajustada para performance máxima.
- Thrust
- Uma biblioteca C++ ao estilo STL para CUDA: thrust::reduce, thrust::sort, thrust::transform e mais, rodando na GPU.
- thrust::reduce
- Executa uma redução (por exemplo, uma soma) sobre um intervalo, na GPU, em uma linha — substituindo um kernel de redução escrito à mão.
- thrust::device_vector
- Um container do Thrust que vive na memória do device e gerencia a alocação/liberação automaticamente, como o std::vector.