OpenBLAS as default BLAS implementation
Use OpenBLAS as the default BLAS library implementation.
- Name: Dominik Mierzejewski and the
- Release notes owner:
Most application use ATLAS because it's faster than reference BLAS. However, it doesn't support runtime CPU detection, so it must be built for a particular CPU. OpenBLAS is a competing BLAS implementation based on GotoBLAS2 that is and supports runtime CPU detection and all current Fedora primary arches.
Benefit to Fedora
Using a single default BLAS implementation will avoid bugs stemming from having two different BLAS libraries loaded at runtime that causes computation errors.
OpenBLAS detects CPU capabilities at runtime and selects the fastest computation kernel for the running hardware.
A lot of benchmarks around the net suggest openblas is faster than ATLAS in most workloads: https://github.com/tmolteno/necpp/issues/18 http://blog.nguyenvq.com/blog/2014/11/10/optimized-r-and-python-standard-blas-vs-atlas-vs-openblas-vs-mkl/ https://freddie.witherden.org/pages/blas-gemm-bench/ http://nghiaho.com/?p=1726
- Proposal owners:
Modify the affected packages to BuildRequire: openblas-devel instead of atlas-devel or blas-devel and rebuild. Fix any failures.
- Other developers:
- Release engineering:
No help should be necessary. No mass rebuild necessary.
- List of deliverables: all
- Policies and guidelines: N/A
- Trademark approval: N/A
How To Test
- Contingency mechanism: (What to do? Who will do it?) Change owners will revert the changes to BuildRequires: in modified packages and rebuild them.
- Contingency deadline: beta freeze
- Blocks release? No
- Blocks product? No
atlas (34): ceres-solver CheMPS2 cxsc DSDP freefem++ ga gromacs iml jblas libcint libghemical linbox Macaulay2 mpqc ncl python-nipy ocaml-gsl octave octave-odepkg opengrm-ngram psfex psi4 python-cvxopt python-scikit-learn qcint qm-vamp-plugins sagemath scamp sextractor shogun suitesparse SuperLU SuperLU43 wannier90
blas (2): octave-control octave-optim
openblas: armadillo arpack cp2k csdp dlib elemental elk elpa ergo exciting gpaw hpl hypre MUMPS nwchem numpy openmx petsc quantum-espresso scalapack scipy sphinxbase superlu_dist SuperLUMT