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,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,dc1b7d7417552349 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-10-29 21:05:55 PST Path: archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!upp1.onvoy!msc1.onvoy!onvoy.com!hardy.tc.umn.edu!laurel.tc.umn.edu!not-for-mail From: brentcarnellis@hotmail.com Newsgroups: comp.lang.ada Subject: Re: Parallel execution on SGI with GNAT Date: Tue, 30 Oct 2001 05:08:36 GMT Organization: Impossible Message-ID: <3bde2826.3498968@news.tc.umn.edu> References: <3BDDD7EC.EC896675@dfrc.nasa.gov> <9rkn07$nep$1@nh.pace.co.uk> X-Trace: laurel.tc.umn.edu 1004418353 704 134.84.253.78 (30 Oct 2001 05:05:53 GMT) X-Complaints-To: usenet@laurel.tc.umn.edu X-Newsreader: Forte Free Agent 1.11/32.235 Xref: archiver1.google.com comp.lang.ada:15391 Date: 2001-10-30T05:08:36+00:00 List-Id: On Mon, 29 Oct 2001 17:59:18 -0500, "Marin David Condic" wrote: >This is just a guess since I'm not familiar with your platform, but it may Since you forgot to make that important guess, I'll donate a freebie: setenv MY_MUSTANG_FELL_IN_A_SINK_HOLE true and as a precautionary measure setenv TERMITES_ARE_EATING_THE_SOFTWARE false >help you to figure out what is going on. Typically, an Ada compiler riding >on top of a workstation OS will map Ada tasks to OS threads. The compiler >will use whatever OS calls you have to create, schedule, rendesvous and >terminate tasks. If your OS does not schedule threads on multiple CPUs, but >schedules processes on multiple CPUs, then you have to adopt a different >strategy by building your system as independent programs that can be run as >processes & then use whatever you have for inter-process communication. >(TCP/IP is a common way to go for this.) Its possible that your OS can be >configured to run threads on multiple processors, so you might look into the >OS documentation and see how this might be done. Perhaps you'll get an >answer from someone more familiar with your particular configuration. > >It would be great to have tasks scheduled on multiple processors because >then you've got all the facilities you need to make optimum use of the >processors entirely from within the language. However, there is usually a >non-trivial penalty for scheduling on multiple processors in the way of >inter-process communication, which is why it may not be done. > >MDC >-- >Marin David Condic >Senior Software Engineer >Pace Micro Technology Americas www.pacemicro.com >Enabling the digital revolution >e-Mail: marin.condic@pacemicro.com >Web: http://www.mcondic.com/ > > >"Jay Fantini" wrote in message >news:3BDDD7EC.EC896675@dfrc.nasa.gov... >> > > >---------------------------------------------------------------------------- >---- > > >> Ada experts, >> >> Maybe you can help me: I am trying to get the following program to execute >> on a 6-CPU SGI ONYX-2 R12000 based system. The system is running IRIX 6.5 >> and I am using GNAT Ada-95 version 3.11p for SGI. The program does compile >> and run but it only uses 1 CPU and I would like for it to execute on 3 >CPUs. >> This program is a prototype for a much larger program. >> >> Do I need to set an environment variable or am I using the wrong Ada-95 >> construct? Is there a PRAGMA I should use? Please post all answers to this >NG. >> >> TIA, >> >> -Jay >> >> -- ****************************************************************** >> >> with text_io; >> with integer_text_io; >> with tems_floating_point_std; >> with floating_point_math_lib; >> with fp_display; >> with higher_functions; >> with wexzal; >> >> use tems_floating_point_std; >> use floating_point_math_lib; >> use higher_functions; >> use wexzal; >> >> procedure hog is >> >> task type wzlsum(upper_limit: integer); >> task body wzlsum is >> x :floating_point; >> s :floating_point; >> begin >> for i in 1..upper_limit loop >> x:=floating_point(i); >> s:=s+1.0/(x*wzl(x)); >> end loop; >> text_io.put("Sum for n="); >> integer_text_io.put(upper_limit); >> text_io.put(" is S="); >> fp_display.prt(s); >> text_io.new_line; >> end wzlsum; >> >> cpu_hog_5 :wzlsum(5000000); -- Do big calculation in parallel >> cpu_hog_4 :wzlsum(4000000); >> cpu_hog_3 :wzlsum(3000000); >> >> begin >> text_io.put_line("Program HOG is done!"); >> end hog; >> > > On SGI/GNAT, try this setenv PTHREAD_SPROC_COUNT AUTO good luck "Enquiring minds ... should read a book" -- Dillinger Four