papi_thread_init(3) - Linux man page

Name

PAPI_thread_init - initialize thread support in the PAPI library

Synopsis

C Interface

#include """papi.h"""int PAPI_thread_init (unsigned long int (*handle)());
Fortran Interface
#include """fpapi.h"""PAPIF_thread_init(C_INT FUNCTION handle, C_INT check)

Description

PAPI_thread_init initializes thread support in the PAPI library. Applications that make no use of threads do not need to call this routine. This function MUST return a UNIQUE thread ID for every new thread/LWP created. The OpenMP call omp_get_thread_num() violates this rule, as the underlying LWPs may have been killed off by the run-time system or by a call to omp_set_num_threads(). In that case, it may still possible to use omp_get_thread_num() in conjunction with PAPI_unregister_thread() when the OpenMP thread has finished. However it is much better to use the underlying thread subsystem's call, which is pthread_self() on Linux platforms.

Arguments

handle -- Pointer to a function that returns current thread ID.

Return Values

PAPI_OK
The call returned successfully.
PAPI_EINVAL
One or more of the arguments is invalid.

Examples

if (PAPI_thread_init(pthread_self) != PAPI_OK)
  exit(1);

Bugs

This function has no known bugs.

See Also

papi_thread_id(3), papi_list_threads(3), papi_get_thr_specific(3), papi_set_thr_specific(3), papi_register_thread(3), PAPI_unregister_thread (3), papi(3)

Referenced By

papi_detach(3), papi_library_init(3), papi_unlock(3), papi_unregister_thread(3)