Автоматический Распараллеливатель

Обзор

Автоматический Распараллеливатель это инструмент для поиска участков допускающих параллельное исполнение в коде, написанном на последовательном языке программирования. В некоторых случаях Автоматический Распараллеливатель модифицирует код для увеличения числа таких участков или же их размеров.

Автоматический Распараллеливатель использует библиотеки, поддерживающие стандарт OpenMP для исполнения параллельного кода, в текущей реализации используется библиотека libgomp. Однако, Автоматический Распараллеливатель может быть перенесен на любую библиотеку, поддерживающую все необходимые интерфейсы. Текущая реализация распараллеливает только цикловые участки, в ближайшем будущем также предполагается распараллеливать и секции (ациклические части последовательной программы), в частности, содержащие вызовы.

В настоящее время Автоматический Распараллеливатель работает только с GCC, код которого был нами модифицирован. Чтобы использовать Автоматический Распараллеливатель Вам нужно иметь:

  • Модифицированный gcc компилятор, который читает и записывает файлы с описанием семантики программы
  • Автоматический распараллеливающий модуль, который читает файлы с семантикой программы, анализирует его, модифицирует и записывает их обратно

Модифицированный gcc компилятор доступен как приложение для x86 Linux, так и в исходных кодах. Автоматический распараллеливающий блок является продуктом, изолированным от gcc. Он создан на основе Универсальной Библиотеки Трансляции и является нашей интеллектуальной собственностью. Автоматический распараллеливающий модуль доступен как приложение для x86 Linux.

Производительность

Автоматический Распараллеливатель показал впечатляющие результаты на 6 задачах из пакета SPEC/CPU2006. Производилось сравнение автораспараллеливающей системы с наиболее эффективного компилятора для x86 платформы - icc 10.1.008. Для этого использовалась машина: 2 x Intel Xeon X5365 3.0GHz, 4 core, FSB 1333MHz, 32+32 Kb L1 cache, 4+4Mb L2 cache, 4 Gb DDR2 со следующими флагами компиляции:

icc icc -O2 -ipo -static -no-prec-div
icc parallel icc -O2 -parallel -ipo -static -no-prec-div
gcc gcc -O2
uopt-gcc gcc -O2 + auto-parallelizer [с опциями]*

* - опции запуска

459.GemsFDTD --inter-module
462.libquantum --inter-module -pto
470.lbm --inter-module -pto
все остальные без опций

Результаты сравнения приведены ниже. Время выражено в секундах. Поле ratio показывает отношение времени Автоматического Распараллеливателя ко времени, ко времени исполнения на эталонной машине:

Performance
* - тест 410.bwaves компилировался с помощью icc 10.0.023, и запускался на 2 x Intel Xeon 5160 3.0GHz, 2 core, FSB 1333MHz, 32+32 Kb L1 cache, 4Mb L2 cache, 4 Gb DDR2 box (из-за проблем с компиляцией с помощью icc 10.1.008).

Ниже приведены результаты сравнения (чем длиннее прямоугольник, тем лучше производительность):

Performance
Замеры производились на машинах, предоставленных Межведомственным Суперкомпьютерным центром.

Загрузка

Загрузка альфа-версии Автоматического Распараллеливателя. Если у вас возникли сложности, свяжитесь с нами support@optimitech.com.

Приложения:

В настоящее время Автоматический Распараллеливатель работает только с GCC, код которого был нами модифицирован. Чтобы использовать Автоматический Распараллеливатель Вам нужно иметь:

  • Модифицированный gcc компилятор, который читает и записывает файлы с описанием семантики программы
  • Автоматический распараллеливающий модуль, который читает файлы с семантикой программы, анализирует его, модифицирует и записывает их обратно
Чтобы Автоматический Распараллеливатель заработал вам необходимо установить оба пакета: uopt и gcc-xml, причем gcc-xml зависит от uopt. Ниже указаны пакеты для различных типов операционных систем, выберите тот, который подходит для вашей платформы.

Linux
RPM
gcc-xml-1.0.0-alpha3.i386.rpm 20.7 MB
uopt-1.0.0-alpha3.i386.rpm 0.9 MB
Linux
DEB
gcc-xml_1.0.0-alpha3_i386.deb 18.1 MB
uopt_1.0.0-alpha3_i386.deb 0.8 MB
Linux
TAR.BZ
gcc-xml-1.0.0-alpha3.i386.tar.bz 45.1 MB
uopt-1.0.0-alpha3.i386.tar.bz 0.8 MB

Исходный код:

Здесь мы разместили наши изменения для исходных кодов GCC 4.3.0, которые подпадают под действие GNU лицензии (GNU Public License GPLv3). GCC 4.3.0 может быть загружен здесь.

TAR.BZ gcc-4.3.0-xml.tar.bz 0.2 MB

Документация:

PDF userguide.pdf 0.2 MB

Примеры:

TAR.GZ examples.tar.gz 3.0 KB

Links has been clicked:

User Guide: times
Examples: times
Tarball:gcc-xml: times
Tarball:uopt: times
Debian packages:gcc-xml: times
Debian packages:uopt: times
RPM packages:gcc-xml: times
RPM packages:uopt: times
Gcc-xml patch: times
counter