Re: question on implementing an atomic operation in GP Pari

"Ruud H.G. van Tol" <[email protected]> Fri, 22 Aug 2025 15:09:38 +0200
Newsgroups gmane.comp.mathematics.pari.user
Message-ID <[email protected]>
On 2025-08-21 22:04, American Citizen wrote:
> [...] 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
> [...]
> 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.
> [...]

It's less than 5%, is that really worth any effort?


My favorite pattern is Map-Reduce-Merge:

Map: partition the source data into independent chunks;
Reduce: have W concurrent workers (W is typically between 8-12) each 
process a chunk, then exit with a simple status like 0=completed, and 
start a new worker when needed;
Merge: optionally post-process all results.

The main trick is always to make this lock-free, normally by making sure 
from the start that the reducers can only use "exclusive" resources.
Another is to keep the overhead small, so no big W, etc.

-- Ruud