QUDA v0.4.0
A library for QCD on GPUs
quda/include/lattice_field.h
Go to the documentation of this file.
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 &param) : 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 &param, 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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines