QDP++
qdp_generic_fused_spin_proj_evaluates_wrapper.h
Go to the documentation of this file.
1#ifndef QDP_GENERIC_FUSED_SPIN_PROJ_EVALUATES_WRAPPER_H
2#define QDP_GENERIC_FUSED_SPIN_PROJ_EVALUATES_WRAPPER_H
3
5// Threading evaluates wrappers
6//
7// by Xu Guo, EPCC, 28 August, 2008
9
10// user arg for evaluate having order
12 const OLattice< SU3Mat >& u;
13 const OLattice< FVec >& a;
14 OLattice< HVec >& d;
15 int base;
16 void (*func)(const REAL*, REAL*, unsigned int);
17};
18
19
20// user func for evaluate having order
21inline
23
24 const OLattice< SU3Mat >& u = arg->u;
25 const OLattice< FVec >& a = arg->a ;
26 OLattice< HVec >& d = arg->d;
27 int base = arg->base;
28 void (*func)(const REAL*, REAL*,unsigned int) = arg->func;
29
30 int low = lo + base;
31 int high = hi + base;
32
33 for (int site = low; site < high; site++){
34 HVec tmp;
35 func( (REAL *)&(a.elem(site).elem(0).elem(0).real()),(REAL *)&(tmp.elem(0).elem(0).real()), 1);
36
37 _inline_mult_adj_su3_mat_vec(u.elem(site).elem(), tmp.elem(0), d.elem(site).elem(0));
38 _inline_mult_adj_su3_mat_vec(u.elem(site).elem(), tmp.elem(1), d.elem(site).elem(1));
39 }
40
41}
42
43
44// user arg for evaluate NOT having order
46 const OLattice< SU3Mat >& u;
47 const OLattice< FVec >& a;
48 OLattice< HVec >& d;
49 const int *tab;
50 void (*func)(const REAL*, REAL*,unsigned int);
51};
52
53
54// user func for evaluate NOT having order
55inline
57
58 const OLattice< SU3Mat >& u = arg->u;
59 const OLattice< FVec >& a = arg->a ;
60 OLattice< HVec >& d = arg->d;
61 const int *tab = arg->tab;
62 void (*func)(const REAL*, REAL*, unsigned int) = arg->func;
63
64 for (int j = lo; j < hi; j++){
65 int site = tab[j];
66
67 HVec tmp;
68 func( (REAL *)&(a.elem(site).elem(0).elem(0).real()), (REAL *)&(tmp.elem(0).elem(0).real()), 1);
69
70
71 _inline_mult_adj_su3_mat_vec(u.elem(site).elem(), tmp.elem(0), d.elem(site).elem(0));
72 _inline_mult_adj_su3_mat_vec(u.elem(site).elem(), tmp.elem(1), d.elem(site).elem(1));
73 }
74
75}
76
77
78
79
80#endif
#define _inline_mult_adj_su3_mat_vec(aa, bb, cc)
void ordered_fused_spin_proj_evaluate_function(int lo, int hi, int myId, ordered_fused_spin_proj_user_arg *arg)
void unordered_fused_spin_proj_evaluate_function(int lo, int hi, int myId, unordered_fused_spin_proj_user_arg *arg)
REAL32 REAL
void(* func)(const REAL *, REAL *, unsigned int)