Over at the Cray Blog, James Beyer writes that the 2.0 Version of OpenACC has some important new features for parallel programmers.
Several features where added to the specification. Two very important features where driven by the Nvidia CUDA features. The first is support for separate compilation units. The other feature was nested or dynamic parallelism. Function calls have long been a corner stone of any significant programming language. However, because of limitations in some accelerator programming models function calls were not supported in the 1.0 specification. The expectation was that once compilers had exploited inlining to its utmost potential, then implementations would be forced to deal with the lack of linkers for some targets. Some work was started on this path and then suddenly the problem became less important – as all of the important, at least to the technical committee, architectures suddenly had linkers. Dynamic parallelism is a corner stone for parallelism which is working on unbalanced data sets. The initial release of OpenACC ignored this set of problems intentionally. In 2.0 the technical committee was pressed to rethink this position.
Read the Full Story.