PAPI_register_thread

Langue: en

Version: September, 2004 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

PAPI_register_thread, PAPI_unregister_thread - Inform PAPI of thread status

SYNOPSIS

 #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)
 

DESCRIPTION

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.

ARGUMENTS

None.

RETURN VALUES

On success, this function returns PAPI_OK. On error, a non-zero error code is returned.

ERRORS

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.

EXAMPLES

None.

SEE ALSO

PAPI_thread_init(3), PAPI_thread_id(3)