Skip to content

Draft: Update OTF2, OPARI2, CubeLib, CubeW, Score-P, Scalasca (& add GOTCHA) #2103

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: 3.x
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions components/io-libs/cubew/SPECS/cubew.spec
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,15 @@

# Base package name
%define pname cubew
%define shortv 4.8

Summary: CUBE Uniform Behavioral Encoding generic presentation writer component
Name: %{pname}-%{compiler_family}%{PROJ_DELIM}
Version: 4.8.2
Version: 4.9
Release: 1%{?dist}
License: BSD-3-Clause
Group: %{PROJ_NAME}/io-libs
URL: http://www.scalasca.org/software/cube-4.x/download.html
Source0: http://apps.fz-juelich.de/scalasca/releases/cube/%shortv/dist/cubew-%{version}.tar.gz
Source0: https://perftools.pages.jsc.fz-juelich.de/cicd/cubew/tags/cubew-%{version}/cubew-%{version}.tar.gz
BuildRequires: chrpath
BuildRequires: file
BuildRequires: gcc-c++
Expand Down Expand Up @@ -101,6 +100,8 @@ make check
make DESTDIR=$RPM_BUILD_ROOT install

# don't package static libs
# May not be necessary anymore starting with
# v4.9, but doesn't do any harm.
rm -rf $RPM_BUILD_ROOT%{install_path}/lib/*.a \
$RPM_BUILD_ROOT%{install_path}/lib/*.la

Expand Down
2 changes: 1 addition & 1 deletion components/io-libs/otf2/SPECS/otf2.spec
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

Summary: Open Trace Format 2 library
Name: %{pname}-%{compiler_family}-%{mpi_family}%{PROJ_DELIM}
Version: 3.0.3
Version: 3.1.1
Release: 1%{?dist}
License: BSD-3-Clause
Group: %{PROJ_NAME}/io-libs
Expand Down

This file was deleted.

4 changes: 1 addition & 3 deletions components/perf-tools/scalasca/SPECS/scalasca.spec
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

Summary: Toolset for performance analysis of large-scale parallel applications
Name: %{pname}-%{compiler_family}-%{mpi_family}%{PROJ_DELIM}
Version: 2.6.1
Version: 2.6.2
Release: 1%{?dist}
License: BSD
Group: %{PROJ_NAME}/perf-tools
Expand All @@ -33,7 +33,6 @@ Requires: cubew-%{compiler_family}%{PROJ_DELIM} >= 4.8
Requires: cubelib-%{compiler_family}%{PROJ_DELIM} >= 4.4
Requires: otf2-%{compiler_family}-%{mpi_family}%{PROJ_DELIM} >= 3.0
Requires: scorep-%{compiler_family}-%{mpi_family}%{PROJ_DELIM} >= 1.2
Patch1: scalasca-2.6.1-nowarn-omp-pragmas.patch

# Default library install path
%define install_path %{OHPC_LIBS}/%{compiler_family}/%{mpi_family}/%{pname}/%version
Expand All @@ -57,7 +56,6 @@ This is the %{compiler_family}-%{mpi_family} version.
%prep

%setup -q -n %{pname}-%{version}
%patch -P 1 -p1

%build

Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
From 1a7be011a2d9084d9e2dc9c7d79de729e0ed52b7 Mon Sep 17 00:00:00 2001
From: Jan Andre Reuter <[email protected]>
Date: Mon, 7 Apr 2025 10:47:03 +0200
Subject: [PATCH] build: Add MPIF08 configure check for Intel MPI

Adds an additional configure check to check if Intel MPI
fails to build a simple MPIF08 test case. This is due to a
bug in Intel MPI which has to be fixed after installation of Intel
MPI, requiring to rebuild the MPIF08 bindings.

If not checked, builds with Intel MPI will fail due to the bug
described in:

https://community.intel.com/t5/Intel-MPI-Library/MPI-f08-with-polymorphic-argument-CLASS/m-p/1590421

When this bug is triggered, disable the entire MPIF08 support.
Steps on how to solve this are already described in OPEN_ISSUES.

Signed-off-by: Jan Andre Reuter <[email protected]>
---
OPEN_ISSUES | 6 ++---
build-config/m4/scorep_mpi.m4 | 18 +++++++++++++
build-mpi/configure | 26 +++++++++++++++++++
src/adapters/mpi/f08/SCOREP_Mpi_F08_Abort.f90 | 6 +++++
4 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/OPEN_ISSUES b/OPEN_ISSUES
index 69fe817..44a9fc7 100644
--- a/OPEN_ISSUES
+++ b/OPEN_ISSUES
@@ -266,9 +266,9 @@ various Score-P components.
- `MPI_ALLTOALLW` allocates temporary arrays for type conversions from F08
to C. On large communicators, this might consume a large amount of memory.

- - Compilation of Score-P fails with oneAPI's mpiifx (several versions
- affected) due to an error in their F08 bindings. A workaround is
- described here:
+ - Configure will disable MPIF08 support with oneAPI's mpiifx (several
+ versions affected) if it detects an error in their F08 bindings. A
+ workaround, enabling support, is described here:

https://community.intel.com/t5/Intel-MPI-Library/MPI-f08-with-polymorphic-argument-CLASS/m-p/1590421/highlight/true#M11660

diff --git a/build-config/m4/scorep_mpi.m4 b/build-config/m4/scorep_mpi.m4
index fb89a42..6398441 100644
--- a/build-config/m4/scorep_mpi.m4
+++ b/build-config/m4/scorep_mpi.m4
@@ -461,6 +461,24 @@ AC_LINK_IFELSE(AC_LANG_SOURCE([[program pmpi_funcs
end program]]), [], [scorep_mpi_usempif08_supported="no, MPI library does not provide all required PMPI procedures"])
fi

+# Test for Intel MPI bug with Fortran 2008 bindings. See
+# https://community.intel.com/t5/Intel-MPI-Library/MPI-f08-with-polymorphic-argument-CLASS/m-p/1590421
+if test x"$scorep_mpi_usempif08_supported" = xyes; then
+AC_COMPILE_IFELSE(AC_LANG_SOURCE([[subroutine test(baz, dtype)
+ use MPI_f08
+ implicit none (type, external)
+
+ ! Subroutine arguments
+ class(*) :: baz
+ type(MPI_Datatype) :: dtype
+
+ ! Local variables
+ type(MPI_Request) :: recvreq
+
+ call MPI_Irecv(baz, 1, dtype, 0, 0, MPI_COMM_SELF, recvreq)
+end subroutine test]]), [], [scorep_mpi_usempif08_supported="no, due to a bug in the MPI library"])
+fi
+
AC_MSG_RESULT([$scorep_mpi_usempif08_supported])
ac_ext="${ac_ext_save}"
AC_LANG_POP([Fortran])
diff --git a/build-mpi/configure b/build-mpi/configure
index 39901d4..4119823 100755
--- a/build-mpi/configure
+++ b/build-mpi/configure
@@ -44669,6 +44669,32 @@ rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi

+# Test for Intel MPI bug with Fortran 2008 bindings. See
+# https://community.intel.com/t5/Intel-MPI-Library/MPI-f08-with-polymorphic-argument-CLASS/m-p/1590421
+if test x"$scorep_mpi_usempif08_supported" = xyes; then
+cat > conftest.$ac_ext <<_ACEOF
+subroutine test(baz, dtype)
+ use MPI_f08
+ implicit none (type, external)
+
+ ! Subroutine arguments
+ class(*) :: baz
+ type(MPI_Datatype) :: dtype
+
+ ! Local variables
+ type(MPI_Request) :: recvreq
+
+ call MPI_Irecv(baz, 1, dtype, 0, 0, MPI_COMM_SELF, recvreq)
+end subroutine test
+_ACEOF
+if ac_fn_fc_try_compile "$LINENO"; then :
+
+else
+ scorep_mpi_usempif08_supported="no, due to a bug in the MPI library"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $scorep_mpi_usempif08_supported" >&5
case "$scorep_mpi_usempif08_supported" in #(
yes|ok|yes[\ ,]*) :
diff --git a/src/adapters/mpi/f08/SCOREP_Mpi_F08_Abort.f90 b/src/adapters/mpi/f08/SCOREP_Mpi_F08_Abort.f90
index 55d17ea..43cdaf9 100644
--- a/src/adapters/mpi/f08/SCOREP_Mpi_F08_Abort.f90
+++ b/src/adapters/mpi/f08/SCOREP_Mpi_F08_Abort.f90
@@ -31,6 +31,12 @@ subroutine MPI_Init_thread_f08(required, provided, ierror)
integer, intent(in) :: required
integer, intent(out) :: provided
integer, optional, intent(out) :: ierror
+
+ ! Workarond for IntelMPI bug, to prevent error:
+ ! A dummy argument with an explicit INTENT(OUT) declaration is not
+ ! given an explicit value.
+ provided = 0
+
write (*, *) "[Score-P] Support for 'USE mpi_f08' is disabled in", &
" this Score-P installation."
write (*, *) " Please view 'scorep.summary' for details. "
--
2.43.0

Loading
Loading