Open64 es un compilador optimizador gratuito y de código abierto para las arquitecturas de microprocesadores Itanium y x86-64 . Deriva de los compiladores SGI para el procesador MIPS R10000 , llamados MIPSPro . Fue lanzado inicialmente en 2000 como software GNU GPL bajo el nombre Pro64. Al año siguiente, la Universidad de Delaware adoptó el proyecto y renombró el compilador a Open64. Ahora sirve principalmente como una plataforma de investigación para grupos de investigación de compiladores y arquitectura de computadoras . Open64 es compatible con Fortran 77/95 y C / C++ , así como con el modelo de programación de memoria compartida OpenMP . Puede realizar análisis interprocedimentales de alta calidad , análisis de flujo de datos , análisis de dependencia de datos y análisis de regiones de matriz. El desarrollo ha cesado, aunque otros proyectos pueden usar la fuente del proyecto.
Sus componentes principales son el frontend para C/C++ (utilizando GCC ) y Fortran 77/90 (utilizando el frontend y las bibliotecas de CraySoft), el análisis interprocedimental (IPA), el optimizador de bucles anidados (LNO), el optimizador global (WOPT) y el generador de código (CG). A pesar de haber sido escrito inicialmente para una única arquitectura informática, Open64 ha demostrado que puede generar código eficiente para arquitecturas CISC , RISC y VLIW , incluidas MIPS , x86 , IA-64 , ARM y otras.
En este compilador se utiliza una representación intermedia jerárquica (IR) con cinco niveles principales que actúa como interfaz común entre todos los componentes frontend y backend . Esta IR se denomina WHIRL.
La versión original de Open64 que se lanzó en 2002 carecía de su avanzado generador de código de canalización de software y solo tenía un generador de código rudimentario para Itanium. El compilador original MIPSPro completo, con este generador de código, está disponible bajo una licencia comercial como compilador Blackbird de Reservoir Labs. El documento Showdown documenta el generador de código que no estaba incluido en Open64. El compilador muy avanzado de Tilera, para su chip TILE64 de 64 núcleos, está basado en Blackbird.
Open64 existe en muchas bifurcaciones , cada una de las cuales tiene diferentes características y limitaciones. La rama "clásica" de Open64 es el Open Research Compiler (ORC), que produce código sólo para Itanium (IA-64), y fue financiado por Intel . El esfuerzo de ORC finalizó en 2003, y la rama oficial actual (que se originó a partir del proyecto Intel ORC) está administrada por Hewlett-Packard y el Laboratorio de Arquitectura Informática y Sistemas Paralelos (CAPSL) de la Universidad de Delaware .
Otras ramas importantes incluyen los compiladores de Tensilica y AMD x86 Open64 Compiler Suite. [1]
Nvidia también está utilizando una bifurcación de Open64 para optimizar el código en su cadena de herramientas CUDA . [2]
Open64 se utiliza como back-end para los compiladores del SO HPE NonStop en la plataforma x86-64. [3]
Open64 también se utiliza en varios proyectos de investigación, como Unified Parallel C (UPC) y trabajos especulativos sobre subprocesos múltiples en varias universidades. El Foro de desarrolladores de Open64 de 2010 describe proyectos realizados en Absoft , AMD , la Academia de Ciencias de China , la Universidad de Fudan , HP , la Universidad Nacional Tsing Hua , Nvidia , Tensilica , la Universidad de Tsinghua y la Universidad de Houston . [4] La Academia de Ciencias de China trasladó Open64 a la plataforma Loongson II. [5]
AMD ha ampliado y convertido en producto Open64 con optimizaciones diseñadas para los avances de los procesadores multinúcleo x86 y el desarrollo de código multiproceso. [6] AMD admite Open64 como un compilador complementario a GCC . [7]
El proyecto OpenUH de la Universidad de Houston, que se basa en Open64, lanzó una nueva versión de su suite de compiladores en noviembre de 2015. [8]