import papi-5.6.0-11.el8
This commit is contained in:
parent
db12ccef0e
commit
f085ad2b80
139
SOURCES/papi-thread_init.patch
Normal file
139
SOURCES/papi-thread_init.patch
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
commit 617eeabe0bbfb5357c10b22ebd72b24a4a872e52
|
||||||
|
Author: Anthony <adanalis@icl.utk.edu>
|
||||||
|
Date: Mon Jan 6 15:09:42 2020 -0500
|
||||||
|
|
||||||
|
Updated the variables that are used in the debug messages in accordance to a previous commit that made these variables thread safe.
|
||||||
|
|
||||||
|
diff --git a/src/papi_internal.c b/src/papi_internal.c
|
||||||
|
index f0e457bf7..69b2914d0 100644
|
||||||
|
--- a/src/papi_internal.c
|
||||||
|
+++ b/src/papi_internal.c
|
||||||
|
@@ -114,7 +114,7 @@ _papi_hwi_free_papi_event_string() {
|
||||||
|
|
||||||
|
void
|
||||||
|
_papi_hwi_set_papi_event_code (unsigned int event_code, int update_flag) {
|
||||||
|
- INTDBG("new event_code: %#x, update_flag: %d, previous event_code: %#x\n", event_code, update_flag, papi_event_code);
|
||||||
|
+ INTDBG("new event_code: %#x, update_flag: %d, previous event_code: %#x\n", event_code, update_flag, _papi_hwi_my_thread->tls_papi_event_code);
|
||||||
|
|
||||||
|
// if call is just to reset and start over, set both flags to show nothing saved yet
|
||||||
|
if (update_flag < 0) {
|
||||||
|
@@ -131,7 +131,7 @@ _papi_hwi_set_papi_event_code (unsigned int event_code, int update_flag) {
|
||||||
|
}
|
||||||
|
unsigned int
|
||||||
|
_papi_hwi_get_papi_event_code () {
|
||||||
|
- INTDBG("papi_event_code: %#x\n", papi_event_code);
|
||||||
|
+ INTDBG("papi_event_code: %#x\n", _papi_hwi_my_thread->tls_papi_event_code);
|
||||||
|
return _papi_hwi_my_thread->tls_papi_event_code;
|
||||||
|
}
|
||||||
|
/* Get the index into the ESI->NativeInfoArray for the current PAPI event code */
|
||||||
|
From 3cc3b6679e1ace7516c3037105ad16410ce7d3db Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Cohen <wcohen@redhat.com>
|
||||||
|
Date: Wed, 12 Aug 2020 10:12:59 -0400
|
||||||
|
Subject: [PATCH] Initialize component globals before threads globals
|
||||||
|
|
||||||
|
An earlier commit (979e80136) swapped the order of initializing
|
||||||
|
globals and threads. This caused issues with the perf_event, appio,
|
||||||
|
and stealtime components which could be observed with the
|
||||||
|
all_native_events, appio_test_pthreads, and stealtime_basic tests
|
||||||
|
respectively. The component initialization needs to be performed
|
||||||
|
before the thread initialization.
|
||||||
|
|
||||||
|
The order of initialization has been changed back to initializing the
|
||||||
|
component then the threads. One complication is that papi_internal.c
|
||||||
|
had functions (_papi_hwi_set_papi_event_code and
|
||||||
|
_papi_hwi_get_papi_event_code) that required thread local storage that
|
||||||
|
was being setup in commit 979e80136 by the thread initialization.
|
||||||
|
This was the original reason for swapping the order of initialization
|
||||||
|
of component and thread. Using __thread on the file scope
|
||||||
|
declarations of the variables allow the original order of
|
||||||
|
initialization.
|
||||||
|
---
|
||||||
|
src/papi.c | 10 +++++-----
|
||||||
|
src/papi_internal.c | 21 +++++++++++++--------
|
||||||
|
2 files changed, 18 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/papi.c b/src/papi.c
|
||||||
|
index 33cc29935..107a15044 100644
|
||||||
|
--- a/src/papi.c
|
||||||
|
+++ b/src/papi.c
|
||||||
|
@@ -1151,19 +1151,19 @@ PAPI_library_init( int version )
|
||||||
|
papi_return( init_retval );
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Initialize thread globals, including the main threads */
|
||||||
|
+ /* Initialize component globals */
|
||||||
|
|
||||||
|
- tmp = _papi_hwi_init_global_threads( );
|
||||||
|
+ tmp = _papi_hwi_init_global( );
|
||||||
|
if ( tmp ) {
|
||||||
|
init_retval = tmp;
|
||||||
|
_papi_hwi_shutdown_global_internal( );
|
||||||
|
- _in_papi_library_init_cnt--;
|
||||||
|
+ _in_papi_library_init_cnt--;
|
||||||
|
papi_return( init_retval );
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Initialize component globals */
|
||||||
|
+ /* Initialize thread globals, including the main threads */
|
||||||
|
|
||||||
|
- tmp = _papi_hwi_init_global( );
|
||||||
|
+ tmp = _papi_hwi_init_global_threads( );
|
||||||
|
if ( tmp ) {
|
||||||
|
init_retval = tmp;
|
||||||
|
_papi_hwi_shutdown_global_internal( );
|
||||||
|
diff --git a/src/papi_internal.c b/src/papi_internal.c
|
||||||
|
index 5a1ccd433..bdf30f875 100644
|
||||||
|
--- a/src/papi_internal.c
|
||||||
|
+++ b/src/papi_internal.c
|
||||||
|
@@ -115,27 +115,32 @@ _papi_hwi_free_papi_event_string() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+// A place to keep the current papi event code so some component functions can fetch its value
|
||||||
|
+// The current event code can be stored here prior to component calls and cleared after the component returns
|
||||||
|
+static THREAD_LOCAL_STORAGE_KEYWORD unsigned int papi_event_code = -1;
|
||||||
|
+static THREAD_LOCAL_STORAGE_KEYWORD int papi_event_code_changed = -1;
|
||||||
|
+
|
||||||
|
void
|
||||||
|
_papi_hwi_set_papi_event_code (unsigned int event_code, int update_flag) {
|
||||||
|
- INTDBG("new event_code: %#x, update_flag: %d, previous event_code: %#x\n", event_code, update_flag, _papi_hwi_my_thread->tls_papi_event_code);
|
||||||
|
+ INTDBG("new event_code: %#x, update_flag: %d, previous event_code: %#x\n", event_code, update_flag, papi_event_code);
|
||||||
|
|
||||||
|
// if call is just to reset and start over, set both flags to show nothing saved yet
|
||||||
|
if (update_flag < 0) {
|
||||||
|
- _papi_hwi_my_thread->tls_papi_event_code_changed = -1;
|
||||||
|
- _papi_hwi_my_thread->tls_papi_event_code = -1;
|
||||||
|
+ papi_event_code_changed = -1;
|
||||||
|
+ papi_event_code = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if 0, it is being set prior to calling a component, if >0 it is being changed by the component
|
||||||
|
- _papi_hwi_my_thread->tls_papi_event_code_changed = update_flag;
|
||||||
|
+ papi_event_code_changed = update_flag;
|
||||||
|
// save the event code passed in
|
||||||
|
- _papi_hwi_my_thread->tls_papi_event_code = event_code;
|
||||||
|
+ papi_event_code = event_code;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
unsigned int
|
||||||
|
_papi_hwi_get_papi_event_code () {
|
||||||
|
- INTDBG("papi_event_code: %#x\n", _papi_hwi_my_thread->tls_papi_event_code);
|
||||||
|
- return _papi_hwi_my_thread->tls_papi_event_code;
|
||||||
|
+ INTDBG("papi_event_code: %#x\n", papi_event_code);
|
||||||
|
+ return papi_event_code;
|
||||||
|
}
|
||||||
|
/* Get the index into the ESI->NativeInfoArray for the current PAPI event code */
|
||||||
|
int
|
||||||
|
@@ -560,7 +565,7 @@ _papi_hwi_native_to_eventcode(int cidx, int event_code, int ntv_idx, const char
|
||||||
|
|
||||||
|
int result;
|
||||||
|
|
||||||
|
- if (_papi_hwi_my_thread->tls_papi_event_code_changed > 0) {
|
||||||
|
+ if (papi_event_code_changed > 0) {
|
||||||
|
result = _papi_hwi_get_papi_event_code();
|
||||||
|
INTDBG("EXIT: papi_event_code: %#x set by the component\n", result);
|
||||||
|
return result;
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -8,7 +8,7 @@
|
|||||||
Summary: Performance Application Programming Interface
|
Summary: Performance Application Programming Interface
|
||||||
Name: papi
|
Name: papi
|
||||||
Version: 5.6.0
|
Version: 5.6.0
|
||||||
Release: 10%{?dist}
|
Release: 11%{?dist}
|
||||||
License: BSD
|
License: BSD
|
||||||
Group: Development/System
|
Group: Development/System
|
||||||
Requires: papi-libs = %{version}-%{release}
|
Requires: papi-libs = %{version}-%{release}
|
||||||
@ -17,6 +17,7 @@ Source0: http://icl.cs.utk.edu/projects/papi/downloads/%{name}-%{version}.tar.gz
|
|||||||
Patch1: papi-ldflags.patch
|
Patch1: papi-ldflags.patch
|
||||||
Patch2: papi-divzero.patch
|
Patch2: papi-divzero.patch
|
||||||
Patch3: papi-rhbz1807346.patch
|
Patch3: papi-rhbz1807346.patch
|
||||||
|
Patch4: papi-thread_init.patch
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: doxygen
|
BuildRequires: doxygen
|
||||||
BuildRequires: ncurses-devel
|
BuildRequires: ncurses-devel
|
||||||
@ -83,6 +84,7 @@ the PAPI user-space libraries and interfaces.
|
|||||||
%patch1 -p1 -b .ldflags
|
%patch1 -p1 -b .ldflags
|
||||||
%patch2 -p1 -b .divzero
|
%patch2 -p1 -b .divzero
|
||||||
%patch3 -p1 -b .rhbz1807346
|
%patch3 -p1 -b .rhbz1807346
|
||||||
|
%patch4 -p1 -b .thread_init
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if %{without bundled_libpfm}
|
%if %{without bundled_libpfm}
|
||||||
@ -165,6 +167,9 @@ chrpath --delete $RPM_BUILD_ROOT%{_libdir}/*.so*
|
|||||||
%{_libdir}/*.a
|
%{_libdir}/*.a
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Aug 21 2020 William Cohen <wcohen@redhat.com> - 5.6.0-11
|
||||||
|
- Correct the handling of multiple threads. (rhbz1807346)
|
||||||
|
|
||||||
* Wed May 27 2020 William Cohen <wcohen@redhat.com> - 5.6.0-10
|
* Wed May 27 2020 William Cohen <wcohen@redhat.com> - 5.6.0-10
|
||||||
- Rebuild with current libpfm-4.10.1.
|
- Rebuild with current libpfm-4.10.1.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user