10#ifndef QDP_SCALARSITE_GENERIC_BLAS_H
11#define QDP_SCALARSITE_GENERIC_BLAS_H
69 REAL ar = a.
elem().elem().elem().elem();
77 int total_n_3vec = (s.
end()-s.
start()+1);
133 REAL ar = -( a.
elem().elem().elem().elem());
140 int total_n_3vec = (s.
end()-s.
start()+1);
203 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
209 REAL ar = a.
elem().elem().elem().elem();
216 int total_n_3vec = (s.
end()-s.
start()+1);
285 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
299 int total_n_3vec = (s.
end()-s.
start()+1);
365 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
371 REAL ar = a.
elem().elem().elem().elem();
378 int total_n_3vec = (s.
end()-s.
start()+1);
441 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
449 REAL ar = -a.
elem().elem().elem().elem();
457 int total_n_3vec = (s.
end()-s.
start()+1);
515 REAL ar = a.
elem().elem().elem().elem();
524 int total_n_3vec = (s.
end()-s.
start()+1);
584 REAL ar = -( a.
elem().elem().elem().elem());
592 int total_n_3vec = (s.
end()-s.
start()+1);
660 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
666 REAL ar = a.
elem().elem().elem().elem();
674 int total_n_3vec = (s.
end()-s.
start()+1);
745 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
751 REAL ar = a.
elem().elem().elem().elem();
760 int total_n_3vec = (s.
end()-s.
start()+1);
827 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
833 REAL ar = a.
elem().elem().elem().elem();
841 int total_n_3vec = (s.
end()-s.
start()+1);
905 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
913 REAL ar = -a.
elem().elem().elem().elem();
922 int total_n_3vec = (s.
end()-s.
start()+1);
975 cout <<
"BJ: v+v " << endl;
989 int total_n_3vec = (s.
end()-s.
start()+1);
1042 cout <<
"BJ: v-v " << endl;
1055 int total_n_3vec = (s.
end()-s.
start()+1);
1107 cout <<
"BJ: v = a*v " << endl;
1112 REAL ar = a.
elem().elem().elem().elem();
1120 int total_n_3vec = (s.
end()-s.
start()+1);
1167 cout <<
"BJ: v = v*a " << endl;
1173 REAL ar = a.
elem().elem().elem().elem();
1180 int total_n_3vec = (s.
end()-s.
start()+1);
1232 REAL ar = a.
elem().elem().elem().elem();
1238 int total_n_3vec = (s.
end()-s.
start()+1);
1296 int total_n_3vec = (s.
end()-s.
start()+1);
1357 int total_n_3vec = (s.
end()-s.
start()+1);
1422 int total_n_3vec = (s.
end()-s.
start()+1);
1489 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
1490 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
1510 int total_n_3vec = (s.
end()-s.
start()+1);
1586 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1587 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1608 int total_n_3vec = (s.
end()-s.
start()+1);
1685 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1688 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1711 int total_n_3vec = (s.
end()-s.
start()+1);
1780 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
1781 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
1801 int total_n_3vec = (s.
end()-s.
start()+1);
1870 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
1871 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
1891 int total_n_3vec = (s.
end()-s.
start()+1);
1967 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1968 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1989 int total_n_3vec = (s.
end()-s.
start()+1);
2066 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
2069 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
2092 int total_n_3vec = (s.
end()-s.
start()+1);
2161 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
2162 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
2182 int total_n_3vec = (s.
end()-s.
start()+1);
2236 int n_3vec = (s.
end() - s.
start() + 1);
2237 const REAL *s1ptr = &(s1.elem(s.
start()).elem(0).elem(0).real());
2257 REAL* s1ptr = (
REAL *)&(s1.elem(i).elem(0).elem(0).real());
2277 int n_3vec = (
all.end() -
all.start() + 1);
2278 const REAL *s1ptr = &(s1.elem(
all.start()).elem(0).elem(0).real());
2309 unsigned long n_3vec = (
all.end() -
all.start() + 1);
2313 (
REAL *)&(v1.elem(
all.start()).elem(0).elem(0).real()),
2314 (
REAL *)&(v2.elem(
all.start()).elem(0).elem(0).real()),
2322 lprod.elem().elem().elem().real() = ip[0];
2323 lprod.elem().elem().elem().imag() = ip[1];
2348 unsigned long n_3vec = (s.
end() - s.
start() + 1);
2350 (
REAL *)&(v1.elem(s.
start()).elem(0).elem(0).real()),
2351 (
REAL *)&(v2.elem(s.
start()).elem(0).elem(0).real()),
2357 lprod.elem().elem().elem().real() = ip[0];
2358 lprod.elem().elem().elem().imag() = ip[1];
2375 l_vcdot(&(ip_tmp[0]), &(ip_tmp[1]),
2376 (
REAL *)&(v1.elem(i).elem(0).elem(0).real()),
2377 (
REAL *)&(v2.elem(i).elem(0).elem(0).real()),
2386 lprod.elem().elem().elem().real() = ip[0];
2387 lprod.elem().elem().elem().imag() = ip[1];
2405 QDPIO::cout <<
"BJ: innerProductReal all" << endl;
2415 unsigned long n_3vec = (
all.end() -
all.start() + 1);
2419 (
REAL *)&(v1.elem(
all.start()).elem(0).elem(0).real()),
2420 (
REAL *)&(v2.elem(
all.start()).elem(0).elem(0).real()),
2428 lprod.elem().elem().elem().elem() = ip_re;
2453 unsigned long n_3vec = (s.
end() - s.
start() + 1);
2455 (
REAL *)&(v1.elem(s.
start()).elem(0).elem(0).real()),
2456 (
REAL *)&(v2.elem(s.
start()).elem(0).elem(0).real()),
2460 lprod.elem().elem().elem().elem() = ip_re;
2469 DOUBLE ip_re=0, ip_re_tmp;
2478 (
REAL *)&(v1.elem(i).elem(0).elem(0).real()),
2479 (
REAL *)&(v2.elem(i).elem(0).elem(0).real()),
2485 lprod.elem().elem().elem().elem() = ip_re;
2496 QDPIO::cout <<
"Using SSE multi1d sumsq all" << endl;
2499 int n_3vec = (
all.end() -
all.start() + 1);
2501 for(
int n=0; n < s1.size(); ++n)
2503 const REAL* s1ptr = &(s1[n].elem(
all.start()).elem(0).elem(0).real());
2524 QDPIO::cout <<
"BJ: multi1d innerProduct all" << endl;
2536 unsigned long n_3vec = (
all.end() -
all.start() + 1);
2538 for(
int n=0; n < v1.size(); ++n)
2546 (
REAL *)&(v1[n].elem(
all.start()).elem(0).elem(0).real()),
2547 (
REAL *)&(v2[n].elem(
all.start()).elem(0).elem(0).real()),
2558 lprod.elem().elem().elem().real() = ip[0];
2559 lprod.elem().elem().elem().imag() = ip[1];
2574 QDPIO::cout <<
"BJ: innerProductReal(multi1d) all" << endl;
2584 unsigned long n_3vec = (
all.end() -
all.start() + 1);
2586 for(
int n=0; n < v1.size(); ++n)
2592 (
REAL *)&(v1[n].elem(
all.start()).elem(0).elem(0).real()),
2593 (
REAL *)&(v2[n].elem(
all.start()).elem(0).elem(0).real()),
2604 lprod.elem().elem().elem().elem() = ip_re;
Outer grid Scalar class */.
Primitive spin Vector class.
Expression class for QDP.
QDPType - major type class/container for all QDP objects.
Subsets - controls how lattices are looped.
const multi1d< int > & siteTable() const
bool hasOrderedRep() const
Container for a multi-dimensional 1D array.
const T * slice() const
Return ref to a column slice.
Generic Scalar, local sum squared routine.
Generic Scalar, CDOT routine.
Generic Scalar, CDOT routine.
Generic Scalar VAXMBY routine.
Generic Scalar VAXPY NORM routine.
Generic Scalar VAXMY routine.
Generic Scalar VAXPBY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY NORM routine.
Generic Scalar VSCAL routine.
BinaryReturn< C1, C2, FnInnerProductReal >::Type_t innerProductReal(const QDPType< T1, C1 > &s1, const QDPType< T2, C2 > &s2)
OScalar = innerProductReal(adj(source1)*source2).
UnaryReturn< C, FnNorm2 >::Type_t norm2(const QDPType< T, C > &s1)
OScalar = norm2(trace(adj(source)*source)).
BinaryReturn< C1, C2, FnInnerProduct >::Type_t innerProduct(const QDPType< T1, C1 > &s1, const QDPType< T2, C2 > &s2)
OScalar = innerProduct(adj(source1)*source2).
void evaluate(OLattice< DCol > &d, const OpAssign &op, const QDPExpr< BinaryNode< OpMultiply, Reference< QDPType< DCol, OLattice< DCol > > >, Reference< QDPType< DCol, OLattice< DCol > > > >, OLattice< DCol > > &rhs, const Subset &s)
Subset all
Default all subset.
StandardOutputStream cout
void globalSum(T &dest)
Sum across all nodes.
void globalSumArray(unsigned int *dest, int len)
Wrapper to get a functional unsigned global sum.
Yet another random number generator.
PScalar< PScalar< RScalar< REAL > > > TScal
void unordered_vaxpy3_z_evaluate_function(int lo, int hi, int myId, unordered_vaxpy3_z_user_arg *a)
void ordered_vaxmy3_evaluate_function(int lo, int hi, int myId, ordered_vaxmy3_user_arg *a)
void dispatch_to_threads(int numSiteTable, Arg a, void(*func)(int, int, int, Arg *))
void ordered_vaxpby3_evaluate_function(int lo, int hi, int myId, ordered_vaxpby3_user_arg *a)
void unordered_vscal_evaluate_function(int lo, int hi, int myId, unordered_vscal_user_arg *a)
void l_vcdot(DOUBLE *Out_re, DOUBLE *Out_im, REAL *V1, REAL *V2, int n_3vec)
void ordered_vaxmby3_evaluate_function(int lo, int hi, int myId, ordered_vaxmby3_user_arg *a)
void ordered_vaxpy3_evaluate_function(int lo, int hi, int myId, ordered_vaxpy3_user_arg *a)
void unordered_vaxmby3_evaluate_function(int lo, int hi, int myId, unordered_vaxmby3_user_arg *a)
PSpinVector< PColorVector< RComplex< REAL >, 3 >, Ns > TVec
void unordered_vaxmy3_z_evaluate_function(int lo, int hi, int myId, unordered_vaxmy3_z_user_arg *a)
void l_vcdot_real(DOUBLE *Out, REAL *V1, REAL *V2, int n_3vec)
void unordered_vaxmy3_y_evaluate_function(int lo, int hi, int myId, unordered_vaxmy3_y_user_arg *a)
void local_sumsq(DOUBLE *Out, REAL *In, int n_3vec)
void ordered_vscal_evaluate_function(int lo, int hi, int myId, ordered_vscal_user_arg *a)
void unordered_vaxpy3_y_evaluate_function(int lo, int hi, int myId, unordered_vaxpy3_y_user_arg *a)
void unordered_vaxpby3_evaluate_function(int lo, int hi, int myId, unordered_vaxpby3_user_arg *a)
void ordered_vaxpy3_evaluate_function(int lo, int hi, int myId, ordered_vaxpy3_user_arg *a)
const OLattice< TVec > & y
const OLattice< TVec > & x
const OLattice< TVec > & x
const OLattice< TVec > & y
const OLattice< TVec > & x
const OLattice< TVec > & y
const OLattice< TVec > & x