parsec
parsec copied to clipboard
parsec_ce initialization: bug in PTG with dynamic termination detection
Describe the bug
parsec_ce is not initialized by default when we create the taskpool. It is only initialized lazily after the context is started.
When enabling dynamic termination detection in PTG (either via the %option dynamic
option in the JDF, or via the --dynamic-termdet
flag to parsec_ptgpp
), the generated code in taskpool_new()
installs a dynamic termination detector (fourcounter today).
This calls mca_component_query()
on the fourcounter termination detector module, which calls parsec_ce.tag_register()
and segfaults.
To Reproduce
- Checkout dplasma master with parsec master
- Enable dynamic termination detection with the PTGs of DPLASMA by passing
-DPARSEC_PTGPP_FLAGS=--dynamic-termdet
at configure time - Run any (single process or multiprocess) dplasma test.
./tests/testing_dgemm -N 1000
for example.
Expected behavior
Should run to completion. Doesn't.
Environment (please complete the following information):
- PaRSEC master & DPLASMA master
Additional context
Adding remote_dep_mpi_on(ctx);
at the end of parsec_context_t* setup_parsec(int argc, char **argv, int *iparam)
in DPLASMA solves the problem, but I assume this is not what we want to do.