comp.lang.ada
 help / color / mirror / Atom feed
From: "J-P. Rosen" <rosen@adalog.fr>
Subject: Re: Parallel Sieve Of Eratosthenes
Date: Mon, 1 Jul 2024 11:17:09 +0200	[thread overview]
Message-ID: <v5ts6h$10f7e$1@dont-email.me> (raw)
In-Reply-To: <v5srnj$o2j1$1@dont-email.me>

Le 01/07/2024 à 02:02, Lawrence D'Oliveiro a écrit :
> On Sun, 30 Jun 2024 18:36:45 +0200, J-P. Rosen wrote:
> 
>> That's because in your first version, you call the child within the
>> accept statement. Therefore you wait for the value to go to the end of
>> the pipeline before processing the next value.
>> Try to copy the number to a variable, and call the child after the end
>> of the accept. This will give you 100% CPU time usage.
>>
>> BTW, you don't need an access type. Just use a declare block to create
>> the child after the first accept.
> 
> Thanks for the comments, how about this slight rework of the first
> version. It does seem faster, but I’m not sure it’s as fast as the second
> version.

That's better, but as a general principle, you should move as much as 
you can out of the rendezvous (minimize critical sequences). For example:

           accept next_int(i : integer) do
               my_prime := i;
           end next_int;
           Text_IO.Put_line(integer'image(my_prime));  -- moved
           declare
               subchild : offspring;
               ii : integer;
           begin
               loop
                   accept next_int(i : integer) do
                       ii := i;
                   end next_int;
                   if ii mod my_prime /= 0 then --moved
                       subchild.next_int(ii);
                   end if;
               end loop;

-- 
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
https://www.adalog.fr https://www.adacontrol.fr

  reply	other threads:[~2024-07-01  9:17 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-30  8:06 Parallel Sieve Of Eratosthenes Lawrence D'Oliveiro
2024-06-30  8:10 ` Lawrence D'Oliveiro
2024-06-30 16:36   ` J-P. Rosen
2024-07-01  0:02     ` Lawrence D'Oliveiro
2024-07-01  9:17       ` J-P. Rosen [this message]
2024-07-01 21:48         ` Lawrence D'Oliveiro
replies disabled

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