c haskell llvm icc intel-mic

Ejecutando Haskell en Xeon-Phi



llvm icc (1)

Si compila su Haskell a través de C, ¿no se restringe el resultado para que no sea más rápido que C, ya que podría haber escrito ese código C directamente? Su pregunta indica que el proyecto que está intentando reproducir se compila a través de un idioma diferente.

Entonces, no estoy seguro de que las herramientas disponibles sean lo suficientemente avanzadas para hacer lo que usted quiere hacer, lo siento.

¿Hay alguna forma de compilar Haskell para que se ejecute en el coprocesador Xeon Phi?

Algunos investigadores de Intel han informado recientemente sobre el Compilador de Investigación Haskell (que no está disponible públicamente, lo que hace que sus resultados sean esencialmente irreproducibles) y midieron la Brecha de Haskell (lo que demuestra que en algunos casos el rendimiento de Haskell supera a C). Describen una ruta de compilación a través de un lenguaje intermedio llamado Pillar (similar a C-- ) y la compilan en C para que luego puedan usar icc para crear un código de objeto ejecutable en un Phi.

GHC admite la compilación a LLVM o genera código nativo directamente (NCG). Por lo que yo sé, ni hay un NCG dirigido a Phi disponible, ni un backend LLVM para el Phi. Al tener acceso a icc , parece posible una ruta a través de C , sin embargo, no estoy seguro de lo realista que es en la actualidad (creo que el generador de códigos C en GHC ya no es compatible, lo mismo es cierto para el backend LLVM IR-to-C, corrígeme si me equivoco).

Entonces, tres rutas vienen a la mente:

  1. Compile GHC en modo no registrado y compile con -fvia-c luego con icc

  2. Use la versión anterior de GHC para generar el código C y luego use icc

  3. Use la versión anterior de LLVM para ir a través de GHC LLVM, luego genere C desde LLVM y luego use icc

¿Qué ruta es la más viable (por qué / por qué no)? ¿Existen otras posibilidades ( descarté la ruta del Pilar ya que las herramientas como pillar2c no están (¿todavía?) Disponibles públicamente).

Una pregunta relacionada es sobre la compatibilidad x86 de la Phi: parece que las instrucciones SSE / AVX no son compatibles y algunos códigos de objeto no se ejecutarán si se compilan, por ejemplo, con gcc o clang .

Actualización :

Después de conversar con algunas personas de Intel en la conferencia LLVM, parece poco probable que liberen su backend Phi LLVM. Sin embargo, la próxima generación de Xeon Phi soportará AVX512.