Проект HPC представил новую версию (1.4) своей открытой платформы для паралеллизации вычислений и обеспечения исполнения кода для гетерогенных сред - Par4All, в которой расширены средства обработки и генерации кода CUDA и OpenCL. Кроме того, в новой версии завершен анализ зависимостей, возникающих при доступе к глобальным переменным, что позволило улучшить в Par4All поддержку распараллеливание процессов.
В рамках проекта Par4All развивается автоматизированный оптимизирующий и распараллеливающий компилятор для традиционных "последовательных" программ, написанных на языках C и Fortran. На базе оригинального исходного кода приложения Par4All создаёт вариант кода с задействованием техник распараллеливания, а также c использованием CUDA и OpenCL для выноса вычислительных задач на плечи GPU. Главная цель такой кросс-компиляции исходных текстов в том, чтобы достичь на специфическом многоядерном (многопроцессорном) оборудовании максимальной (пиковой) производительности, при этом, никак не переписывая изначальную программу, а получая на выходе уже оптимизированный и адаптированный под её параллельное исполнение код.
Целевой исходный код генерируется под конкретную платформу, выбор которых достаточно широк, от традиционных многоядерных процессоров, до кластеров из высокопроизводительных графических процессоров (GPU). При этом дизайн поддержки таков, что весь дополнительный код инкапсулируется в дополнительно-внедряемые классы ООП, которые максимально прячут детали новой логики, чтобы оставить общую структуру и внешнюю логику первоначального приложения максимально нетронутой.
Главная цель Par4all – способствовать миграции, а также оптимизации обычного программного обеспечения на современные многоядерные процессоры, а также на специализированные высокопроизводительные системы (кластеры) из параллельно и совместно работающих процессоров. Проект HPC основан в декабре 2007 года и базируется на материалах 20-летнего академического исследования государственной американской исследовательской программы "InterProcedural Parallelisation of scientific programs".
Среди главных преимуществ подхода, реализованного в Par4all:
- Оригинальный исходный код программы никак не модифицируется;
- Генерируется максимально оптимизируемый код для широкого набора вариантов процессорного оборудования;
- Предусмотрена возможность и средства для ручной оптимизации исходного кода для нестандартных случаев.
- Сгенерированные новые исходные тексты далее могут быть обработаны (скомпилированы) с использованием стандартных компиляторов, таких как:
- Обычные компиляторы с набором требуемых оптимизирующих настроек для конкретного процессора или платформы;
- Компилятор конкретного вендора для встраиваемых систем;
- Для CUDA (поддержка только Cи);
- Для OpenCL (поддержка только Cи);
- Для OpenMP;
- Возможно связыванием с MPI и другими библиотеками.
В ближайших планах проекта реализация поддержки кросс-компиляции для Java- и Python-программ, а также обеспечение интеграции и поддержки популярной среды разработки Eclipse. Также идет работа над существенно улучшенной поддержкой CUDA.