El proyecto LLVM presentó HPVM 1.0, un compilador para CPU, GPU, FPGA y aceleradores

Los desarrolladores del proyecto LLVM han publicado el lanzamiento del compilador HPVM 1.0 (Heterogeneous Parallel Virtual Machine), cuyo objetivo es simplificar la programación para sistemas heterogéneos y proporcionar herramientas para generar código para CPU, GPU, FPGA y aceleradores de hardware de dominio específico (soporte para Los FGPA y los aceleradores no se incluyeron en la versión 1.0). El código del proyecto se distribuye bajo la licencia Apache 2.0.

La idea principal de HPVM es proporcionar una representación unificada de programas ejecutables en paralelo durante la compilación, que se pueden usar para la ejecución utilizando varios tipos de hardware que admiten computación paralela, incluidas GPU, instrucciones vectoriales, procesadores multinúcleo, FPGA y varios chips aceleradores especializados. A diferencia de otros sistemas, HPVM intentó combinar tres capacidades para organizar la computación heterogénea: representación intermedia independiente del lenguaje y del hardware, arquitectura de conjunto de instrucciones virtuales (ISA) y programación de tiempo de ejecución.

La representación intermedia independiente del objetivo (IR) de HPVM se basa en la representación de instrucciones intermedias de LLVM 9.0 y la amplía con un gráfico de flujo de datos jerárquico para capturar el paralelismo a nivel de tarea, datos y canalización. La representación intermedia de HPVM también incluye instrucciones vectoriales y memoria compartida. El objetivo principal de utilizar una representación intermedia es la generación y optimización de código eficiente para sistemas heterogéneos.

La arquitectura del conjunto de instrucciones virtuales (ISA) permite la portabilidad entre diferentes tipos de hardware informático paralelo y permite no perder rendimiento al utilizar diferentes elementos de sistemas heterogéneos. Virtual ISA también se puede utilizar para entregar código de programa ejecutable universal que puede ejecutarse mediante CPU, GPU, FPGA y varios aceleradores.

En la etapa actual de desarrollo, HPVM ofrece generadores de código capaces de traducir nodos de aplicaciones definidos mediante una ISA virtual para su ejecución utilizando GPU NVIDIA (cuDNN y OpenCL), instrucciones vectoriales Intel AVX y CPU x86 multinúcleo. En tiempo de ejecución, HPVM aplica políticas flexibles de programación de procesos computacionales, implementadas tanto en función de la información del programa (estructura gráfica) como mediante la compilación de nodos de programas individuales para su ejecución en cualquiera de los dispositivos informáticos de destino disponibles en el sistema.

Cabe señalar que el uso de HPVM puede lograr un aumento significativo de la productividad. El rendimiento de los traductores HPVM es comparable al código OpenCL escrito a mano para GPU y dispositivos de computación vectorial.

En comparación con la primera versión preliminar, HPVM 1.0 incluye soporte para operaciones de tensor de álgebra lineal, interfaces para Pytorch y Keras, aproximaciones de operadores de convolución y un marco de ajuste de aproximaciones que selecciona automáticamente aproximaciones óptimas para operaciones de tensor específicas y selecciona la configuración que proporciona un rendimiento óptimo.

Fuente: opennet.ru

Añadir un comentario