Or just use SciPy's get_blas_funcs <https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.blas.get_blas_funcs.html#scipy.linalg.blas.get_blas_funcs> to access *gemm, which directly exposes this function:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.blas.dgemm.html Kevin On Wed, Mar 31, 2021 at 12:35 PM Ralf Gommers <ralf.gomm...@gmail.com> wrote: > > > On Wed, Mar 31, 2021 at 2:35 AM Guillaume Bethouart < > guillaume.bethou...@eshard.com> wrote: > >> Is it possible to add a method to perform a dot product and add the >> result to an existing matrix in a single operation ? >> >> Like C = dot_add(A, B, C) equivalent to C += A @ B.This behavior is >> natively proposed by the Blas *gemm primitive. >> >> The goal is to reduce the peak memory consumption. Indeed, during the >> computation of C += A @ B, the maximum allocated memory is twice the size >> of C.Using *gemm to add directly the result , the maximum memory >> consumption is less than 1.5x the size of C. >> This difference is significant for large matrices. >> >> Any people interested in it ? >> > > Hi Guillaume, such fused operations cannot easily be done with NumPy > alone, and it does not make sense to add separate APIs for that purpose > because there are so many combinations of function calls that one might > want to fuse. > > Instead, Numba, Pythran or numexpr can add this to some extent for numpy > code. E.g. search for "loop fusion" in the Numba docs. > > Cheers, > Ralf > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion