QUDA  1.0.0
copy_color_spinor.cu
Go to the documentation of this file.
1 #include <color_spinor_field.h>
2 
3 namespace quda {
4 
5  void copyGenericColorSpinorDD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
6  void copyGenericColorSpinorDS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
7  void copyGenericColorSpinorDH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
8  void copyGenericColorSpinorDQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
9 
10  void copyGenericColorSpinorSD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
11  void copyGenericColorSpinorSS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
12  void copyGenericColorSpinorSH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
13  void copyGenericColorSpinorSQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
14 
15  void copyGenericColorSpinorHD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
16  void copyGenericColorSpinorHS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
17  void copyGenericColorSpinorHH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
18  void copyGenericColorSpinorHQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
19 
20  void copyGenericColorSpinorQD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
21  void copyGenericColorSpinorQS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
22  void copyGenericColorSpinorQH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
23  void copyGenericColorSpinorQQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
24 
25  // multigrid copying routines
26  void copyGenericColorSpinorMGDD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
27  void copyGenericColorSpinorMGDS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
28  void copyGenericColorSpinorMGSD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
29  void copyGenericColorSpinorMGSS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
30  void copyGenericColorSpinorMGSH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
31  void copyGenericColorSpinorMGSQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
32  void copyGenericColorSpinorMGHS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
33  void copyGenericColorSpinorMGHH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
34  void copyGenericColorSpinorMGHQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
35  void copyGenericColorSpinorMGQS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
36  void copyGenericColorSpinorMGQH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
37  void copyGenericColorSpinorMGQQ(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
38 
39 
41  QudaFieldLocation location, void *Dst, void *Src,
42  void *dstNorm, void *srcNorm) {
43 
44  if (dst.SiteSubset() != src.SiteSubset())
45  errorQuda("Destination %d and source %d site subsets not equal", dst.SiteSubset(), src.SiteSubset());
46 
47  if (dst.Ncolor() != src.Ncolor())
48  errorQuda("Destination %d and source %d colors not equal", dst.Ncolor(), src.Ncolor());
49 
50  if (dst.Ncolor() == 3) {
51  if (dst.Precision() == QUDA_DOUBLE_PRECISION) {
52  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
53  copyGenericColorSpinorDD(dst, src, location, (double*)Dst, (double*)Src);
54  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
55  copyGenericColorSpinorDS(dst, src, location, (double*)Dst, (float*)Src);
56  } else if (src.Precision() == QUDA_HALF_PRECISION) {
57  copyGenericColorSpinorDH(dst, src, location, (double*)Dst, (short*)Src, 0, (float*)srcNorm);
58  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
59  copyGenericColorSpinorDQ(dst, src, location, (double*)Dst, (char*)Src, 0, (float*)srcNorm);
60  } else {
61  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
62  }
63  } else if (dst.Precision() == QUDA_SINGLE_PRECISION) {
64  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
65  copyGenericColorSpinorSD(dst, src, location, (float*)Dst, (double*)Src);
66  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
67  copyGenericColorSpinorSS(dst, src, location, (float*)Dst, (float*)Src);
68  } else if (src.Precision() == QUDA_HALF_PRECISION) {
69  copyGenericColorSpinorSH(dst, src, location, (float*)Dst, (short*)Src, 0, (float*)srcNorm);
70  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
71  copyGenericColorSpinorSQ(dst, src, location, (float*)Dst, (char*)Src, 0, (float*)srcNorm);
72  } else {
73  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
74  }
75  } else if (dst.Precision() == QUDA_HALF_PRECISION) {
76  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
77  copyGenericColorSpinorHD(dst, src, location, (short*)Dst, (double*)Src, (float*)dstNorm, 0);
78  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
79  copyGenericColorSpinorHS(dst, src, location, (short*)Dst, (float*)Src, (float*)dstNorm, 0);
80  } else if (src.Precision() == QUDA_HALF_PRECISION) {
81  copyGenericColorSpinorHH(dst, src, location, (short*)Dst, (short*)Src, (float*)dstNorm, (float*)srcNorm);
82  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
83  copyGenericColorSpinorHQ(dst, src, location, (short*)Dst, (char*)Src, (float*)dstNorm, (float*)srcNorm);
84  } else {
85  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
86  }
87  } else if (dst.Precision() == QUDA_QUARTER_PRECISION) {
88  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
89  copyGenericColorSpinorQD(dst, src, location, (char*)Dst, (double*)Src, (float*)dstNorm, 0);
90  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
91  copyGenericColorSpinorQS(dst, src, location, (char*)Dst, (float*)Src, (float*)dstNorm, 0);
92  } else if (src.Precision() == QUDA_HALF_PRECISION) {
93  copyGenericColorSpinorQH(dst, src, location, (char*)Dst, (short*)Src, (float*)dstNorm, (float*)srcNorm);
94  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
95  copyGenericColorSpinorQQ(dst, src, location, (char*)Dst, (char*)Src, (float*)dstNorm, (float*)srcNorm);
96  } else {
97  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
98  }
99  } else {
100  errorQuda("Unsupported Destination Precision %d", dst.Precision());
101  }
102  } else {
103  if (dst.Precision() == QUDA_DOUBLE_PRECISION) {
104  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
105  copyGenericColorSpinorMGDD(dst, src, location, Dst, Src);
106  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
107  copyGenericColorSpinorMGDS(dst, src, location, (double*)Dst, (float*)Src);
108  } else {
109  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
110  }
111  } else if (dst.Precision() == QUDA_SINGLE_PRECISION) {
112  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
113  copyGenericColorSpinorMGSD(dst, src, location, (float*)Dst, (double*)Src);
114  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
115  copyGenericColorSpinorMGSS(dst, src, location, (float*)Dst, (float*)Src);
116  } else if (src.Precision() == QUDA_HALF_PRECISION) {
117  copyGenericColorSpinorMGSH(dst, src, location, (float*)Dst, (short*)Src);
118  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
119  copyGenericColorSpinorMGSQ(dst, src, location, (float*)Dst, (char*)Src);
120  } else {
121  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
122  }
123  } else if (dst.Precision() == QUDA_HALF_PRECISION) {
124  if (src.Precision() == QUDA_SINGLE_PRECISION) {
125  copyGenericColorSpinorMGHS(dst, src, location, (short*)Dst, (float*)Src);
126  } else if (src.Precision() == QUDA_HALF_PRECISION) {
127  copyGenericColorSpinorMGHH(dst, src, location, (short*)Dst, (short*)Src);
128  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
129  copyGenericColorSpinorMGHQ(dst, src, location, (short*)Dst, (char*)Src);
130  } else {
131  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
132  }
133  } else if (dst.Precision() == QUDA_QUARTER_PRECISION) {
134  if (src.Precision() == QUDA_SINGLE_PRECISION) {
135  copyGenericColorSpinorMGQS(dst, src, location, (char*)Dst, (float*)Src);
136  } else if (src.Precision() == QUDA_HALF_PRECISION) {
137  copyGenericColorSpinorMGQH(dst, src, location, (char*)Dst, (short*)Src);
138  } else if (src.Precision() == QUDA_QUARTER_PRECISION) {
139  copyGenericColorSpinorMGQQ(dst, src, location, (char*)Dst, (char*)Src);
140  } else {
141  errorQuda("Unsupported Destination Precision %d with Source Precision %d", dst.Precision(), src.Precision());
142  }
143  } else {
144  errorQuda("Unsupported Destination Precision %d", dst.Precision());
145  }
146  }
147  }
148 
149 } // namespace quda
void copyGenericColorSpinorSQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorDD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorDQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
#define errorQuda(...)
Definition: util_quda.h:121
void copyGenericColorSpinorMGQS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinor(ColorSpinorField &dst, const ColorSpinorField &src, QudaFieldLocation location, void *Dst=0, void *Src=0, void *dstNorm=0, void *srcNorm=0)
void copyGenericColorSpinorMGSS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorHQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorQQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGHS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorSD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGDS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorSS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorQS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorQH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorHH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
QudaSiteSubset SiteSubset() const
void copyGenericColorSpinorDH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorDS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGDD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGHH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
enum QudaFieldLocation_s QudaFieldLocation
void copyGenericColorSpinorMGQH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGSH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorSH(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorHS(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGSQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorHD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGHQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorQD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
QudaPrecision Precision() const
void copyGenericColorSpinorMGQQ(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
void copyGenericColorSpinorMGSD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)