From 598ebb31b2fe8f9a56871cced7c7e6a402a07d1f59230acdac2d1b737e643cb1 Mon Sep 17 00:00:00 2001 From: Egbert Eich Date: Sat, 28 Nov 2020 16:53:30 +0000 Subject: [PATCH 1/4] Accepting request 851546 from home:eeich:branches:science:HPC - Update to mpiP version 3.5 * Update deprecated functions. * Fix ARM typo and add LSE configure test. * Correct pt2pt histogram reporting check. * Address compiler warnings for some mt function return types. * Correct build behavior for testing multi-threaded support with Spectrum MPI. * Missing function argument entry. * Additional I/O routines * currBasetype fix * Update to test suite to include multi-threaded tests * Followup for renaming wrappers.c to mpiP-wrappers.c * Include mpiP in wrappers file name for call site reporting * Clarify stack tracing behavior * Correct autoheader error with HAVE_BFD_GET_SECTION_MACROS. Make define behavior consistent. * Convenience functionality to avoid SMPI libmpiP * Arch files corrections for gcc and opal code. * update to work with binutils-2.34 * Fixed report header printing bug with large argument counts. * fix make-wrappers.py indentation and make python 2 and 3 compatible * Re-organized sizeof test to avoid CC defaulting to gcc. Re-organized default compilers. * Add Multi-Threading (MT) test suite * Fix FORTRAN Bindings: properly handle strings * Fix the code accounting the application time * Fix TLS cleanup code * Fix MT timings * Refine statistics reset procedure * Reduce the number of TLS accesses OBS-URL: https://build.opensuse.org/request/show/851546 OBS-URL: https://build.opensuse.org/package/show/science:HPC/mpiP?expand=0&rev=33 --- _multibuild | 1 + mpiP-3.4.1.tar.gz | 3 - mpiP-3.5.tgz | 3 + mpiP.changes | 70 ++++++++++++++++++++++ mpiP.spec | 140 ++++++++++++++++++++++++++++++++++++++------ mpip.unwinder.patch | 4 +- 6 files changed, 199 insertions(+), 22 deletions(-) delete mode 100644 mpiP-3.4.1.tar.gz create mode 100644 mpiP-3.5.tgz diff --git a/_multibuild b/_multibuild index d99ccee..0e1a6ca 100644 --- a/_multibuild +++ b/_multibuild @@ -2,6 +2,7 @@ gnu-openmpi-hpc gnu-openmpi2-hpc gnu-openmpi3-hpc + gnu-openmpi4-hpc gnu-mvapich2-hpc gnu-mpich-hpc diff --git a/mpiP-3.4.1.tar.gz b/mpiP-3.4.1.tar.gz deleted file mode 100644 index 244f5a1..0000000 --- a/mpiP-3.4.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:688bf37d73211e6a915f9fc59c358282a266d166c0a10af07a38a01a473296f0 -size 216045 diff --git a/mpiP-3.5.tgz b/mpiP-3.5.tgz new file mode 100644 index 0000000..46e677d --- /dev/null +++ b/mpiP-3.5.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e366843d53fa016fb03903e51c8aac901aa5155edabe64698a8d6fa618a03bbd +size 336942 diff --git a/mpiP.changes b/mpiP.changes index 3384d56..c11228b 100644 --- a/mpiP.changes +++ b/mpiP.changes @@ -1,3 +1,71 @@ +------------------------------------------------------------------- +Sat Nov 28 11:49:04 UTC 2020 - Egbert Eich + +- Update to mpiP version 3.5 + * Update deprecated functions. + * Fix ARM typo and add LSE configure test. + * Correct pt2pt histogram reporting check. + * Address compiler warnings for some mt function return types. + * Correct build behavior for testing multi-threaded support + with Spectrum MPI. + * Missing function argument entry. + * Additional I/O routines + * currBasetype fix + * Update to test suite to include multi-threaded tests + * Followup for renaming wrappers.c to mpiP-wrappers.c + * Include mpiP in wrappers file name for call site reporting + * Clarify stack tracing behavior + * Correct autoheader error with HAVE_BFD_GET_SECTION_MACROS. + Make define behavior consistent. + * Convenience functionality to avoid SMPI libmpiP + * Arch files corrections for gcc and opal code. + * update to work with binutils-2.34 + * Fixed report header printing bug with large argument counts. + * fix make-wrappers.py indentation and make python 2 and 3 compatible + * Re-organized sizeof test to avoid CC defaulting to gcc. + Re-organized default compilers. + * Add Multi-Threading (MT) test suite + * Fix FORTRAN Bindings: properly handle strings + * Fix the code accounting the application time + * Fix TLS cleanup code + * Fix MT timings + * Refine statistics reset procedure + * Reduce the number of TLS accesses + * First cut on multi-threading + * Extract callsite code to a separate module + * Move nested call check down the stack + * Introduce additional statistics layer + * First step towards MT support + * Refactor global state: remove unneeded component + * Preliminary step for adding multi-threaded support + * Configury change: introduce mpiP-state.[c|h] files + * Get rid of mpiPi.h.in file as unneeded + * Adding autoconf PACKAGE defines to address current bfd.h + requirement. + * Fix mpi.h includes in some of the tests + * Indentation fixes only. No actual changes. + * Change default stack frame unwinding count. + * Remove functions deprecated since MPI-2.0 + * Avoid LD_PRELOAD symbol conflict between srun and libiberty. + * Create README.md + * Corrected type issues resulting in compiler warnings in the + test suite. + * Make PC modification conditional. (Removed for now.) + * Adding additional RMA functions to cover all MPI3.1 RMA + functions. Expanded test coverage. + * Added MPI3 One-sided operation support, from changes by Jeff Hammond. + * Additional github migration. + * Adding README.md + * Added support for non-blocking collectives. + * Provide non-NULL error argument for dwarf calls. + Remove call to elf_end. Ignore compile units with no + function information, rather than abort. + * Reduce unnecessary debugging output. + * Add count column to top time section. + * Adding fortran symbol failure output for debugging configure issues. +- Add build support for gcc10 to HPC build (bsc#1174439). +- Add openmpi4 flavors. + ------------------------------------------------------------------- Wed May 13 19:38:31 UTC 2020 - Egbert Eich @@ -8,6 +76,8 @@ Fri Nov 29 19:42:39 UTC 2019 - Egbert Eich - Add missing openmpi2 build for gcc7. - Add support for gcc8 and gcc9 (jsc#SLE-7766 & jsc#SLE-8604). +- Include mpiP wrapper scripts for mpirun and Slurm srun. +- Package API. ------------------------------------------------------------------- Thu Nov 28 16:03:47 UTC 2019 - Egbert Eich diff --git a/mpiP.spec b/mpiP.spec index af816fd..b1935bb 100644 --- a/mpiP.spec +++ b/mpiP.spec @@ -19,12 +19,15 @@ %global flavor @BUILD_FLAVOR@%{nil} %define pname mpiP -%define vers 3.4.1 -%define _vers 3_4_1 +%define vers 3.5 +%define _vers 3_5 %if 0%{?sle_version} >= 150200 %define DisOMPI1 ExclusiveArch: do_not_build %endif +%if 0%{?sle_version} >= 150300 +%define DisOMPI2 ExclusiveArch: do_not_build +%endif %if "%flavor" == "" ExclusiveArch: do_not_build @@ -54,6 +57,14 @@ ExclusiveArch: do_not_build %define mpi_ver 3 %endif +%if "%{flavor}" == "gnu-openmpi4-hpc" +%{?DisOMPI4} +%global compiler_family gnu +%undefine c_f_ver +%define mpi_family openmpi +%define mpi_ver 4 +%endif + %if "%{flavor}" == "gnu-mvapich2-hpc" %global compiler_family gnu %undefine c_f_ver @@ -90,6 +101,14 @@ ExclusiveArch: do_not_build %define mpi_ver 3 %endif +%if "%{flavor}" == "gnu7-openmpi4-hpc" +%{?DisOMPI4} +%global compiler_family gnu +%define c_f_ver 7 +%define mpi_family openmpi +%define mpi_ver 4 +%endif + %if "%{flavor}" == "gnu7-mvapich2-hpc" %global compiler_family gnu %define c_f_ver 7 @@ -110,6 +129,14 @@ ExclusiveArch: do_not_build %define mpi_ver 1 %endif +%if "%{flavor}" == "gnu8-openmpi2-hpc" +%{?DisOMPI3} +%global compiler_family gnu +%define c_f_ver 8 +%define mpi_family openmpi +%define mpi_ver 2 +%endif + %if "%{flavor}" == "gnu8-openmpi3-hpc" %{?DisOMPI3} %global compiler_family gnu @@ -118,12 +145,12 @@ ExclusiveArch: do_not_build %define mpi_ver 3 %endif -%if "%{flavor}" == "gnu8-openmpi2-hpc" -%{?DisOMPI3} +%if "%{flavor}" == "gnu8-openmpi4-hpc" +%{?DisOMPI4} %global compiler_family gnu %define c_f_ver 8 %define mpi_family openmpi -%define mpi_ver 2 +%define mpi_ver 4 %endif %if "%{flavor}" == "gnu8-mvapich2-hpc" @@ -147,7 +174,7 @@ ExclusiveArch: do_not_build %endif %if "%{flavor}" == "gnu9-openmpi2-hpc" -%{?DisOMPI3} +%{?DisOMPI2} %global compiler_family gnu %define c_f_ver 9 %define mpi_family openmpi @@ -162,6 +189,14 @@ ExclusiveArch: do_not_build %define mpi_ver 3 %endif +%if "%{flavor}" == "gnu9-openmpi4-hpc" +%{?DisOMPI4} +%global compiler_family gnu +%define c_f_ver 9 +%define mpi_family openmpi +%define mpi_ver 4 +%endif + %if "%{flavor}" == "gnu9-mvapich2-hpc" %global compiler_family gnu %define c_f_ver 9 @@ -174,6 +209,50 @@ ExclusiveArch: do_not_build %define mpi_family mpich %endif +%if "%{flavor}" == "gnu10-openmpi-hpc" +%{?DisOMPI1} +%global compiler_family gnu +%define c_f_ver 10 +%define mpi_family openmpi +%define mpi_ver 1 +%endif + +%if "%{flavor}" == "gnu10-openmpi2-hpc" +%{?DisOMPI2} +%global compiler_family gnu +%define c_f_ver 10 +%define mpi_family openmpi +%define mpi_ver 2 +%endif + +%if "%{flavor}" == "gnu10-openmpi3-hpc" +%{?DisOMPI3} +%global compiler_family gnu +%define c_f_ver 10 +%define mpi_family openmpi +%define mpi_ver 3 +%endif + +%if "%{flavor}" == "gnu10-openmpi4-hpc" +%{?DisOMPI4} +%global compiler_family gnu +%define c_f_ver 10 +%define mpi_family openmpi +%define mpi_ver 4 +%endif + +%if "%{flavor}" == "gnu10-mvapich2-hpc" +%global compiler_family gnu +%define c_f_ver 10 +%define mpi_family mvapich2 +%endif + +%if "%{flavor}" == "gnu10-mpich-hpc" +%global compiler_family gnu +%define c_f_ver 10 +%define mpi_family mpich +%endif + %{?hpc_init:%{hpc_init -c %compiler_family -m %mpi_family %{?c_f_ver:-v %{c_f_ver}} %{?mpi_ver:-V %{mpi_ver}} %{?ext:-e %{ext}}}} Name: %{?hpc_package_name:%{hpc_package_name %_vers}}%{!?hpc_package_name:%pname} @@ -182,17 +261,19 @@ License: BSD-3-Clause Group: Development/Tools/Debuggers Version: %vers Release: 0 -URL: http://mpip.sourceforge.net/ -Source0: http://sourceforge.net/projects/mpip/files/mpiP/mpiP-3.4.1/mpiP-%{version}.tar.gz +URL: https://github.com/LLNL/mpiP +Source0: https://github.com/LLNL/mpiP/releases/download/%{version}/mpip-%{version}.tgz#/%{pname}-%{version}.tgz Patch1: mpip.unwinder.patch BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel BuildRequires: %{mpi_family}%{?mpi_ver}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel +BuildRequires: binutils-devel +BuildRequires: libunwind-devel BuildRequires: lua-lmod BuildRequires: python +BuildRequires: slurm-node BuildRequires: suse-hpc -%hpc_requires -%hpc_requires_devel +%{?hpc_requires} %description mpiP is a profiling library for MPI applications. @@ -205,10 +286,21 @@ file. %{hpc_master_package -L} +%package devel +Summary: Headers for profiling library for MPI applications +Group: Development/Libraries/C and C++ +%{?hpc_requires_devel} + +%description devel +mpiP is a profiling library for MPI applications. This packages contains +the build headers. + +%{hpc_master_package devel} + %package devel-static Summary: Static version of profiling library for MPI applications Group: Development/Libraries/C and C++ -%hpc_requires_devel +%{?hpc_requires_devel} %description devel-static mpiP is a profiling library for MPI applications. @@ -235,9 +327,9 @@ CC=mpicc CXX=mpicxx FC=mpif90 CFLAGS="-D__DATE__=\\\"NODATE\\\" -D__TIME__=\\\"NOTIME\\\"" +export LDFLAGS=-Wl,-soname,libmpiP.so %hpc_configure \ --enable-demangling \ - --disable-libunwind \ %ifarch aarch64 --enable-setjmp \ %endif @@ -246,11 +338,19 @@ CFLAGS="-D__DATE__=\\\"NODATE\\\" -D__TIME__=\\\"NOTIME\\\"" make %{?_smp_mflags} shared %install - %hpc_setup -%make_install +make install-all DESTDIR=%{?buildroot} find "%{buildroot}" -type f -name "*.a" -exec chmod a-x {} + find "%{buildroot}/%{_docdir}" -type f -exec chmod a-x {} + +find "%{buildroot}/%{hpc_includedir}" -type f -exec chmod a-x {} + +%{hpc_shebang_sanitize_scripts %{buildroot}%{hpc_bindir}} +for i in mpirun-mpip srun-mpip; do + sed -i \ + -e "s@\(MPIP_DIR=\).*@\1%{?hpc_prefix}@" \ + -e "s@\(LD_PRELOAD=\).*:\(.*\)@\1\2@" \ + -e "s@\(ADDTL_RT_LIBS=.*\)@#\1@" \ + -e "s@/lib/libmpiP.so@/%{_lib}/libmpiP.so@" %{buildroot}%{hpc_bindir}/$i +done %hpc_write_modules_files #%%Module1.0##################################################################### @@ -271,7 +371,12 @@ module-whatis "URL %{url}" set version %{version} +prepend-path PATH %{hpc_bindir} prepend-path LD_LIBRARY_PATH %{hpc_libdir} +if {[file isdirectory %{hpc_includedir}]} { +prepend-path C_INCLUDE_PATH %{hpc_includedir} +prepend-path INCLUDE %{hpc_includedir} +} setenv %{hpc_upcase %pname}_DIR %{hpc_prefix} setenv %{hpc_upcase %pname}_LIB %{hpc_libdir} @@ -282,17 +387,18 @@ EOF %hpc_module_delete_if_default %files -%defattr(-,root,root,-) %{hpc_dirs} %{hpc_modules_files} %{hpc_libdir}/*so +%{hpc_bindir} %files doc -%defattr(0644,root,root,-) %{_docdir}/%{name}/ +%files devel +%{hpc_includedir} + %files devel-static -%defattr(0644,root,root,-) %{hpc_libdir}/*.a %changelog diff --git a/mpip.unwinder.patch b/mpip.unwinder.patch index 1898a69..0fbf4e0 100644 --- a/mpip.unwinder.patch +++ b/mpip.unwinder.patch @@ -12,8 +12,8 @@ diff -ruN mpiP-3.4.1.old/Defs.mak.in mpiP-3.4.1/Defs.mak.in CPPFLAGS += -DIA32 endif diff -ruN mpiP-3.4.1.old/mpiPi.h.in mpiP-3.4.1/mpiPi.h.in ---- mpiP-3.4.1.old/mpiPi.h.in 2014-03-13 19:46:07.000000000 +0000 -+++ mpiP-3.4.1/mpiPi.h.in 2017-01-10 07:52:48.783447707 +0000 +--- mpiP-3.4.1.old/mpiPi.h 2014-03-13 19:46:07.000000000 +0000 ++++ mpiP-3.4.1/mpiPi.h 2017-01-10 07:52:48.783447707 +0000 @@ -276,6 +276,12 @@ #define FramePC(fp) ((void *) *(long *) (((long) fp) + (2 * sizeof (void *)))) #define NextFP(fp) ((void *) *(long *) fp) From e21a8d51f8c15b1338618d20a38618f9f9820e515b69f3e93cbd9d6e7c436e9f Mon Sep 17 00:00:00 2001 From: Egbert Eich Date: Sun, 29 Nov 2020 09:09:37 +0000 Subject: [PATCH 2/4] - Minor fix. OBS-URL: https://build.opensuse.org/package/show/science:HPC/mpiP?expand=0&rev=34 --- mpiP.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpiP.spec b/mpiP.spec index b1935bb..77e5e6e 100644 --- a/mpiP.spec +++ b/mpiP.spec @@ -130,7 +130,7 @@ ExclusiveArch: do_not_build %endif %if "%{flavor}" == "gnu8-openmpi2-hpc" -%{?DisOMPI3} +%{?DisOMPI2} %global compiler_family gnu %define c_f_ver 8 %define mpi_family openmpi From 4b2404ff02107e529d0198c0f5d31ba71e2b471265427571e554c5b0ba4e2a2f Mon Sep 17 00:00:00 2001 From: Egbert Eich Date: Mon, 30 Nov 2020 16:43:27 +0000 Subject: [PATCH 3/4] Accepting request 851870 from home:eeich:branches:science:HPC - Preliminary %check stage. A number of checks fail currently. These need to be looked at. OBS-URL: https://build.opensuse.org/request/show/851870 OBS-URL: https://build.opensuse.org/package/show/science:HPC/mpiP?expand=0&rev=35 --- Add-return-value-to-non-void-function.patch | 23 ++++++++++++++++ mpiP.changes | 2 ++ mpiP.spec | 30 ++++++++++++++++----- 3 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 Add-return-value-to-non-void-function.patch diff --git a/Add-return-value-to-non-void-function.patch b/Add-return-value-to-non-void-function.patch new file mode 100644 index 0000000..d638f90 --- /dev/null +++ b/Add-return-value-to-non-void-function.patch @@ -0,0 +1,23 @@ +From: Egbert Eich +Date: Sun Nov 29 20:38:47 2020 +0100 +Subject: Add return value to non-void function +Patch-mainline: Not yet +Git-commit: 98cc1a7453a2f55dfe2477d62e8ce3f049e0ed1f +References: + +Signed-off-by: Egbert Eich +--- + testing/mt/mt_common.c | 1 + + 1 file changed, 1 insertion(+) +diff --git a/testing/mt/mt_common.c b/testing/mt/mt_common.c +index ff92d9e..bda59c3 100644 +--- a/testing/mt/mt_common.c ++++ b/testing/mt/mt_common.c +@@ -310,6 +310,7 @@ void* _mt_common_proxy_thread(void *id_ptr) + { + test_thr_data_t *tdata = (test_thr_data_t*)id_ptr; + tdata->fptr(tdata->tid); ++ return NULL; + } + + void mt_common_exec(mt_common_thrptr_t *workers) diff --git a/mpiP.changes b/mpiP.changes index c11228b..b9eb9b6 100644 --- a/mpiP.changes +++ b/mpiP.changes @@ -65,6 +65,8 @@ Sat Nov 28 11:49:04 UTC 2020 - Egbert Eich * Adding fortran symbol failure output for debugging configure issues. - Add build support for gcc10 to HPC build (bsc#1174439). - Add openmpi4 flavors. +- Preliminary %check stage. A number of checks fail currently. + These need to be looked at. ------------------------------------------------------------------- Wed May 13 19:38:31 UTC 2020 - Egbert Eich diff --git a/mpiP.spec b/mpiP.spec index 77e5e6e..1a8cff3 100644 --- a/mpiP.spec +++ b/mpiP.spec @@ -264,14 +264,16 @@ Release: 0 URL: https://github.com/LLNL/mpiP Source0: https://github.com/LLNL/mpiP/releases/download/%{version}/mpip-%{version}.tgz#/%{pname}-%{version}.tgz Patch1: mpip.unwinder.patch +Patch2: Add-return-value-to-non-void-function.patch BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel BuildRequires: %{mpi_family}%{?mpi_ver}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel BuildRequires: binutils-devel +BuildRequires: dejagnu BuildRequires: libunwind-devel BuildRequires: lua-lmod BuildRequires: python -BuildRequires: slurm-node +#BuildRequires: slurm-node BuildRequires: suse-hpc %{?hpc_requires} @@ -305,6 +307,8 @@ Group: Development/Libraries/C and C++ %description devel-static mpiP is a profiling library for MPI applications. +This package contains the static libraries. + %package doc Summary: Documentation for the mpiP profiling library Group: Documentation/Other @@ -318,16 +322,18 @@ This contains the documentation. %prep %setup -q -n %{pname}-%{version} -%patch1 -p1 +%autopatch -p1 +sed -i -e "/-shared -o \$@/s#\(\${LDFLAGS}\)#\1 -Wl,-soname,\$@#" Makefile.in %build %global _lto_cflags %{_lto_cflags} -ffat-lto-objects %hpc_setup -CC=mpicc -CXX=mpicxx -FC=mpif90 -CFLAGS="-D__DATE__=\\\"NODATE\\\" -D__TIME__=\\\"NOTIME\\\"" -export LDFLAGS=-Wl,-soname,libmpiP.so +export CC=mpicc +export CXX=mpicxx +export FC=mpifort +export F77=$FC +export CFLAGS="-D__DATE__=\\\"NODATE\\\" -D__TIME__=\\\"NOTIME\\\"" +export FFLAGS="-std=legacy" %hpc_configure \ --enable-demangling \ %ifarch aarch64 @@ -383,6 +389,16 @@ setenv %{hpc_upcase %pname}_LIB %{hpc_libdir} EOF +%check +%hpc_setup +export CC=mpicc +export CXX=mpicxx +export FC=mpifort +export F77=$FC +export FFLAGS="-std=legacy" +LD_LIBRARY_PATH=$(pwd)${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} +make FFLAGS+=${FFLAGS} check || exit 0 + %postun %hpc_module_delete_if_default From a58e287993af69acd4041bc763bbb9e7cddeef2aa967f807a0408df33dd7060e Mon Sep 17 00:00:00 2001 From: Egbert Eich Date: Mon, 30 Nov 2020 16:49:28 +0000 Subject: [PATCH 4/4] - Add: Add-return-value-to-non-void-function.patch Preliminary %check stage. A number of checks fail currently. OBS-URL: https://build.opensuse.org/package/show/science:HPC/mpiP?expand=0&rev=36 --- mpiP.changes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mpiP.changes b/mpiP.changes index b9eb9b6..ed35541 100644 --- a/mpiP.changes +++ b/mpiP.changes @@ -65,7 +65,8 @@ Sat Nov 28 11:49:04 UTC 2020 - Egbert Eich * Adding fortran symbol failure output for debugging configure issues. - Add build support for gcc10 to HPC build (bsc#1174439). - Add openmpi4 flavors. -- Preliminary %check stage. A number of checks fail currently. +- Add: Add-return-value-to-non-void-function.patch + Preliminary %check stage. A number of checks fail currently. These need to be looked at. -------------------------------------------------------------------