Affiliation:
1. General Dynamics Canada, Calgary, AB, Canada
Abstract
The Ada programming language is seemingly well-positioned to take advantage of emerging multi-core technologies. While it has always been possible to write parallel algorithms in Ada, there are certain classes of problems however, where the level of effort to write parallel algorithms outweighs the ease and simplicity of a sequential approach. This can result in lost opportunities for parallelism and slower running software programs. Languages such as Cilk++ and OpenMB provide expressive mechanisms to add parallelism to code using a C++ based syntax by adding special syntactic directives where parallelism is desired. This paper explores Ada's concurrency features to see whether it is possible to easily inject similar iterative and recursive parallelism to code written in Ada, without having to resort to special language extensions or non-standard language features. This paper identifies a "work-seeking" technique, which can be viewed as a form of compromise between work-sharing and work-stealing, two other existing strategies. The paper presents performance results to illustrate the benefits of use for the generics and goes on to suggest how parallelism pragmas could possibly be added to the Ada language to further facilitate writing parallel applications.
Publisher
Association for Computing Machinery (ACM)
Reference11 articles.
1. Reducers and other Cilk++ hyperobjects
2. Burns A. Wellings A. Concurrent and Real-Time Programming in Ada Cambridge University Press 2007 Burns A. Wellings A. Concurrent and Real-Time Programming in Ada Cambridge University Press 2007
3. Taft S.T. Duff R. A. Bruckardt R.L. And Plödereder E. Eds (2000). Consolidated Ada Reference Manual. LNCS 2219 Springer-Verlag Taft S.T. Duff R. A. Bruckardt R.L. And Plödereder E. Eds (2000). Consolidated Ada Reference Manual. LNCS 2219 Springer-Verlag
4. Barney Blaise Lawrence Livermore National Laboratory https://computing.llnl.gov/tutorials/openMP/#WorkSharing (Sept 2010) Barney Blaise Lawrence Livermore National Laboratory https://computing.llnl.gov/tutorials/openMP/#WorkSharing (Sept 2010)
5. Comparing Java, C# and Ada monitors queuing policies