NAME
PAPI_register_thread, PAPI_unregister_thread - Inform PAPI of thread status
CONTENTS
Synopsis
Description
Arguments
Return Values
Errors
Examples
See Also
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)
PAPI Programmers Reference | PAPI_register_thread (3) | September, 2004 |
|
|