PAPI3:PAPI register thread.3
From PAPIDocs
Jump to: navigation, search


  • PAPI_register_thread, PAPI_unregister_thread - Inform PAPI of thread status


C Interface

#include <papi.h>
int PAPI_register_thread (void);
int PAPI_unregister_thread (void);

Fortran Interface

#include fpapi.h
PAPIF_register_thread(C_INT  check )
PAPIF_unregister_thread(C_INT  check )


PAPI_register_thread should be called when the user wants to force PAPI to initialize a thread that PAPI has not seen before. Usually this is not necessary as PAPI implicitly detects the thread when an eventset is created or other thread local PAPI functions are called. However, it can be useful for debugging and performance enhancements in the run-time systems of performance tools.

PAPI_unregister_thread should be called when the user wants to shutdown a particular thread and free the associated thread ID. THIS IS IMPORTANT IF YOUR THREAD LIBRARY REUSES THE SAME THREAD ID FOR A NEW KERNEL LWP. OpenMP does this. OpenMP parallel regions, if separated by a call to omp_set_num_threads() will often kill off the underlying kernel LWPs and then start new ones for the next region. However, omp_get_thread_id() does not reflect this, as the thread IDs for the new LWPs will be the same as the old LWPs. PAPI needs to know that the underlying LWP has changed so it can set up the counters for that new thread. This is accomplished by calling this function.




PAPI_ENOMEM Space could not be allocated to store the new thread information.

PAPI_ESYS A system or C library call failed inside PAPI, see the errno variable.

PAPI_ESBSTR Hardware counters for this thread could not be initialized.



See Also

PAPI_thread_id(3), PAPI_thread_init(3)