Communication will occur, since a processor accesses a different section of array Y in each of the two loop nests. A solution that has no communication is to only parallelize the loop in the first loop nest. Each processor would then access columns of X , rows of Z , and columns of Y in both loop nests. The loop nests must also be analyzed to determine the relative positions of the arrays so that no communication is necessary. A simple decomposition example.
Squares represent array elements and circles represent iterations.
Lines connect the array elements and iterations that are allocated to the same processor.