diff options
author | 2010-06-22 16:08:35 +0200 | |
---|---|---|
committer | 2010-06-22 16:08:35 +0200 | |
commit | b4fe53f5610f20e9c4f15c676b3b26d252fd2fba (patch) | |
tree | 9a29de25cae2ee7c0fd177287d95ffc252b44a68 /Eigen/src/Core/products/SelfadjointProduct.h | |
parent | fd9a9fa0aedea13866481309e8a5408d1d7c652b (diff) |
* makes all product use the new API to set the blocking sizes
* fix an issue preventing multithreading (now Dynamic = -1 ...)
Diffstat (limited to 'Eigen/src/Core/products/SelfadjointProduct.h')
-rw-r--r-- | Eigen/src/Core/products/SelfadjointProduct.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Eigen/src/Core/products/SelfadjointProduct.h b/Eigen/src/Core/products/SelfadjointProduct.h index befc4ff69..8ce797cff 100644 --- a/Eigen/src/Core/products/SelfadjointProduct.h +++ b/Eigen/src/Core/products/SelfadjointProduct.h @@ -70,14 +70,16 @@ struct ei_selfadjoint_product<Scalar, Index, MatStorageOrder, ColMajor, AAT, UpL typedef ei_product_blocking_traits<Scalar> Blocking; - Index kc = std::min<Index>(Blocking::Max_kc,depth); // cache block size along the K direction - Index mc = std::min<Index>(Blocking::Max_mc,size); // cache block size along the M direction + Index kc = depth; // cache block size along the K direction + Index mc = size; // cache block size along the M direction + Index nc = size; // cache block size along the N direction + computeProductBlockingSizes<Scalar,Scalar>(kc, mc, nc); Scalar* blockA = ei_aligned_stack_new(Scalar, kc*mc); std::size_t sizeB = kc*Blocking::PacketSize*Blocking::nr + kc*size; Scalar* allocatedBlockB = ei_aligned_stack_new(Scalar, sizeB); Scalar* blockB = allocatedBlockB + kc*Blocking::PacketSize*Blocking::nr; - + // note that the actual rhs is the transpose/adjoint of mat typedef ei_conj_helper<NumTraits<Scalar>::IsComplex && !AAT, NumTraits<Scalar>::IsComplex && AAT> Conj; |