I’m always iffy about the possessive on words that end in “s”. Anyway, Sun’s Ruud van der Pas read a recent blog post over at Cilk Arts comparying that company’s parallel development platform and OpenMP, and found fault
Certain comments made also may give rise to a somewhat distorted view on OpenMP for those readers that are less into the aspects of parallel programming. For example, the statement that OpenMP is most suitable for loops only. This has never been the case and certainly the introduction of the flexible and powerful tasking concept in OpenMP 3.0 (released May 2008) is a big step forward.
Tip o’ the chapeau to Sun’s HPC Watercooler for the find. The article takes a point/counterpoint approach as in the following exchange
“Unfortunately, some of the OpenMP directives for managing memory consistency and local copies of variables affect the semantics of the serial code, compromising this desirable property unless the code avoids these pragmas.”
I don’t think OpenMP directives affect the semantics of the serial code, so how can this be the case? An OpenMP program can always be compiled in such a way that the directives are ignored, effectively compiling the serial code.
I suspect the author refers to the “#pragma omp flush” and “#pragma omp private” directives. These affect the semantics of the parallel version, not the serial code, but either or both could be required to ensure correct parallel execution. The need for this depends on the specific situation.
There is also a growing comment thread on this post that is sure to be interesting. Read both sides, and join the conversation. This is what the computerwebs are supposed to be about — without comments, it’s just newspapers written by amateurs without the dead trees and helpful coupons.