Open hgpatil opened 1 year ago
More details: The driver program also does atexit(<pointer to nvbit_at_term) For the instr_count.so, this is the sequence of events: After the .so is loaded with dlopen(): the banner "--NVBit ... Loaded--" is output After a call to nvbit_at_init: information about various environment variables (INSTR_BEGIN/END ...) is printed.
libnvbit dlopen()s itself (NULL) in order to find nvbit_* callbacks defined in the tool. I'm loading a tool via LD_LIBRARY_PATH, which may be similar to what you're doing with dlopen(). Anyway, my tool didn't work until I explicitly added a dlopen() (in an __attribute__((constructor))
) with the RTLD_GLOBAL flag set. Maybe LD_PRELOAD adds the library to its own DL searches, but LD_LIBRARY_PATH/dlopen() doesn't?
Hi:
Instead of using LD_PRELOAD, I am explicitly doing an dlopen() of an NVBit tool .so from a driver program and then calling nvbit_at_init() function from the loaded .so. While this sequence works, the actual GPU code instrumentation is not happening. Are there any other functions I need to be calling explicitly after the dlopen()?
-Harish