Automatic parallelization tool
An automatic parallelization tool is a computer program aiding in automatic parallelization of existing sequential (single-threaded) code into parallel (multithreaded or vectorized) code. It aims to facilitate re-use of already written software with the performance benefits of parallelization, reducing the amount of software rewriting needed, and saving the need to rewrite all of it.
In the past, parallel hardware was only implemented in high-end machines or by means of distributed computing, but with the advent of graphics processing units (GPUs) and multi-core central processing units (CPUs) in consumer devices it has become widespread in low-end computers also. Hence, it has become desirable to automate the process of converting older, single-threaded applications to exploit parallel hardware. Further, automatic parallelization tools can enable a focus on writing applications in a single-threaded manner while still benefiting from parallelization. Some caveats in the conversion include handling issues such as synchronization and deadlock avoidance, which do not arise in single-threaded computing.