Something like:
Code:
for (i = 0; i < 10000; i++)
    a[i] = b[i] * c[i];
might be rewritten by a smart compiler into:
Code:
for (i = 5000; i < 10000; i++)
    a[i] = b[i] * c[i];

for (iprime = 0; iprime < 5000; iprime++)
    a[iprime] = b[iprime] * c[iprime];
broken into two simultaneous threads. Kewl, eh?