hiddenSymmetries / simsopt

Simons Stellarator Optimizer Code
https://simsopt.readthedocs.io
MIT License
94 stars 45 forks source link

MPILogHandler not working and logger example fails #389

Open smiet opened 8 months ago

smiet commented 8 months ago

I am having issues running the MPILogHandler, which would be very useful for debugging/understanding some large runs.

The example examples/1_simple/logger_example.py fails because 'initialize_logging' should be imported directly from 'simsopt.util'. Fixing that, we get the error:

Traceback (most recent call last):
  File "/my_mount/1_Simple/logger_example.py", line 26, in <module>
    initialize_logging(mpi=True, filename='mpi.log')
  File "/venv/lib/python3.10/site-packages/simsopt/util/logger.py", line 46, in initialize_logging
    logging.config.dictConfig(config_dict)
  File "/usr/lib/python3.10/logging/config.py", line 811, in dictConfig
    dictConfigClass(config).configure()
  File "/usr/lib/python3.10/logging/config.py", line 572, in configure
    raise ValueError('Unable to configure handler '
ValueError: Unable to configure handler 'mpi_file_handler'

which, after some digging, I found out is due to a failed relative import of from .._core/dev import SimsoptRequires in simsopt.util.mpi_logger.py.

This is probably because MPILogHandler is spawned in a child process that is only fed the file and cannot resolve the relative import as this requires rest of simsopt.

Commenting out the SimsoptRequires produces acceptable log files, but now the logger does not exit when the script completes.

does anyone have experience with MPI logging, and knows a fix? MPILogHandler seems based on 2013 code, there might be better solutions now... Looking for suggestions and willing to implement them when pointed in the right direction.