QUDA  0.9.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 
9  void copyGenericColorSpinorSD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
10  void copyGenericColorSpinorSS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
11  void copyGenericColorSpinorSH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
12 
13  void copyGenericColorSpinorHD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
14  void copyGenericColorSpinorHS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
15  void copyGenericColorSpinorHH(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
16 
17  // multigrid copying routines
18  void copyGenericColorSpinorMGDD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
19  void copyGenericColorSpinorMGDS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
20  void copyGenericColorSpinorMGSD(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
21  void copyGenericColorSpinorMGSS(ColorSpinorField &, const ColorSpinorField&, QudaFieldLocation, void*, void*, void*a=0, void *b=0);
22 
24  QudaFieldLocation location, void *Dst, void *Src,
25  void *dstNorm, void *srcNorm) {
26 
27  if (dst.SiteSubset() != src.SiteSubset())
28  errorQuda("Destination %d and source %d site subsets not equal", dst.SiteSubset(), src.SiteSubset());
29 
30  if (dst.Ncolor() != src.Ncolor())
31  errorQuda("Destination %d and source %d colors not equal", dst.Ncolor(), src.Ncolor());
32 
33  if (dst.Ncolor() == 3) {
34  if (dst.Precision() == QUDA_DOUBLE_PRECISION) {
35  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
36  copyGenericColorSpinorDD(dst, src, location, Dst, Src);
37  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
38  copyGenericColorSpinorDS(dst, src, location, (double*)Dst, (float*)Src);
39  } else if (src.Precision() == QUDA_HALF_PRECISION) {
40  copyGenericColorSpinorDH(dst, src, location, (double*)Dst, (short*)Src, 0, (float*)srcNorm);
41  } else {
42  errorQuda("Unsupported Precision %d", src.Precision());
43  }
44  } else if (dst.Precision() == QUDA_SINGLE_PRECISION) {
45  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
46  copyGenericColorSpinorSD(dst, src, location, (float*)Dst, (double*)Src);
47  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
48  copyGenericColorSpinorSS(dst, src, location, (float*)Dst, (float*)Src);
49  } else if (src.Precision() == QUDA_HALF_PRECISION) {
50  copyGenericColorSpinorSH(dst, src, location, (float*)Dst, (short*)Src, 0, (float*)srcNorm);
51  } else {
52  errorQuda("Unsupported Precision %d", src.Precision());
53  }
54  } else if (dst.Precision() == QUDA_HALF_PRECISION) {
55  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
56  copyGenericColorSpinorHD(dst, src, location, (short*)Dst, (double*)Src, (float*)dstNorm, 0);
57  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
58  copyGenericColorSpinorHS(dst, src, location, (short*)Dst, (float*)Src, (float*)dstNorm, 0);
59  } else if (src.Precision() == QUDA_HALF_PRECISION) {
60  copyGenericColorSpinorHH(dst, src, location, (short*)Dst, (short*)Src, (float*)dstNorm, (float*)srcNorm);
61  } else {
62  errorQuda("Unsupported Precision %d", src.Precision());
63  }
64  } else {
65  errorQuda("Unsupported Precision %d", dst.Precision());
66  }
67  } else {
68  if (dst.Precision() == QUDA_DOUBLE_PRECISION) {
69  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
70  copyGenericColorSpinorMGDD(dst, src, location, Dst, Src);
71  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
72  copyGenericColorSpinorMGDS(dst, src, location, (double*)Dst, (float*)Src);
73  } else {
74  errorQuda("Unsupported Precision %d", src.Precision());
75  }
76  } else if (dst.Precision() == QUDA_SINGLE_PRECISION) {
77  if (src.Precision() == QUDA_DOUBLE_PRECISION) {
78  copyGenericColorSpinorMGSD(dst, src, location, (float*)Dst, (double*)Src);
79  } else if (src.Precision() == QUDA_SINGLE_PRECISION) {
80  copyGenericColorSpinorMGSS(dst, src, location, (float*)Dst, (float*)Src);
81  } else {
82  errorQuda("Unsupported Precision %d", src.Precision());
83  }
84  } else {
85  errorQuda("Unsupported Precision %d", dst.Precision());
86  }
87  }
88  }
89 
90 } // namespace quda
const void * src
void copyGenericColorSpinorDD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
#define errorQuda(...)
Definition: util_quda.h:90
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)
#define b
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 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)
enum QudaFieldLocation_s QudaFieldLocation
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 copyGenericColorSpinorHD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)
QudaPrecision Precision() const
#define a
void copyGenericColorSpinorMGSD(ColorSpinorField &, const ColorSpinorField &, QudaFieldLocation, void *, void *, void *a=0, void *b=0)