В апреле 2008 г. военное агентство передовых исследований США DARPA анонсировало программу Architecture-Aware Compiler Environment (AACE), посвященную созданию так называемых динамических компиляторов, способных самособираться под различные целевые конфигурации ПО и оборудования и, самообучаясь, “на лету” оптимизировать генерируемый код. В таких компиляторах будут использованы алгоритмы машинного обучения и логического вывода на базе правил. Военные рассчитывают, что софт нового поколения самостоятельно научится формированию эффективного кода для всевозможных параллельных систем и архитектур — от суперкомпьютеров и кластеров до многоядерных универсальных и графических чипов, от мегагерцовых встраиваемых процессоров до петафлопсных гетерогенных систем. При этом заказчики желают получить максимально гибкие транслирующие системы, приводя в качестве контрпримера компилятор Open64/SGI MIPSPro, насчитывающий 2 млн. строк кода. Любые модификации этого компилятора, выполненного в классической архитектуре, обходятся в существенные суммы, а разработка подобных решений с нуля занимает годы. Да и программистам трудно постоянно изучать новые платформы и вручную оптимизировать код, особенно для многопроцессорных систем.
Компиляторы AACE станут, как предполагается, самособирающимися и самонастраивающимися под конкретные условия эксплуатации целевого продукта. А для достижения максимальной эффективности результирующей программы предлагается ввести цикл обратной связи — транслятор автоматически изучает работу созданного кода и улучшает выявленные в нём “узкие места”. В ходе такого процесса он одновременно выявляет шаблонные методы оптимизации, выполняет их многоуровневую классификацию и накапливает мета-знания о своей работе, формируя библиотеку удачных практик для повторного использования. Подобные системы также выполнят раскладку исходного кода в карту оптимизации, которая в ходе компиляции будет задействована для настройки на конкретную целевую платформу.
В первую очередь военные ожидают получить AACE-компиляторы для Фортрана и Си и POSIX-окружения. Фактически они будут состоять из двух модулей: собственно транслирующей системы, обучающейся оптимизации, и среды поддержки времени выполнения, динамически повышающей эффективность исполняемого кода на основе информации, формируемой компилятором, а также подстраивающей структуру этого кода под возможные изменения текущего контекста исполнения.
Прикладные результаты проекта должны появиться в 2011 г. В качестве промежуточных целей DARPA ожидает десятикратное сокращение времени разработки и 20%-е повышение производительности кода с помощью среды исполнения. Судя по этим критериям, заказчика больше интересует возможность получения кросс-платформной системы, способной генерировать производительный код на базе единых исходных текстов для различных программно-аппаратных архитектур, нежели достижение супер-производительности, которую, имея AACE-комплекс, проще получить наращиванием мощностей оборудования.