[Bug 257400] science/py-scipy Add OPTION for Atlas blas
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 257400] science/py-scipy add option for Atlas blas"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 11 Mar 2022 22:34:56 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257400 alt2600@icloud.com changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #229421|0 |1 is obsolete| | --- Comment #11 from alt2600@icloud.com --- Created attachment 232395 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=232395&action=edit git-diff-py-scipy-atlas-rev3.diff with the 1.8.0 py-scipy release it has become trivially easy to support multiple BLAS libraries, no more janky hacks adapted from py-numpy are necessary. As I have heard no feedback in months on if this patch will be accepted or not this will be the last time I update it for new versions of py-scipy. At this point I'll just make it work for myself as need arises, and if anyone else wants it this diff will show the basics, but essentially it just takes a single radio that either uses blaslapack:atlas, for atlas, or uses the lib depends on blas and openblas for openblas. In principal this should work with netlib, but it you have atlas it will be chosen over netlib so I didnt implement, but uses blaslapack should make it work fine if you do not have openblas nor atlas installed. I kept OPENBLAS the default, despite it being conflicting and not the default blas library for ports, as that is what it is now. for those looking in the future you can enable options like this delete the LIB_DEPENDS line referencing blas and openblas and add this or just add blaslapack:atlas to the USES line after deleting the LIB_DEPENDS line and its ATLAS only for you. OPTIONS_DEFAULT= OPENBLAS OPTIONS_SINGLE= BLASLIB OPTIONS_SINGLE_BLASLIB= ATLAS OPENBLAS ATLAS_USES= blaslapack:atlas OPENBLAS_LIB_DEPENDS= libblas.so:math/blas \ libopenblas.so:math/openblas tweak your default if you want or make sure to use OPTION_SET and OPTION_UNSET using ports.conf if using portconf == OPENBLAS OPTION configure snippet lapack_opt_info: lapack_mkl_info: customize UnixCCompiler C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC creating /tmp/tmpnwlzq1iw/tmp creating /tmp/tmpnwlzq1iw/tmp/tmpnwlzq1iw compile options: '-MMD -MF /tmp/tmpnwlzq1iw/file.c.d -c' cc: /tmp/tmpnwlzq1iw/file.c libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE openblas_lapack_info: C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC creating /tmp/tmpavviamb0/tmp creating /tmp/tmpavviamb0/tmp/tmpavviamb0 compile options: '-c' cc: /tmp/tmpavviamb0/source.c cc /tmp/tmpavviamb0/tmp/tmpavviamb0/source.o -L/usr/local/lib -L/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../ -lopenblas -lgfortran -o /tmp/tmpavviamb0/a.out FOUND: libraries = ['openblas', 'gfortran', 'openblas', 'gfortran'] library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] language = c define_macros = [('HAVE_CBLAS', None)] FOUND: libraries = ['openblas', 'gfortran', 'openblas', 'gfortran'] library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] language = c define_macros = [('HAVE_CBLAS', None)] blas_opt_info: blas_mkl_info: libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE blis_info: libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE openblas_info: C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC creating /tmp/tmpofuclsmh/tmp creating /tmp/tmpofuclsmh/tmp/tmpofuclsmh compile options: '-c' cc: /tmp/tmpofuclsmh/source.c cc /tmp/tmpofuclsmh/tmp/tmpofuclsmh/source.o -L/usr/local/lib -L/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../ -lopenblas -lgfortran -o /tmp/tmpofuclsmh/a.out FOUND: libraries = ['openblas', 'gfortran', 'openblas', 'gfortran'] library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] language = c define_macros = [('HAVE_CBLAS', None)] FOUND: libraries = ['openblas', 'gfortran', 'openblas', 'gfortran'] library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] language = c define_macros = [('HAVE_CBLAS', None)] non-existing path in 'scipy/signal/windows': 'tests' non-existing path in 'scipy/sparse': 'sparsetools/sparsetools_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/bsr_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/csc_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/csr_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/other_impl.h' [makenpz] scipy/special/tests/data/boost.npz not rebuilt [makenpz] scipy/special/tests/data/gsl.npz not rebuilt [makenpz] scipy/special/tests/data/local.npz not rebuilt running config ===OPENBLAS OPTION check-orphans ====> Checking for pkg-plist issues (check-plist) ===> Parsing plist ===> Checking for items in STAGEDIR missing from pkg-plist ===> Checking for items in pkg-plist which are not in STAGEDIR ===> No pkg-plist issues found (check-plist) ===OPENBLAS OPTION pkg info -d py38-scipy-1.8.0 Depends on : py38-numpy-1.20.3,1 openblas-0.3.18,1 blas-3.10.0 python38-3.8.12_2 gcc10-10.3.0 py38-setuptools-57.0.0 ===ATLAS OPTION configure snippet lapack_opt_info: lapack_mkl_info: customize UnixCCompiler C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC creating /tmp/tmppkk1xmzc/tmp creating /tmp/tmppkk1xmzc/tmp/tmppkk1xmzc compile options: '-MMD -MF /tmp/tmppkk1xmzc/file.c.d -c' cc: /tmp/tmppkk1xmzc/file.c libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE openblas_lapack_info: libraries openblas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE openblas_clapack_info: libraries openblas,lapack not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE flame_info: libraries flame not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE atlas_3_10_threads_info: Setting PTATLAS=ATLAS libraries lapack_atlas not found in /usr/lib libraries ptf77blas,ptcblas not found in /usr/lib libraries lapack_atlas not found in /usr/local/lib <class 'numpy.distutils.system_info.atlas_3_10_threads_info'> Setting PTATLAS=ATLAS get_default_fcompiler: matching types: '['gnu', 'gnu95']' customize GnuFCompiler Found executable /usr/local/bin/gfortran10 gnu: no Fortran 90 compiler found Could not locate executable cc -shared Found executable /usr/local/bin/ld Found executable /usr/local/bin/ar Found executable /usr/local/bin/ranlib gnu: no Fortran 90 compiler found customize Gnu95FCompiler customize Gnu95FCompiler customize Gnu95FCompiler using config compiling '_configtest.c': /* This file is generated from numpy/distutils/system_info.py */ void ATL_buildinfo(void); int main(void) { ATL_buildinfo(); return 0; } C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC compile options: '-c' cc: _configtest.c cc _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -o _configtest ld: error: undefined symbol: ATL_buildinfo >>> referenced by _configtest.c >>> _configtest.o:(main) cc: error: linker command failed with exit code 1 (use -v to see invocation) failure. removing: _configtest.c _configtest.o _configtest.o.d Status: 255 Output: compiling '_configtest.c': /* This file is generated from numpy/distutils/system_info.py */ void ATL_buildinfo(void); int main(void) { ATL_buildinfo(); return 0; } C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC compile options: '-c' cc: _configtest.c cc _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -o _configtest Setting PTATLAS=ATLAS Setting PTATLAS=ATLAS Setting PTATLAS=ATLAS libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] Library tatlas was not found. Ignoring FOUND: include_dirs = ['/usr/local/include'] language = f77 libraries = ['alapack', 'ptf77blas', 'ptcblas'] library_dirs = ['/usr/local/lib'] FOUND: include_dirs = ['/usr/local/include'] language = f77 libraries = ['alapack', 'ptf77blas', 'ptcblas'] library_dirs = ['/usr/local/lib'] blas_opt_info: blas_mkl_info: libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE blis_info: libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE openblas_info: libraries openblas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE atlas_3_10_blas_threads_info: Setting PTATLAS=ATLAS libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE atlas_3_10_blas_info: libraries satlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../'] NOT AVAILABLE atlas_blas_threads_info: Setting PTATLAS=ATLAS Setting PTATLAS=ATLAS Setting PTATLAS=ATLAS Setting PTATLAS=ATLAS Setting PTATLAS=ATLAS FOUND: include_dirs = ['/usr/local/include'] language = c define_macros = [('HAVE_CBLAS', None)] libraries = ['ptf77blas', 'ptcblas', 'ptf77blas', 'ptcblas'] library_dirs = ['/usr/local/lib'] FOUND: include_dirs = ['/usr/local/include'] language = c define_macros = [('HAVE_CBLAS', None)] libraries = ['ptf77blas', 'ptcblas', 'ptf77blas', 'ptcblas'] library_dirs = ['/usr/local/lib'] non-existing path in 'scipy/signal/windows': 'tests' non-existing path in 'scipy/sparse': 'sparsetools/sparsetools_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/bsr_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/csc_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/csr_impl.h' non-existing path in 'scipy/sparse': 'sparsetools/other_impl.h' [makenpz] scipy/special/tests/data/boost.npz not rebuilt [makenpz] scipy/special/tests/data/gsl.npz not rebuilt [makenpz] scipy/special/tests/data/local.npz not rebuilt running config ===ATLAS OPTION check-orphans ====> Checking for pkg-plist issues (check-plist) ===> Parsing plist ===> Checking for items in STAGEDIR missing from pkg-plist ===> Checking for items in pkg-plist which are not in STAGEDIR ===> No pkg-plist issues found (check-plist) ===ATLAS OPTION pkg info -d py38-scipy-1.8.0: py38-numpy-1.20.3,1 atlas-math-3.8.4_18,1 python38-3.8.12_2 gcc10-10.3.0 py38-setuptools-57.0.0 -- You are receiving this mail because: You are the assignee for the bug. You are on the CC list for the bug.