Automating transformations of sequential programs for their parallelization in the SAPFOR system
Parallelization of written sequential programs often requires significant transformations, since in most cases these programs are well optimized for sequential execution. It is necessary to provide their transformation in order to eliminate dependencies and conflicts that interfere with their analysis and parallelization, since the main resource of parallelism is contained in loops. The following transformations exist: introducing and carrying out of loop invariant, combining loops, expanding and narrowing privatized variables in loops, splitting and merging loops, etc. This article will consider two major transformations – the expansion of privatized variables, which will eliminate the dependence of the closely nested loops, and the fission of loops, which will increase the number of parallelized closely nested loops. The result of transformations was tested on some programs of NAS Parallel Benchmarks suite.
SAPFOR, program parallelization, program transformation