Open64 — это бесплатный , открытый исходный код , оптимизирующий компилятор для архитектур микропроцессоров Itanium и x86-64 . Он происходит от компиляторов SGI для процессора MIPS R10000 , называемых MIPSPro . Первоначально он был выпущен в 2000 году как программное обеспечение GNU GPL под названием Pro64. В следующем году Университет Делавэра принял проект и переименовал компилятор в Open64. Сейчас он в основном служит исследовательской платформой для исследовательских групп по компиляторам и компьютерной архитектуре . Open64 поддерживает Fortran 77/95 и C / C++ , а также модель программирования с общей памятью OpenMP . Он может проводить высококачественный межпроцедурный анализ , анализ потока данных , анализ зависимости данных и анализ области массива. Разработка прекращена, хотя другие проекты могут использовать исходный код проекта.
Его основными компонентами являются frontend для C/C++ (использующий GCC ) и Fortran 77/90 (использующий front-end и библиотеки CraySoft), Interprocedural analysis (IPA), loop nest optimizer (LNO), global optimizer (WOPT) и code generator (CG). Несмотря на то, что Open64 изначально был написан для одной компьютерной архитектуры, он доказал, что может генерировать эффективный код для архитектур CISC , RISC и VLIW , включая MIPS , x86 , IA-64 , ARM и другие.
В этом компиляторе используется иерархическое промежуточное представление (IR) с пятью основными уровнями, которое служит общим интерфейсом между всеми компонентами frontend и backend . Это IR называется WHIRL.
В оригинальной версии Open64, выпущенной в 2002 году, отсутствовал очень продвинутый программный конвейерный генератор кода, и был только рудиментарный генератор кода для Itanium. Весь оригинальный компилятор MIPSPro с этим генератором кода доступен по коммерческой лицензии как компилятор Blackbird от Reservoir Labs. The Showdown Paper документирует генератор кода, который не был включен в Open64. Очень продвинутый компилятор от Tilera для его 64-ядерного чипа TILE64 основан на Blackbird.
Open64 существует во многих ветвях , каждая из которых имеет различные особенности и ограничения. «Классическая» ветвь Open64 — это Open Research Compiler (ORC), которая производит код только для Itanium (IA-64) и финансировалась Intel . Работа над ORC завершилась в 2003 году, а текущая официальная ветвь (которая возникла из проекта Intel ORC) управляется Hewlett-Packard и Лабораторией компьютерной архитектуры и параллельных систем (CAPSL) Университета Делавэра .
Другие важные ветви включают компиляторы Tensilica и AMD x86 Open64 Compiler Suite. [1]
Nvidia также использует форк Open64 для оптимизации кода в своей цепочке инструментов CUDA . [2]
Open64 используется в качестве бэкэнда для компиляторов HPE NonStop OS на платформе x86-64. [3]
Open64 также используется в ряде исследовательских проектов, таких как Unified Parallel C (UPC) и спекулятивная многопоточная работа в различных университетах. Форум разработчиков Open64 2010 года описывает проекты, выполненные в Absoft , AMD , Китайской академии наук , Университете Фудань , HP , Национальном университете Цинхуа , Nvidia , Tensilica , Университете Цинхуа и Университете Хьюстона . [4] Китайская академия наук перенесла Open64 на платформу Loongson II. [5]
AMD расширила и превратила Open64 в продукт с оптимизациями, разработанными для усовершенствований многоядерных процессоров x86 и разработки многопоточного кода. [6] AMD поддерживает Open64 как дополнительный компилятор к GCC . [7]
Проект OpenUH Хьюстонского университета, основанный на Open64, выпустил новую версию своего набора компиляторов в ноябре 2015 года. [8]