  OpenMP provides programmers with directives to parallelize DOALL loops such
as parallel for and, more recently, taskloop for task-based parallelism. On the
other hand, when it is possible to prove that a loop is DOACROSS, programmers
can try to parallelize it through parallel for and to use the OpenMP ordered
directive to mark the region of the loop that has to be executed sequentially.
However, when neither of the previous two cases can be proven, programmers have
to be conservative and assume that the loop is DOACROSS (actually may
DOACROSS). Previous work proposed speculative support for taskloop (tls clause)
and thus made it possible to parallelize may DOACROSS loops exploiting
task-based parallelism and the fact that many of them are computationally
intensive and DOALL at runtime. This paper proposes Speculative Task Execution
(STE) through the addition of speculative privatizations to taskloop tls with
two novel clauses: spec_private and spec_reduction. We also present a
performance comparison between taskloop-tls with speculative privatizations vs.
ordered that reveals that, for certain loops, slowdowns using OpenMP DOACROSS
can be transformed in speed-ups of up to 1.87x by applying speculative
parallelization of tasks.
