Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Dialetti MLIR

Panoramica

Per separare target hardware e software diversi, MLIR ha "dialetti", tra cui:

  • TensorFlow IR, che rappresenta tutte le cose possibili nei grafici TensorFlow.
  • XLA HLO IR, progettato per sfruttare le capacità di compilazione di XLA (con output, tra l'altro, TPU).
  • Un dialetto affine sperimentale, che si concentra su rappresentazioni poliedriche e ottimizzazioni.
  • LLVM IR, che ha un mapping 1: 1 tra esso e la rappresentazione di LLVM, consentendo a MLIR di emettere GPU e codice CPU tramite LLVM.
  • TensorFlow Lite, che si tradurrà in esecuzione del codice su piattaforme mobili.

Ogni dialetto è costituito da una serie di operazioni definite su cui sono posti invarianti, come: "Questo è un operatore binario e gli input e gli output hanno gli stessi tipi".

Aggiunta a MLIR

MLIR non ha un elenco fisso / integrato di operazioni note a livello globale (nessun "intrinseco"). I dialetti possono definire tipi completamente personalizzati, che è il modo in cui MLIR può modellare cose come il sistema di tipi IR LLVM (che ha aggregati di prima classe), astrazioni di dominio importanti per gli acceleratori ottimizzati ML come i tipi quantizzati e persino i sistemi di tipi Swift o Clang (che sono costruiti attorno ai nodi di dichiarazione Swift / Clang) in futuro.

Se si desidera connettere un nuovo compilatore di basso livello, è necessario creare un nuovo dialetto e gli abbassamenti tra il dialetto Graph TensorFlow e il dialetto. Questo facilita il percorso per i produttori di hardware e compilatori. Puoi anche scegliere come target dialetti a diversi livelli nello stesso modello; gli ottimizzatori di livello superiore rispetteranno le parti non familiari dell'IR e attenderanno un livello inferiore per gestirlo.