40 #define DD_NAME_F MDWFDslash5 42 #if (DD_DAG==0) // no dagger 45 #define DD_DAG_F Dagger 48 #if (DD_XPAY==0) // no xpay 52 #define DD_XPAY_F Xpay 63 #if (DD_RECON==0) // reconstruct from 8 reals 67 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_8_DOUBLE 68 #ifdef DIRECT_ACCESS_LINK 69 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_8_DOUBLE2 71 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_8_DOUBLE2_TEX 72 #endif // DIRECT_ACCESS_LINK 75 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_8_SINGLE 76 #ifdef DIRECT_ACCESS_LINK 77 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_8_FLOAT4 79 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_8_FLOAT4_TEX 80 #endif // DIRECT_ACCESS_LINK 83 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_8_SINGLE 84 #ifdef DIRECT_ACCESS_LINK 85 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_8_SHORT4 87 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_8_SHORT4_TEX 88 #endif // DIRECT_ACCESS_LINK 90 #elif (DD_RECON==1) // reconstruct from 12 reals 94 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_12_DOUBLE 95 #ifdef DIRECT_ACCESS_LINK 96 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_12_DOUBLE2 98 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_12_DOUBLE2_TEX 99 #endif // DIRECT_ACCESS_LINK 102 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_12_SINGLE 103 #ifdef DIRECT_ACCESS_LINK 104 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_12_FLOAT4 106 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_12_FLOAT4_TEX 107 #endif // DIRECT_ACCESS_LINK 110 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_12_SINGLE 111 #ifdef DIRECT_ACCESS_LINK 112 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_12_SHORT4 114 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_12_SHORT4_TEX 115 #endif // DIRECT_ACCESS_LINK 117 #else // no reconstruct, load all components 118 #define DD_RECON_F 18 121 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_18_DOUBLE 122 #ifdef DIRECT_ACCESS_LINK 123 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_18_DOUBLE2 125 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_18_DOUBLE2_TEX 126 #endif // DIRECT_ACCESS_LINK 129 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_18_SINGLE 130 #ifdef DIRECT_ACCESS_LINK 131 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_18_FLOAT2 133 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_18_FLOAT2_TEX 134 #endif // DIRECT_ACCESS_LINK 137 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_18_SINGLE 138 #ifdef DIRECT_ACCESS_LINK 139 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_18_SHORT2 141 #define ASSN_GAUGE_MATRIX ASSN_GAUGE_MATRIX_18_SHORT2_TEX 142 #endif //DIRECT_ACCESS_LINK 146 #if (DD_PREC==0) // double-precision fields 148 #define TPROJSCALE param.tProjScale 151 #if (defined DIRECT_ACCESS_LINK) || (defined FERMI_NO_DBLE_TEX) 152 #define GAUGE0TEX param.gauge0 153 #define GAUGE1TEX param.gauge1 155 #ifdef USE_TEXTURE_OBJECTS 156 #define GAUGE0TEX param.gauge0Tex 157 #define GAUGE1TEX param.gauge1Tex 159 #define GAUGE0TEX gauge0TexDouble2 160 #define GAUGE1TEX gauge1TexDouble2 161 #endif // USE_TEXTURE_OBJECTS 167 #if (defined DIRECT_ACCESS_WILSON_SPINOR) || (defined FERMI_NO_DBLE_TEX) 168 #define READ_SPINOR READ_SPINOR_DOUBLE 169 #define READ_SPINOR_UP READ_SPINOR_DOUBLE_UP 170 #define READ_SPINOR_DOWN READ_SPINOR_DOUBLE_DOWN 171 #define SPINORTEX param.in 172 #define GHOSTSPINORTEX param.ghost 174 #define READ_SPINOR READ_SPINOR_DOUBLE_TEX 175 #define READ_SPINOR_UP READ_SPINOR_DOUBLE_UP_TEX 176 #define READ_SPINOR_DOWN READ_SPINOR_DOUBLE_DOWN_TEX 177 #ifdef USE_TEXTURE_OBJECTS 178 #define SPINORTEX param.inTex 179 #define GHOSTSPINORTEX param.ghostTex 181 #define SPINORTEX spinorTexDouble 182 #define GHOSTSPINORTEX ghostSpinorTexDouble 183 #endif // USE_TEXTURE_OBJECTS 185 #if (defined DIRECT_ACCESS_WILSON_INTER) || (defined FERMI_NO_DBLE_TEX) 186 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_DOUBLE 187 #define INTERTEX param.out 189 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_DOUBLE_TEX 190 #ifdef USE_TEXTURE_OBJECTS 191 #define INTERTEX param.outTex 193 #define INTERTEX interTexDouble 196 #define WRITE_SPINOR WRITE_SPINOR_DOUBLE2 197 #define SPINOR_DOUBLE 199 #if (defined DIRECT_ACCESS_WILSON_ACCUM) || (defined FERMI_NO_DBLE_TEX) 200 #define ACCUMTEX param.x 201 #define READ_ACCUM READ_ACCUM_DOUBLE 203 #ifdef USE_TEXTURE_OBJECTS 204 #define ACCUMTEX param.xTex 206 #define ACCUMTEX accumTexDouble 207 #endif // USE_TEXTURE_OBJECTS 208 #define READ_ACCUM READ_ACCUM_DOUBLE_TEX 213 #define SPINOR_HOP 12 215 #elif (DD_PREC==1) // single-precision fields 217 #define TPROJSCALE param.tProjScale_f 220 #ifdef DIRECT_ACCESS_LINK 221 #define GAUGE0TEX param.gauge0 222 #define GAUGE1TEX param.gauge1 224 #ifdef USE_TEXTURE_OBJECTS 225 #define GAUGE0TEX param.gauge0Tex 226 #define GAUGE1TEX param.gauge1Tex 228 #if (DD_RECON_F == 18) 229 #define GAUGE0TEX gauge0TexSingle2 230 #define GAUGE1TEX gauge1TexSingle2 232 #define GAUGE0TEX gauge0TexSingle4 233 #define GAUGE1TEX gauge1TexSingle4 235 #endif // USE_TEXTURE_OBJECTS 240 #ifdef DIRECT_ACCESS_WILSON_SPINOR 241 #define READ_SPINOR READ_SPINOR_SINGLE 242 #define READ_SPINOR_UP READ_SPINOR_SINGLE_UP 243 #define READ_SPINOR_DOWN READ_SPINOR_SINGLE_DOWN 244 #define SPINORTEX param.in 245 #define GHOSTSPINORTEX param.ghost 247 #define READ_SPINOR READ_SPINOR_SINGLE_TEX 248 #define READ_SPINOR_UP READ_SPINOR_SINGLE_UP_TEX 249 #define READ_SPINOR_DOWN READ_SPINOR_SINGLE_DOWN_TEX 250 #ifdef USE_TEXTURE_OBJECTS 251 #define SPINORTEX param.inTex 252 #define GHOSTSPINORTEX param.ghostTex 254 #define SPINORTEX spinorTexSingle 255 #define GHOSTSPINORTEX ghostSpinorTexSingle 256 #endif // USE_TEXTURE_OBJECTS 258 #ifdef DIRECT_ACCESS_WILSON_INTER 259 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_SINGLE 260 #define INTERTEX param.out 262 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_SINGLE_TEX 263 #ifdef USE_TEXTURE_OBJECTS 264 #define INTERTEX param.outTex 266 #define INTERTEX interTexSingle 267 #endif // USE_TEXTURE_OBJECTS 269 #define WRITE_SPINOR WRITE_SPINOR_FLOAT4 271 #ifdef DIRECT_ACCESS_WILSON_ACCUM 272 #define ACCUMTEX param.x 273 #define READ_ACCUM READ_ACCUM_SINGLE 275 #ifdef USE_TEXTURE_OBJECTS 276 #define ACCUMTEX param.xTex 278 #define ACCUMTEX accumTexSingle 279 #endif // USE_TEXTURE_OBJECTS 280 #define READ_ACCUM READ_ACCUM_SINGLE_TEX 286 #else // half-precision fields 288 #define TPROJSCALE param.tProjScale_f 291 #ifdef DIRECT_ACCESS_LINK 292 #define GAUGE0TEX param.gauge0 293 #define GAUGE1TEX param.gauge1 295 #ifdef USE_TEXTURE_OBJECTS 296 #define GAUGE0TEX param.gauge0Tex 297 #define GAUGE1TEX param.gauge1Tex 299 #if (DD_RECON_F == 18) 300 #define GAUGE0TEX gauge0TexHalf2 301 #define GAUGE1TEX gauge1TexHalf2 303 #define GAUGE0TEX gauge0TexHalf4 304 #define GAUGE1TEX gauge1TexHalf4 306 #endif // USE_TEXTURE_OBJECTS 311 #ifdef DIRECT_ACCESS_WILSON_SPINOR 312 #define READ_SPINOR READ_SPINOR_HALF 313 #define READ_SPINOR_UP READ_SPINOR_HALF_UP 314 #define READ_SPINOR_DOWN READ_SPINOR_HALF_DOWN 315 #define SPINORTEX param.in 316 #define GHOSTSPINORTEX param.ghost 318 #define READ_SPINOR READ_SPINOR_HALF_TEX 319 #define READ_SPINOR_UP READ_SPINOR_HALF_UP_TEX 320 #define READ_SPINOR_DOWN READ_SPINOR_HALF_DOWN_TEX 321 #ifdef USE_TEXTURE_OBJECTS 322 #define SPINORTEX param.inTex 323 #define GHOSTSPINORTEX param.ghostTex 325 #define SPINORTEX spinorTexHalf 326 #define GHOSTSPINORTEX ghostSpinorTexHalf 327 #endif // USE_TEXTURE_OBJECTS 329 #ifdef DIRECT_ACCESS_WILSON_INTER 330 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_HALF 331 #define INTERTEX param.out 333 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_HALF_TEX 334 #ifdef USE_TEXTURE_OBJECTS 335 #define INTERTEX param.outTex 337 #define INTERTEX interTexHalf 338 #endif // USE_TEXTURE_OBJECTS 340 #define WRITE_SPINOR WRITE_SPINOR_SHORT4 342 #ifdef DIRECT_ACCESS_WILSON_ACCUM 343 #define ACCUMTEX param.x 344 #define READ_ACCUM READ_ACCUM_HALF 346 #ifdef USE_TEXTURE_OBJECTS 347 #define ACCUMTEX param.xTex 349 #define ACCUMTEX accumTexHalf 350 #endif // USE_TEXTURE_OBJECTS 351 #define READ_ACCUM READ_ACCUM_HALF_TEX 360 #define DD_CONCAT(n,p,r,d,x) n ## p ## r ## d ## x ## Kernel 361 #define DD_FUNC(n,p,r,d,x) DD_CONCAT(n,p,r,d,x) 365 template <KernelType kernel_type>
369 #ifdef GPU_DOMAIN_WALL_DIRAC 394 #undef ASSN_GAUGE_MATRIX 395 #undef RECONSTRUCT_GAUGE_MATRIX 399 #undef READ_SPINOR_UP 400 #undef READ_SPINOR_DOWN 402 #undef GHOSTSPINORTEX 403 #undef READ_INTERMEDIATE_SPINOR
#define DD_FUNC(n, p, r, d, x)