From 7b46b2657d62b786409d33f63a55a47c8f98f75c Mon Sep 17 00:00:00 2001 From: Mircho Rodozov Date: Sat, 29 May 2021 16:58:17 +0200 Subject: [PATCH 1/6] Update ppc build flags and rpm macro --- OpenBLAS-fix-dynamic-arch.patch | 17 ++++------------- OpenBLAS.spec | 4 ++-- compilation_flags.file | 3 +++ fastjet.spec | 2 +- fftjet.spec | 4 ---- fmt.spec | 3 --- gcc-toolfile.spec | 2 +- geant4.spec | 6 +++--- llvm-gcc-toolfile.spec | 1 - mkfit.spec | 2 +- vecgeom.spec | 2 +- 11 files changed, 16 insertions(+), 30 deletions(-) diff --git a/OpenBLAS-fix-dynamic-arch.patch b/OpenBLAS-fix-dynamic-arch.patch index 8ba0d33d78f..cf1baa9af24 100644 --- a/OpenBLAS-fix-dynamic-arch.patch +++ b/OpenBLAS-fix-dynamic-arch.patch @@ -1,22 +1,13 @@ diff --git a/Makefile.x86_64 b/Makefile.x86_64 -index f2de51e..e1c348a 100644 +index f62ab9e..f23a65b 100644 --- a/Makefile.x86_64 +++ b/Makefile.x86_64 @@ -9,7 +9,7 @@ endif endif - ifeq ($(CORE), SKYLAKEX) --ifndef DYNAMIC_ARCH -+ifneq ($(DYNAMIC_ARCH), 1) - ifndef NO_AVX512 - CCOMMON_OPT += -march=skylake-avx512 - FCOMMON_OPT += -march=skylake-avx512 -@@ -28,7 +28,7 @@ endif - endif - ifeq ($(CORE), HASWELL) -ifndef DYNAMIC_ARCH +ifneq ($(DYNAMIC_ARCH), 1) - ifndef NO_AVX2 - ifeq ($(C_COMPILER), GCC) - CCOMMON_OPT += -mavx2 + ADD_CPUFLAGS = 1 + else + ifdef TARGET_CORE diff --git a/OpenBLAS.spec b/OpenBLAS.spec index 6f1addf0ef2..c0543963c3c 100644 --- a/OpenBLAS.spec +++ b/OpenBLAS.spec @@ -1,4 +1,4 @@ -### RPM external OpenBLAS 0.3.9 +### RPM external OpenBLAS 0.3.15 ## INCLUDE compilation_flags Source: https://github.com/xianyi/OpenBLAS/archive/v%{realversion}.tar.gz Patch0: OpenBLAS-fix-dynamic-arch @@ -20,7 +20,7 @@ make FC=gfortran BINARY=64 TARGET=CORE2 NUM_THREADS=256 DYNAMIC_ARCH=0 %ifarch aarch64 make FC=gfortran BINARY=64 TARGET=ARMV8 NUM_THREADS=256 DYNAMIC_ARCH=0 %else -make FC=gfortran BINARY=64 NUM_THREADS=256 DYNAMIC_ARCH=0 CFLAGS="%{ppc64le_build_flags}" +make FC=gfortran BINARY=64 NUM_THREADS=256 DYNAMIC_ARCH=0 CFLAGS="%{ppc64le_build_flags_default_longdouble}" %endif # aarch64 %endif # x86_64 diff --git a/compilation_flags.file b/compilation_flags.file index c2f2adf3c33..771512fbef8 100644 --- a/compilation_flags.file +++ b/compilation_flags.file @@ -1,4 +1,7 @@ %if "%{?ppc64le_build_flags:set}" != "set" %define ppc64le_build_flags -mlong-double-64 -mcpu=power8 -mtune=power8 --param=l1-cache-size=64 --param=l1-cache-line-size=128 --param=l2-cache-size=512 %endif +%if "%{?ppc64le_build_flags_default_longdouble:set}" != "set" +%define ppc64le_build_flags_default_longdouble -mcpu=powerpc64le -mtune=power8 --param=l1-cache-size=64 --param=l1-cache-line-size=128 --param=l2-cache-size=512 +%endif diff --git a/fastjet.spec b/fastjet.spec index 80601b433ff..636fa1ff7d6 100644 --- a/fastjet.spec +++ b/fastjet.spec @@ -25,7 +25,7 @@ CXXFLAGS="-O3 -Wall -ffast-math -ftree-vectorize" case %{cmsplatf} in *_amd64_*) CXXFLAGS="${CXXFLAGS} -msse3" ;; - *_ppc64le_*) CXXFLAGS="${CXXFLAGS} %{ppc64le_build_flags}" ;; + *_ppc64le_*) CXXFLAGS="${CXXFLAGS} %{ppc64le_build_flags_default_longdouble}" ;; esac ./configure \ diff --git a/fftjet.spec b/fftjet.spec index 5d6307076c5..ae5df4ea8d7 100644 --- a/fftjet.spec +++ b/fftjet.spec @@ -24,11 +24,7 @@ chmod +x ./config.{sub,guess} touch pkg-config ; chmod +x pkg-config ./configure $PLATF_CONF_OPTS --disable-dependency-tracking --enable-threads \ --prefix=%i F77="$F77" CXX="$CXX" DEPS_CFLAGS=-I$FFTW3_ROOT/include \ -%ifarch ppc64le - CXXFLAGS="-O2 -mlong-double-64" \ -%else CXXFLAGS="-O2" \ -%endif DEPS_LIBS="-L$FFTW3_ROOT/lib -lfftw3" PKG_CONFIG=$PWD/pkg-config make %makeprocesses diff --git a/fmt.spec b/fmt.spec index 2b8ce79a7ee..947540a9ed8 100644 --- a/fmt.spec +++ b/fmt.spec @@ -14,9 +14,6 @@ rm -rf build && mkdir build && cd build cmake ../%{n}-%{realversion} \ -DCMAKE_INSTALL_PREFIX:STRING=%{i} \ -DCMAKE_INSTALL_LIBDIR:STRING=lib \ -%ifarch ppc64le - -DCMAKE_CXX_FLAGS="-mlong-double-64" \ -%endif -DBUILD_SHARED_LIBS=TRUE make %{makeprocesses} diff --git a/gcc-toolfile.spec b/gcc-toolfile.spec index c707f66aa26..f60f8d3566f 100644 --- a/gcc-toolfile.spec +++ b/gcc-toolfile.spec @@ -212,7 +212,7 @@ COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -Xassembler --compress-debug-sections" COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fsigned-char -fsigned-bitfields" %endif %ifarch ppc64le - COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fsigned-char -fsigned-bitfields %{ppc64le_build_flags}" + COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fsigned-char -fsigned-bitfields %{ppc64le_build_flags_default_longdouble}" %endif export COMPILER_CXXFLAGS diff --git a/geant4.spec b/geant4.spec index fccf10ab52c..393f044d348 100644 --- a/geant4.spec +++ b/geant4.spec @@ -32,9 +32,9 @@ export VecGeom_DIR=${VECGEOM_ROOT}/lib/cmake/VecGeom cmake ../%{n}.%{realversion} \ -DCMAKE_CXX_COMPILER="g++" \ %ifarch ppc64le - -DCMAKE_CXX_FLAGS="-fPIC -mlong-double-64" \ - -DCMAKE_STATIC_LIBRARY_CXX_FLAGS="-fPIC -mlong-double-64" \ - -DCMAKE_STATIC_LIBRARY_C_FLAGS="-fPIC -mlong-double-64" \ + -DCMAKE_CXX_FLAGS="-fPIC" \ + -DCMAKE_STATIC_LIBRARY_CXX_FLAGS="-fPIC" \ + -DCMAKE_STATIC_LIBRARY_C_FLAGS="-fPIC" \ %else -DCMAKE_CXX_FLAGS="-fPIC" \ -DCMAKE_STATIC_LIBRARY_CXX_FLAGS="-fPIC" \ diff --git a/llvm-gcc-toolfile.spec b/llvm-gcc-toolfile.spec index 0f7029932b3..703a1478161 100644 --- a/llvm-gcc-toolfile.spec +++ b/llvm-gcc-toolfile.spec @@ -53,7 +53,6 @@ cat << \EOF_TOOLFILE >%i/etc/scram.d/llvm-cxxcompiler.xml - diff --git a/mkfit.spec b/mkfit.spec index 5ac1bf5c42c..b994370b1fe 100644 --- a/mkfit.spec +++ b/mkfit.spec @@ -26,7 +26,7 @@ BUILD_ARGS=VEC_GCC="-msse3" BUILD_ARGS=VEC_GCC="-march=native" %endif %ifarch ppc64le -BUILD_ARGS=VEC_GCC="%{ppc64le_build_flags}" +BUILD_ARGS=VEC_GCC="%{ppc64le_build_flags_default_longdouble}" %endif make %{makeprocesses} TBB_PREFIX=$TBB_ROOT "${BUILD_ARGS}" diff --git a/vecgeom.spec b/vecgeom.spec index f28458a03bf..4a69f7846b9 100644 --- a/vecgeom.spec +++ b/vecgeom.spec @@ -34,7 +34,7 @@ cmake ../%{n}-%{realversion} \ -DCMAKE_VERBOSE_MAKEFILE=TRUE \ -DCMAKE_CXX_STANDARD=17 \ %ifarch ppc64le - -DCMAKE_CXX_FLAGS="%{ppc64le_build_flags}" \ + -DCMAKE_CXX_FLAGS="%{ppc64le_build_flags_default_longdouble}" \ %endif -DGEANT4=OFF From 86d4ca78fbcb324d16c6519f91529198756e8e01 Mon Sep 17 00:00:00 2001 From: Mircho Rodozov Date: Mon, 31 May 2021 16:38:47 +0200 Subject: [PATCH 2/6] remove one flag in common flags and bring the old name --- OpenBLAS.spec | 2 +- compilation_flags.file | 5 +---- fastjet.spec | 2 +- gcc-toolfile.spec | 2 +- mkfit.spec | 2 +- vecgeom.spec | 2 +- 6 files changed, 6 insertions(+), 9 deletions(-) diff --git a/OpenBLAS.spec b/OpenBLAS.spec index c0543963c3c..b20dbbded15 100644 --- a/OpenBLAS.spec +++ b/OpenBLAS.spec @@ -20,7 +20,7 @@ make FC=gfortran BINARY=64 TARGET=CORE2 NUM_THREADS=256 DYNAMIC_ARCH=0 %ifarch aarch64 make FC=gfortran BINARY=64 TARGET=ARMV8 NUM_THREADS=256 DYNAMIC_ARCH=0 %else -make FC=gfortran BINARY=64 NUM_THREADS=256 DYNAMIC_ARCH=0 CFLAGS="%{ppc64le_build_flags_default_longdouble}" +make FC=gfortran BINARY=64 NUM_THREADS=256 DYNAMIC_ARCH=0 CFLAGS="%{ppc64le_build_flags}" %endif # aarch64 %endif # x86_64 diff --git a/compilation_flags.file b/compilation_flags.file index 771512fbef8..0e9d77a4ee1 100644 --- a/compilation_flags.file +++ b/compilation_flags.file @@ -1,7 +1,4 @@ %if "%{?ppc64le_build_flags:set}" != "set" -%define ppc64le_build_flags -mlong-double-64 -mcpu=power8 -mtune=power8 --param=l1-cache-size=64 --param=l1-cache-line-size=128 --param=l2-cache-size=512 -%endif -%if "%{?ppc64le_build_flags_default_longdouble:set}" != "set" -%define ppc64le_build_flags_default_longdouble -mcpu=powerpc64le -mtune=power8 --param=l1-cache-size=64 --param=l1-cache-line-size=128 --param=l2-cache-size=512 +%define ppc64le_build_flags -mcpu=powerpc64le -mtune=power8 --param=l1-cache-size=64 --param=l1-cache-line-size=128 --param=l2-cache-size=512 %endif diff --git a/fastjet.spec b/fastjet.spec index 636fa1ff7d6..80601b433ff 100644 --- a/fastjet.spec +++ b/fastjet.spec @@ -25,7 +25,7 @@ CXXFLAGS="-O3 -Wall -ffast-math -ftree-vectorize" case %{cmsplatf} in *_amd64_*) CXXFLAGS="${CXXFLAGS} -msse3" ;; - *_ppc64le_*) CXXFLAGS="${CXXFLAGS} %{ppc64le_build_flags_default_longdouble}" ;; + *_ppc64le_*) CXXFLAGS="${CXXFLAGS} %{ppc64le_build_flags}" ;; esac ./configure \ diff --git a/gcc-toolfile.spec b/gcc-toolfile.spec index f60f8d3566f..c707f66aa26 100644 --- a/gcc-toolfile.spec +++ b/gcc-toolfile.spec @@ -212,7 +212,7 @@ COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -Xassembler --compress-debug-sections" COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fsigned-char -fsigned-bitfields" %endif %ifarch ppc64le - COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fsigned-char -fsigned-bitfields %{ppc64le_build_flags_default_longdouble}" + COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fsigned-char -fsigned-bitfields %{ppc64le_build_flags}" %endif export COMPILER_CXXFLAGS diff --git a/mkfit.spec b/mkfit.spec index b994370b1fe..5ac1bf5c42c 100644 --- a/mkfit.spec +++ b/mkfit.spec @@ -26,7 +26,7 @@ BUILD_ARGS=VEC_GCC="-msse3" BUILD_ARGS=VEC_GCC="-march=native" %endif %ifarch ppc64le -BUILD_ARGS=VEC_GCC="%{ppc64le_build_flags_default_longdouble}" +BUILD_ARGS=VEC_GCC="%{ppc64le_build_flags}" %endif make %{makeprocesses} TBB_PREFIX=$TBB_ROOT "${BUILD_ARGS}" diff --git a/vecgeom.spec b/vecgeom.spec index 4a69f7846b9..f28458a03bf 100644 --- a/vecgeom.spec +++ b/vecgeom.spec @@ -34,7 +34,7 @@ cmake ../%{n}-%{realversion} \ -DCMAKE_VERBOSE_MAKEFILE=TRUE \ -DCMAKE_CXX_STANDARD=17 \ %ifarch ppc64le - -DCMAKE_CXX_FLAGS="%{ppc64le_build_flags_default_longdouble}" \ + -DCMAKE_CXX_FLAGS="%{ppc64le_build_flags}" \ %endif -DGEANT4=OFF From 13643be21bb30bb67ea91aa7ee95bb310f976dbe Mon Sep 17 00:00:00 2001 From: Mircho Rodozov Date: Mon, 31 May 2021 17:33:17 +0200 Subject: [PATCH 3/6] bring the ppc64le_build_flags instead of ld64 --- fftjet.spec | 8 ++++++-- fmt.spec | 3 +++ geant4.spec | 6 +++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/fftjet.spec b/fftjet.spec index ae5df4ea8d7..95c64d98764 100644 --- a/fftjet.spec +++ b/fftjet.spec @@ -24,8 +24,12 @@ chmod +x ./config.{sub,guess} touch pkg-config ; chmod +x pkg-config ./configure $PLATF_CONF_OPTS --disable-dependency-tracking --enable-threads \ --prefix=%i F77="$F77" CXX="$CXX" DEPS_CFLAGS=-I$FFTW3_ROOT/include \ - CXXFLAGS="-O2" \ - DEPS_LIBS="-L$FFTW3_ROOT/lib -lfftw3" PKG_CONFIG=$PWD/pkg-config +%ifarch ppc64le + CXXFLAGS="-O2 %{ppc64le_build_flags}" \ +%else + CXXFLAGS="-O2" \ +%endif + DEPS_LIBS="-L$FFTW3_ROOT/lib -lfftw3" PKG_CONFIG=$PWD/pkg-config make %makeprocesses %install diff --git a/fmt.spec b/fmt.spec index 947540a9ed8..8d6c161c82b 100644 --- a/fmt.spec +++ b/fmt.spec @@ -14,6 +14,9 @@ rm -rf build && mkdir build && cd build cmake ../%{n}-%{realversion} \ -DCMAKE_INSTALL_PREFIX:STRING=%{i} \ -DCMAKE_INSTALL_LIBDIR:STRING=lib \ +%ifarch ppc64le + -DCMAKE_CXX_FLAGS="%{ppc64le_build_flags}" \ +%endif -DBUILD_SHARED_LIBS=TRUE make %{makeprocesses} diff --git a/geant4.spec b/geant4.spec index 393f044d348..c22ca5fbc10 100644 --- a/geant4.spec +++ b/geant4.spec @@ -32,9 +32,9 @@ export VecGeom_DIR=${VECGEOM_ROOT}/lib/cmake/VecGeom cmake ../%{n}.%{realversion} \ -DCMAKE_CXX_COMPILER="g++" \ %ifarch ppc64le - -DCMAKE_CXX_FLAGS="-fPIC" \ - -DCMAKE_STATIC_LIBRARY_CXX_FLAGS="-fPIC" \ - -DCMAKE_STATIC_LIBRARY_C_FLAGS="-fPIC" \ + -DCMAKE_CXX_FLAGS="-fPIC %{ppc64le_build_flags}" \ + -DCMAKE_STATIC_LIBRARY_CXX_FLAGS="-fPIC %{ppc64le_build_flags}" \ + -DCMAKE_STATIC_LIBRARY_C_FLAGS="-fPIC %{ppc64le_build_flags}" \ %else -DCMAKE_CXX_FLAGS="-fPIC" \ -DCMAKE_STATIC_LIBRARY_CXX_FLAGS="-fPIC" \ From 2757e7995b9fcffc3b93a7ebf7a8c83f64c1366a Mon Sep 17 00:00:00 2001 From: Mircho Rodozov Date: Mon, 31 May 2021 18:35:50 +0300 Subject: [PATCH 4/6] formatting --- fftjet.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fftjet.spec b/fftjet.spec index 95c64d98764..3e9f92b0329 100644 --- a/fftjet.spec +++ b/fftjet.spec @@ -27,9 +27,9 @@ touch pkg-config ; chmod +x pkg-config %ifarch ppc64le CXXFLAGS="-O2 %{ppc64le_build_flags}" \ %else - CXXFLAGS="-O2" \ + CXXFLAGS="-O2" \ %endif - DEPS_LIBS="-L$FFTW3_ROOT/lib -lfftw3" PKG_CONFIG=$PWD/pkg-config + DEPS_LIBS="-L$FFTW3_ROOT/lib -lfftw3" PKG_CONFIG=$PWD/pkg-config make %makeprocesses %install From ed293b863145cc21c088f6655d0870a193a6ee29 Mon Sep 17 00:00:00 2001 From: Mircho Rodozov Date: Mon, 31 May 2021 22:38:09 +0200 Subject: [PATCH 5/6] add the include for compilation flags --- fftjet.spec | 1 + fmt.spec | 2 +- geant4.spec | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fftjet.spec b/fftjet.spec index 3e9f92b0329..9c51500b526 100644 --- a/fftjet.spec +++ b/fftjet.spec @@ -1,4 +1,5 @@ ### RPM external fftjet 1.5.0 +## INCLUDE compilation_flags Source: http://www.hepforge.org/archive/fftjet/%n-%realversion.tar.gz Requires: fftw3 diff --git a/fmt.spec b/fmt.spec index 8d6c161c82b..c97098893df 100644 --- a/fmt.spec +++ b/fmt.spec @@ -1,5 +1,5 @@ ### RPM external fmt 7.0.1 - +## INCLUDE compilation_flags Source: https://github.com/fmtlib/fmt/archive/%{realversion}.tar.gz BuildRequires: gmake cmake diff --git a/geant4.spec b/geant4.spec index c22ca5fbc10..624587f2512 100644 --- a/geant4.spec +++ b/geant4.spec @@ -1,4 +1,5 @@ ### RPM external geant4 10.7.1 +## INCLUDE compilation_flags %define tag %{realversion} %define branch geant4-10.7-release %define github_user Geant4 From bbde15b8bc4958084fdac6f323a42f9f986ba3e8 Mon Sep 17 00:00:00 2001 From: Mircho Rodozov Date: Wed, 2 Jun 2021 12:51:57 +0200 Subject: [PATCH 6/6] revert the openblas change --- OpenBLAS-fix-dynamic-arch.patch | 17 +++++++++++++---- OpenBLAS.spec | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/OpenBLAS-fix-dynamic-arch.patch b/OpenBLAS-fix-dynamic-arch.patch index cf1baa9af24..8ba0d33d78f 100644 --- a/OpenBLAS-fix-dynamic-arch.patch +++ b/OpenBLAS-fix-dynamic-arch.patch @@ -1,13 +1,22 @@ diff --git a/Makefile.x86_64 b/Makefile.x86_64 -index f62ab9e..f23a65b 100644 +index f2de51e..e1c348a 100644 --- a/Makefile.x86_64 +++ b/Makefile.x86_64 @@ -9,7 +9,7 @@ endif endif + ifeq ($(CORE), SKYLAKEX) +-ifndef DYNAMIC_ARCH ++ifneq ($(DYNAMIC_ARCH), 1) + ifndef NO_AVX512 + CCOMMON_OPT += -march=skylake-avx512 + FCOMMON_OPT += -march=skylake-avx512 +@@ -28,7 +28,7 @@ endif + endif + ifeq ($(CORE), HASWELL) -ifndef DYNAMIC_ARCH +ifneq ($(DYNAMIC_ARCH), 1) - ADD_CPUFLAGS = 1 - else - ifdef TARGET_CORE + ifndef NO_AVX2 + ifeq ($(C_COMPILER), GCC) + CCOMMON_OPT += -mavx2 diff --git a/OpenBLAS.spec b/OpenBLAS.spec index b20dbbded15..6f1addf0ef2 100644 --- a/OpenBLAS.spec +++ b/OpenBLAS.spec @@ -1,4 +1,4 @@ -### RPM external OpenBLAS 0.3.15 +### RPM external OpenBLAS 0.3.9 ## INCLUDE compilation_flags Source: https://github.com/xianyi/OpenBLAS/archive/v%{realversion}.tar.gz Patch0: OpenBLAS-fix-dynamic-arch