Bill Allombert on Fri, 22 Aug 2025 10:34:38 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: question on implementing an atomic operation in GP Pari


On Thu, Aug 21, 2025 at 01:04:46PM -0700, American Citizen wrote:
> Hello:
> 
> Currently I am using 6 cores to run though a long list of primes or product
> of primes congruent to 1 mod 4. (such as 5, 37, 65, etc)
> 
> I split the list according to the assigned processor number 0..5 by using
> modulus 6 values.
> 
> While this method works, some of the processors are climbing up the list
> faster than others.
> 
> Currently I have
> 
> n:88181
> n:90889
> n:87145
> n:88285
> n:88633
> n:89245
> 
> and you can see that the 2nd processor at 90,889 is ahead of the others. The
> 3rd processor is behind at 87,145.
> 
> I can use an alternate scheme, having all 6 cores access an atomic operator
> and receiving just one unique number from the list, then incrementing the
> index to the list, this would insure that all numbers are bunched closely
> together.
> 
> This requires an atomic "get and increment" operator. I do have C code which
> does this, would this be the right way to go, to implement an external call
> into the gp code?

You can do that directly in GP using parfor or parforeach.

Cheers,
Bill.