Abstract

Parallelizing transformations are applied in the process of high-level synthesis to enable the designer to optimize and improve the synthesis results. Parallelizing compilers often apply parallelizing transformations to convert a sequential program into a concurrentized or vectorized program so that the resulting parallel program can exploit the architectures of parallel machines. Concurrentization of loops in a sequential program is one of the most important transformations performed by these compilers. Loop concurrentization often requires insertion of $${ wait}$$ – $${ signal}$$ synchronization instructions within the body of the concurrentized loops to achieve synchronization among the threads for preserving the dependences of the original sequential program. In the current work, we have proposed a method of analyzing the synchronization instructions for constructing the dependence graph of a loop concurrentized program. The resulting dependence graph, devoid of the synchronization instructions, is then checked for equivalence with the dependence graph of the original sequential program using methods reported in the literature. The proposed algorithm signals errors if the parallel program deadlocks or becomes non-determinate due to faulty insertion of $${ wait}$$ – $${ signal}$$ instructions.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call