Referència: UJI-2023-04
Títol: Codisseny de la pila de programari d'Àlgebra Lineal Densa
IP: Sandra Catalán Pallarés
Departament: Enginyeria i ciència dels computadors
Data inici: 01/01/2024
Data final: 31/12/2026
Import total: 36.000 €
Summary: El producte general de matrius (GEMM) és una subrutina especialment optimitzada l’alt rendiment de la qual depèn, en gran manera, de la implementació d’una part específica del seu codi anomenada micronucli (microkerne). La GEMM pertany al grup de subrutines conegudes com a BLAS-3 (Basic Linear Algebra Subprograms), les quals constitueixen la base sobre la qual es construeixen operacions més complexes. Aquest és el cas de LAPACK (Linear Algebra PACKage), que utilitza la GEMM (entre altres operacions) per a la resolució de sistemes lineals, problemes de mínims quadrats o problemes de valors propis. També trobem l’ús de la GEMM en algorismes d’aprenentatge profund (deep learning): per exemple, s’utilitza en capes significatives de xarxes neuronals profundes per a realitzar operacions de convolució i transformacions lineals, tant en la fase d’entrenament mitjançant el mètode del gradient estocàstic descendent (SGD) com en la posterior fase d’inferència. Actualment, les implementacions de GEMM incloses en biblioteques BLAS d’alt rendiment estan altament optimitzades per a operands amb forma quadrada i de gran grandària. No obstant això, els algorismes en els quals cal aplicar la GEMM, tant en les rutines de LAPACK com en els algorismes d’aprenentatge profund, donen lloc a matrius especialment rectangulars i de grandària molt variable. Aquest fet provoca que les implementacions de GEMM actuals siguen potencialment poc competitives. Encara que hi ha algunes implementacions de BLAS amb micronuclis específics per a matrius de grandària xicoteta, continua havent-hi importants aspectes que es poden millorar per a incrementar el rendiment de la GEMM en aquests casos. L’objectiu principal d’aquest projecte és abordar el rendiment limitat de la implementació habitual de la GEMM quan s’aplica a operands de grandària variable i de forma rectangular. Per a això es proposen diferents estratègies. D’una banda, la implementació de micronuclis específics per a aconseguir un millor solapament del còmput i dels accessos a memòria. A més, es planteja generar aquests micronuclis de manera automàtica, facilitant així la generació d’un ventall d’alternatives i la selecció automàtica de la millor opció mitjançant models analítics i experimentació. D’altra banda, també resulta crític l’ajust dels paràmetres utilitzats per les biblioteques BLAS per a fer un ús adequat de la jerarquia de memòria. Per a això, es proposa refinar el model utilitzat actualment a partir de dades experimentals. En tercer lloc, es planteja l’ús d’altres aproximacions per al còmput directe sobre operands emmagatzemat en dues dimensions, com són els acceleradors de multiplicació de matrius i l’ús d’aritmètica mixta, amb la finalitat de reduir la memòria necessària per a emmagatzemar les dades. En conjunt, aquesta proposta planteja el codisseny de la pila de programari d’àlgebra lineal densa, almenys per a aquelles factoritzacions de matrius que fan ús de dades per panells de columnes, com és el cas de la DL, QR o SVD. D’aquesta forma, es fa permeable la frontera existent entre els algorismes d’alt nivell de LAPACK i els de baix nivell (i dependents de l’arquitectura) de BLAS. De la mateixa manera, les rutines BLAS implementades podran ser explotades per algorismes d’aprenentatge profund, beneficiant-se de l’augment de rendiment proporcionat per aquest programari. L’impacte del projecte està assegurat pel nombre i importància de les aplicacions que poden beneficiar-se dels mètodes desenvolupats en aquest projecte que, com s’ha esmentat anteriorment, no es limita únicament al camp de l’àlgebra lineal, sinó que s’estén a l’àrea d’aprenentatge profund. A més, aquest projecte afavorirà la col·laboració amb altres institucions, com la CMU, Universitat de Berkeley, AMD o IBM.