In this example, at least, there is a natural correspondence between partitioning data and computation, because both halves of the computation have a uniform amount of work per data. If you can establish a clear relationship between the data and the computation per data, then you can easily partition data. This is like have a "work/weight" function that maps data to computation. This applies even if the work per data is not uniform.

If this relationship is far less clear, then it is more natural to divide based on the overall computation, because you can't easily establish the relationship between the data and the computation. However, for this example both amplifying the brightness and averaging both have a clear relationship between the data and computation.

In this example, at least, there is a natural correspondence between partitioning data and computation, because both halves of the computation have a uniform amount of work per data. If you can establish a clear relationship between the data and the computation per data, then you can easily partition data. This is like have a "work/weight" function that maps data to computation. This applies even if the work per data is not uniform.

If this relationship is far less clear, then it is more natural to divide based on the overall computation, because you can't easily establish the relationship between the data and the computation. However, for this example both amplifying the brightness and averaging both have a clear relationship between the data and computation.