Parallelism generics for Ada 2005 and beyond

  • Authors:
  • Brad J. Moore

  • Affiliations:
  • General Dynamics Canada, Calgary, AB, Canada

  • Venue:
  • Proceedings of the ACM SIGAda annual international conference on SIGAda
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

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.