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.
- Frigo M., Halpern P., Leiserson C., and Lewin-Berlin S., Reducers and Other Cilk++ Hyperobjects. ACM SPAA '09 (2009) Google Scholar
Digital Library
- Burns, A., Wellings A., Concurrent and Real-Time Programming in Ada, Cambridge University Press, 2007 Google Scholar
Digital Library
- Taft, S.T., Duff, R. A., Bruckardt, R.L. And Plödereder, E. Eds (2000). Consolidated Ada Reference Manual. LNCS 2219, Springer-Verlag Google Scholar
Digital Library
- Barney Blaise, Lawrence Livermore National Laboratory, https://computing.llnl.gov/tutorials/openMP/#WorkSharing (Sept 2010)Google Scholar
- Kaiser, C., Fradat-Peyre, J-F., Évangelista, S., Rousseau P., C# and Ada Monitors queuing policies: a case study and its Ada refinement. ACM Sigada Ada Letters, 24, 2, pp. 23--37 August 2006. Google Scholar
Digital Library
- Association for Computing Machinery (ACM) SigAda, ASIS Working Group, http://www.sigada.org/wg/asiswg/, Sept 2010Google Scholar
- Fox, G., Williams, R., Messina G., Parallel Computing Works!, ISBN 1-55860-253-4 Morgan Kaufmann Publishers, Inc. 1994Google Scholar
- Walker J., Red Black Trees, http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx (Aug 2010)Google Scholar
- Menabrea, L.F., Lovelace A., Sketch of the Analytical Engine Invented by Charles Babbage, Bibliothèque Universelle de Genève, October, 1842, No. 82Google Scholar
- Kaneko M., The Akiyama-Tanigawa algorithm for Bernoulli Numbers, Journal of Integer Sequences, Vol 3 (2000), Article 00.2.9Google Scholar
- Free Software Foundation, GMP, http://gmplib.org, Sept 2010Google Scholar
Index Terms
Parallelism generics for Ada 2005 and beyond
Recommendations
Parallelism generics for Ada 2005 and beyond
SIGAda '10: Proceedings of the ACM SIGAda annual international conference on SIGAdaThe 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 ...
Stack safe parallel recursion with paraffin
SIGAda '11: Proceedings of the 2011 ACM annual international conference on Special interest group on the ada programming languageRecursion is a programming technique in which a solution can be expressed by a subroutine invoking itself either directly or indirectly. Many problems can be expressed simply using a recursive approach, however one of the drawbacks of using recursion is ...
Stack safe parallel recursion with paraffin
Recursion is a programming technique in which a solution can be expressed by a subroutine invoking itself either directly or indirectly. Many problems can be expressed simply using a recursive approach, however one of the drawbacks of using recursion is ...







Comments