You shouldn't write "do" loops that start at the beginning and go until the 
end. You should just say that you want the calculation done and that your intent is that 
you have visited everything. And then of course you might have dependencies etc... but 
the idea is generally, don't say how to do it, just declare what you want as a result.

Of course, it doesn't immediately match what we are used to doing: telling the 
computer how we want things done; but you can't really say that you have to 
tell the computer more about parallelization. It's exactly the opposite.
Well, it is not that easy. You have to include enough information intro the 
program, and you have to break it down in a way that allows parallelism.
For instance, you need to tell the machine that your operators are associative 
or commutative to enable optimizations and reordering.
And there seem to be approaches for instance to infer parallel solutions like 
prefix-sum algorithms[1] but that is also restricted to certain applications. 
Nothing general, no holly grail or silver bullet.


Best regards
Stefan
Sure sure. I was just avoiding unnecessary details from the talk ;P

Reply via email to