A so-called SPMD style OpenMP program can achieve scalability on ccNUMA systems by means of array privatization, and earlier
research has shown good performance under this approach. Since it is hard to write SPMD OpenMP code, we showed a strategy
for the automatic translation of many OpenMP constructs into SPMD style in our previous work. In this paper, we first explain
how to interprocedurally detect whether the OpenMP program consistently schedules the parallel loops. If the parallel loops
are consistently scheduled, we may carry out array privatization according to OpenMP semantics. We give two examples of code
patterns that can be handled despite the fact that they are not consistent, and where the strategy used to translate them
differs from the straightforward approach that can otherwise be applied.
This work was partially supported by the DOE under contract DE-FC03-01ER25502 and by the Los Alamos National Laboratory Computer
Science Institute (LACSI) through LANL contract number 03891-99-23.