ATLAS/tune/blas/ger/CASES.
Most of the discussion of the GEMV primitives applies to the GER primitives
as well, so I assume you have read and are familiar with the concepts
discussed above. As before, the routines to be timed are given
in a kernel description file, <pre>cases.dsc. GER does not have a
transpose case, so this file first lists the number of GER primitives to search,
followed by that many primitive lines describing them.
GER primitive lines are of the form:
<ID> <flag> <Xunroll> <Yunroll> <filename> "<author(s)>"
<ID>: Integer greater than 0 uniquely identifying this entry
<flag>: is an integer flag which is ignored at the moment
<Xunroll>: is the unrolling of the loop over the X vector
(i.e. the M-loop)
<Yunroll>: is the unrolling of the loop over the Y vector
(i.e. the N-loop)
<filename>: is the name of the C source file for the primitive.
<author(s)>: author(s) name(s)
The API for the ger primitive is:
#if defined(SCPLX) || defined(DCPLX)
#ifdef Conj_
ATL_<pre>ger1c_a1_x1_yX
#else
ATL_<pre>ger1u_a1_x1_yX
#endif
#else
ATL_<pre>ger1_a1_x1_yX
#endif
(
const int M, /* length of X vector */
const int N, /* length of Y vector */
const SCALAR alpha,/* ignored, assumed to be one */
const TYPE *X, /* pointer to X vector */
const int incX, /* ignored, assumed to be one */
const TYPE *Y, /* pointer to Y vector */
const int incY /* increment of Y vector; NOTE: NOT IGNORED */
TYPE *A, /* pointer to column-major matrix */
const int lda, /* leading dimension of A, or row-stride */
);
Assumptions:
incX = 1