scipy: Unknown option '-fvisibility=hidden' for fotran compiler while building scipy from source with meson
Describe your issue.
I am trying to build scipy
1.11.4 from source with meson
because I’d like to take advantage of Intel MKL linear algebra libraries that are installed on our system. I followed instructions here for how to link with MKL libraries while building with meson
. The build failed after some steps, and scrolling through the output the only errors I could see had to do with an unknown option -fvisibility
passed to the fortran compiler. I’m using Intel’s C/C++ and fortran compilers, icx
and ifx
.
Reproducing Code Example
pip3 install . --config-settings=setup-args=-Dblas=mkl-dynamic-lp64-seq --config-settings=setup-args=-Dlapack=mkl-dynamic-lp64-seq
Error message
[430/1622] Compiling Fortran object scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_det.f.o
FAILED: scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_det.f.o
/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/2022.2.1/linux/bin/ifx -Iscipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p -Iscipy/linalg -I../scipy/linalg -I../../../../../../../../tmp/pip-build-env-4s8_r9mu/overlay/lib/python3.11/site-packages/numpy/core/include -I../../../../../../../../tmp/pip-build-env-4s8_r9mu/overlay/lib/python3.11/site-packages/numpy/f2py/src -Iscipy/lib_fortranobject.a.p -I/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/latest/lib/pkgconfig/../../include -I/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/latest/lib/pkgconfig/../../linux/compiler/include -I/work2/noaa/co2/sbasu/packages/python/3.11.6/include/python3.11 -fvisibility=hidden -DNDEBUG -D_FILE_OFFSET_BITS=64 -warn general -warn truncated_source -stand=none -O3 -fPIC -module scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p -gen-dep=scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_det.f.o -gen-depformat=make -o scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_det.f.o -c ../scipy/linalg/src/det.f
xfortcom: Unknown command line argument '-fvisibility'. Try: '/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/2022.2.1/linux/bin-llvm/xfortcom --help'
xfortcom: Did you mean '--ddg-simplify'?
xfortcom: Unknown command line argument 'hidden'. Try: '/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/2022.2.1/linux/bin-llvm/xfortcom --help'
compilation aborted for ../scipy/linalg/src/det.f (code 1)
[431/1622] Compiling Fortran object scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_lu.f.o
FAILED: scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_lu.f.o
/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/2022.2.1/linux/bin/ifx -Iscipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p -Iscipy/linalg -I../scipy/linalg -I../../../../../../../../tmp/pip-build-env-4s8_r9mu/overlay/lib/python3.11/site-packages/numpy/core/include -I../../../../../../../../tmp/pip-build-env-4s8_r9mu/overlay/lib/python3.11/site-packages/numpy/f2py/src -Iscipy/lib_fortranobject.a.p -I/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/latest/lib/pkgconfig/../../include -I/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/latest/lib/pkgconfig/../../linux/compiler/include -I/work2/noaa/co2/sbasu/packages/python/3.11.6/include/python3.11 -fvisibility=hidden -DNDEBUG -D_FILE_OFFSET_BITS=64 -warn general -warn truncated_source -stand=none -O3 -fPIC -module scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p -gen-dep=scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_lu.f.o -gen-depformat=make -o scipy/linalg/_flinalg.cpython-311-x86_64-linux-gnu.so.p/src_lu.f.o -c ../scipy/linalg/src/lu.f
xfortcom: Unknown command line argument '-fvisibility'. Try: '/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/2022.2.1/linux/bin-llvm/xfortcom --help'
xfortcom: Did you mean '--ddg-simplify'?
xfortcom: Unknown command line argument 'hidden'. Try: '/apps/spack-managed/gcc-11.3.1/intel-oneapi-compilers-2022.2.1-z2sjni66fcyqcsamnoccgb7c77mn37qj/compiler/2022.2.1/linux/bin-llvm/xfortcom --help'
compilation aborted for ../scipy/linalg/src/lu.f (code 1)
SciPy/NumPy/Python version and system information
>>> import sys, numpy; print(numpy.__version__, sys.version_info); numpy.show_config()
1.26.2 sys.version_info(major=3, minor=11, micro=6, releaselevel='final', serial=0)
blas_armpl_info:
NOT AVAILABLE
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/include', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/include', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib']
lapack_armpl_info:
NOT AVAILABLE
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/include', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib/intel64']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/include', '/apps/spack-managed/oneapi-2022.2.1/intel-oneapi-mkl-2022.2.1-klrcilzymbsllrr6wmepfg2cfzem5ekd/mkl/2022.2.1/lib']
Supported SIMD extensions in this NumPy install:
baseline = SSE,SSE2,SSE3
found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2,AVX512F,AVX512CD,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL
not found = AVX512_KNL
About this issue
- Original URL
- State: open
- Created 7 months ago
- Comments: 32 (14 by maintainers)
@oleksandr-pavlyk thanks for circling back to this.
logm
does indeed havewhile
loops that aren’t protected by amaxiter
condition: https://github.com/scipy/scipy/blob/baefc12bf7e84be3ac78b190fb7d741dea7ea008/scipy/linalg/_matfuncs_inv_ssq.py#L371-L417So that could well be the cause of a hang, especially if strict floating point mode isn’t enabled.
The culprit was in setting
CXX=icx
.icx
is compiler for C language (likeclang
). Please useCXX=icpx
(likeclang++
) instead.Here are steps I performed, in more details:
icx_for_scipy.cfg
andifx_for_scipy.cfg
configuration files with the following content:Intel LLVM compiler use
fast-math
floating point mode by default, while SciPy requires strict IEEE-754 compliance, hence we must be setting these options for every invocation of the compiler. Using configuration files is the quickest way to accomplish that.Note use of
CXX=icpx
.After build completes,
python dev.py test
discovers all test files correctly, and runs them without errors about unresolved symbol. Moreover, individual import ofscipy.sparse
works as well: