41 #define DD_NAME_F twistedNdegMassDslash 43 #if (DD_DAG==0) // no dagger 46 #define DD_DAG_F Dagger 49 #if (DD_XPAY==0) // no xpay 53 #define DD_XPAY_F Xpay 57 #if (DD_TWIST==0) // no twist 61 #define DD_TWIST_F Twist 73 #if (DD_RECON==0) // reconstruct from 8 reals 77 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_8_DOUBLE 78 #ifdef DIRECT_ACCESS_LINK 79 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_8_DOUBLE2 81 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_8_DOUBLE2_TEX 82 #endif // DIRECT_ACCESS_LINK 85 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_8_SINGLE 86 #ifdef DIRECT_ACCESS_LINK 87 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_8_FLOAT4 89 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_8_FLOAT4_TEX 90 #endif // DIRECT_ACCESS_LINK 93 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_8_SINGLE 94 #ifdef DIRECT_ACCESS_LINK 95 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_8_SHORT4 97 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_8_SHORT4_TEX 98 #endif // DIRECT_ACCESS_LINK 100 #elif (DD_RECON==1) // reconstruct from 12 reals 101 #define DD_RECON_F 12 104 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_12_DOUBLE 105 #ifdef DIRECT_ACCESS_LINK 106 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_12_DOUBLE2 108 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_12_DOUBLE2_TEX 109 #endif // DIRECT_ACCESS_LINK 112 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_12_SINGLE 113 #ifdef DIRECT_ACCESS_LINK 114 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_12_FLOAT4 116 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_12_FLOAT4_TEX 117 #endif // DIRECT_ACCESS_LINK 120 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_12_SINGLE 121 #ifdef DIRECT_ACCESS_LINK 122 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_12_SHORT4 124 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_12_SHORT4_TEX 125 #endif // DIRECT_ACCESS_LINK 127 #else // no reconstruct, load all components 128 #define DD_RECON_F 18 131 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_18_DOUBLE 132 #ifdef DIRECT_ACCESS_LINK 133 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_18_DOUBLE2 135 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_18_DOUBLE2_TEX 136 #endif // DIRECT_ACCESS_LINK 139 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_18_SINGLE 140 #ifdef DIRECT_ACCESS_LINK 141 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_18_FLOAT2 143 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_18_FLOAT2_TEX 144 #endif // DIRECT_ACCESS_LINK 147 #define RECONSTRUCT_GAUGE_MATRIX RECONSTRUCT_MATRIX_18_SINGLE 148 #ifdef DIRECT_ACCESS_LINK 149 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_18_SHORT2 151 #define READ_GAUGE_MATRIX READ_GAUGE_MATRIX_18_SHORT2_TEX 152 #endif //DIRECT_ACCESS_LINK 156 #if (DD_PREC==0) // double-precision fields 158 #define TPROJSCALE param.tProjScale 161 #if (defined DIRECT_ACCESS_LINK) || (defined FERMI_NO_DBLE_TEX) 162 #define GAUGE0TEX param.gauge0 163 #define GAUGE1TEX param.gauge1 165 #ifdef USE_TEXTURE_OBJECTS 166 #define GAUGE0TEX param.gauge0Tex 167 #define GAUGE1TEX param.gauge1Tex 169 #define GAUGE0TEX gauge0TexDouble2 170 #define GAUGE1TEX gauge1TexDouble2 171 #endif // USE_TEXTURE_OBJECTS 177 #if (defined DIRECT_ACCESS_WILSON_SPINOR) || (defined FERMI_NO_DBLE_TEX) 178 #define READ_SPINOR READ_SPINOR_DOUBLE 179 #define READ_SPINOR_GHOST READ_SPINOR_GHOST_DOUBLE 180 #define READ_SPINOR_UP READ_SPINOR_DOUBLE_UP 181 #define READ_SPINOR_DOWN READ_SPINOR_DOUBLE_DOWN 182 #define SPINORTEX param.in 184 #define READ_SPINOR READ_SPINOR_DOUBLE_TEX 185 #define READ_SPINOR_GHOST READ_SPINOR_GHOST_DOUBLE_TEX 186 #define READ_SPINOR_UP READ_SPINOR_DOUBLE_UP_TEX 187 #define READ_SPINOR_DOWN READ_SPINOR_DOUBLE_DOWN_TEX 188 #ifdef USE_TEXTURE_OBJECTS 189 #define SPINORTEX param.inTex 190 #define GHOSTSPINORTEX param.ghostTex 192 #define SPINORTEX spinorTexDouble 193 #define GHOSTSPINORTEX ghostSpinorTexDouble 194 #endif // USE_TEXTURE_OBJECTS 196 #if (defined DIRECT_ACCESS_WILSON_INTER) || (defined FERMI_NO_DBLE_TEX) 197 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_DOUBLE 198 #define INTERTEX param.out 200 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_DOUBLE_TEX 201 #ifdef USE_TEXTURE_OBJECTS 202 #define INTERTEX param.outTex 204 #define INTERTEX interTexDouble 207 #define WRITE_FLAVOR_SPINOR WRITE_FLAVOR_SPINOR_DOUBLE2 208 #define SPINOR_DOUBLE 210 #if (defined DIRECT_ACCESS_WILSON_ACCUM) || (defined FERMI_NO_DBLE_TEX) 211 #define ACCUMTEX param.x 212 #define READ_ACCUM READ_ACCUM_DOUBLE 213 #define ASSN_ACCUM ASSN_ACCUM_DOUBLE 215 #define READ_ACCUM_FLAVOR READ_ACCUM_FLAVOR_DOUBLE 217 #ifdef USE_TEXTURE_OBJECTS 218 #define ACCUMTEX param.xTex 220 #define ACCUMTEX accumTexDouble 221 #endif // USE_TEXTURE_OBJECTS 222 #define READ_ACCUM READ_ACCUM_DOUBLE_TEX 223 #define ASSN_ACCUM ASSN_ACCUM_DOUBLE_TEX 225 #define READ_ACCUM_FLAVOR READ_ACCUM_FLAVOR_DOUBLE_TEX 230 #define SPINOR_HOP 12 232 #elif (DD_PREC==1) // single-precision fields 234 #define TPROJSCALE param.tProjScale_f 237 #ifdef DIRECT_ACCESS_LINK 238 #define GAUGE0TEX param.gauge0 239 #define GAUGE1TEX param.gauge1 241 #ifdef USE_TEXTURE_OBJECTS 242 #define GAUGE0TEX param.gauge0Tex 243 #define GAUGE1TEX param.gauge1Tex 245 #if (DD_RECON_F == 18) 246 #define GAUGE0TEX gauge0TexSingle2 247 #define GAUGE1TEX gauge1TexSingle2 249 #define GAUGE0TEX gauge0TexSingle4 250 #define GAUGE1TEX gauge1TexSingle4 252 #endif // USE_TEXTURE_OBJECTS 257 #ifdef DIRECT_ACCESS_WILSON_SPINOR 258 #define READ_SPINOR READ_SPINOR_SINGLE 259 #define READ_SPINOR_GHOST READ_SPINOR_GHOST_SINGLE 260 #define READ_SPINOR_UP READ_SPINOR_SINGLE_UP 261 #define READ_SPINOR_DOWN READ_SPINOR_SINGLE_DOWN 262 #define SPINORTEX param.in 264 #define READ_SPINOR READ_SPINOR_SINGLE_TEX 265 #define READ_SPINOR_GHOST READ_SPINOR_GHOST_SINGLE_TEX 266 #define READ_SPINOR_UP READ_SPINOR_SINGLE_UP_TEX 267 #define READ_SPINOR_DOWN READ_SPINOR_SINGLE_DOWN_TEX 268 #ifdef USE_TEXTURE_OBJECTS 269 #define SPINORTEX param.inTex 270 #define GHOSTSPINORTEX param.ghostTex 272 #define SPINORTEX spinorTexSingle 273 #define GHOSTSPINORTEX ghostSpinorTexSingle 274 #endif // USE_TEXTURE_OBJECTS 276 #ifdef DIRECT_ACCESS_WILSON_INTER 277 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_SINGLE 278 #define INTERTEX param.out 280 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_SINGLE_TEX 281 #ifdef USE_TEXTURE_OBJECTS 282 #define INTERTEX param.outTex 284 #define INTERTEX interTexSingle 285 #endif // USE_TEXTURE_OBJECTS 287 #define WRITE_FLAVOR_SPINOR WRITE_FLAVOR_SPINOR_FLOAT4 289 #ifdef DIRECT_ACCESS_WILSON_ACCUM 290 #define ACCUMTEX param.x 291 #define READ_ACCUM READ_ACCUM_SINGLE 292 #define ASSN_ACCUM ASSN_ACCUM_SINGLE 294 #define READ_ACCUM_FLAVOR READ_ACCUM_FLAVOR_SINGLE 296 #ifdef USE_TEXTURE_OBJECTS 297 #define ACCUMTEX param.xTex 299 #define ACCUMTEX accumTexSingle 300 #endif // USE_TEXTURE_OBJECTS 301 #define READ_ACCUM READ_ACCUM_SINGLE_TEX 302 #define ASSN_ACCUM ASSN_ACCUM_SINGLE_TEX 304 #define READ_ACCUM_FLAVOR READ_ACCUM_FLAVOR_SINGLE_TEX 310 #else // half-precision fields 312 #define TPROJSCALE param.tProjScale_f 315 #ifdef DIRECT_ACCESS_LINK 316 #define GAUGE0TEX param.gauge0 317 #define GAUGE1TEX param.gauge1 319 #ifdef USE_TEXTURE_OBJECTS 320 #define GAUGE0TEX param.gauge0Tex 321 #define GAUGE1TEX param.gauge1Tex 323 #if (DD_RECON_F == 18) 324 #define GAUGE0TEX gauge0TexHalf2 325 #define GAUGE1TEX gauge1TexHalf2 327 #define GAUGE0TEX gauge0TexHalf4 328 #define GAUGE1TEX gauge1TexHalf4 330 #endif // USE_TEXTURE_OBJECTS 335 #ifdef DIRECT_ACCESS_WILSON_SPINOR 336 #define READ_SPINOR READ_SPINOR_HALF 337 #define READ_SPINOR_GHOST READ_SPINOR_GHOST_HALF 338 #define READ_SPINOR_UP READ_SPINOR_HALF_UP 339 #define READ_SPINOR_DOWN READ_SPINOR_HALF_DOWN 340 #define SPINORTEX param.in 342 #define READ_SPINOR READ_SPINOR_HALF_TEX 343 #define READ_SPINOR_GHOST READ_SPINOR_GHOST_HALF_TEX 344 #define READ_SPINOR_UP READ_SPINOR_HALF_UP_TEX 345 #define READ_SPINOR_DOWN READ_SPINOR_HALF_DOWN_TEX 346 #ifdef USE_TEXTURE_OBJECTS 347 #define SPINORTEX param.inTex 348 #define GHOSTSPINORTEX param.ghostTex 350 #define SPINORTEX spinorTexHalf 351 #define GHOSTSPINORTEX ghostSpinorTexHalf 352 #endif // USE_TEXTURE_OBJECTS 354 #ifdef DIRECT_ACCESS_WILSON_INTER 355 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_HALF 356 #define INTERTEX param.out 358 #define READ_INTERMEDIATE_SPINOR READ_SPINOR_HALF_TEX 359 #ifdef USE_TEXTURE_OBJECTS 360 #define INTERTEX param.outTex 362 #define INTERTEX interTexHalf 363 #endif // USE_TEXTURE_OBJECTS 365 #define WRITE_FLAVOR_SPINOR WRITE_FLAVOR_SPINOR_SHORT4 367 #ifdef DIRECT_ACCESS_WILSON_ACCUM 368 #define ACCUMTEX param.x 369 #define READ_ACCUM READ_ACCUM_HALF 370 #define ASSN_ACCUM ASSN_ACCUM_HALF 372 #define READ_ACCUM_FLAVOR READ_ACCUM_FLAVOR_HALF 374 #ifdef USE_TEXTURE_OBJECTS 375 #define ACCUMTEX param.xTex 377 #define ACCUMTEX accumTexHalf 378 #endif // USE_TEXTURE_OBJECTS 379 #define READ_ACCUM READ_ACCUM_HALF_TEX 380 #define ASSN_ACCUM ASSN_ACCUM_HALF_TEX 382 #define READ_ACCUM_FLAVOR READ_ACCUM_FLAVOR_HALF_TEX 391 #define DD_CONCAT(n,p,r,d,t,x) n ## p ## r ## d ## t ## x ## Kernel 392 #define DD_FUNC(n,p,r,d,t,x) DD_CONCAT(n,p,r,d,t,x) 396 template <KernelType kernel_type>
400 #ifdef GPU_NDEG_TWISTED_MASS_DIRAC 415 #ifdef GPU_NDEG_TWISTED_MASS_DIRAC 440 #undef READ_GAUGE_MATRIX 441 #undef RECONSTRUCT_GAUGE_MATRIX 445 #undef READ_SPINOR_GHOST 446 #undef READ_SPINOR_UP 447 #undef READ_SPINOR_DOWN 449 #undef GHOSTSPINORTEX 450 #undef READ_INTERMEDIATE_SPINOR 455 #undef READ_ACCUM_FLAVOR 457 #undef WRITE_FLAVOR_SPINOR
#define DD_FUNC(n, p, r, d, t, x)