diff options
author | Gael Guennebaud <g.gael@free.fr> | 2012-06-26 17:45:01 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2012-06-26 17:45:01 +0200 |
commit | 57b5804974913b6b09cdb20ef638afe9c75a33f2 (patch) | |
tree | ed567d2ab9a889542e46f62bbd2b2c6720e71a21 /blas | |
parent | 8994f9962a7a0b5e439beb866f309f83d31f0b00 (diff) |
remove dynamic allocation for fixed size object and triangular matrix-matrix products
Diffstat (limited to 'blas')
-rw-r--r-- | blas/level3_impl.h | 12 |
1 files changed, 9 insertions, 3 deletions
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<Scalar,Scalar>&); 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<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic,4> 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<ColMajor,Scalar,Scalar,Dynamic,Dynamic,Dynamic,4> blocking(*m,*n,*n); + func[code](*m, *n, *n, tmp.data(), tmp.outerStride(), a, *lda, b, *ldb, alpha, blocking); + } return 1; } |