[Nauty] Parallelizing generation

Tomas Peitl peitl at ac.tuwien.ac.at
Sat Jan 16 02:15:28 AEDT 2021


Hi everyone,

I've got a question about parallelization in generators such as genbg 
(I'm using a modified version of genbg provided by Brendan some time 
ago, but that shouldn't make a difference I hope).

I noticed that the speedup from parallelization using the res/mod 
feature pretty much plateaus at around 5-6 cores, and it doesn't really 
make too much sense to use more than that. Is this more or less correct, 
or am I missing something? To be fair, the speedup does grow a bit even 
beyond 6 cores (depends on the particular case I guess), but the 
dependence on the number of jobs looks more logarithmic than linear 
(didn't really try to fit a curve). So if you have more than one 
generation task, it makes sense to use fewer cores per task, and instead 
run several tasks in parallel.

I have some aggressive custom pruning, but on the other hand each job 
generates roughly the same number of results, and the running times are 
also more or less uniformly distributed, so the splitting of the search 
space seems OK.

How does the res/mod feature work? Does each job still have to generate 
everything, just with the advantage of quickly skipping over graphs that 
belong to other jobs? Or can it run in "O(N/j)"?

Many thanks,
Tomas



More information about the Nauty mailing list