From 57b5804974913b6b09cdb20ef638afe9c75a33f2 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 26 Jun 2012 17:45:01 +0200 Subject: remove dynamic allocation for fixed size object and triangular matrix-matrix products --- blas/level3_impl.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'blas') diff --git a/blas/level3_impl.h b/blas/level3_impl.h index 4f4f39080..0a6dbc383 100644 --- a/blas/level3_impl.h +++ b/blas/level3_impl.h @@ -167,7 +167,7 @@ int EIGEN_BLAS_FUNC(trsm)(char *side, char *uplo, char *opa, char *diag, int *m, int EIGEN_BLAS_FUNC(trmm)(char *side, char *uplo, char *opa, char *diag, int *m, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb) { // std::cerr << "in trmm " << *side << " " << *uplo << " " << *opa << " " << *diag << " " << *m << " " << *n << " " << *lda << " " << *ldb << " " << *palpha << "\n"; - typedef void (*functype)(DenseIndex, DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, Scalar); + typedef void (*functype)(DenseIndex, DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, Scalar, internal::level3_blocking&); static functype func[32]; static bool init = false; if(!init) @@ -236,9 +236,15 @@ int EIGEN_BLAS_FUNC(trmm)(char *side, char *uplo, char *opa, char *diag, int *m, matrix(b,*m,*n,*ldb).setZero(); if(SIDE(*side)==LEFT) - func[code](*m, *n, *m, a, *lda, tmp.data(), tmp.outerStride(), b, *ldb, alpha); + { + internal::gemm_blocking_space blocking(*m,*n,*m); + func[code](*m, *n, *m, a, *lda, tmp.data(), tmp.outerStride(), b, *ldb, alpha, blocking); + } else - func[code](*m, *n, *n, tmp.data(), tmp.outerStride(), a, *lda, b, *ldb, alpha); + { + internal::gemm_blocking_space blocking(*m,*n,*n); + func[code](*m, *n, *n, tmp.data(), tmp.outerStride(), a, *lda, b, *ldb, alpha, blocking); + } return 1; } -- cgit v1.2.3