Skip to content

Integración de cuBLAS para operaciones matriciales (MatMul) #7

@Gilberto-Galan

Description

@Gilberto-Galan

Actualmente, las multiplicaciones de matrices (matmul) en T-Tensor dependen de kernels CUDA personalizados. Para maximizar los FLOPS y aprovechar al máximo la arquitectura de hardware de NVIDIA, es necesario delegar las operaciones fundamentales de álgebra lineal a cuBLAS. Esto reducirá drásticamente el tiempo de ejecución en las capas nn.Linear y evitará cuellos de botella de memoria.

Criterios de Aceptación

  • La operación de multiplicación de matrices base utiliza cublasSgemm (o el equivalente según el tipo de dato) en lugar del kernel nativo.
  • El framework inicializa y destruye correctamente el cublasHandle_t sin fugas de memoria (memory leaks).
  • Se mantiene la compatibilidad de los bindings con Python; la API del usuario final no cambia.

Checklist Técnica

  • Actualizar el sistema de compilación (CMakeLists.txt o Makefile) para enlazar la librería estática/dinámica de cublas.
  • Crear un gestor de contexto o clase Singleton en C++ para manejar el ciclo de vida del handle de cuBLAS por hilo/dispositivo.
  • Implementar la envoltura (wrapper) en C++ para llamar a la API de cuBLAS enviando los punteros de los tensores residentes en la GPU.

Pruebas Mínimas

  • Prueba de Precisión: Ejecutar un script en Python que compare el resultado del nuevo matmul con cuBLAS frente a una operación equivalente calculada en CPU (numpy), verificando la tolerancia de punto flotante (isclose).
  • Prueba de Rendimiento (Benchmark): Un script que mida el tiempo de ejecución de una multiplicación de matrices grandes (ej. 4096x4096) midiendo el impacto real en hardware de entrada

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions