1. A process of workload partitioning in a heterogeneous system, comprising: determining heterogeneous alignment constraints in the workload and system; partitioning first tasks among at least one alignment constrained processing element (ACPE); and partitioning second tasks among the at least one non-alignment constrained processing element (NACPE), wherein the workload comprises at least one parallel loop or any parallel regions that could be expressed as one or more loops, and the determining of the heterogeneous alignment constraints comprises finding whether there is an alignment boundary between the first tasks and the second tasks, whereas the first tasks comprise loop iterations that process aligned data and the second tasks comprise loop iterations that process misaligned data, and wherein, when an alignment boundary is found between the first and second tasks at a beginning of the loop, all iterations of the loop are assigned to the NACPE until at least one of a first alignment boundary or a subsequent alignment boundary is crossed, or when an alignment boundary is found between the first and second tasks at an end of the loop, all iterations of the loop past at least one of a last alignment boundary or a prior alignment boundary are assigned to the NACPE.