CVS difference for ai12s/ai12-0119-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0119-1.txt

--- ai12s/ai12-0119-1.txt	2014/06/21 00:07:36	1.1
+++ ai12s/ai12-0119-1.txt	2014/06/23 23:44:36	1.2
@@ -181,3 +181,93 @@
 prototyping" (apologies to TED ;-).
+From: Stephen Michell
+Sent: Sunday, June 22, 2014  10:24 PM
+Attached is a report that ARG requested from Brad, Tucker  and myself in
+investigating how OpenMP could be used to implement Ada parallelism. For
+discussion at the ARG meeting this week.
+				Report to WG 9/ARG 
+ 		  on the use of OpenMP for Parallelism in Ada
+Stephen Michell
+with contributions from 
+Luis Miguel Pinho
+Brad Moore
+Tucker Taft
+At the ARG meeting November 2014, ideas were presented about ways to
+implement parallelism in Ada, and ways to interoperate with other
+language systems while using the multicore capabilities of modern
+computers. We were requested to investigate OpenMP from a technical
+perspective as well as a business perspective as a potential solution
+to implementing multicore parallelism in Ada.
+OpenMP Characteristics
+OpenMP is a set of libraries and language extensions that permit a
+user to access the capabilities of multicore systems from within
+certain languages - namely Fortran, C and C++.
+OpenMP's parallelism is "explicit parallelism" - i.e. all aspects of
+the parallelism are specified by compiler directives in the code that
+invoke library routines at the place of the directive through OpenMP API's.
+OpenMP lets the user specify code segments (usually "for loops",
+blocks and functions) that can be executed by threads (possibly
+operating on multiple cores) that are co-ordinated to implement an
+algorithm. The language extensions are converted into library calls to
+interact with a runtime to implement the algorithm.
+In trying to implement OpenMP on an Ada system, one would note that
+the concurrency model is quite different than Ada's. The
+"threads"  that are created interact with other threads that use OpenMP 
+primitives. This means that they will not interact with Ada tasks 
+using Ada tasking primitives. 
+For the interoperability with Fortran, C and C++ systems that are
+using OpenMP, an Ada OpenMP capability would be useful, whetehr or not
+it interacted with Ada tasks. This brings us to the business model.
+Business Model
+To implement An OpenMP for Ada, one must participate in the OpenMP
+community. One could develop compiler directives, either as aspects or
+pragmas and convert calls to meet the API, but to have it
+"standardized", one must be a full participant in the OpenMP group.
+One can participate in OpenMP as a university, as an individual or as
+a corporate participant. AdaCore was approached to see if they were
+interested in joining OpenMP (and paying fees), but declined. There is
+no point joining as individuals, as individuals cannot propose new
+language specifications for standardization. 
+This leaves participation through a university. Barcelona
+Supercomputing Group is a participant, and Miguel Pinho has approached them about
+participating through Barcelona. Barcelona is receptive, but
+participation requires that Miguel find a PhD student willing to
+participate. To date there has been no final resolution.
+There is a GNU OpenMP binding (GOMP) that supports the GNU Fortran, C
+and C++ GNU compilers. Ada could define a thin binding to that
+interface. This would still leave the challenge of defining Ada syntax
+for the Open MP compiler directives and determining how such a library
+would interact with the Ada runtime (Tasking is not the only issue -
+elaboration issues are also a potential issue).
+There are business reasons and technical reasons for creating an
+OpenMP Ada implementation. If an interface with OpenMP through
+Barcelona Supercomputing Group becomes possible, further exploration should
+happen. Otherwise, no further action in this area is anticipated.

Questions? Ask the ACAA Technical Agent