Auto parallelizer

Overview

Auto-Parallelizer is a tool that looks for parallelizable parts of source code of applications written in a sequential manner and language. In some cases it modifies the source code to maximize the number of such parts or to extend them. For example, a user can write a computational program in a sequential manner, then feed the source codes to the Auto-Parallelizer and the tool will produce code, some parts of which are executable in parallel. This usually speeds up the program execution by several times.

Auto-Parallelizer uses libraries that support OpenMP standard for executing code in parallel. In current implementation it uses libgomp, however it is portable to any existing library that supports all needed interface functions. The implementation currently parallelizes loops only. However in future it will also parallelize sections of sequential code, e.g. several calls.

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

The modified gcc-based part is available as built for x86 linux flavors binaries and as a source code. The addendum is isolated from gcc – it is based on Universal Translating Library and comprises our intellectual property. The addendum is available as binary package built for x86 linux flavors.

Beta version

We've launched beta-version of Auto-Parallelizer for Linux on x86, IA64 and PowerPC platforms. We compared performance results of Auto-Parallelizer beta version with the results of one of the most efficient compiler for x86 and IA64 platforms - icc 11.0.074, results of the most efficient compiler for PowerPC platform as well as results of the most widely spread compiler - gcc (version 4.3.1). The comparison were done on 6 berchmarks from SPEC/CPU2006 and on 6 benchmarks from NAS Parallel Benchmarks 3.3.

User guide

Here you can get documentation of Auto-Parallelizer using.

PDF userguide.pdf 0.2 MB

Source code

Here we have put our changes that were done for GCC 4.3.1 source code; they are under the terms of (GNU Public License GPLv3). GCC 4.3.1 can be downloaded here.

BZ2 gcc-4.3.1-gcc-xil-1.0.0-beta1.bz2 0.2 MB

Here we put archive with schemes for xml-files that are used by gcc-xil for representation saving and restoring.

TAR.BZ2 gcc-xil-1.0.0-schemes.tar.bz2 13 KB

Examples

Below you can find archive with a number of simple examples, that are mentioned in user guide and help you to start Auto-Parallelizer using.

TAR.BZ2 examples.tar.bz2 3.0 KB

How to get Auto-Parallelizer

To get beta-version of Auto-Parallelizer you should fill in the form given below. Atfer that we will send you references for downloading and digital key that is required for installation.

First Name:*

Last Name:*

Company:

Country of residence:

Email:*

Platform:

Comments:


Performance

Below the measurement results for each platform are given.

Measurement results on X86 platform

Measurement results on IA64 platform

Measurement results on PowerPC platform

Links has been clicked:

User Guide: times
Examples: times
Gcc-xml patch: times
Gcc-xml schemes: times
counter