[vsipl++] [patch] General dispatch, use BLAS for dot- and matrix-matrix products

Jules Bergmann jules at codesourcery.com
Tue Oct 11 20:31:55 UTC 2005



Mark Mitchell wrote:
> Jules Bergmann wrote:
> 
> 
>>For dot-product, three implementations are provided: a generic
>>implementation for all types and blocks, a BLAS implementation for BLAS
>>types and direct data access blocks, and a BLAS implementation that
>>specializes handling of a conjugated vector (for cvjdot).  By using the
>>block type to determine if conjugation is necessary, the expressions
>>'cvjdot(x, y)' and 'dot(x, conj(y))' are evaluated identically.
> 
> 
> That's really, really cool.  The performance numbers look great, too.
> Does VSIPL have cvjdot?  If not, we can probably show better performance
> than any VSIPL implementation on this code.

Unfortunately :), VSIPL does have cvjdot.  It is common enough to 
justify the special case.

However, there is definitely an productivity/performance advantage to 
recognizing optimizable sequences without requiring the programmer to a 
special library function.  The programmer doesn't have to remember "oh 
yeah, I should use cvjdot here".  It also allows a wider scope to 
optimize over (for example, VSIPL has prodt, but no tprod).

Some other potential examples of this:

	General           <=> Special-case library call

	prod(A, trans(B)) <=> prodt(A, B)

	prod(trans(A), B) <=> none

	x * y + z         <=> ma(x, y, z)

Our current dispatch should handle prod(A, trans(B) and prodt(A, B) 
identically.

				-- Jules



More information about the vsipl++ mailing list