O proxecto LLVM presentou HPVM 1.0, un compilador para CPU, GPU, FPGA e aceleradores

Os desenvolvedores do proxecto LLVM publicaron o lanzamento do compilador HPVM 1.0 (Heterogeneous Parallel Virtual Machine), destinado a simplificar a programación para sistemas heteroxéneos e proporcionar ferramentas para xerar código para CPUs, GPU, FPGA e aceleradores de hardware específicos de dominio (soporte para Os FGPA e os aceleradores non se incluíron na versión 1.0). O código do proxecto distribúese baixo a licenza Apache 2.0.

A idea principal de HPVM é proporcionar unha representación unificada de programas executables en paralelo ao compilar, que se pode usar para a execución usando varios tipos de hardware que admiten computación paralela, incluíndo GPU, instrucións vectoriais, procesadores multinúcleo, FPGA e varios chips aceleradores especializados. A diferenza doutros sistemas, HPVM intentou combinar tres capacidades para organizar a informática heteroxénea: representación intermedia independente da linguaxe e do hardware, a arquitectura de conxunto de instrucións virtuais (ISA) e a programación do tempo de execución.

A representación intermedia (IR) independente do destino de HPVM baséase na representación de instrucións intermedias LLVM 9.0 e esténdea cun gráfico de fluxo de datos xerárquico para capturar o paralelismo a nivel de tarefa, datos e canalización. A representación intermedia de HPVM tamén inclúe instrucións vectoriais e memoria compartida. O propósito principal do uso dunha representación intermedia é a xeración e optimización de código eficiente para sistemas heteroxéneos.

A arquitectura de conxuntos de instrucións virtuais (ISA) permite a portabilidade entre diferentes tipos de hardware de computación paralela e permite non perder rendemento cando se usan diferentes elementos de sistemas heteroxéneos. Virtual ISA tamén se pode usar para entregar código de programa executable universal que se pode executar usando CPU, GPU, FPGA e varios aceleradores.

Na fase actual de desenvolvemento, HPVM ofrece xeradores de código capaces de traducir nodos de aplicacións definidos mediante un ISA virtual para a súa execución mediante GPU NVIDIA (cuDNN e OpenCL), instrucións vectoriais Intel AVX e CPU x86 multinúcleo. Durante o tempo de execución, HPVM aplica políticas de programación de procesos computacionais flexibles, implementadas tanto en base á información do programa (estrutura gráfica) como mediante a compilación de nodos individuais do programa para a súa execución en calquera dos dispositivos informáticos de destino dispoñibles no sistema.

Nótase que o uso de HPVM pode conseguir un aumento significativo da produtividade. O rendemento dos tradutores HPVM é comparable ao código OpenCL escrito a man para GPU e dispositivos de computación vectorial.

En comparación coa primeira versión de vista previa, HPVM 1.0 inclúe soporte para operacións de tensor de álxebra lineal, interfaces para Pytorch e Keras, aproximacións de operadores de convolución e un marco de axuste de aproximación que selecciona automaticamente as aproximacións óptimas para operacións de tensores específicas e selecciona a configuración que proporciona un rendemento óptimo.

Fonte: opennet.ru

Engadir un comentario