Allow `experimental::relo::debug*()` before init()

Issue #545 resolved
Dan Bonachea created an issue

CCS segment mapping is performed during static initialization before main(). As such it would be nice if the experimental::relo::debug*() functions for dumping CCS process mapping state were available before init(), but currently they crash in DEBUG mode for a trivial reason, because they invoke upcxx::rank_me().

Copied from this comment in PR 434:

It would be nicer if these internal debugging functions accepted a const std::string &line_prefix argument, instead of hard-coding every line to start with '[' << rank_me() << ']'.

In particular, rank_me() is invalid to call before upcxx::init() and will assert in a DEBUG build, which means one currently cannot dump the contents of the segment map for inspection before upcxx::init(). A more robust implementation of upcxx::experimental::relo::debug*() would check upcxx::initialized() and pass a line prefix like gasnett_gethostname() + ":" + getpid() instead.

Comments (1)

  1. Log in to comment