Введение

Open64 — бесплатный компилятор с открытым исходным кодом, оптимизирующий для микропроцессорных архитектур Itanium и x86 64. Он основан на компиляторах SGI для процессора MIPS R10000, известных как MIPSPro. Первоначально он был выпущен в 2000 году как программное обеспечение под лицензией GNU GPL под названием Pro64. В следующем году Университет Делавера поддержал проект и переименовал компилятор в Open64. В настоящее время он в основном используется как исследовательская платформа для групп, занимающихся исследованиями в области компиляторов и компьютерной архитектуры. Open64 поддерживает Fortran 77/95 и C/C++, а также модель параллельного программирования с общей памятью OpenMP. Он способен выполнять высококачественный межпроцедурный анализ, анализ потока данных, анализ зависимостей данных и анализ областей массивов. Разработка проекта остановлена, однако другие проекты могут использовать его исходный код.

Инфраструктура

Его основными компонентами являются фронтенд для C/C++ (с использованием GCC) и Fortran 77/90 (с использованием фронтенда и библиотек CraySoft), межпроцедурный анализ (IPA), оптимизатор вложенных циклов (LNO), глобальный оптимизатор (WOPT) и генератор кода (CG). Несмотря на то, что изначально он был разработан для одной компьютерной архитектуры, Open64 доказал свою способность генерировать эффективный код для архитектур CISC, RISC и VLIW, включая MIPS, x86, IA 64, ARM и другие.

Промежуточное представительство

В этом компиляторе используется иерархическое промежуточное представление (IR) с пятью основными уровнями, которое служит общим интерфейсом между всеми компонентами фронтенда и бэкенда. Это промежуточное представление называется WHIRL.

Версии

В оригинальной версии Open64, выпущенной в 2002 году, отсутствовал высокопроизводительный генератор кода для программного конвейера, и был доступен только примитивный генератор кода для Itanium. Весь оригинальный компилятор MIPSPro, включающий этот генератор кода, доступен под коммерческой лицензией как компилятор Blackbird от Reservoir Labs. В документе Showdown описан генератор кода, который не был включен в 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. Nvidia также использует форк Open64 для оптимизации кода в своем наборе инструментов CUDA. Open64 используется в качестве бэкенда для компиляторов HPE NonStop OS на платформе x86 64.

Релизы Open64

Версия Дата выпуска
5.0 2011 11 11
4.2.4 2011 04 12
4.2.3 2010 04 09
4.2.1 2008 12 08
4.2 2008 10 01
4.1 2007 12 03
4.0 2007 06 15
3.1 2007 04 13
3.0 2006 11 22
2.0 2006 10 02
1.0 2006 09 22
0.16 2003 07 07
0.15 2002 11 30
0.14 2002 03 04
0.13 2002 01 10

AMD x86 Open64 выпуски

Версия Дата выпуска4.5.2.12013 03 284.5.22012 08 084.5.12011 12 194.2.42010 06 294.2.3.22010 05 174.2.3.12010 01 294.2.32009 12 114.2.2.32009 11 234.2.2.22009 08 314.2.2.12009 06 034.2.22009 04 24

Текущие проекты развития

Open64 также используется в ряде исследовательских проектов, таких как Unified Parallel C (UPC) и работы по спекулятивному многопоточному исполнению в различных университетах. Форум разработчиков Open64 2010 года представил проекты, выполненные компаниями Absoft, AMD, Китайской академией наук, университетом Фудань, HP, Национальным университетом Цинхуа, Nvidia, Tensilica, университетом Цинхуа и университетом Хьюстона. Китайская академия наук портировала Open64 на платформу Loongson II. AMD расширила и внедрила Open64 в производство, добавив оптимизации, разработанные для усовершенствования многоядерных процессоров x86 и разработки многопоточного кода. AMD поддерживает Open64 как дополнительный компилятор к GCC. Проект OpenUH университета Хьюстона, основанный на Open64, выпустил новую версию своего компиляторного пакета в ноябре 2015 года.