On Tue, Aug 12, 2014 at 8:26 AM, Nathaniel Smith <njs@pobox.com> wrote:
Hi Matt,

On Mon, Aug 11, 2014 at 10:46 PM, Matti Picus <matti.picus@gmail.com> wrote:
> Hi Nathaniel.
> Thanks for your prompt reply. I think numpy is a wonderful project, and you
> all do a great job moving it forward.
> If you ask what would my vision for maturing numpy, I would like to see a
> grouping of linalg matrix-operation functionality into a python level
> package, exactly the opposite of more tightly tying linalg into the core of
> numpy.

As I understood it (though I admit Chuck was pretty terse, maybe he'll
correct me :-)), what he was proposing was basically just a build
system reorganization -- it's much easier to call between C functions
that are in the same Python module than C functions that are in
different modules, so we end up with lots of boilerplate gunk for the
latter. I don't think it would involve any tighter coupling than we
already have in practice.

I'm trying to think of the correct sequence of moves. Here are my current thoughts.
  • Move _dotblas down into multiarray
    1. 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
    1. 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.