Skip to Main Content
The aim is to achieve the highest possible speedup when distributing a program across a cluster of computational nodes. The speedup may be achieved by concurrent execution of the distributed modules. In order to maximise the concurrency, a two-stage approach is proposed. In the first stage, a novel statement-reordering algorithm reorders the statements within a given program, to maximise the distance between each call instruction and the instructions, which are data-dependent on any value affected by the call. In the second stage, a clustering algorithm is applied to look for a modular structure of the program which results in the highest concurrency in its execution. The clustering algorithm applies a novel performance evaluation function which is derived from the program code, automatically.