Автоматический Распараллеливатель
Обзор
Автоматический Распараллеливатель это инструмент для поиска участков допускающих параллельное исполнение в коде, написанном на последовательном языке программирования. В некоторых случаях Автоматический Распараллеливатель модифицирует код для увеличения числа таких участков или же их размеров.
Автоматический Распараллеливатель использует библиотеки, поддерживающие стандарт 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 показывает отношение времени Автоматического Распараллеливателя ко времени, ко времени исполнения на эталонной машине:
Ниже приведены результаты сравнения (чем длиннее прямоугольник, тем лучше производительность):
Загрузка
Загрузка альфа-версии Автоматического Распараллеливателя. Если у вас возникли сложности, свяжитесь с нами support@optimitech.com.
Приложения:
В настоящее время Автоматический Распараллеливатель работает только с GCC, код которого был нами модифицирован. Чтобы использовать Автоматический Распараллеливатель Вам нужно иметь:
- Модифицированный gcc компилятор, который читает и записывает файлы с описанием семантики программы
- Автоматический распараллеливающий модуль, который читает файлы с семантикой программы, анализирует его, модифицирует и записывает их обратно
![]() |
Linux RPM |
|
||||
![]() |
Linux DEB |
|
||||
![]() |
Linux TAR.BZ |
|
Исходный код:
Здесь мы разместили наши изменения для исходных кодов 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 |
Документация:
![]() |
userguide.pdf | 0.2 MB |
Примеры:
![]() |
TAR.GZ | examples.tar.gz | 3.0 KB |
Links has been clicked:
User Guide: timesExamples: 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
ENGLISH


