Skip to content

Commit

Permalink
Merge pull request easybuilders#20690 from julianmorillo/develop
Browse files Browse the repository at this point in the history
Add Extrae-4.2.0-gompi-2023b.eb
  • Loading branch information
ocaisa authored Jul 16, 2024
2 parents 5b4bf8d + a26b35c commit b77d542
Show file tree
Hide file tree
Showing 4 changed files with 240 additions and 0 deletions.
12 changes: 12 additions & 0 deletions easybuild/easyconfigs/e/Extrae/Extrae-4.2.0-debug_add_event.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -Nru extrae-4.2.0.orig/src/tracer/hwc/papi_hwc.c extrae-4.2.0/src/tracer/hwc/papi_hwc.c
--- extrae-4.2.0.orig/src/tracer/hwc/papi_hwc.c 2024-07-01 16:12:04.562957639 +0200
+++ extrae-4.2.0/src/tracer/hwc/papi_hwc.c 2024-07-02 17:21:19.783586061 +0200
@@ -615,7 +615,7 @@
char EventName[PAPI_MAX_STR_LEN];

PAPI_event_code_to_name (HWC_sets[i].counters[j], EventName);
- fprintf (stderr, PACKAGE_NAME": Error! Hardware counter %s (0x%08x) cannot be added in set %d (task %d, thread %d)\n", EventName, HWC_sets[i].counters[j], i+1, TASKID, threadid);
+ fprintf (stderr, PACKAGE_NAME": Error! Hardware counter %s (0x%08x) cannot be added in set %d (task %d, thread %d) because of %d\n", EventName, HWC_sets[i].counters[j], i+1, TASKID, threadid, rc);
HWC_sets[i].counters[j] = NO_COUNTER;
/* break; */
}
42 changes: 42 additions & 0 deletions easybuild/easyconfigs/e/Extrae/Extrae-4.2.0-detect_binutils.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
diff -Nru extrae-4.2.0.orig/config/macros.m4 extrae-4.2.0/config/macros.m4
--- extrae-4.2.0.orig/config/macros.m4 2024-07-01 16:12:03.689962036 +0200
+++ extrae-4.2.0/config/macros.m4 2024-07-01 16:13:05.811649165 +0200
@@ -779,6 +779,8 @@
elif test -r "${binutils_home_dir}/lib/libbfd.a" -a \
"${binutils_require_shared}" = "no" ; then
BFD_LIBSDIR="${binutils_home_dir}/lib"
+ elif test -r "${binutils_home_dir}/libbfd.so" ; then
+ BFD_LIBSDIR="${binutils_home_dir}"
else
dnl Try something more automatic using find command
libbfd_lib=""
@@ -814,6 +816,8 @@
LIBERTY_LIBSDIR="${binutils_home_dir}/lib"
elif test -r "${binutils_home_dir}/lib/libiberty.a" ; then
LIBERTY_LIBSDIR="${binutils_home_dir}/lib"
+ elif test -r "${binutils_home_dir}/libiberty.a" ; then
+ LIBERTY_LIBSDIR="${binutils_home_dir}"
else
dnl Try something more automatic using find command
libiberty_lib=""
diff -Nru extrae-4.2.0.orig/configure extrae-4.2.0/configure
--- extrae-4.2.0.orig/configure 2024-07-01 16:12:03.308963954 +0200
+++ extrae-4.2.0/configure 2024-07-01 16:17:00.458465744 +0200
@@ -35074,6 +35074,8 @@
elif test -r "${binutils_home_dir}/lib/libbfd.a" -a \
"${binutils_require_shared}" = "no" ; then
BFD_LIBSDIR="${binutils_home_dir}/lib"
+ elif test -r "${binutils_home_dir}/libbfd.so" ; then
+ BFD_LIBSDIR="${binutils_home_dir}"
else
libbfd_lib=""

@@ -35108,6 +35110,8 @@
LIBERTY_LIBSDIR="${binutils_home_dir}/lib"
elif test -r "${binutils_home_dir}/lib/libiberty.a" ; then
LIBERTY_LIBSDIR="${binutils_home_dir}/lib"
+ elif test -r "${binutils_home_dir}/libiberty.a" ; then
+ LIBERTY_LIBSDIR="${binutils_home_dir}"
else
libiberty_lib=""

Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
diff -Nru extrae-4.2.0.orig/tests/functional/hw-counters/check_Extrae_PAPI_TOT_CYC.sh extrae-4.2.0/tests/functional/hw-counters/check_Extrae_PAPI_TOT_CYC.sh
--- extrae-4.2.0.orig/tests/functional/hw-counters/check_Extrae_PAPI_TOT_CYC.sh 2024-07-01 16:12:03.454963219 +0200
+++ extrae-4.2.0/tests/functional/hw-counters/check_Extrae_PAPI_TOT_CYC.sh 2024-07-03 16:51:00.533542188 +0200
@@ -10,7 +10,29 @@
EXTRAE_CONFIG_FILE=extrae-PAPI_TOT_CYC.xml ./check_Extrae_counters_xml
../../../src/merger/mpi2prv -f TRACE.mpits -o ${TRACE}.prv

-# Check
+# Check PAPI availability
+if ! command -v papi_avail &> /dev/null
+then
+ echo "papi_avail could not be found"
+ exit 0
+fi
+
+# Check COUNTER availability
+PAPI_TOT_CYC_available=`papi_avail | grep PAPI_TOT_CYC | awk '{print $3}'`
+if [[ "$PAPI_TOT_CYC_available" == No ]]
+then
+ echo "PAPI_TOT_CYC is not available"
+ exit 0
+fi
+
+# Check that HW counters are accessible
+ACCESS_LEVEL=`sysctl kernel.perf_event_paranoid |awk '{print $3}'`
+if [ $ACCESS_LEVEL \> 1 ]
+then
+ echo "perf_event_paranoid configuration does not allow access to HW counters"
+ exit 0
+fi
+
CheckEntryInPCF ${TRACE}.pcf PAPI_TOT_CYC

rm -fr TRACE* set-0 ${TRACE}.???
diff -Nru extrae-4.2.0.orig/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS_CYC.sh extrae-4.2.0/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS_CYC.sh
--- extrae-4.2.0.orig/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS_CYC.sh 2024-07-01 16:12:03.448963249 +0200
+++ extrae-4.2.0/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS_CYC.sh 2024-07-03 16:52:55.509932826 +0200
@@ -10,7 +10,30 @@
EXTRAE_CONFIG_FILE=extrae-PAPI_TOT_INS_CYC.xml ./check_Extrae_counters_xml
../../../src/merger/mpi2prv -f TRACE.mpits -o ${TRACE}.prv

-# Check
+# Check PAPI availability
+if ! command -v papi_avail &> /dev/null
+then
+ echo "papi_avail could not be found"
+ exit 0
+fi
+
+# Check COUNTER availability
+PAPI_TOT_CYC_available=`papi_avail | grep PAPI_TOT_CYC | awk '{print $3}'`
+if [[ "$PAPI_TOT_CYC_available" == No ]]
+then
+ echo "PAPI_TOT_CYC is not available"
+ exit 0
+fi
+
+# Check counters accessibility level
+ACCESS_LEVEL=`sysctl kernel.perf_event_paranoid |awk '{print $3}'`
+if [ $ACCESS_LEVEL \> 1 ]
+then
+ echo "perf_event_paranoid configuration does not allow access to HW counters"
+ exit 0
+fi
+
+
CheckEntryInPCF ${TRACE}.pcf PAPI_TOT_INS
CheckEntryInPCF ${TRACE}.pcf PAPI_TOT_CYC

diff -Nru extrae-4.2.0.orig/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS.sh extrae-4.2.0/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS.sh
--- extrae-4.2.0.orig/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS.sh 2024-07-01 16:12:03.455963214 +0200
+++ extrae-4.2.0/tests/functional/hw-counters/check_Extrae_PAPI_TOT_INS.sh 2024-07-03 16:54:17.878497036 +0200
@@ -10,7 +10,29 @@
EXTRAE_CONFIG_FILE=extrae-PAPI_TOT_INS.xml ./check_Extrae_counters_xml
../../../src/merger/mpi2prv -f TRACE.mpits -o ${TRACE}.prv

-# Check
+# Check PAPI availability
+if ! command -v papi_avail &> /dev/null
+then
+ echo "papi_avail could not be found"
+ exit 0
+fi
+
+# Check COUNTERS availability
+PAPI_TOT_INS_available=`papi_avail | grep PAPI_TOT_INS | awk '{print $3}'`
+if [[ "$PAPI_TOT_INS_available" == No ]]
+then
+ echo "PAPI_TOT_INS is not available"
+ exit 0
+fi
+
+# Check COUNTERS accessibility level
+ACCESS_LEVEL=`sysctl kernel.perf_event_paranoid |awk '{print $3}'`
+if [ $ACCESS_LEVEL \> 1 ]
+then
+ echo "perf_event_paranoid configuration does not allow access to HW counters"
+ exit 0
+fi
+
CheckEntryInPCF ${TRACE}.pcf PAPI_TOT_INS

rm -fr TRACE* set-0 ${TRACE}.???
diff -Nru extrae-4.2.0.orig/tests/functional/xml/check_Extrae_xml_envvar_counters.sh extrae-4.2.0/tests/functional/xml/check_Extrae_xml_envvar_counters.sh
--- extrae-4.2.0.orig/tests/functional/xml/check_Extrae_xml_envvar_counters.sh 2024-07-01 16:12:03.484963068 +0200
+++ extrae-4.2.0/tests/functional/xml/check_Extrae_xml_envvar_counters.sh 2024-07-03 16:56:41.975736132 +0200
@@ -10,7 +10,29 @@
COUNTERS=PAPI_TOT_INS EXTRAE_CONFIG_FILE=extrae_envvar_counters.xml ./check_Extrae_xml
../../../src/merger/mpi2prv -f TRACE.mpits -o ${TRACE}.prv

-# Check
+# Check PAPI availability
+if ! command -v papi_avail &> /dev/null
+then
+ echo "papi_avail could not be found"
+ exit 0
+fi
+
+# Check COUNTER availability
+PAPI_TOT_INS_available=`papi_avail | grep PAPI_TOT_INS | awk '{print $3}'`
+if [[ "$PAPI_TOT_INS_available" == No ]]
+then
+ echo "PAPI_TOT_INS is not available"
+ exit 0
+fi
+
+# Check COUNTERS accessibility level
+ACCESS_LEVEL=`sysctl kernel.perf_event_paranoid |awk '{print $3}'`
+if [ $ACCESS_LEVEL \> 1 ]
+then
+ echo "perf_event_paranoid configuration does not allow access to HW counters"
+ exit 0
+fi
+
CheckEntryInPCF ${TRACE}.pcf PAPI_TOT_INS

rm -fr TRACE* set-0 ${TRACE}.???
49 changes: 49 additions & 0 deletions easybuild/easyconfigs/e/Extrae/Extrae-4.2.0-gompi-2023b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name = 'Extrae'
version = '4.2.0'

homepage = 'https://tools.bsc.es/extrae'
description = """Extrae is the package devoted to generate Paraver trace-files for a post-mortem analysis.
Extrae is a tool that uses different interposition mechanisms to inject probes into the target application
so as to gather information regarding the application performance."""

toolchain = {'name': 'gompi', 'version': '2023b'}

toolchainopts = {'usempi': True}

source_urls = ['https://ftp.tools.bsc.es/%(namelower)s']

sources = ['%(namelower)s-%(version)s-src.tar.bz2']

patches = [
'Extrae-4.2.0-detect_binutils.patch',
'Extrae-4.2.0-fix-hw-counters-checks.patch',
'Extrae-4.2.0-debug_add_event.patch',
]

checksums = [
# extrae-4.2.0-src.tar.bz2
'7b83a1ed008440bbc1bda88297d2d0e9256780db1cf8401b3c12718451f8919a',
'1c7bf9d97405c5c2f9dba3604faf141c1563c70958e942822aab521eb7ea0c9e', # Extrae-4.2.0-detect_binutils.patch
'147d897a5a9ba6ebb1b5de32c964b2cd73534f31a540125a94fd37f2ceb1edfe', # Extrae-4.2.0-fix-hw-counters-checks.patch
'9c3541b16f1acf6ff56ab44a24d44c2ec91f9415be217c39f9c0a32e2093ccca', # Extrae-4.2.0-debug_add_event.patch
]

builddependencies = [
('Automake', '1.16.5'),
]

dependencies = [
('zlib', '1.2.13'),
('Boost', '1.83.0'),
('libunwind', '1.6.2'),
('libxml2', '2.11.5'),
('libdwarf', '0.9.2'),
('PAPI', '7.1.0'),
]

# Disable dynamic memory instrumentation for this release, has been seen to sometimes cause MPI test failures
configopts = '--disable-instrument-dynamic-memory'

runtest = 'check'

moduleclass = 'perf'

0 comments on commit b77d542

Please sign in to comment.