On 06/22/15 12:20, Jakub Jelinek wrote:
OpenMP worksharing loop is just coordination between the threads in the
team, which thread takes which subset of the loop's iterations, and
optionally followed by a barrier. OpenMP simd loop is a loop that has
certain properties guaranteed by the user and can be vectorized.
In contrast to this, OpenACC spawns all the threads/CTAs upfront, and then
idles on some of them until there is work for them.
correct. I expressed my question poorly. What I mean is that in openmp, a loop
that is parallelizeable (by user decree, I guess[*]), should not be transformed
such that it is not parallelizeable.
This seems to me to be a common requirement of both languages. How one gets
parallel threads of execution to the body of the loop is a different question.
nathan
[*] For ones where the compiler needs to detect parallizeablilty, it's
preferable that it doesn't do something earlier to force serializeablility.
--
Nathan Sidwell