In this work, we implement a tool that automatically partitions loops and then executes these partitions on heterogeneous systems. Partitioning a loop is the process of dividing a loop to form two or more new loops, each iterating over a portion of the original loops iteration space. A heterogeneous system is a system that is equipped with, and uses, different kinds of processing units. An example of this is a system that has access to a CPU and a GPU.
Automatic Loop Partitioning for Heterogeneous Systems