Fix for matvec-prod - Re: [patch] Dispatch fixes
Jules Bergmann
jules at codesourcery.com
Wed Jun 21 19:14:35 UTC 2006
Jules Bergmann wrote:
> This patch fixes a couple of dispatch issues:
>
> - First, it updates the SAL and IPP dispatch to explicitly request
> 1-dimensional Ext_data access. This is necessary when dealing with
> multi-dimensional data that has been forwarded by the
> eval_dense_expr.
> - Second, it updates the SAL dispatch evaluators to use SFINAE to only
> enable themselves if their expected leaf blocks match those of the
> expression. This prevents the (VV)V and V(VV) evaluators from being
> ambiguous for expressions like (VV)(VV) (Neither one is enabled.)
> - Finally fixes a bug when a Redim_block is applied to a 3-dimensional
> block that resulted in the wrong stride being reported.
>
> With this patch in place, all tests pass (with the exception of
> ref-impl/solver-qr which requires a full QR) for the configuration
> Stefan posted Wednesday, including matvec.cpp.
Stefan,
With this patch, the matvec.cpp and/or matvec-prod.cpp failures should
have been fixed. IIRC believe the problem was with gems (generlized
matrix sum), which does:
C = alpha * A + beta * C;
This was getting redispatched from a matrix expression to a vector
expression. However, SAL dispatch hadn't been updated to handle this
properly (Ext_data by default uses Block::dim to determine
dimensionality, which breaks when a 2-D dense block is used in a 1-D
context. The fix is to tell Ext_data which dimensionality to use).
Let me know if IPP is still broken with this patch.
-- Jules
--
Jules Bergmann
CodeSourcery
jules at codesourcery.com
(650) 331-3385 x705
More information about the vsipl++
mailing list