Charles R Harris email@example.com 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 independent
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. 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.