From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,530ad614c9f4ee8d X-Google-Attributes: gid103376,public From: nasser@apldbio.com (Nasser Abbasi) Subject: Re: Ada95 parallel and distributed processing Date: 1996/06/26 Message-ID: X-Deja-AN: 162214073 sender: news@biosys.apldbio.COM references: <4qp7ri$puc@ns.oar.net> to: Allen Theobald organization: Applied BioSystems newsgroups: comp.lang.ada Date: 1996-06-26T00:00:00+00:00 List-Id: In article <4qp7ri$puc@ns.oar.net> Allen Theobald 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: 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 ....