Loop Dependencies
do I = 2, n X(I) = A * X(I-1) + B;
One way to parallelize this loop would be to ‘unroll’ this loop (create (N-2) copies of the loop). However, a dependency exists between the current X value and the previous loop value, so loop unrolling will not give us anymore parallelism.
This type of data dependency cannot be solved at the implementation level, but must be addressed at the compiler level.