OpenCNN: una implementación del algoritmo de filtrado mínimo de Winograd en CUDA
Autores: Castro, Roberto L.; Andrade, Diego; Fraguela, Basilio B.
Idioma: Inglés
Editor: MDPI
Año: 2021
Acceso abierto
Artículo científico
2021
OpenCNN: una implementación del algoritmo de filtrado mínimo de Winograd en CUDA
Categoría
Matemáticas
Subcategoría
Matemáticas generales
Palabras clave
Rendimiento
Operación de convolución
Aprendizaje profundo
Procesamiento de video
Innovaciones algorítmicas
Algoritmo Winograd
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 35
Citaciones: Sin citaciones
Mejorar el rendimiento de la operación de convolución se ha convertido en un objetivo clave para los desarrolladores de Computación de Alto Rendimiento (HPC) debido a su prevalencia en el aprendizaje profundo aplicado principalmente al procesamiento de video. La mejora está siendo impulsada por innovaciones algorítmicas e implementativas. Algorítmicamente, la convolución puede resolverse tal como se enuncia matemáticamente, pero otros métodos permiten transformarla en una Transformada Rápida de Fourier (FFT) o en una Multiplicación de Matrices Generales (GEMM). En este último grupo, el algoritmo de Winograd es una variante de vanguardia que es especialmente adecuada para convoluciones más pequeñas. En este documento, presentamos openCNN, una implementación optimizada en CUDA C++ del algoritmo de convolución de Winograd. Nuestro enfoque logra mejoras de velocidad de hasta en Turing RTX 2080Ti y de hasta en Ampere RTX 3090 con respecto a la convolución de Winograd en cuDNN 8.2.0. OpenCNN se publica como software de código abierto.
Descripción
Mejorar el rendimiento de la operación de convolución se ha convertido en un objetivo clave para los desarrolladores de Computación de Alto Rendimiento (HPC) debido a su prevalencia en el aprendizaje profundo aplicado principalmente al procesamiento de video. La mejora está siendo impulsada por innovaciones algorítmicas e implementativas. Algorítmicamente, la convolución puede resolverse tal como se enuncia matemáticamente, pero otros métodos permiten transformarla en una Transformada Rápida de Fourier (FFT) o en una Multiplicación de Matrices Generales (GEMM). En este último grupo, el algoritmo de Winograd es una variante de vanguardia que es especialmente adecuada para convoluciones más pequeñas. En este documento, presentamos openCNN, una implementación optimizada en CUDA C++ del algoritmo de convolución de Winograd. Nuestro enfoque logra mejoras de velocidad de hasta en Turing RTX 2080Ti y de hasta en Ampere RTX 3090 con respecto a la convolución de Winograd en cuDNN 8.2.0. OpenCNN se publica como software de código abierto.