Auto parallelizer

GNU GCC based Auto-Parallelizer is a SIMD SSE/MMX instruction and process level OpenMP multi threading parallelizer, that imports program semantics from a customized GCC and returns it back after processing. It uses a set of UTL blocks that can parallelize code for any number of cores at compilation time. It is fully separate from GCC and does not fall under GNU Public License.

Auto-Parallelizer fully supports GCC technological chain including all GCC-supported front-ends (C, C++, Fortran, Ada etc.) and back-ends (X86, Cell, Itanium etc).

Performance

Auto-Parallelizer has showed impressive performance results on 6 SPEC/CPU2006 benchmarks. The results were compared to results of the most efficient x86 platform compiler - icc 10.1.008. The comparison was done on host: 2 x Intel Xeon X5365 3.0GHz, 4 core, FSB 1333MHz, 32+32 Kb L1 cache, 4+4Mb L2 cache, 4 Gb DDR2 with compilation flags:

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 [with options]*

* - running options

459.GemsFDTD --inter-module
462.libquantum --inter-module --pto
470.lbm --inter-module --pto
the others without options

Please see the comparison results below. Timing is in seconds. Ratio shows reference time to our measured time:

Performance
* - benchmark 410.bwaves was measured on 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 due to 410.bwaves compilation problems on icc 10.1.008.

Please see the Ratio comparison results (the longer bar shows better performance):

Performance
Measurements were performed on hosts provided by the Joint Supercomputer Center.

Download

Download Auto parallelizer alpha trial version. Feel free to contact us at support@optimitech.com.

Binaries:

At present Auto-Parallelizer works only with GCC with the modification we made in its sorce code. To make it operate you must have:

  • A modified gcc-based compiler that reads and writes program semantics description files
  • Auto-Parallelizer addendum that reads files, analyzes, modifies and writes them back
To make the product work you must install both packages: uopt and gcc-xml, gcc-xml depends on uopt. There are packages for several kinds of distributions, choose ones that are appropriate for your platform.

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

Source Codes:

Here we provide our modifications of gcc 4.3.0 that are under the terms of GNU Public License GPLv3. Gcc 4.3.0 can be downloaded here.

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

User Guide:

PDF userguide.pdf 0.2 MB

Examples:

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