In shared memory programs contention often occurs at the transition between
a sequential and a parallel section of the code. As all threads start exec
uting the parallel section, they often access data just modified by the thr
ead that executed the sequential section, causing a flurry of data requests
to converge on that processor.
We address this problem in a software distributed shared memory system by r
eplicating the execution of the sequential sections on all processors. Comm
unication during this replicated sequential execution is reduced by using m
ulticast.
We have implemented replicated sequential execution with multicast support
in Open MP/NOW, a version of of OpenMP that runs on networks of workstation
s. We do not rely on compile-time data analysis, and therefore we can handl
e irregular and pointer-based applications. We show significant improvement
for two pointer-based applications that suffer from severe contention with
out replicated sequential execution.