On Tue, Aug 12, 2014 at 9:24 PM, Sturla Molden email@example.com wrote:
Charles R Harris firstname.lastname@example.org wrote:
- Move _dotblas down into multiarray
- When there is cblas, add cblas implementations of decr->f->dot. 2. Reimplement API matrixproduct2 3. Make ndarray.dot a first class method and use it for numpy.dot.
- Implement matmul
- Add matrixmultiply (matmul?) to the numpy API 2. Implement __matmul__ method. 3. Add functions to linalg for stacked vectors. 4. Make sure __matmul__ works with __numpy_ufunc__
- Consider using blas_lite instead of cblas, but that is now
of the previous steps.
We could consider to have a linalg._linalg module that just stores BLAS and LAPACK function pointer values as read-only integer attributes. This way we could move _dotblas into the core without actually having linalg in the core. linalg._linalg would just sit there and own BLAS and LAPACK, and no other part of NumPy would need build dependencies on these libraries.
Note that those dependencies are optional now.
When _dotblas is imported it just imports linalg._linalg and reads whatever function pointer value it needs. It would also make it possible to remove BLAS and LAPACK build dependencies from SciPy, as long as we export most or all of BLAS and LAPACK.
That's not possible. The only way you can do that is move the hard dependency on BLAS & LAPACK to numpy, which we don't want to do.