Automatic Parallelization for GCC (beta)

Published on Tuesday, 06 October 2009 04:42
Written by Douglas Eadline
Hits: 6192

That is parallelization not paralyzation

Recently, I had a conversation with Dmitry Tkachev of T-Platforms. Of course many of you may not know about T-Platforms because you don't buy clusters in Russia. Dmitry was not trying to sell me a cluster, however. He was pointing me to some auto-parallelizing compiler technology from a Russian software company called Optimitech.

I asked Dmitry if he could provide a brief summary of what Optimitech was developing for the HPC crowd as they offer some auto-parallelizing patches to gcc/gfortran. In any case, I'll let Dmitry continue (I helped with the grammar a bit, although some may consider my help questionable.)

Optimitech provides a technology called Universal Translating Library (UTL) that allows simplification of existing compilers and assists in the creation new ones. Universal Translating Library is a set of building blocks that contain elaborate state-of-the-art tools for program analysis, debugging, optimization, compilation and parallelization, available as source code or run-time libraries. Individual building blocks can be used to create your own compiler at a fraction of the regular time and cost.

One interesting application of the UTL technology is the Auto-Parallelizer -- a tool that looks for parallelizable parts of sequential source code. Auto-Parallelizer is available as an addition to the gcc compiler suite and supports C/C++ and Fortran languages on x86, IA64, Power and CellBE architectures. GCC technology is used to translate programs from a high level language into a target architecture language. From this point UTL technology is used to perform static analysis of the program, extract parallelism, and perform program optimizations.

Auto-Parallelizer was benchmarked against Intel icc v.11.0 compiler on x86 and IA64 using SPEC/SPU2006 and NAS Parallel benchmarks. The most notable results are obtained on NAS Parallel benchmarks where Auto-Parallelizer successfully parallelized code that icc could not. Source and a beta-binary are available.

Unfortunately you have Javascript disabled, please enable Javascript in order to experience the comments correctly