Automatic parallelization tool

It is quite natural for programmers to think sequentially and hence they are less acquainted with writing multi-threaded or parallel processing applications.

The process starts with identifying code sections that the programmer feels have parallelism possibilities.

This is the first stage where the scanner will read the input source files to identify all static and extern usages.

The grammar engine will check patterns of tokens that match with pre-defined rules to identify variables, loops, controls statements, functions etc.

These constructs will instruct the scheduler on which core a particular task will execute along with the start and end times......

YUCCA is a Sequential to Parallel automatic code conversion tool developed by KPIT Technologies Ltd. Pune.

The purpose of this source-to-source compiler is to adapt existing applications to various hardware targets such as multicore systems, high performance computers and GPUs.

In addition to many commonly known passes, Polaris includes advanced capabilities performing the following tasks: Array privatization, Data dependence testing, Induction variable recognition, Inter procedural analysis, and symbolic program analysis.

The auto-parallelization feature of the Intel C++ Compiler automatically translates serial portions of the input program into semantically equivalent multi-threaded code.

Automatic parallelization determines the loops that are good work sharing candidates, performs the data-flow analysis to verify correct parallel execution, and partitions the data for threaded code generation as is needed in programming with OpenMP directives.

The OpenMP and Auto-parallelization applications provide the performance gains from shared memory on multiprocessor systems.

It integrates several steps into its workflow to search for parallel sites, enable users to mark loops for vectorization and threading, check loop-carried dependencies and memory access patterns for marked loops, and insert pragmas for vectorization and threading.

For input programs with existing OpenMP directives, the tool will double check the correctness when the right option is turned on.

Compared to conventional tools, AutoPar can incorporate user knowledge (semantics) to discover more parallelization opportunities.

This tool provides users with the assistance needed for OpenMP parallelization of a sequential program.

[2] It is a new source-to-source parallelization system for HPF+ (optimized version of HPF), which addresses the requirements of irregular applications.

SUIF (Stanford University Intermediate Format) is a free infrastructure designed to support collaborative research in optimizing and parallelizing compilers.

By use of a simulation based performance and real-time analysis, different task allocation alternatives are benchmarked against each other.

TRACO uses the Omega Calculator, CLOOG and ISL libraries, and the Petit dependence analyser.

The tool is developed by the West-Pomeranian University of Technology team; (Bielecki, Palkowski, Klimek and other authors) http://traco.sourceforge.net.

Its main advantage is that it can be used to write straightforward code that automatically takes full advantage of all the processing power available, without programmers needing to be concerned with identifying parallelisms, specifying vectorization, avoiding race conditions, and other challenges of manual directive-based programming approaches such as OpenMP.

As of 2015, versions of the SequenceL compiler generate parallel code in C++ and OpenCL, which allows it to work with most popular programming languages, including C, C++, C#, Fortran, Java, and Python.

A platform-specific runtime manages the threads safely, automatically providing parallel performance according to the number of cores available.

Allowing that the program exploits non shared-memory architectures such as cluster, or Network-on-Chip based(NoC-based) multiprocessors-system-on-chip (MPSoC).

Workflow of the AutoPar tool