comp.lang.ada
 help / color / mirror / Atom feed
From: nasser@apldbio.com (Nasser Abbasi)
To: Allen Theobald <allent@novaengr.com>
Subject: Re: Ada95 parallel and distributed processing
Date: 1996/06/26
Date: 1996-06-26T00:00:00+00:00	[thread overview]
Message-ID: <nhpw6nazxl.fsf@paralysys> (raw)
In-Reply-To: 4qp7ri$puc@ns.oar.net



In article <4qp7ri$puc@ns.oar.net> Allen Theobald <allent@novaengr.com> writes:

   "With Ada95, we have finally a language which easily copes
    with any existing object-oriented language, hands down.
    It has parallel processing, distributed processing,
    real-time support and so on in the language standard of 1995.
    Ada95 is the adequate software engineering language for
    the beginning of the next millenium."

   What I want to know (in a nutshell) is how Ada
   provides support for "...parallel processing,
   distributed processing...".  I am very short
   on time and need to come up to speed fast with
   these aspects of the language.


In a nuttshell, Ada supports parallel processing by providing
tasks in the language, you can map an ada task to do certain
operations, and another task to do some other operations, "at 
the same time". (for example you can code each task to compute 
some operation one each row in a matrix, assuming the operations are 
not-data dependent, etc..) , and if you run on a multi-cpu hardware, 
and an OS supports scheduling of tasks (threads) at kernel level 
(say like NT or Solaris or Alpha/VMS ...do Solaris support mutli-cpu?), 
then you can get true parallel processing by having the tasks 
ruuning at the same time. Offcourse this type of "parallel" processing 
is very granual, fine-grain parallel proceesing would be something 
of different nature. (massivelly parallel computers, parallel langauges,
parallelizng (sp?) compilers etc.. I think are different topic).

This is not much different in this than say using C or C++ or
any other language on top of a thread library usually part of the OS 
to write threads-based code, except in Ada, tasks are 'build' into 
the language, and this is much better way than having to call outside 
libraries to create and interfaces between threads. Tasking in Ada 
has been in it since Ada83, it is nothing new, but Ada95 added 
improvemnts to the model like shared variables among others.

Distributed processing is supported by the D.P. Annex, The Annex
defines a model of how an Ada program can be distributed.

The Ada95 model of a distibuted program is something like this:

\f

                  Multi-parition Ada program
      /-----------------------^----------------------------\
     /                                                      \

       +-------------+              +-----------+
       | Partition   | System.RPC   | Partition |
       | (active)    ===============| (active)  |
       |+-------+    |              |+-------+  |
       ||Libray |    |              ||Library|  | (on node B)
       ||Unit   |    |(node A)      ||unit   |  |
       |+-------+    |              |+-------+  |
       |+-------+    |              |           |
       ||Libray |    |              +----||-----+
       ||Unit   |    |                   || 
       |+-------+    |            +------||------------+  
       |  ....       ============== Partition          | 
       |             |            | (passive)          |
       +-------------+            | shared variables   |
                                  +--------------------+
                             
2 active paritions can communicate using what is called
patition communication subsystem, which system.RPC is an
interface to, the active paritions can also communicate using
shared variables in passive patition. An Active paitition
is configured to run on a node in a network. An Ada83 program
correspond to one Active partition, but an Ada95 program can
consist of more than one active partition.

2 nice refernce papers on this are : 

GARLIC: Generic ada reusable library for interpartition commmunication.
by Kemarrec,Pautet,Tardieu.
 GALRIC is an implementation of the D.P. ANnex for GNAT.

ALso, PARIS: Partitioned Ada for remotely Invoked Services.
by Gargaro,Pautet,Kermarrec,Tardieu. this paper also represent
an implementation of D.P. Annex (annex E) using GNAT.

nasser
-- 
Nasser Abbasi. C/C++/Ada Solaris. GeneAssist - A client/server application 
for Nucleic acid and protein sequence search and analysis. 
PE-Applied BioSystem division. email:  nasser@apldbio.com   
MSEE(control), MSCS, MSCE, FM(Fide Chess Master 1.e4 !!)
I'am hooked on programming and can't get out ....






  reply	other threads:[~1996-06-26  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-06-25  0:00 Ada95 parallel and distributed processing Allen Theobald
1996-06-26  0:00 ` Nasser Abbasi [this message]
1996-06-26  0:00   ` Pascal Obry
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox