diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7072623 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libpsm2-11.2.185.tar.gz diff --git a/.libpsm2.metadata b/.libpsm2.metadata new file mode 100644 index 0000000..549ff91 --- /dev/null +++ b/.libpsm2.metadata @@ -0,0 +1 @@ +725613650b5647ceb7bc5e47a9b9d296bea5d3be SOURCES/libpsm2-11.2.185.tar.gz diff --git a/SOURCES/0001-README-add-section-about-OMPI-4.1.x-OFI-BTL-and-high.patch b/SOURCES/0001-README-add-section-about-OMPI-4.1.x-OFI-BTL-and-high.patch new file mode 100644 index 0000000..8f7e90b --- /dev/null +++ b/SOURCES/0001-README-add-section-about-OMPI-4.1.x-OFI-BTL-and-high.patch @@ -0,0 +1,51 @@ +From 6e0231074111ff1fda0b2de1765e1988fda2e9c9 Mon Sep 17 00:00:00 2001 +From: Brendan Cunningham +Date: Fri, 7 May 2021 16:33:35 -0400 +Subject: [PATCH] README: add section about OMPI 4.1.x, OFI BTL, and high-PPN + jobs. + +Signed-off-by: Brendan Cunningham +--- + README | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +diff --git a/README b/README +index 7990555..2961534 100644 +--- a/README ++++ b/README +@@ -67,7 +67,6 @@ Contains the following sections: + - INSTALLING + * INSTALLING USING MAKEFILE + * INSTALLING USING EITHER YUM OR DNF +-- TESTING + - RELATED SOFTWARE TO PSM2 + - SUPPORTING DOCUMENTATION + +@@ -251,6 +250,24 @@ libraries available on them. Open MPI provides a standard configure, make and + make install mechanism which will detect and build the relevant PSM2 network + modules for Open MPI once the header and runtime files are detected. + ++Open MPI 4.1.x, OFI BTL, and high PPN jobs ++---------------- ++Open MPI added the OFI BTL for one-sided communication. On an OPA fabric, the ++OFI BTL may use the PSM2 OFI provider underneath. If PSM2 is in-use as both ++the MTL (directly or via OFI) and the BTL (via OFI), then each rank in the ++Open MPI job will require two PSM2 endpoints and PSM2 context-sharing will ++be disabled. ++ ++In this case, total number of PSM2 ranks on a node can be no more than: ++ (num_hfi * num_user_contexts)/2 ++Where num_user_contexts is typically equal to the number of physical CPU ++cores on that node. ++ ++If your job does not require an inter-node BTL (e.g. OFI), then you can ++disable the OFI BTL in one of two ways: ++ 1. When building Open MPI, specify '--with-ofi=no' when you run 'configure'. ++ 2. When running your Open MPI job, add '-mca btl self,vader'. ++ + MVAPICH2 support + ---------------- + MVAPICH2 supports PSM2 transport for optimized communication on HFI hardware. +-- +2.32.0 + diff --git a/SOURCES/libpsm2-gcc11.patch b/SOURCES/libpsm2-gcc11.patch new file mode 100644 index 0000000..285046d --- /dev/null +++ b/SOURCES/libpsm2-gcc11.patch @@ -0,0 +1,26 @@ +diff -Nrup a/include/linux-i386/sysdep.h b/include/linux-i386/sysdep.h +--- a/include/linux-i386/sysdep.h 2019-10-03 20:00:29.000000000 -0600 ++++ b/include/linux-i386/sysdep.h 2020-10-19 16:10:45.680585173 -0600 +@@ -139,12 +139,18 @@ static __inline__ uint32_t ips_cmpxchg(v + uint32_t old_val, uint32_t new_val) + { + uint32_t prev; +- struct xchg_dummy { +- uint32_t a[100]; +- }; + ++ /* This code used to cast PTR to a type which was an array of 100 ++ uint32_t objects. That makes no sense as the cmpxchgl's side ++ effect can be covered by an single int. ++ ++ The semantics of GCC's ASMs for memory is that it clobbers the ++ whole pointed-to object. Thus analyzers saw a 100 uint32_t sized ++ store which triggers diagnostics for out of bounds array writes. ++ ++ The cast to the dummy type has been removed. */ + asm volatile (LOCK_PREFIX "cmpxchgl %1,%2" : "=a"(prev) +- : "q"(new_val), "m"(*(struct xchg_dummy *)ptr), "0"(old_val) ++ : "q"(new_val), "m"(*ptr), "0"(old_val) + : "memory"); + + return prev; diff --git a/SPECS/libpsm2.spec b/SPECS/libpsm2.spec new file mode 100644 index 0000000..306ab72 --- /dev/null +++ b/SPECS/libpsm2.spec @@ -0,0 +1,254 @@ +# +# This file is provided under a dual BSD/GPLv2 license. When using or +# redistributing this file, you may do so under either license. +# +# GPL LICENSE SUMMARY +# +# Copyright(c) 2015 Intel Corporation. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Contact Information: +# Intel Corporation, www.intel.com +# +# BSD LICENSE +# +# Copyright(c) 2015 Intel Corporation. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Copyright (c) 2014-2015 Intel Corporation. All rights reserved. +# +Summary: Intel PSM Libraries +Name: libpsm2 +Version: 11.2.185 +Release: 2%{?dist} +License: BSD or GPLv2 +URL: https://github.com/cornelisnetworks/opa-psm2/ + +# The tarball can be created by: +# git clone https://github.com/cornelisnetworks/opa-psm2.git +# cd opa-psm2 +# git checkout 7a33bedc4bb3dff4e57c00293a2d70890db4d983 +# make dist +Source0: %{name}-%{version}.tar.gz +Patch2: %{name}-gcc11.patch +Patch3: 0001-README-add-section-about-OMPI-4.1.x-OFI-BTL-and-high.patch + +# The OPA product is supported on x86_64 only: +ExclusiveArch: x86_64 +BuildRequires: libuuid-devel +BuildRequires: numactl-devel +BuildRequires: systemd +BuildRequires: gcc +BuildRequires: make +Obsoletes: hfi1-psm < 1.0.0 + +%package devel +Summary: Development files for Intel PSM +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libuuid-devel + +%package compat +Summary: Compat library for Intel PSM +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: systemd-udev + +%global _privatelibs libpsm_infinipath[.]so[.]1.* +%global __provides_exclude ^(%{_privatelibs})$ +%global __requires_exclude ^(%{_privatelibs})$ + +%description +The PSM Messaging API, or PSM API, is the low-level +user-level communications interface for the Intel OPA +family of products. PSM users are enabled with mechanisms +necessary to implement higher level communications +interfaces in parallel environments. + +%description devel +Development files for the Intel PSM library + +%description compat +Support for MPIs linked with PSM versions < 2 + +%prep +%setup -q +%patch2 -p1 +%patch3 -p1 + +%build +%{set_build_flags} +%{make_build} + +%install +%if 0%{?fedora} +export DISTRO=fedora +%endif +%if 0%{?rhel} +export DISTRO=rhel +%endif +%make_install +rm -f %{buildroot}%{_libdir}/*.a + +%ldconfig_scriptlets + +%files +%license COPYING +%{_libdir}/libpsm2.so.2.* +%{_libdir}/libpsm2.so.2 +%if 0%{?rhel} >= 8 +%{_udevrulesdir}/40-psm.rules +%endif + + +%files devel +%{_libdir}/libpsm2.so +%{_includedir}/psm2.h +%{_includedir}/psm2_mq.h +%{_includedir}/psm2_am.h +%{_includedir}/hfi1diag + +%files compat +%{_libdir}/psm2-compat +%{_udevrulesdir}/40-psm-compat.rules +%{_prefix}/lib/libpsm2 +%if 0%{?fedora} +%{_prefix}/lib/modprobe.d/libpsm2-compat.conf +%endif +%if 0%{?rhel} >= 8 +%{_sysconfdir}/modprobe.d/libpsm2-compat.conf +%endif + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 11.2.185-2 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Jun 17 2021 Honggang Li - 11.2.185-1 +- Rebase to latest upstream release PSM2_11.2.185 +- Resolves: rhbz#1924899 + +* Fri Apr 16 2021 Mohan Boddu - 11.2.86-9 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Jan 26 2021 Fedora Release Engineering - 11.2.86-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Oct 19 2020 Jeff Law - 11.2.86-7 +- Avoid out of bounds array index diagnostic with gcc-11 + +* Tue Jul 28 2020 Fedora Release Engineering - 11.2.86-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Merlin Mathesius - 11.2.86-5 +- Minor updates to enable building for ELN + +* Mon Feb 10 2020 Honggang Li - 11.2.86-4 +- Fix FTBFS in Fedora rawhide/f32 +- Resolves: bz1799597 + +* Wed Jan 29 2020 Fedora Release Engineering - 11.2.86-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 17 2020 Tom Stellard - 11.2.86-2 +- Use make_build macro + +* Thu Oct 03 2019 Honggang Li - 11.2.86-1 +- Rebase to latest upstream release PSM2_11.2.86 +- Resolves: bz1758390 + +* Thu Jul 25 2019 Fedora Release Engineering - 11.2.78-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 11.2.78-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jan 31 2019 Honggang Li - 11.2.78-1 +- Rebase to latest upstream release PSM2_11.2.77 +- Resolves: bz1671190 + +* Mon Oct 8 2018 Honggang Li - 11.2.23-1 +- Rebase to latest upstream release 11.2.23 +- Resolves: bz1637273 + +* Fri Jul 13 2018 Fedora Release Engineering - 10.3.58-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 22 2018 Honggang Li - 10.3.58-1 +- Rebase to latest upstream release 10.3.58. +- Resolves: bz1594073 + +* Thu Mar 15 2018 - 10.3.8-5 +- Fix partial injection of Fedora build flags. +- Double the sizeof array fdesc to fix a gcc compiling issue. +- Resolves: bz1556062 + +* Wed Feb 07 2018 Fedora Release Engineering - 10.3.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 4 2018 Honggang Li - 10.3.8-3 +- Filter PSM1 library as private library +- Resolves: bz1530979 + +* Fri Dec 15 2017 Honggang Li - 10.3.8-2 +- Minor enhancement +- Resolves: bz1526261 + +* Tue Dec 12 2017 Honggang Li - 10.3.8-1 +- Rebase to latest upstream release +- Resolves: bz1524846 + +* Thu Aug 03 2017 Fedora Release Engineering - 10.2.103_1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 10.2.103_1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Apr 13 2017 Honggang Li - 10.2.103_1-1 +- Rebase to latest upstream master branch. +- Fix build failures caught by gcc 7.x. +- Resolves: bz1423872 + +* Fri Feb 10 2017 Fedora Release Engineering - 10.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jun 13 2016 Michal Schmidt - 10.2.2-2 +- Remove redundant %%setup -n argument. +- Packaging Guidelines: Never use "(R)" in description. + +* Tue Jun 07 2016 Paul Reger - 10.2.2-1 +- Fix build failures only. + +* Tue Apr 05 2016 Paul Reger - 10.2.1-1 +- Upstream PSM2 source code for Fedora.