I am conducting tests where I perform several parallel tests of the
SIR model (they are not using n iterations because I need to find out
when the model stabilizes, where si (t) = 0).
Parallel execution has been carried out with the multiprocessing
library. In larger networks (2000 nodes), when performing the
procedure of removing parallel edges (the graphs are converted to
undirected), the execution freeze. Can you imagine the reason for this
behavior? If I don't execute the remove_parallel_edges function,
everything happens normally ...
Execution hangs when iterate_sync will be performed. A serial run
works normally (without multiprocessing).
When asking questions like this, it is imperative to include a minimal
working example that reproduces the problem. Otherwise there is not much
we can do to help.
Sorry about that. I tried to reduce it to the maximum so that it could
be possible to simulate this behavior. https://pastebin.com/cyCwAX0z
If I remove line 18, everything goes normally. This behavior does not
occur on smaller networks (if reduce a number of nodes on graph,
everything is ok).
graph-tool uses OpenMP internally to perform computations in parallel,
and this does not mix well with the processing library, at least not if
it's using fork().
You should disable OpenMP in the beginning of your code with:
import graph_tool as gt
gt.openmp_set_num_threads(1)