QUDA v0.4.0
A library for QCD on GPUs
Defines | Functions | Variables
quda/lib/llfat_quda.cu File Reference
#include <stdio.h>
#include <cuda_runtime.h>
#include <cuda.h>
#include <quda_internal.h>
#include <llfat_quda.h>
#include <read_gauge.h>
#include "gauge_field.h"
#include <force_common.h>
#include "llfat_core.h"

Go to the source code of this file.

Defines

#define SITE_MATRIX_LOAD_TEX   0
#define MULINK_LOAD_TEX   1
#define FATLINK_LOAD_TEX   1
#define WRITE_FAT_MATRIX(gauge, dir, idx)
#define WRITE_STAPLE_MATRIX(gauge, idx)
#define SCALAR_MULT_SU3_MATRIX(a, b, c)
#define LOAD_MATRIX_12_SINGLE_DECLARE(gauge, dir, idx, var, stride)
#define LOAD_MATRIX_12_SINGLE_TEX_DECLARE(gauge, dir, idx, var, stride)
#define LOAD_MATRIX_18_SINGLE_DECLARE(gauge, dir, idx, var, stride)
#define LOAD_MATRIX_18_SINGLE_TEX_DECLARE(gauge, dir, idx, var, stride)
#define LOAD_MATRIX_18_DOUBLE_DECLARE(gauge, dir, idx, var, stride)
#define LOAD_MATRIX_18_DOUBLE_TEX_DECLARE(gauge_tex, gauge, dir, idx, var, stride)
#define LOAD_MATRIX_12_DOUBLE_DECLARE(gauge, dir, idx, var, stride)
#define LOAD_MATRIX_12_DOUBLE_TEX_DECLARE(gauge_tex, gauge, dir, idx, var, stride)
#define LLFAT_ADD_SU3_MATRIX(ma, mb, mc)
#define LLFAT_CONCAT(a, b)   a##b##Kernel
#define LLFAT_CONCAT_EX(a, b)   a##b##Kernel_ex
#define LLFAT_KERNEL(a, b)   LLFAT_CONCAT(a,b)
#define LLFAT_KERNEL_EX(a, b)   LLFAT_CONCAT_EX(a,b)
#define PRECISION   1
#define Float   float
#define LOAD_FAT_MATRIX(gauge, dir, idx)   LOAD_MATRIX_18_SINGLE_DECLARE(gauge, dir, idx, FAT, llfat_ga_stride)
#define LOAD_EVEN_MULINK_MATRIX(dir, idx, var)   LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?muLink1TexSingle:muLink0TexSingle), dir, idx, var, staple_stride)
#define LOAD_ODD_MULINK_MATRIX(dir, idx, var)   LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?muLink0TexSingle:muLink1TexSingle), dir, idx, var, staple_stride)
#define LOAD_EVEN_FAT_MATRIX(dir, idx)   LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?fatGauge1TexSingle:fatGauge0TexSingle), dir, idx, FAT, llfat_ga_stride);
#define LOAD_ODD_FAT_MATRIX(dir, idx)   LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?fatGauge0TexSingle:fatGauge1TexSingle), dir, idx, FAT, llfat_ga_stride);
#define DECLARE_VAR_SIGN   short sign=1
#define SITELINK0TEX   siteLink0TexSingle_recon
#define SITELINK1TEX   siteLink1TexSingle_recon
#define LOAD_EVEN_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_12_SINGLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)
#define LOAD_ODD_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_12_SINGLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)
#define LOAD_SITE_MATRIX(sitelink, dir, idx, var)   LOAD_MATRIX_12_SINGLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)
#define RECONSTRUCT_SITE_LINK(sign, var)   RECONSTRUCT_LINK_12(sign, var);
#define FloatN   float4
#define FloatM   float2
#define RECONSTRUCT   12
#define sd_data   float_12_sd_data
#define SITELINK0TEX   siteLink0TexSingle_norecon
#define SITELINK1TEX   siteLink1TexSingle_norecon
#define LOAD_EVEN_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_18_SINGLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)
#define LOAD_ODD_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_18_SINGLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)
#define LOAD_SITE_MATRIX(sitelink, dir, idx, var)   LOAD_MATRIX_18_SINGLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)
#define RECONSTRUCT_SITE_LINK(sign, var)
#define FloatN   float2
#define FloatM   float2
#define RECONSTRUCT   18
#define sd_data   float_18_sd_data
#define PRECISION   0
#define Float   double
#define LOAD_FAT_MATRIX(gauge, dir, idx)   LOAD_MATRIX_18_DOUBLE_DECLARE(gauge, dir, idx, FAT, llfat_ga_stride)
#define LOAD_EVEN_MULINK_MATRIX(dir, idx, var)   LOAD_MATRIX_18_DOUBLE_TEX_DECLARE(odd_bit?muLink1TexDouble:muLink0TexDouble), mulink_even, dir, idx, var, staple_stride)
#define LOAD_ODD_MULINK_MATRIX(dir, idx, var)   LOAD_MATRIX_18_DOUBLE_TEX_DECLARE((odd_bit?muLink0TexDouble:muLink1TexDouble), mulink_odd, dir, idx, var, staple_stride)
#define LOAD_EVEN_FAT_MATRIX(dir, idx)   LOAD_MATRIX_18_DOUBLE_TEX_DECLARE((odd_bit?fatGauge1TexDouble:fatGauge0TexDouble), fatlink_even, dir, idx, FAT, llfat_ga_stride)
#define LOAD_ODD_FAT_MATRIX(dir, idx)   LOAD_MATRIX_18_DOUBLE_TEX_DECLARE((odd_bit?fatGauge0TexDouble:fatGauge1TexDouble), fatlink_odd, dir, idx, FAT, llfat_ga_stride)
#define SITELINK0TEX   siteLink0TexDouble
#define SITELINK1TEX   siteLink1TexDouble
#define LOAD_EVEN_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_18_DOUBLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)
#define LOAD_ODD_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_18_DOUBLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)
#define LOAD_SITE_MATRIX(sitelink, dir, idx, var)   LOAD_MATRIX_18_DOUBLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)
#define RECONSTRUCT_SITE_LINK(sign, var)
#define FloatN   double2
#define FloatM   double2
#define RECONSTRUCT   18
#define sd_data   double_18_sd_data
#define SITELINK0TEX   siteLink0TexDouble
#define SITELINK1TEX   siteLink1TexDouble
#define LOAD_EVEN_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_12_DOUBLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)
#define LOAD_ODD_SITE_MATRIX(dir, idx, var)   LOAD_MATRIX_12_DOUBLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)
#define LOAD_SITE_MATRIX(sitelink, dir, idx, var)   LOAD_MATRIX_12_DOUBLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)
#define RECONSTRUCT_SITE_LINK(sign, var)   RECONSTRUCT_LINK_12(sign, var);
#define FloatN   double2
#define FloatM   double2
#define RECONSTRUCT   12
#define sd_data   double_12_sd_data
#define UNBIND_ALL_TEXTURE
#define UNBIND_SITE_AND_FAT_LINK
#define BIND_MU_LINK()
#define UNBIND_MU_LINK()
#define BIND_SITE_AND_FAT_LINK
#define BIND_MU_LINK()
#define UNBIND_MU_LINK()
#define BIND_SITE_AND_FAT_LINK_REVERSE
#define ENUMERATE_FUNCS(mu, nu)
#define ENUMERATE_FUNCS_SAVE(mu, nu, save_staple)
#define CALL_FUNCTION(mu, nu)
#define CALL_FUNCTION(mu, nu, save_staple)
#define CALL_FUNCTION(mu, nu)
#define CALL_FUNCTION(mu, nu, save_staple)

Functions

void llfat_init_cuda (QudaGaugeParam *param)
void llfat_init_cuda_ex (QudaGaugeParam *param_ex)
void siteComputeGenStapleParityKernel (void *staple_even, void *staple_odd, void *sitelink_even, void *sitelink_odd, void *fatlink_even, void *fatlink_odd, int mu, int nu, double mycoeff, QudaReconstructType recon, QudaPrecision prec, dim3 halfGridDim, llfat_kernel_param_t kparam, cudaStream_t *stream)
void computeGenStapleFieldParityKernel (void *staple_even, void *staple_odd, void *sitelink_even, void *sitelink_odd, void *fatlink_even, void *fatlink_odd, void *mulink_even, void *mulink_odd, int mu, int nu, int save_staple, double mycoeff, QudaReconstructType recon, QudaPrecision prec, dim3 halfGridDim, llfat_kernel_param_t kparam, cudaStream_t *stream)
void siteComputeGenStapleParityKernel_ex (void *staple_even, void *staple_odd, void *sitelink_even, void *sitelink_odd, void *fatlink_even, void *fatlink_odd, int mu, int nu, double mycoeff, QudaReconstructType recon, QudaPrecision prec, llfat_kernel_param_t kparam)
void computeGenStapleFieldParityKernel_ex (void *staple_even, void *staple_odd, void *sitelink_even, void *sitelink_odd, void *fatlink_even, void *fatlink_odd, void *mulink_even, void *mulink_odd, int mu, int nu, int save_staple, double mycoeff, QudaReconstructType recon, QudaPrecision prec, llfat_kernel_param_t kparam)
void llfatOneLinkKernel (cudaGaugeField &cudaFatLink, cudaGaugeField &cudaSiteLink, cudaGaugeField &cudaStaple, cudaGaugeField &cudaStaple1, QudaGaugeParam *param, double *act_path_coeff)
void llfatOneLinkKernel_ex (cudaGaugeField &cudaFatLink, cudaGaugeField &cudaSiteLink, cudaGaugeField &cudaStaple, cudaGaugeField &cudaStaple1, QudaGaugeParam *param, double *act_path_coeff, llfat_kernel_param_t kparam)

Variables

__constant__ int dir1_array [16]
__constant__ int dir2_array [16]
__constant__ int last_proc_in_tdim
__constant__ int first_proc_in_tdim
unsigned long staple_bytes = 0

Define Documentation

#define BIND_MU_LINK ( )
Value:
do{                                             \
    if(prec == QUDA_DOUBLE_PRECISION){                                  \
      cudaBindTexture(0, muLink0TexDouble, mulink_even, staple_bytes);  \
      cudaBindTexture(0, muLink1TexDouble, mulink_odd, staple_bytes);   \
    }else{                                                              \
      cudaBindTexture(0, muLink0TexSingle, mulink_even, staple_bytes);  \
      cudaBindTexture(0, muLink1TexSingle, mulink_odd, staple_bytes);   \
    }                                                                   \
  }while(0)

Definition at line 579 of file llfat_quda.cu.

#define BIND_MU_LINK ( )
Value:
do{                                             \
    if(prec == QUDA_DOUBLE_PRECISION){                                  \
      cudaBindTexture(0, muLink0TexDouble, mulink_even, staple_bytes);  \
      cudaBindTexture(0, muLink1TexDouble, mulink_odd, staple_bytes);   \
    }else{                                                              \
      cudaBindTexture(0, muLink0TexSingle, mulink_even, staple_bytes);  \
      cudaBindTexture(0, muLink1TexSingle, mulink_odd, staple_bytes);   \
    }                                                                   \
  }while(0)

Definition at line 579 of file llfat_quda.cu.

#define BIND_SITE_AND_FAT_LINK
Value:
do {                                    \
  if(prec == QUDA_DOUBLE_PRECISION){                                    \
    cudaBindTexture(0, siteLink0TexDouble, cudaSiteLink.Even_p(), cudaSiteLink.Bytes()); \
    cudaBindTexture(0, siteLink1TexDouble, cudaSiteLink.Odd_p(), cudaSiteLink.Bytes()); \
    cudaBindTexture(0, fatGauge0TexDouble, cudaFatLink.Even_p(), cudaFatLink.Bytes()); \
    cudaBindTexture(0, fatGauge1TexDouble, cudaFatLink.Odd_p(),  cudaFatLink.Bytes()); \
  }else{                                                                \
    if(cudaSiteLink.Reconstruct() == QUDA_RECONSTRUCT_NO){              \
      cudaBindTexture(0, siteLink0TexSingle_norecon, cudaSiteLink.Even_p(), cudaSiteLink.Bytes()); \
      cudaBindTexture(0, siteLink1TexSingle_norecon, cudaSiteLink.Odd_p(), cudaSiteLink.Bytes()); \
    }else{                                                              \
      cudaBindTexture(0, siteLink0TexSingle_recon, cudaSiteLink.Even_p(), cudaSiteLink.Bytes()); \
      cudaBindTexture(0, siteLink1TexSingle_recon, cudaSiteLink.Odd_p(), cudaSiteLink.Bytes()); \
    }                                                                   \
    cudaBindTexture(0, fatGauge0TexSingle, cudaFatLink.Even_p(), cudaFatLink.Bytes()); \
    cudaBindTexture(0, fatGauge1TexSingle, cudaFatLink.Odd_p(),  cudaFatLink.Bytes()); \
    }                                                                   \
  }while(0)

Definition at line 560 of file llfat_quda.cu.

#define BIND_SITE_AND_FAT_LINK_REVERSE
Value:
do {                            \
    if(prec == QUDA_DOUBLE_PRECISION){                                  \
      cudaBindTexture(0, siteLink1TexDouble, cudaSiteLink.even, cudaSiteLink.bytes); \
      cudaBindTexture(0, siteLink0TexDouble, cudaSiteLink.odd, cudaSiteLink.bytes); \
      cudaBindTexture(0, fatGauge1TexDouble, cudaFatLink.even, cudaFatLink.bytes); \
      cudaBindTexture(0, fatGauge0TexDouble, cudaFatLink.odd,  cudaFatLink.bytes); \
    }else{                                                              \
      if(cudaSiteLink.reconstruct == QUDA_RECONSTRUCT_NO){              \
        cudaBindTexture(0, siteLink1TexSingle_norecon, cudaSiteLink.even, cudaSiteLink.bytes); \
        cudaBindTexture(0, siteLink0TexSingle_norecon, cudaSiteLink.odd, cudaSiteLink.bytes); \
      }else{                                                            \
        cudaBindTexture(0, siteLink1TexSingle_recon, cudaSiteLink.even, cudaSiteLink.bytes); \
        cudaBindTexture(0, siteLink0TexSingle_recon, cudaSiteLink.odd, cudaSiteLink.bytes); \
      }                                                                 \
      cudaBindTexture(0, fatGauge1TexSingle, cudaFatLink.even, cudaFatLink.bytes); \
      cudaBindTexture(0, fatGauge0TexSingle, cudaFatLink.odd,  cudaFatLink.bytes); \
    }                                                                   \
  }while(0)

Definition at line 599 of file llfat_quda.cu.

#define CALL_FUNCTION (   mu,
  nu 
)
#define CALL_FUNCTION (   mu,
  nu,
  save_staple 
)
#define CALL_FUNCTION (   mu,
  nu 
)
#define CALL_FUNCTION (   mu,
  nu,
  save_staple 
)
#define DECLARE_VAR_SIGN   short sign=1

Definition at line 337 of file llfat_quda.cu.

#define ENUMERATE_FUNCS (   mu,
  nu 
)

Definition at line 620 of file llfat_quda.cu.

#define ENUMERATE_FUNCS_SAVE (   mu,
  nu,
  save_staple 
)

Definition at line 687 of file llfat_quda.cu.

#define FATLINK_LOAD_TEX   1

Definition at line 18 of file llfat_quda.cu.

#define Float   float

Definition at line 407 of file llfat_quda.cu.

#define Float   double

Definition at line 407 of file llfat_quda.cu.

#define FloatM   float2

Definition at line 469 of file llfat_quda.cu.

#define FloatM   double2

Definition at line 469 of file llfat_quda.cu.

#define FloatM   float2

Definition at line 469 of file llfat_quda.cu.

#define FloatM   double2

Definition at line 469 of file llfat_quda.cu.

#define FloatN   float4

Definition at line 468 of file llfat_quda.cu.

#define FloatN   double2

Definition at line 468 of file llfat_quda.cu.

#define FloatN   float2

Definition at line 468 of file llfat_quda.cu.

#define FloatN   double2

Definition at line 468 of file llfat_quda.cu.

#define LLFAT_ADD_SU3_MATRIX (   ma,
  mb,
  mc 
)
Value:
mc##00_re = ma##00_re + mb##00_re;              \
  mc##00_im = ma##00_im + mb##00_im;            \
  mc##01_re = ma##01_re + mb##01_re;            \
  mc##01_im = ma##01_im + mb##01_im;            \
  mc##02_re = ma##02_re + mb##02_re;            \
  mc##02_im = ma##02_im + mb##02_im;            \
  mc##10_re = ma##10_re + mb##10_re;            \
  mc##10_im = ma##10_im + mb##10_im;            \
  mc##11_re = ma##11_re + mb##11_re;            \
  mc##11_im = ma##11_im + mb##11_im;            \
  mc##12_re = ma##12_re + mb##12_re;            \
  mc##12_im = ma##12_im + mb##12_im;            \
  mc##20_re = ma##20_re + mb##20_re;            \
  mc##20_im = ma##20_im + mb##20_im;            \
  mc##21_re = ma##21_re + mb##21_re;            \
  mc##21_im = ma##21_im + mb##21_im;            \
  mc##22_re = ma##22_re + mb##22_re;            \
  mc##22_im = ma##22_im + mb##22_im;

Definition at line 164 of file llfat_quda.cu.

#define LLFAT_CONCAT (   a,
 
)    a##b##Kernel

Definition at line 308 of file llfat_quda.cu.

#define LLFAT_CONCAT_EX (   a,
 
)    a##b##Kernel_ex

Definition at line 309 of file llfat_quda.cu.

#define LLFAT_KERNEL (   a,
 
)    LLFAT_CONCAT(a,b)

Definition at line 310 of file llfat_quda.cu.

#define LLFAT_KERNEL_EX (   a,
 
)    LLFAT_CONCAT_EX(a,b)

Definition at line 311 of file llfat_quda.cu.

#define LOAD_EVEN_FAT_MATRIX (   dir,
  idx 
)    LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?fatGauge1TexSingle:fatGauge0TexSingle), dir, idx, FAT, llfat_ga_stride);

Definition at line 418 of file llfat_quda.cu.

#define LOAD_EVEN_FAT_MATRIX (   dir,
  idx 
)    LOAD_MATRIX_18_DOUBLE_TEX_DECLARE((odd_bit?fatGauge1TexDouble:fatGauge0TexDouble), fatlink_even, dir, idx, FAT, llfat_ga_stride)

Definition at line 418 of file llfat_quda.cu.

#define LOAD_EVEN_MULINK_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?muLink1TexSingle:muLink0TexSingle), dir, idx, var, staple_stride)

Definition at line 410 of file llfat_quda.cu.

#define LOAD_EVEN_MULINK_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_DOUBLE_TEX_DECLARE(odd_bit?muLink1TexDouble:muLink0TexDouble), mulink_even, dir, idx, var, staple_stride)

Definition at line 410 of file llfat_quda.cu.

#define LOAD_EVEN_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_12_DOUBLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)

Definition at line 463 of file llfat_quda.cu.

#define LOAD_EVEN_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_SINGLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)

Definition at line 463 of file llfat_quda.cu.

#define LOAD_EVEN_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_DOUBLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)

Definition at line 463 of file llfat_quda.cu.

#define LOAD_EVEN_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_12_SINGLE_DECLARE(sitelink_even, dir, idx, var, site_ga_stride)

Definition at line 463 of file llfat_quda.cu.

#define LOAD_FAT_MATRIX (   gauge,
  dir,
  idx 
)    LOAD_MATRIX_18_SINGLE_DECLARE(gauge, dir, idx, FAT, llfat_ga_stride)

Definition at line 408 of file llfat_quda.cu.

#define LOAD_FAT_MATRIX (   gauge,
  dir,
  idx 
)    LOAD_MATRIX_18_DOUBLE_DECLARE(gauge, dir, idx, FAT, llfat_ga_stride)

Definition at line 408 of file llfat_quda.cu.

#define LOAD_MATRIX_12_DOUBLE_DECLARE (   gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
double2 var##0 = gauge[idx + dir*6*stride];                             \
  double2 var##1 = gauge[idx + dir*6*stride + stride];                  \
  double2 var##2 = gauge[idx + dir*6*stride + 2*stride];                \
  double2 var##3 = gauge[idx + dir*6*stride + 3*stride];                \
  double2 var##4 = gauge[idx + dir*6*stride + 4*stride];                \
  double2 var##5 = gauge[idx + dir*6*stride + 5*stride];                \
  double2 var##6, var##7, var##8;

Definition at line 145 of file llfat_quda.cu.

#define LOAD_MATRIX_12_DOUBLE_TEX_DECLARE (   gauge_tex,
  gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
double2 var##0 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*6*stride); \
  double2 var##1 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*6*stride + stride); \
  double2 var##2 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*6*stride + 2*stride); \
  double2 var##3 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*6*stride + 3*stride); \
  double2 var##4 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*6*stride + 4*stride); \
  double2 var##5 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*6*stride + 5*stride); \
  double2 var##6, var##7, var##8;

Definition at line 155 of file llfat_quda.cu.

#define LOAD_MATRIX_12_SINGLE_DECLARE (   gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
float4 var##0 = gauge[idx + dir*3*stride];                              \
  float4 var##1 = gauge[idx + dir*3*stride + stride];                   \
  float4 var##2 = gauge[idx + dir*3*stride + 2*stride];                 \
  float4 var##3, var##4;

Definition at line 84 of file llfat_quda.cu.

#define LOAD_MATRIX_12_SINGLE_TEX_DECLARE (   gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
float4 var##0 = tex1Dfetch(gauge, idx + dir*3*stride);          \
  float4 var##1 = tex1Dfetch(gauge, idx + dir*3*stride + stride);       \
  float4 var##2 = tex1Dfetch(gauge, idx + dir*3*stride + 2*stride);     \
  float4 var##3, var##4;

Definition at line 90 of file llfat_quda.cu.

#define LOAD_MATRIX_18_DOUBLE_DECLARE (   gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
double2 var##0 = gauge[idx + dir*9*stride];                             \
  double2 var##1 = gauge[idx + dir*9*stride + stride];                  \
  double2 var##2 = gauge[idx + dir*9*stride + 2*stride];                \
  double2 var##3 = gauge[idx + dir*9*stride + 3*stride];                \
  double2 var##4 = gauge[idx + dir*9*stride + 4*stride];                \
  double2 var##5 = gauge[idx + dir*9*stride + 5*stride];                \
  double2 var##6 = gauge[idx + dir*9*stride + 6*stride];                \
  double2 var##7 = gauge[idx + dir*9*stride + 7*stride];                \
  double2 var##8 = gauge[idx + dir*9*stride + 8*stride];

Definition at line 121 of file llfat_quda.cu.

#define LOAD_MATRIX_18_DOUBLE_TEX_DECLARE (   gauge_tex,
  gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
double2 var##0 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride); \
  double2 var##1 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + stride); \
  double2 var##2 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 2*stride); \
  double2 var##3 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 3*stride); \
  double2 var##4 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 4*stride); \
  double2 var##5 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 5*stride); \
  double2 var##6 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 6*stride); \
  double2 var##7 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 7*stride); \
  double2 var##8 = READ_DOUBLE2_TEXTURE(gauge_tex, gauge, idx + dir*9*stride + 8*stride);

Definition at line 133 of file llfat_quda.cu.

#define LOAD_MATRIX_18_SINGLE_DECLARE (   gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
float2 var##0 = gauge[idx + dir*9*stride];                              \
  float2 var##1 = gauge[idx + dir*9*stride + stride];                   \
  float2 var##2 = gauge[idx + dir*9*stride + 2*stride];                 \
  float2 var##3 = gauge[idx + dir*9*stride + 3*stride];                 \
  float2 var##4 = gauge[idx + dir*9*stride + 4*stride];                 \
  float2 var##5 = gauge[idx + dir*9*stride + 5*stride];                 \
  float2 var##6 = gauge[idx + dir*9*stride + 6*stride];                 \
  float2 var##7 = gauge[idx + dir*9*stride + 7*stride];                 \
  float2 var##8 = gauge[idx + dir*9*stride + 8*stride];

Definition at line 96 of file llfat_quda.cu.

#define LOAD_MATRIX_18_SINGLE_TEX_DECLARE (   gauge,
  dir,
  idx,
  var,
  stride 
)
Value:
float2 var##0 = tex1Dfetch(gauge, idx + dir*9*stride);          \
  float2 var##1 = tex1Dfetch(gauge, idx + dir*9*stride + stride);       \
  float2 var##2 = tex1Dfetch(gauge, idx + dir*9*stride + 2*stride);     \
  float2 var##3 = tex1Dfetch(gauge, idx + dir*9*stride + 3*stride);     \
  float2 var##4 = tex1Dfetch(gauge, idx + dir*9*stride + 4*stride);     \
  float2 var##5 = tex1Dfetch(gauge, idx + dir*9*stride + 5*stride);     \
  float2 var##6 = tex1Dfetch(gauge, idx + dir*9*stride + 6*stride);     \
  float2 var##7 = tex1Dfetch(gauge, idx + dir*9*stride + 7*stride);     \
  float2 var##8 = tex1Dfetch(gauge, idx + dir*9*stride + 8*stride);

Definition at line 108 of file llfat_quda.cu.

#define LOAD_ODD_FAT_MATRIX (   dir,
  idx 
)    LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?fatGauge0TexSingle:fatGauge1TexSingle), dir, idx, FAT, llfat_ga_stride);

Definition at line 419 of file llfat_quda.cu.

#define LOAD_ODD_FAT_MATRIX (   dir,
  idx 
)    LOAD_MATRIX_18_DOUBLE_TEX_DECLARE((odd_bit?fatGauge0TexDouble:fatGauge1TexDouble), fatlink_odd, dir, idx, FAT, llfat_ga_stride)

Definition at line 419 of file llfat_quda.cu.

#define LOAD_ODD_MULINK_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_DOUBLE_TEX_DECLARE((odd_bit?muLink0TexDouble:muLink1TexDouble), mulink_odd, dir, idx, var, staple_stride)

Definition at line 411 of file llfat_quda.cu.

#define LOAD_ODD_MULINK_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_SINGLE_TEX_DECLARE((odd_bit?muLink0TexSingle:muLink1TexSingle), dir, idx, var, staple_stride)

Definition at line 411 of file llfat_quda.cu.

#define LOAD_ODD_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_SINGLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)

Definition at line 464 of file llfat_quda.cu.

#define LOAD_ODD_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_12_DOUBLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)

Definition at line 464 of file llfat_quda.cu.

#define LOAD_ODD_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_18_DOUBLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)

Definition at line 464 of file llfat_quda.cu.

#define LOAD_ODD_SITE_MATRIX (   dir,
  idx,
  var 
)    LOAD_MATRIX_12_SINGLE_DECLARE(sitelink_odd, dir, idx, var, site_ga_stride)

Definition at line 464 of file llfat_quda.cu.

#define LOAD_SITE_MATRIX (   sitelink,
  dir,
  idx,
  var 
)    LOAD_MATRIX_12_SINGLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)

Definition at line 466 of file llfat_quda.cu.

#define LOAD_SITE_MATRIX (   sitelink,
  dir,
  idx,
  var 
)    LOAD_MATRIX_18_SINGLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)

Definition at line 466 of file llfat_quda.cu.

#define LOAD_SITE_MATRIX (   sitelink,
  dir,
  idx,
  var 
)    LOAD_MATRIX_12_DOUBLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)

Definition at line 466 of file llfat_quda.cu.

#define LOAD_SITE_MATRIX (   sitelink,
  dir,
  idx,
  var 
)    LOAD_MATRIX_18_DOUBLE_DECLARE(sitelink, dir, idx, var, site_ga_stride)

Definition at line 466 of file llfat_quda.cu.

#define MULINK_LOAD_TEX   1

Definition at line 17 of file llfat_quda.cu.

#define PRECISION   1

Definition at line 406 of file llfat_quda.cu.

#define PRECISION   0

Definition at line 406 of file llfat_quda.cu.

#define RECONSTRUCT   12

Definition at line 470 of file llfat_quda.cu.

#define RECONSTRUCT   12

Definition at line 470 of file llfat_quda.cu.

#define RECONSTRUCT   18

Definition at line 470 of file llfat_quda.cu.

#define RECONSTRUCT   18

Definition at line 470 of file llfat_quda.cu.

#define RECONSTRUCT_SITE_LINK (   sign,
  var 
)    RECONSTRUCT_LINK_12(sign, var);

Definition at line 467 of file llfat_quda.cu.

#define RECONSTRUCT_SITE_LINK (   sign,
  var 
)

Definition at line 467 of file llfat_quda.cu.

#define RECONSTRUCT_SITE_LINK (   sign,
  var 
)

Definition at line 467 of file llfat_quda.cu.

#define RECONSTRUCT_SITE_LINK (   sign,
  var 
)    RECONSTRUCT_LINK_12(sign, var);

Definition at line 467 of file llfat_quda.cu.

#define SCALAR_MULT_SU3_MATRIX (   a,
  b,
 
)
Value:
c##00_re = a*b##00_re;          \
  c##00_im = a*b##00_im;                \
  c##01_re = a*b##01_re;                \
  c##01_im = a*b##01_im;                \
  c##02_re = a*b##02_re;                \
  c##02_im = a*b##02_im;                \
  c##10_re = a*b##10_re;                \
  c##10_im = a*b##10_im;                \
  c##11_re = a*b##11_re;                \
  c##11_im = a*b##11_im;                \
  c##12_re = a*b##12_re;                \
  c##12_im = a*b##12_im;                \
  c##20_re = a*b##20_re;                \
  c##20_im = a*b##20_im;                \
  c##21_re = a*b##21_re;                \
  c##21_im = a*b##21_im;                \
  c##22_re = a*b##22_re;                \
  c##22_im = a*b##22_im;                \

Definition at line 45 of file llfat_quda.cu.

#define sd_data   double_12_sd_data

Definition at line 471 of file llfat_quda.cu.

#define sd_data   double_18_sd_data

Definition at line 471 of file llfat_quda.cu.

#define sd_data   float_18_sd_data

Definition at line 471 of file llfat_quda.cu.

#define sd_data   float_12_sd_data

Definition at line 471 of file llfat_quda.cu.

#define SITE_MATRIX_LOAD_TEX   0

Definition at line 16 of file llfat_quda.cu.

#define SITELINK0TEX   siteLink0TexDouble

Definition at line 457 of file llfat_quda.cu.

#define SITELINK0TEX   siteLink0TexDouble

Definition at line 457 of file llfat_quda.cu.

#define SITELINK0TEX   siteLink0TexSingle_recon

Definition at line 457 of file llfat_quda.cu.

#define SITELINK0TEX   siteLink0TexSingle_norecon

Definition at line 457 of file llfat_quda.cu.

#define SITELINK1TEX   siteLink1TexDouble

Definition at line 458 of file llfat_quda.cu.

#define SITELINK1TEX   siteLink1TexSingle_norecon

Definition at line 458 of file llfat_quda.cu.

#define SITELINK1TEX   siteLink1TexSingle_recon

Definition at line 458 of file llfat_quda.cu.

#define SITELINK1TEX   siteLink1TexDouble

Definition at line 458 of file llfat_quda.cu.

#define UNBIND_ALL_TEXTURE
Value:
do{                                             \
    if(prec ==QUDA_DOUBLE_PRECISION){                                   \
      cudaUnbindTexture(siteLink0TexDouble);                            \
      cudaUnbindTexture(siteLink1TexDouble);                            \
      cudaUnbindTexture(fatGauge0TexDouble);                            \
      cudaUnbindTexture(fatGauge1TexDouble);                            \
      cudaUnbindTexture(muLink0TexDouble);                              \
      cudaUnbindTexture(muLink1TexDouble);                              \
    }else{                                                              \
      if(cudaSiteLink.reconstruct == QUDA_RECONSTRUCT_NO){              \
        cudaUnbindTexture(siteLink0TexSingle_norecon);                  \
        cudaUnbindTexture(siteLink1TexSingle_norecon);                  \
      }else{                                                            \
        cudaUnbindTexture(siteLink0TexSingle_recon);                    \
        cudaUnbindTexture(siteLink1TexSingle_recon);                    \
      }                                                                 \
      cudaUnbindTexture(fatGauge0TexSingle);                            \
      cudaUnbindTexture(fatGauge1TexSingle);                            \
      cudaUnbindTexture(muLink0TexSingle);                              \
      cudaUnbindTexture(muLink1TexSingle);                              \
    }                                                                   \
  }while(0)

Definition at line 496 of file llfat_quda.cu.

#define UNBIND_MU_LINK ( )
Value:
do{                                             \
    if(prec == QUDA_DOUBLE_PRECISION){                                  \
      cudaUnbindTexture(muLink0TexSingle);                              \
      cudaUnbindTexture(muLink1TexSingle);                              \
    }else{                                                              \
      cudaUnbindTexture(muLink0TexDouble);                              \
      cudaUnbindTexture(muLink1TexDouble);                              \
    }                                                                   \
  }while(0)

Definition at line 589 of file llfat_quda.cu.

#define UNBIND_MU_LINK ( )
Value:
do{                       \
    if(prec == QUDA_DOUBLE_PRECISION){            \
      cudaUnbindTexture(muLink0TexSingle);        \
      cudaUnbindTexture(muLink1TexSingle);        \
    }else{                                        \
      cudaUnbindTexture(muLink0TexDouble);        \
      cudaUnbindTexture(muLink1TexDouble);        \
    }                                             \
  }while(0)

Definition at line 589 of file llfat_quda.cu.

#define UNBIND_SITE_AND_FAT_LINK
Value:
do{                                     \
    if(prec == QUDA_DOUBLE_PRECISION){                                  \
      cudaUnbindTexture(siteLink0TexDouble);                            \
      cudaUnbindTexture(siteLink1TexDouble);                            \
      cudaUnbindTexture(fatGauge0TexDouble);                            \
      cudaUnbindTexture(fatGauge1TexDouble);                            \
    }else {                                                             \
      if(cudaSiteLink.reconstruct == QUDA_RECONSTRUCT_NO){              \
        cudaUnbindTexture(siteLink0TexSingle_norecon);                  \
        cudaUnbindTexture(siteLink1TexSingle_norecon);                  \
      }else{                                                            \
        cudaUnbindTexture(siteLink0TexSingle_recon);                    \
        cudaUnbindTexture(siteLink1TexSingle_recon);                    \
      }                                                                 \
      cudaUnbindTexture(fatGauge0TexSingle);                            \
      cudaUnbindTexture(fatGauge1TexSingle);                            \
    }                                                                   \
  }while(0)

Definition at line 519 of file llfat_quda.cu.

#define WRITE_FAT_MATRIX (   gauge,
  dir,
  idx 
)
Value:
do {                    \
    gauge[idx + dir*9*llfat_ga_stride] = FAT0;                  \
    gauge[idx + (dir*9+1) * llfat_ga_stride] = FAT1;                    \
    gauge[idx + (dir*9+2) * llfat_ga_stride] = FAT2;                    \
    gauge[idx + (dir*9+3) * llfat_ga_stride] = FAT3;                    \
    gauge[idx + (dir*9+4) * llfat_ga_stride] = FAT4;            \
    gauge[idx + (dir*9+5) * llfat_ga_stride] = FAT5;            \
    gauge[idx + (dir*9+6) * llfat_ga_stride] = FAT6;            \
    gauge[idx + (dir*9+7) * llfat_ga_stride] = FAT7;            \
    gauge[idx + (dir*9+8) * llfat_ga_stride] = FAT8;} while(0)

Definition at line 21 of file llfat_quda.cu.

#define WRITE_STAPLE_MATRIX (   gauge,
  idx 
)
Value:
gauge[idx] = STAPLE0;                                           \
  gauge[idx + staple_stride] = STAPLE1;                         \
  gauge[idx + 2*staple_stride] = STAPLE2;                       \
  gauge[idx + 3*staple_stride] = STAPLE3;                       \
  gauge[idx + 4*staple_stride] = STAPLE4;                       \
  gauge[idx + 5*staple_stride] = STAPLE5;                       \
  gauge[idx + 6*staple_stride] = STAPLE6;                       \
  gauge[idx + 7*staple_stride] = STAPLE7;                       \
  gauge[idx + 8*staple_stride] = STAPLE8;

Definition at line 33 of file llfat_quda.cu.


Function Documentation

void computeGenStapleFieldParityKernel ( void *  staple_even,
void *  staple_odd,
void *  sitelink_even,
void *  sitelink_odd,
void *  fatlink_even,
void *  fatlink_odd,
void *  mulink_even,
void *  mulink_odd,
int  mu,
int  nu,
int  save_staple,
double  mycoeff,
QudaReconstructType  recon,
QudaPrecision  prec,
dim3  halfGridDim,
llfat_kernel_param_t  kparam,
cudaStream_t *  stream 
)

Definition at line 896 of file llfat_quda.cu.

void computeGenStapleFieldParityKernel_ex ( void *  staple_even,
void *  staple_odd,
void *  sitelink_even,
void *  sitelink_odd,
void *  fatlink_even,
void *  fatlink_odd,
void *  mulink_even,
void *  mulink_odd,
int  mu,
int  nu,
int  save_staple,
double  mycoeff,
QudaReconstructType  recon,
QudaPrecision  prec,
llfat_kernel_param_t  kparam 
)

Definition at line 1053 of file llfat_quda.cu.

void llfat_init_cuda ( QudaGaugeParam param)

Definition at line 192 of file llfat_quda.cu.

void llfat_init_cuda_ex ( QudaGaugeParam param_ex)

Definition at line 252 of file llfat_quda.cu.

void llfatOneLinkKernel ( cudaGaugeField cudaFatLink,
cudaGaugeField cudaSiteLink,
cudaGaugeField cudaStaple,
cudaGaugeField cudaStaple1,
QudaGaugeParam param,
double *  act_path_coeff 
)

Definition at line 1140 of file llfat_quda.cu.

void llfatOneLinkKernel_ex ( cudaGaugeField cudaFatLink,
cudaGaugeField cudaSiteLink,
cudaGaugeField cudaStaple,
cudaGaugeField cudaStaple1,
QudaGaugeParam param,
double *  act_path_coeff,
llfat_kernel_param_t  kparam 
)

Definition at line 1181 of file llfat_quda.cu.

void siteComputeGenStapleParityKernel ( void *  staple_even,
void *  staple_odd,
void *  sitelink_even,
void *  sitelink_odd,
void *  fatlink_even,
void *  fatlink_odd,
int  mu,
int  nu,
double  mycoeff,
QudaReconstructType  recon,
QudaPrecision  prec,
dim3  halfGridDim,
llfat_kernel_param_t  kparam,
cudaStream_t *  stream 
)

Definition at line 823 of file llfat_quda.cu.

void siteComputeGenStapleParityKernel_ex ( void *  staple_even,
void *  staple_odd,
void *  sitelink_even,
void *  sitelink_odd,
void *  fatlink_even,
void *  fatlink_odd,
int  mu,
int  nu,
double  mycoeff,
QudaReconstructType  recon,
QudaPrecision  prec,
llfat_kernel_param_t  kparam 
)

Definition at line 977 of file llfat_quda.cu.


Variable Documentation

__constant__ int dir1_array[16]

Definition at line 184 of file llfat_quda.cu.

__constant__ int dir2_array[16]

Definition at line 185 of file llfat_quda.cu.

__constant__ int first_proc_in_tdim

Definition at line 187 of file llfat_quda.cu.

__constant__ int last_proc_in_tdim

Definition at line 186 of file llfat_quda.cu.

unsigned long staple_bytes = 0

Definition at line 189 of file llfat_quda.cu.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines