4 #ifdef USE_TEXTURE_OBJECTS
5 #define TEX1DFETCH(type, tex, idx) tex1Dfetch<type>((tex), idx)
7 #define TEX1DFETCH(type, tex, idx) tex1Dfetch((tex), idx)
10 #if (__COMPUTE_CAPABILITY__ >= 130)
12 template<
typename Tex>
13 static __inline__ __device__
double fetch_double(Tex t,
int i)
16 return __hiloint2double(v.y, v.x);
19 template <
typename Tex>
20 static __inline__ __device__ double2
fetch_double2(Tex t,
int i)
23 return make_double2(__hiloint2double(v.y, v.x), __hiloint2double(v.w, v.z));
26 static __inline__ __device__ double2 fetch_double2_old(texture<int4, 1> t,
int i)
28 int4 v = tex1Dfetch(t,i);
29 return make_double2(__hiloint2double(v.y, v.x), __hiloint2double(v.w, v.z));
31 #endif //__COMPUTE_CAPABILITY__ >= 130
34 #ifndef USE_TEXTURE_OBJECTS
110 #endif // not defined USE_TEXTURE_OBJECTS
146 *gauge0 =
const_cast<void*
>(gauge.Odd_p());
147 *gauge1 =
const_cast<void*
>(gauge.Even_p());
149 *gauge0 =
const_cast<void*
>(gauge.Even_p());
150 *gauge1 =
const_cast<void*
>(gauge.Odd_p());
153 #ifdef USE_TEXTURE_OBJECTS
154 dslashParam.gauge0Tex = oddBit ? gauge.OddTex() : gauge.EvenTex();
155 dslashParam.gauge1Tex = oddBit ? gauge.EvenTex() : gauge.OddTex();
159 cudaBindTexture(0, gauge0TexDouble2, *gauge0, gauge.Bytes()/2);
160 cudaBindTexture(0, gauge1TexDouble2, *gauge1, gauge.Bytes()/2);
162 cudaBindTexture(0, gauge0TexSingle2, *gauge0, gauge.Bytes()/2);
163 cudaBindTexture(0, gauge1TexSingle2, *gauge1, gauge.Bytes()/2);
165 cudaBindTexture(0, gauge0TexHalf2, *gauge0, gauge.Bytes()/2);
166 cudaBindTexture(0, gauge1TexHalf2, *gauge1, gauge.Bytes()/2);
170 cudaBindTexture(0, gauge0TexDouble2, *gauge0, gauge.Bytes()/2);
171 cudaBindTexture(0, gauge1TexDouble2, *gauge1, gauge.Bytes()/2);
173 cudaBindTexture(0, gauge0TexSingle4, *gauge0, gauge.Bytes()/2);
174 cudaBindTexture(0, gauge1TexSingle4, *gauge1, gauge.Bytes()/2);
176 cudaBindTexture(0, gauge0TexHalf4, *gauge0, gauge.Bytes()/2);
177 cudaBindTexture(0, gauge1TexHalf4, *gauge1, gauge.Bytes()/2);
180 #endif // USE_TEXTURE_OBJECTS
186 #if (!defined USE_TEXTURE_OBJECTS)
189 cudaUnbindTexture(gauge0TexDouble2);
190 cudaUnbindTexture(gauge1TexDouble2);
192 cudaUnbindTexture(gauge0TexSingle2);
193 cudaUnbindTexture(gauge1TexSingle2);
195 cudaUnbindTexture(gauge0TexHalf2);
196 cudaUnbindTexture(gauge1TexHalf2);
200 cudaUnbindTexture(gauge0TexDouble2);
201 cudaUnbindTexture(gauge1TexDouble2);
203 cudaUnbindTexture(gauge0TexSingle4);
204 cudaUnbindTexture(gauge1TexSingle4);
206 cudaUnbindTexture(gauge0TexHalf4);
207 cudaUnbindTexture(gauge1TexHalf4);
216 *gauge0 =
const_cast<void*
>(gauge.Odd_p());
217 *gauge1 =
const_cast<void*
>(gauge.Even_p());
219 *gauge0 =
const_cast<void*
>(gauge.Even_p());
220 *gauge1 =
const_cast<void*
>(gauge.Odd_p());
223 #ifdef USE_TEXTURE_OBJECTS
224 dslashParam.gauge0Tex = oddBit ? gauge.OddTex() : gauge.EvenTex();
225 dslashParam.gauge1Tex = oddBit ? gauge.EvenTex() : gauge.OddTex();
228 cudaBindTexture(0, fatGauge0TexDouble, *gauge0, gauge.Bytes()/2);
229 cudaBindTexture(0, fatGauge1TexDouble, *gauge1, gauge.Bytes()/2);
231 cudaBindTexture(0, fatGauge0TexSingle, *gauge0, gauge.Bytes()/2);
232 cudaBindTexture(0, fatGauge1TexSingle, *gauge1, gauge.Bytes()/2);
234 cudaBindTexture(0, fatGauge0TexHalf, *gauge0, gauge.Bytes()/2);
235 cudaBindTexture(0, fatGauge1TexHalf, *gauge1, gauge.Bytes()/2);
237 #endif // USE_TEXTURE_OBJECTS
243 #if (!defined USE_TEXTURE_OBJECTS)
245 cudaUnbindTexture(fatGauge0TexDouble);
246 cudaUnbindTexture(fatGauge1TexDouble);
248 cudaUnbindTexture(fatGauge0TexSingle);
249 cudaUnbindTexture(fatGauge1TexSingle);
251 cudaUnbindTexture(fatGauge0TexHalf);
252 cudaUnbindTexture(fatGauge1TexHalf);
260 *gauge0 =
const_cast<void*
>(gauge.Odd_p());
261 *gauge1 =
const_cast<void*
>(gauge.Even_p());
263 *gauge0 =
const_cast<void*
>(gauge.Even_p());
264 *gauge1 =
const_cast<void*
>(gauge.Odd_p());
267 #ifdef USE_TEXTURE_OBJECTS
268 dslashParam.longGauge0Tex = oddBit ? gauge.OddTex() : gauge.EvenTex();
269 dslashParam.longGauge1Tex = oddBit ? gauge.EvenTex() : gauge.OddTex();
272 dslashParam.longPhase0Tex = oddBit ? gauge.OddPhaseTex() : gauge.EvenPhaseTex();
273 dslashParam.longPhase1Tex = oddBit ? gauge.EvenPhaseTex() : gauge.OddPhaseTex();
277 cudaBindTexture(0, longGauge0TexDouble, *gauge0, gauge.Bytes()/2);
278 cudaBindTexture(0, longGauge1TexDouble, *gauge1, gauge.Bytes()/2);
280 cudaBindTexture(0, longPhase0TexDouble, (
char*)(*gauge0) + gauge.PhaseOffset(), gauge.PhaseBytes()/2);
281 cudaBindTexture(0, longPhase1TexDouble, (
char*)(*gauge1) + gauge.PhaseOffset(), gauge.PhaseBytes()/2);
285 cudaBindTexture(0, longGauge0TexSingle_norecon, *gauge0, gauge.Bytes()/2);
286 cudaBindTexture(0, longGauge1TexSingle_norecon, *gauge1, gauge.Bytes()/2);
288 cudaBindTexture(0, longGauge0TexSingle, *gauge0, gauge.Bytes()/2);
289 cudaBindTexture(0, longGauge1TexSingle, *gauge1, gauge.Bytes()/2);
291 cudaBindTexture(0, longPhase0TexSingle, (
char*)(*gauge0) + gauge.PhaseOffset(), gauge.PhaseBytes()/2);
292 cudaBindTexture(0, longPhase1TexSingle, (
char*)(*gauge1) + gauge.PhaseOffset(), gauge.PhaseBytes()/2);
297 cudaBindTexture(0, longGauge0TexHalf_norecon, *gauge0, gauge.Bytes()/2);
298 cudaBindTexture(0, longGauge1TexHalf_norecon, *gauge1, gauge.Bytes()/2);
300 cudaBindTexture(0, longGauge0TexHalf, *gauge0, gauge.Bytes()/2);
301 cudaBindTexture(0, longGauge1TexHalf, *gauge1, gauge.Bytes()/2);
303 cudaBindTexture(0, longPhase0TexHalf, (
char*)(*gauge0) + gauge.PhaseOffset(), gauge.PhaseBytes()/2);
304 cudaBindTexture(0, longPhase1TexHalf, (
char*)(*gauge1) + gauge.PhaseOffset(), gauge.PhaseBytes()/2);
308 #endif // USE_TEXTURE_OBJECTS
313 #if (!defined USE_TEXTURE_OBJECTS)
315 cudaUnbindTexture(longGauge0TexDouble);
316 cudaUnbindTexture(longGauge1TexDouble);
318 cudaUnbindTexture(longPhase0TexDouble);
319 cudaUnbindTexture(longPhase1TexDouble);
323 cudaUnbindTexture(longGauge0TexSingle_norecon);
324 cudaUnbindTexture(longGauge1TexSingle_norecon);
326 cudaUnbindTexture(longGauge0TexSingle);
327 cudaUnbindTexture(longGauge1TexSingle);
329 cudaUnbindTexture(longPhase0TexSingle);
330 cudaUnbindTexture(longPhase1TexSingle);
335 cudaUnbindTexture(longGauge0TexHalf_norecon);
336 cudaUnbindTexture(longGauge1TexHalf_norecon);
338 cudaUnbindTexture(longGauge0TexHalf);
339 cudaUnbindTexture(longGauge1TexHalf);
341 cudaUnbindTexture(longPhase0TexHalf);
342 cudaUnbindTexture(longPhase1TexHalf);
350 template <
typename spinorFloat>
352 const cudaColorSpinorField *
x=0) {
353 int size = (
sizeof(((
spinorFloat*)0)->x) <
sizeof(
float)) ?
sizeof(
float) :
356 #ifdef USE_TEXTURE_OBJECTS
357 dslashParam.inTex = in->Tex();
358 dslashParam.inTexNorm = in->TexNorm();
359 if (
out) dslashParam.outTex =
out->Tex();
360 if (
out) dslashParam.outTexNorm =
out->TexNorm();
361 if (
x) dslashParam.xTex =
x->Tex();
362 if (
x) dslashParam.xTexNorm =
x->TexNorm();
365 cudaBindTexture(0, spinorTexDouble, in->V(), in->Bytes());
366 if (
out) cudaBindTexture(0, interTexDouble,
out->V(), in->Bytes());
367 if (
x) cudaBindTexture(0, accumTexDouble,
x->V(), in->Bytes());
368 }
else if (
typeid(
spinorFloat) ==
typeid(float4)) {
369 cudaBindTexture(0, spinorTexSingle, in->V(), in->Bytes());
370 if (
out) cudaBindTexture(0, interTexSingle,
out->V(), in->Bytes());
371 if (
x) cudaBindTexture(0, accumTexSingle,
x->V(), in->Bytes());
372 }
else if (
typeid(
spinorFloat) ==
typeid(float2)) {
373 cudaBindTexture(0, spinorTexSingle2, in->V(), in->Bytes());
374 if (
out) cudaBindTexture(0, interTexSingle2,
out->V(), in->Bytes());
375 if (
x) cudaBindTexture(0, accumTexSingle2,
x->V(), in->Bytes());
376 }
else if (
typeid(
spinorFloat) ==
typeid(short4)) {
377 cudaBindTexture(0, spinorTexHalf, in->V(), in->Bytes());
378 cudaBindTexture(0, spinorTexHalfNorm, in->Norm(), in->NormBytes());
379 if (
out) cudaBindTexture(0, interTexHalf,
out->V(), in->Bytes());
380 if (
out) cudaBindTexture(0, interTexHalfNorm,
out->Norm(), in->NormBytes());
381 if (
x) cudaBindTexture(0, accumTexHalf,
x->V(), in->Bytes());
382 if (
x) cudaBindTexture(0, accumTexHalfNorm,
x->Norm(), in->NormBytes());
383 }
else if (
typeid(
spinorFloat) ==
typeid(short2)) {
384 cudaBindTexture(0, spinorTexHalf2, in->V(), in->Bytes());
385 cudaBindTexture(0, spinorTexHalf2Norm, in->Norm(), in->NormBytes());
386 if (
out) cudaBindTexture(0, interTexHalf2,
out->V(), in->Bytes());
387 if (
out) cudaBindTexture(0, interTexHalf2Norm,
out->Norm(), in->NormBytes());
388 if (
x) cudaBindTexture(0, accumTexHalf2,
x->V(), in->Bytes());
389 if (
x) cudaBindTexture(0, accumTexHalf2Norm,
x->Norm(), in->NormBytes());
391 errorQuda(
"Unsupported precision and short vector type");
393 #endif // USE_TEXTURE_OBJECTS
398 template <
typename spinorFloat>
400 const cudaColorSpinorField *
x=0) {
401 #ifndef USE_TEXTURE_OBJECTS
403 cudaUnbindTexture(spinorTexDouble);
404 if (
out) cudaUnbindTexture(interTexDouble);
405 if (
x) cudaUnbindTexture(accumTexDouble);
406 }
else if (
typeid(
spinorFloat) ==
typeid(float4)) {
407 cudaUnbindTexture(spinorTexSingle);
408 if (
out) cudaUnbindTexture(interTexSingle);
409 if (
x) cudaUnbindTexture(accumTexSingle);
410 }
else if (
typeid(
spinorFloat) ==
typeid(float2)) {
411 cudaUnbindTexture(spinorTexSingle2);
412 if (
out) cudaUnbindTexture(interTexSingle2);
413 if (
x) cudaUnbindTexture(accumTexSingle2);
414 }
else if (
typeid(
spinorFloat) ==
typeid(short4)) {
415 cudaUnbindTexture(spinorTexHalf);
416 cudaUnbindTexture(spinorTexHalfNorm);
417 if (
out) cudaUnbindTexture(interTexHalf);
418 if (
out) cudaUnbindTexture(interTexHalfNorm);
419 if (
x) cudaUnbindTexture(accumTexHalf);
420 if (
x) cudaUnbindTexture(accumTexHalfNorm);
421 }
else if (
typeid(
spinorFloat) ==
typeid(short2)) {
422 cudaUnbindTexture(spinorTexHalf2);
423 cudaUnbindTexture(spinorTexHalf2Norm);
424 if (
out) cudaUnbindTexture(interTexHalf2);
425 if (
out) cudaUnbindTexture(interTexHalf2Norm);
426 if (
x) cudaUnbindTexture(accumTexHalf2);
427 if (
x) cudaUnbindTexture(accumTexHalf2Norm);
429 errorQuda(
"Unsupported precision and short vector type");
431 #endif // USE_TEXTURE_OBJECTS
450 void **cloverP,
void **cloverNormP)
454 *cloverP = clover.odd;
455 *cloverNormP = clover.oddNorm;
457 *cloverP = clover.even;
458 *cloverNormP = clover.evenNorm;
461 #ifdef USE_TEXTURE_OBJECTS
462 dslashParam.cloverTex = oddBit ? clover.OddTex() : clover.EvenTex();
463 if (clover.precision ==
QUDA_HALF_PRECISION) dslashParam.cloverNormTex = oddBit ? clover.OddNormTex() : clover.EvenNormTex();
466 cudaBindTexture(0, cloverTexDouble, *cloverP, clover.bytes);
468 cudaBindTexture(0, cloverTexSingle, *cloverP, clover.bytes);
470 cudaBindTexture(0, cloverTexHalf, *cloverP, clover.bytes);
471 cudaBindTexture(0, cloverTexNorm, *cloverNormP, clover.norm_bytes);
473 #endif // USE_TEXTURE_OBJECTS
475 return clover.precision;
480 #if (!defined USE_TEXTURE_OBJECTS)
482 cudaUnbindTexture(cloverTexDouble);
484 cudaUnbindTexture(cloverTexSingle);
486 cudaUnbindTexture(cloverTexHalf);
487 cudaUnbindTexture(cloverTexNorm);
489 #endif // not defined USE_TEXTURE_OBJECTS
496 *cloverP = clover.odd;
497 *cloverNormP = clover.oddNorm;
498 *cloverInvP = cloverInv.odd;
499 *cloverInvNormP = cloverInv.oddNorm;
503 *cloverP = clover.even;
504 *cloverNormP = clover.evenNorm;
505 *cloverInvP = cloverInv.even;
506 *cloverInvNormP = cloverInv.evenNorm;
509 #ifdef USE_TEXTURE_OBJECTS
510 dslashParam.cloverTex = oddBit ? clover.OddTex() : clover.EvenTex();
511 if (clover.precision ==
QUDA_HALF_PRECISION) dslashParam.cloverNormTex = oddBit ? clover.OddNormTex() : clover.EvenNormTex();
512 dslashParam.cloverInvTex = oddBit ? cloverInv.OddTex() : cloverInv.EvenTex();
513 if (cloverInv.precision ==
QUDA_HALF_PRECISION) dslashParam.cloverInvNormTex = oddBit ? cloverInv.OddNormTex() : cloverInv.EvenNormTex();
517 cudaBindTexture(0, cloverTexDouble, *cloverP, clover.bytes);
518 cudaBindTexture(0, cloverInvTexDouble, *cloverInvP, cloverInv.bytes);
522 cudaBindTexture(0, cloverTexSingle, *cloverP, clover.bytes);
523 cudaBindTexture(0, cloverInvTexSingle, *cloverInvP, cloverInv.bytes);
527 cudaBindTexture(0, cloverTexHalf, *cloverP, clover.bytes);
528 cudaBindTexture(0, cloverTexNorm, *cloverNormP, clover.norm_bytes);
529 cudaBindTexture(0, cloverInvTexHalf, *cloverInvP, cloverInv.bytes);
530 cudaBindTexture(0, cloverInvTexNorm, *cloverInvNormP, cloverInv.norm_bytes);
532 #endif // USE_TEXTURE_OBJECTS
534 return clover.precision;
539 #if (!defined USE_TEXTURE_OBJECTS)
542 cudaUnbindTexture(cloverTexDouble);
543 cudaUnbindTexture(cloverInvTexDouble);
547 cudaUnbindTexture(cloverTexSingle);
548 cudaUnbindTexture(cloverInvTexSingle);
552 cudaUnbindTexture(cloverTexHalf);
553 cudaUnbindTexture(cloverTexNorm);
554 cudaUnbindTexture(cloverInvTexHalf);
555 cudaUnbindTexture(cloverInvTexNorm);
557 #endif // not defined USE_TEXTURE_OBJECTS
561 #if defined(DIRECT_ACCESS_LINK) || defined(DIRECT_ACCESS_WILSON_SPINOR) || \
562 defined(DIRECT_ACCESS_WILSON_ACCUM) || defined(DIRECT_ACCESS_WILSON_PACK_SPINOR) || \
563 defined(DIRECT_ACCESS_WILSON_INTER) || defined(DIRECT_ACCESS_WILSON_PACK_SPINOR) || \
564 defined(DIRECT_ACCESS_CLOVER)
566 static inline __device__
float short2float(
short a) {
570 static inline __device__
short float2short(
float c,
float a) {
574 static inline __device__ short4 float42short4(
float c, float4 a) {
575 return make_short4(float2short(c, a.x), float2short(c, a.y), float2short(c, a.z), float2short(c, a.w));
578 static inline __device__ float4 short42float4(short4 a) {
579 return make_float4(short2float(a.x), short2float(a.y), short2float(a.z), short2float(a.w));
582 static inline __device__ float2 short22float2(short2 a) {
583 return make_float2(short2float(a.x), short2float(a.y));
585 #endif // DIRECT_ACCESS inclusions
texture< short4, 1, cudaReadModeNormalizedFloat > cloverInvTexHalf
QudaPrecision bindTwistedCloverTex(const FullClover clover, const FullClover cloverInv, const int oddBit, void **cloverP, void **cloverNormP, void **cloverInvP, void **cloverInvNormP)
void unbindGaugeTex(const cudaGaugeField &gauge)
texture< short, 1, cudaReadModeNormalizedFloat > longPhase0TexHalf
enum QudaPrecision_s QudaPrecision
texture< short4, 1, cudaReadModeNormalizedFloat > gauge1TexHalf4
void bindFatGaugeTex(const cudaGaugeField &gauge, const int oddBit, void **gauge0, void **gauge1)
texture< int4, 1 > muLink0TexDouble
texture< float2, 1, cudaReadModeElementType > longGauge0TexSingle_norecon
texture< int4, 1 > cloverInvTexDouble
texture< float, 1, cudaReadModeElementType > longPhase1TexSingle
texture< float4, 1, cudaReadModeElementType > gauge0TexSingle4
texture< float2, 1, cudaReadModeElementType > fatGauge1TexSingle
texture< int4, 1 > fatGauge0TexDouble
texture< int4, 1 > accumTexDouble
void bindLongGaugeTex(const cudaGaugeField &gauge, const int oddBit, void **gauge0, void **gauge1)
texture< short2, 1, cudaReadModeNormalizedFloat > fatGauge0TexHalf
texture< int2, 1 > longPhase0TexDouble
texture< float2, 1, cudaReadModeElementType > longGauge1TexSingle_norecon
texture< short4, 1, cudaReadModeNormalizedFloat > spinorTexHalf
texture< short2, 1, cudaReadModeNormalizedFloat > spinorTexHalf2
texture< float, 1, cudaReadModeElementType > interTexHalf2Norm
texture< short2, 1, cudaReadModeNormalizedFloat > gauge1TexHalf2
texture< float2, 1, cudaReadModeElementType > gauge1TexSingle2
texture< float2, 1, cudaReadModeElementType > siteLink0TexSingle_norecon
void unbindSpinorTex(const cudaColorSpinorField *in, const cudaColorSpinorField *out=0, const cudaColorSpinorField *x=0)
texture< float2, 1, cudaReadModeElementType > siteLink1TexSingle_norecon
texture< short2, 1, cudaReadModeNormalizedFloat > fatGauge1TexHalf
__inline__ __device__ double fetch_double(texture< int2, 1 > t, int i)
texture< float4, 1, cudaReadModeElementType > longGauge1TexSingle
texture< int4, 1 > interTexDouble
texture< float, 1, cudaReadModeElementType > cloverInvTexNorm
texture< float4, 1, cudaReadModeElementType > siteLink1TexSingle_recon
texture< short2, 1, cudaReadModeNormalizedFloat > accumTexHalf2
texture< float2, 1, cudaReadModeElementType > spinorTexSingle2
texture< int4, 1 > siteLink1TexDouble
texture< float4, 1, cudaReadModeElementType > gauge1TexSingle4
texture< float4, 1, cudaReadModeElementType > cloverTexSingle
void unbindLongGaugeTex(const cudaGaugeField &gauge)
texture< short2, 1, cudaReadModeNormalizedFloat > longGauge0TexHalf_norecon
texture< int4, 1 > gauge0TexDouble2
texture< float2, 1, cudaReadModeElementType > siteLink0TexSingle
texture< float2, 1, cudaReadModeElementType > accumTexSingle2
texture< int4, 1 > spinorTexDouble
texture< float4, 1, cudaReadModeElementType > spinorTexSingle
texture< float4, 1, cudaReadModeElementType > accumTexSingle
texture< int4, 1 > cloverTexDouble
int bindSpinorTex(const cudaColorSpinorField *in, const cudaColorSpinorField *out=0, const cudaColorSpinorField *x=0)
texture< float2, 1, cudaReadModeElementType > siteLink1TexSingle
texture< float4, 1, cudaReadModeElementType > interTexSingle
texture< int4, 1 > muLink1TexDouble
texture< short2, 1, cudaReadModeNormalizedFloat > interTexHalf2
texture< float4, 1, cudaReadModeElementType > longGauge0TexSingle
texture< float2, 1, cudaReadModeElementType > interTexSingle2
texture< float2, 1, cudaReadModeElementType > muLink1TexSingle
texture< float2, 1, cudaReadModeElementType > muLink0TexSingle
texture< int4, 1 > fatGauge1TexDouble
void unbindCloverTex(const FullClover clover)
__inline__ __device__ double2 fetch_double2(texture< int4, 1 > t, int i)
texture< int2, 1 > longPhase1TexDouble
texture< float, 1, cudaReadModeElementType > longPhase0TexSingle
texture< float4, 1, cudaReadModeElementType > siteLink0TexSingle_recon
texture< short4, 1, cudaReadModeNormalizedFloat > longGauge0TexHalf
texture< float, 1, cudaReadModeElementType > accumTexHalfNorm
texture< float2, 1, cudaReadModeElementType > fatGauge0TexSingle
texture< short4, 1, cudaReadModeNormalizedFloat > longGauge1TexHalf
cpuColorSpinorField * out
texture< float, 1, cudaReadModeElementType > interTexHalfNorm
texture< short, 1, cudaReadModeNormalizedFloat > longPhase1TexHalf
texture< float, 1, cudaReadModeElementType > cloverTexNorm
texture< float, 1, cudaReadModeElementType > spinorTexHalfNorm
texture< short4, 1, cudaReadModeNormalizedFloat > interTexHalf
texture< int4, 1 > longGauge0TexDouble
texture< float, 1, cudaReadModeElementType > accumTexHalf2Norm
texture< short4, 1, cudaReadModeNormalizedFloat > accumTexHalf
texture< short2, 1, cudaReadModeNormalizedFloat > gauge0TexHalf2
void bindGaugeTex(const cudaGaugeField &gauge, const int oddBit, void **gauge0, void **gauge1)
QudaPrecision bindCloverTex(const FullClover clover, const int oddBit, void **cloverP, void **cloverNormP)
texture< int4, 1 > longGauge1TexDouble
texture< short4, 1, cudaReadModeNormalizedFloat > cloverTexHalf
texture< int4, 1 > siteLink0TexDouble
void unbindTwistedCloverTex(const FullClover clover)
texture< float4, 1, cudaReadModeElementType > cloverInvTexSingle
texture< short4, 1, cudaReadModeNormalizedFloat > gauge0TexHalf4
texture< int4, 1 > gauge1TexDouble2
texture< float, 1, cudaReadModeElementType > spinorTexHalf2Norm
texture< float2, 1, cudaReadModeElementType > gauge0TexSingle2
#define TEX1DFETCH(type, tex, idx)
void unbindFatGaugeTex(const cudaGaugeField &gauge)
texture< short2, 1, cudaReadModeNormalizedFloat > longGauge1TexHalf_norecon