1. An apparatus for performing dependent computations, comprising: an array of streaming multiprocessors to perform parallel computations, said array of streaming multiprocessors configured to share data via a shared memory; and a flush mechanism operative to flush queues along write paths between said array of streaming multiprocessors and said shared memory in response to a flush command; dependent computations being performed via a sequence in which a first streaming multiprocessor performs a first computational task and writes resultant data to the shared memory in one or more writes and a second streaming multiprocessor reads the resultant data from the shared memory and performs a second computational task dependent on the resultant data from the first computational task, said apparatus coordinating flushes to guarantee that the resultant data generated by the first streaming multiprocessor required for a dependent computation in the second streaming multiprocessor is available in said shared memory to be read by said second streaming multiprocessor.