Improving direct convolution through tensor slicing, vectorized packing and ISA extensions
Victor Ferrari · 2023
A convolução é uma das operações mais computacionalmente custosas que são executadas durante a inferência de modelos de aprendizado de máquina.Um método tradicional para resolver convoluções é conhecido como Im2Col + BLAS, no qual o problema é reduzido para uma multiplicação de matriz (ou GEMM ) por meio da transformação Im2Col, e resolvido usando uma biblioteca especializada do tipo BLAS.Esta dissertação descreve SConv: um algoritmo de convolução direta baseado em geração de código MLIR/LLVM, que pode ser integrado em compiladores de modelos de aprendizado de máquina para inferência.Este algoritmo introduz: (a) Convolution Slicing Analysis (CSA) -um passe de análise para cache-blocking específico para convoluções 3D, focando em reuso de elementos na hierarquia de cache; (b) Convolution Slicing Optimization (CSO) -um passe de geração de código que usa o CSA para gerar um macro-kernel de convolução direta por partes; e (c) Vector-Based Packing (VBP) -uma solução otimizada, específica de cada arquitetura, para empacotamento do tensor de entrada da convolução, baseado em instruções de deslocamento de elementos em registradores vetoriais, que é usada em convoluções com passo unitário.