OpenBLAS: parallel build with gnu make 4.4 fails
I seem to get a build issue when using GNU make 4.4 with
'make' 'MAKE_NB_JOBS=0' 'ARCH=x86_64' 'TARGET=ZEN' 'USE_LOCKING=1' 'USE_OPENMP=1' 'USE_THREAD=1' 'libs' 'netlib' 'shared'
with -j16 at the top-level make (openblas is built with a recursive make; not sure if relevant) which fails after some time with
29 Warning: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1) [-Wconversion]
30 sgebak.f:253:19:
31
32 253 | K = SCALE( I )
33 | 1
34 Warning: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1) [-Wconversion]
>> 35 make[2]: *** No rule to make target '../libopenblas_zenp-r0.3.21.a', needed by '../libopenblas_zenp-r0.3.21.so'. Stop.
36 make[2]: Leaving directory '/tmp/user/spack-stage/spack-stage-openblas-0.3.21-rqvfhzdue2wzonslpabua3qssw7t6mu2/spack-src/exports'
>> 37 make[1]: *** [Makefile:125: shared] Error 2
38 make[1]: *** Waiting for unfinished jobs....
39 /home/user/spack/lib/spack/env/gcc/gfortran -O2 -Wall -frecursive -fno-optimize-sibling-calls -m64 -fopenmp -fPIC -msse3 -msse4.1 -mavx -mavx2 -mavx2 -c -o sgebd2.o sgebd2.f
...
Is there anything that jumps out of the changelog that could explain this? https://lists.gnu.org/archive/html/info-gnu/2022-10/msg00008.html.
Maybe this?
Previously each target in a explicit grouped target rule was considered individually: if the targets needed by the build were not out of date the recipe was not run even if other targets in the group were out of date. Now if any of the grouped targets are needed by the build, then if any of the grouped targets are out of date the recipe is run and all targets in the group are considered updated.
With GNU make 4.3 everything looks fine.
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 18 (11 by maintainers)
Commits related to this issue
- openblas: fix prereqs / make race Fix a race in the makefile where the shared lib was built before the object files were available. See https://github.com/xianyi/OpenBLAS/issues/3899 — committed to haampie/spack by haampie a year ago
- openblas: fix prereqs / make race Fix a race in the makefile where the shared lib was built before the object files were available. See https://github.com/xianyi/OpenBLAS/issues/3899 — committed to haampie/spack by haampie a year ago
- openblas: fix prereqs / make race Fix a race in the makefile where the shared lib was built before the object files were available. See https://github.com/xianyi/OpenBLAS/issues/3899 — committed to haampie/spack by haampie a year ago
- openblas: fix prereqs / make race (#35395) Fix a race in the makefile where the shared lib was built before the object files were available. See https://github.com/xianyi/OpenBLAS/issues/3899 — committed to spack/spack by haampie a year ago
- openblas: fix prereqs / make race (#35395) Fix a race in the makefile where the shared lib was built before the object files were available. See https://github.com/xianyi/OpenBLAS/issues/3899 — committed to koysean/spack by haampie a year ago
- openblas: fix prereqs / make race (#35395) Fix a race in the makefile where the shared lib was built before the object files were available. See https://github.com/xianyi/OpenBLAS/issues/3899 — committed to key4hep/spack by haampie a year ago
- fix race condition when building OpenBLAS see https://github.com/spack/spack/pull/35395 and https://github.com/xianyi/OpenBLAS/issues/3899 — committed to trz42/software-layer by truib a year ago
Oh well. Does it work with an added dependeny
shared : libs netlibin Makefile line 129 ? (Wonder what having that for something that “could not happen” will break next)I’ll try on a bigger system sometime next week. What’s bad about having the tests as part of the build ? Granted they should not fail on fairly common systems but building&running them is not expected to require much time for the potential benefit of catching a bug.