Abstract:
Creating efficient parallel software can be a complicated and time consuming task, as there are many issues that need to be considered, such as race-conditions, thread-bound data dependencies and locking issues, among others. An automated parallelization system could solve such issues, and would be of huge bene t to developers. Such a system
would ideally take in a sequential program and produce, using program transformation, an
optimized, parallel and equivalent program, without human interaction. There are two main
approaches to the transformation of functional programs: fold/unfold based systems, based on the works of Burstall and Darlington [7], and calculational methods based systems, based on the Bird-Meertens Formalisms [3, 2, 31, 14, 1, 37]. In this paper we examine existing works on automating the parallelization process, speci cally that of functional languages and review and compare their contributions to the field.