Things that a project need.

This is the main limit to parallelization. Think about things like a simulator where you need the previous time step to compute the next iteration.

Stride

Sometimes we can do n threads of work at the same time:

for i in 4..vec.len() {
	vec[i] = vec[i-4]+1;
	// we can do 4, 5, 6, and 7 at the same time
}

Memory Carried Dependancies

Used in Critical Paths.