QUDA v0.4.0
A library for QCD on GPUs
|
00001 #ifndef _LATTICE_FIELD_H 00002 #define _LATTICE_FIELD_H 00003 00004 #include <quda.h> 00005 #include <iostream> 00006 00007 // LatticeField is an abstract base clase for all Field objects. 00008 00009 // Forward declaration of all children 00010 class ColorSpinorField; 00011 class cudaColorSpinorField; 00012 class cpuColorSpinorField; 00013 00014 class GaugeField; 00015 class cpuGaugeField; 00016 class cudaGaugeField; 00017 00018 class CloverField; 00019 class cudaCloverField; 00020 class cpuCloverField; 00021 00022 struct LatticeFieldParam { 00023 int nDim; 00024 int x[QUDA_MAX_DIM]; 00025 int pad; 00026 00027 QudaPrecision precision; 00028 QudaVerbosity verbosity; 00029 00030 LatticeFieldParam() { ; } 00031 00032 // constructor for creating a cpuGaugeField only 00033 LatticeFieldParam(const QudaGaugeParam ¶m) : nDim(4), pad(0), 00034 precision(param.cpu_prec), verbosity(QUDA_SILENT) { 00035 for (int i=0; i<nDim; i++) x[i] = param.X[i]; 00036 } 00037 }; 00038 00039 std::ostream& operator<<(std::ostream& output, const LatticeFieldParam& param); 00040 00041 class LatticeField { 00042 00043 protected: 00044 int volume; // lattice volume 00045 int volumeCB; // the checkboarded volume 00046 int stride; 00047 int pad; 00048 00049 size_t total_bytes; 00050 00051 int nDim; 00052 int x[QUDA_MAX_DIM]; 00053 00054 int surface[QUDA_MAX_DIM]; 00055 int surfaceCB[QUDA_MAX_DIM]; 00056 00057 QudaPrecision precision; 00058 QudaFieldLocation location; 00059 QudaVerbosity verbosity; 00060 00061 public: 00062 LatticeField(const LatticeFieldParam ¶m, const QudaFieldLocation &Location); 00063 virtual ~LatticeField() { ; } 00064 00065 const int* X() const { return x; } 00066 int Volume() const { return volume; } 00067 int VolumeCB() const { return volumeCB; } 00068 int SurfaceCB(const int i) const { return surfaceCB[i]; } 00069 int Stride() const { return stride; } 00070 int Pad() const { return pad; } 00071 00072 QudaPrecision Precision() const { return precision; } 00073 QudaFieldLocation Location() const { return location; } 00074 QudaVerbosity Verbosity() const { return verbosity; } 00075 size_t GBytes() const { return total_bytes / (1<<30); } // returns total storage allocated 00076 00077 void checkField(const LatticeField &); 00078 }; 00079 00080 #endif // _LATTICE_FIELD_H