1. An apparatus for extracting data dependencies during runtime, comprising: a processor; and a memory coupled to the processor, the memory comprising instructions and/or data to be operated upon by the processor, wherein the processor comprises: a vector register having a plurality of vector slots; a plurality of store caches, each store cache in the plurality of store caches being coupled to and associated with a separate vector slot in the plurality of vector slots; and dependency checking logic coupled to the plurality of store caches, wherein the processor: executes a first parallel execution group, the first parallel execution group comprising a subset of iterations of a loop, by executing each iteration in the subset of iterations in parallel with other iterations of the subset of iterations, using the vector register, wherein each iteration in the subset of iterations is associated with a separate vector slot in the vector register; stores store data for each iteration, in the subset of iterations, that performs a store operation, in a corresponding store cache of the plurality of store caches, associated with the vector slot associated with the iteration; determines, by the dependency checking logic, for each iteration in the subset of iterations, whether the iteration has a data dependence; and commits store data from the plurality store caches to the memory only for iterations in the subset of iterations for which no data dependence is determined by the dependency checking logic, wherein: if a data dependence is detected for an iteration in the subset of iterations, then that iteration and all subsequent iterations in the first parallel execution group are masked so that any store data associated with the iteration and all subsequent iterations are not committed to the memory, masking the iteration and all subsequent iterations in the first parallel execution group comprises using a mask vector that comprises a mask value for each of the vector slots, and each of the mask values is set to a first value if the iteration corresponding to the vector slot does not have a data dependence and a second value if the iteration corresponding to the vector slot has a data dependence or has a greater data parallel identifier (DPID) than a vector slot whose corresponding iteration has a data dependence.