comp.lang.ada
 help / color / mirror / Atom feed
From: anon@att.net
Subject: Re: How many hardware threads?
Date: Mon, 12 Jul 2010 10:08:48 +0000 (UTC)
Date: 2010-07-12T10:08:48+00:00	[thread overview]
Message-ID: <i1epjf$1kfe$1@news.ett.com.ua> (raw)
In-Reply-To: 4c3a65d7$0$2405$4d3efbfe@news.sover.net

In <4c3a65d7$0$2405$4d3efbfe@news.sover.net>, "Peter C. Chapin" <pcc482719@gmail.com> writes:
>As we all know there is currently a lot of "buzz" about parallel
>programming and about the "crisis in software development" that is
>associated with it. People using languages with weak support for
>concurrency are now wondering how they will use multi-core systems
>effectively and reliably. Of course Ada already has decent support for
>concurrency so part of the problem is solved for those of us using Ada.
>
>But not all of the problem...
>
>I see a couple of difficulties with writing effective parallel programs
>for "ordinary" applications (that is, applications that are not
>embarrassingly parallel). One difficulty is load balancing: how can one
>decompose a problem to keep all processors reasonably busy? The other
>difficulty is scalability: how can one design a single program that can
>use 2, 4, 16, 128, or more processors effectively without knowing ahead
>of time exactly how many processors there will be? I'm not an expert in
>Ada tasking but it seems like these questions are as big a problem for
>Ada as they are for any other language environment.
>
>I'm not looking for a solution to all tasking problems here. But there
>is one feature that seems like a necessary prerequisite to such a
>solution. The language (or its standard library) needs to provide a
>portable way for the program to determine how many hardware threads are
>available.
>
>I'm about to write a simple program that decomposes into parallel,
>compute-bound tasks quite nicely. How many such tasks should I create? I
>could ask the user to provide the number as a command line argument or
>in a configuration file. Yet it seems like the program should just be
>able to figure it out. Does Ada have a standard way of doing that? I
>didn't see anything in my (admittedly short) review.
>
>Thanks!
>
>Peter

The normal programs should never need to know how many processors or if 
the processor on this machine or another. Because the job-scheduler 
sub-system of todays OS decides what processor to place the task and 
tries to maintain a balance load.  And in some of these systems they 
create anywhere from 1 to 32 or more virtual systems out of one or more 
processor cores so it might be a little too OS demanding research and 
programming for a initial parallel program.  Plus,  how do you deal with 
the other OS tasks and sub-system lplus the other user background tasks.
So, unless you are design a system that requires a number of processors I 
would skip trying to control processor usages for now. Get the program 
working first.

As for the number of tasks and memory size.  Well the number of task 
depends on your "Algorithm and Memory" requirements.  Data memory for 
each task should be keep at a system page size to reduce number of page 
swapping during task switching. In calculating: the total memory requirements 
divided by system page size should give you a idea of the number of tasks 
that you can use.

Note: back in the 80s and 90s there were a number of languages that would 
use the "Algorithm and Memory" requirements as well as other factors during 
compiling to build a balance number of task.  A lot of these languages were 
design to be used on a Cray system with only a small OS task and 
sub-systems running.




  parent reply	other threads:[~2010-07-12 10:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-12  0:47 How many hardware threads? Peter C. Chapin
2010-07-12  2:31 ` Jeffrey R. Carter
2010-07-12 17:04   ` Pascal Obry
2010-08-16 19:36     ` Yannick Duchêne (Hibou57)
2010-08-17  3:45       ` Randy Brukardt
2010-08-17  9:27       ` Pascal Obry
2010-07-12  2:38 ` tmoran
2010-07-12  7:40 ` Dmitry A. Kazakov
2010-07-12 17:14   ` Warren
2010-07-13  0:01   ` Gene
2010-07-13  1:09     ` Shark8
2010-07-12 10:08 ` anon [this message]
2010-07-12 11:04 ` Ludovic Brenta
2010-07-12 11:47 ` Egil Høvik
replies disabled

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