QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Namespaces | Macros | Functions
register_traits.h File Reference

Provides precision abstractions and defines the register precision given the storage precision using C++ traits. More...

#include <quda_internal.h>
#include <convert.h>
#include <generics/ldg.h>
#include <complex_quda.h>
#include <inline_ptx.h>
Include dependency graph for register_traits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  quda::PromoteTypeId< T, U >
 
struct  quda::PromoteTypeId< complex< float >, float >
 
struct  quda::PromoteTypeId< float, complex< float > >
 
struct  quda::PromoteTypeId< complex< double >, double >
 
struct  quda::PromoteTypeId< double, complex< double > >
 
struct  quda::PromoteTypeId< double, int >
 
struct  quda::PromoteTypeId< int, double >
 
struct  quda::PromoteTypeId< float, int >
 
struct  quda::PromoteTypeId< int, float >
 
struct  quda::PromoteTypeId< double, float >
 
struct  quda::PromoteTypeId< float, double >
 
struct  quda::mapper< typename >
 
struct  quda::mapper< double >
 
struct  quda::mapper< float >
 
struct  quda::mapper< short >
 
struct  quda::mapper< char >
 
struct  quda::mapper< double2 >
 
struct  quda::mapper< float2 >
 
struct  quda::mapper< short2 >
 
struct  quda::mapper< char2 >
 
struct  quda::mapper< double4 >
 
struct  quda::mapper< float4 >
 
struct  quda::mapper< short4 >
 
struct  quda::mapper< char4 >
 
struct  quda::bridge_mapper< typename, typename >
 
struct  quda::bridge_mapper< double2, double2 >
 
struct  quda::bridge_mapper< double2, float2 >
 
struct  quda::bridge_mapper< double2, short2 >
 
struct  quda::bridge_mapper< double2, char2 >
 
struct  quda::bridge_mapper< double2, float4 >
 
struct  quda::bridge_mapper< double2, short4 >
 
struct  quda::bridge_mapper< double2, char4 >
 
struct  quda::bridge_mapper< float4, double2 >
 
struct  quda::bridge_mapper< float4, float4 >
 
struct  quda::bridge_mapper< float4, short4 >
 
struct  quda::bridge_mapper< float4, char4 >
 
struct  quda::bridge_mapper< float2, double2 >
 
struct  quda::bridge_mapper< float2, float2 >
 
struct  quda::bridge_mapper< float2, short2 >
 
struct  quda::bridge_mapper< float2, char2 >
 
struct  quda::vec_length< typename >
 
struct  quda::vec_length< double4 >
 
struct  quda::vec_length< double2 >
 
struct  quda::vec_length< double >
 
struct  quda::vec_length< float4 >
 
struct  quda::vec_length< float2 >
 
struct  quda::vec_length< float >
 
struct  quda::vec_length< short4 >
 
struct  quda::vec_length< short2 >
 
struct  quda::vec_length< short >
 
struct  quda::vec_length< char4 >
 
struct  quda::vec_length< char2 >
 
struct  quda::vec_length< char >
 
struct  quda::vector< typename, N >
 
struct  quda::vector< double, 2 >
 
struct  quda::vector< float, 2 >
 
struct  quda::vector< int, 2 >
 
struct  quda::scalar< typename >
 
struct  quda::scalar< double4 >
 
struct  quda::scalar< double3 >
 
struct  quda::scalar< double2 >
 
struct  quda::scalar< double >
 
struct  quda::scalar< float4 >
 
struct  quda::scalar< float3 >
 
struct  quda::scalar< float2 >
 
struct  quda::scalar< float >
 
struct  quda::scalar< short4 >
 
struct  quda::scalar< short3 >
 
struct  quda::scalar< short2 >
 
struct  quda::scalar< short >
 
struct  quda::scalar< char4 >
 
struct  quda::scalar< char3 >
 
struct  quda::scalar< char2 >
 
struct  quda::scalar< char >
 
struct  quda::isHalf< T >
 
struct  quda::isHalf< short >
 
struct  quda::isHalf< short2 >
 
struct  quda::isHalf< short4 >
 
struct  quda::isQuarter< T >
 
struct  quda::isQuarter< char >
 
struct  quda::isQuarter< char2 >
 
struct  quda::isQuarter< char4 >
 
struct  quda::isFixed< T >
 
struct  quda::isFixed< short >
 
struct  quda::isFixed< short2 >
 
struct  quda::isFixed< short4 >
 
struct  quda::isFixed< char >
 
struct  quda::isFixed< char2 >
 
struct  quda::isFixed< char4 >
 
struct  quda::Trig< isFixed, T >
 
struct  quda::Trig< false, float >
 
struct  quda::Trig< true, float >
 
struct  quda::VectorType< Float, number >
 
struct  quda::VectorType< double, 1 >
 
struct  quda::VectorType< double, 2 >
 
struct  quda::VectorType< double, 4 >
 
struct  quda::VectorType< float, 1 >
 
struct  quda::VectorType< float, 2 >
 
struct  quda::VectorType< float, 4 >
 
struct  quda::VectorType< short, 1 >
 
struct  quda::VectorType< short, 2 >
 
struct  quda::VectorType< short, 4 >
 
struct  quda::VectorType< char, 1 >
 
struct  quda::VectorType< char, 2 >
 
struct  quda::VectorType< char, 4 >
 
struct  quda::TexVectorType< Float, number >
 
struct  quda::TexVectorType< double, 1 >
 
struct  quda::TexVectorType< double, 2 >
 
struct  quda::TexVectorType< float, 1 >
 
struct  quda::TexVectorType< float, 2 >
 
struct  quda::TexVectorType< float, 4 >
 
struct  quda::TexVectorType< short, 1 >
 
struct  quda::TexVectorType< short, 2 >
 
struct  quda::TexVectorType< short, 4 >
 
struct  quda::TexVectorType< char, 1 >
 
struct  quda::TexVectorType< char, 2 >
 
struct  quda::TexVectorType< char, 4 >
 
struct  quda::AllocType< large_alloc >
 
struct  quda::AllocType< true >
 
struct  quda::AllocType< false >
 

Namespaces

 quda
 

Macros

#define USE_LDG
 

Functions

template<typename T1 , typename T2 >
__host__ __device__ void quda::copy (T1 &a, const T2 &b)
 
template<>
__host__ __device__ void quda::copy (double &a, const int2 &b)
 
template<>
__host__ __device__ void quda::copy (double2 &a, const int4 &b)
 
template<>
__host__ __device__ void quda::copy (float &a, const short &b)
 
template<>
__host__ __device__ void quda::copy (short &a, const float &b)
 
template<>
__host__ __device__ void quda::copy (float2 &a, const short2 &b)
 
template<>
__host__ __device__ void quda::copy (short2 &a, const float2 &b)
 
template<>
__host__ __device__ void quda::copy (float4 &a, const short4 &b)
 
template<>
__host__ __device__ void quda::copy (short4 &a, const float4 &b)
 
template<>
__host__ __device__ void quda::copy (float &a, const char &b)
 
template<>
__host__ __device__ void quda::copy (char &a, const float &b)
 
template<>
__host__ __device__ void quda::copy (float2 &a, const char2 &b)
 
template<>
__host__ __device__ void quda::copy (char2 &a, const float2 &b)
 
template<>
__host__ __device__ void quda::copy (float4 &a, const char4 &b)
 
template<>
__host__ __device__ void quda::copy (char4 &a, const float4 &b)
 
template<typename T1 , typename T2 >
__host__ __device__ void quda::copy_scaled (T1 &a, const T2 &b)
 
template<>
__host__ __device__ void quda::copy_scaled (short4 &a, const float4 &b)
 
template<>
__host__ __device__ void quda::copy_scaled (char4 &a, const float4 &b)
 
template<>
__host__ __device__ void quda::copy_scaled (short2 &a, const float2 &b)
 
template<>
__host__ __device__ void quda::copy_scaled (char2 &a, const float2 &b)
 
template<>
__host__ __device__ void quda::copy_scaled (short &a, const float &b)
 
template<>
__host__ __device__ void quda::copy_scaled (char &a, const float &b)
 
template<typename T1 , typename T2 , typename T3 >
__host__ __device__ void quda::copy_and_scale (T1 &a, const T2 &b, const T3 &c)
 Specialized variants of the copy function that include an additional scale factor. Note the scale factor is ignored unless the input type (b) is either a short or char vector. More...
 
template<>
__host__ __device__ void quda::copy_and_scale (float4 &a, const short4 &b, const float &c)
 
template<>
__host__ __device__ void quda::copy_and_scale (float4 &a, const char4 &b, const float &c)
 
template<>
__host__ __device__ void quda::copy_and_scale (float2 &a, const short2 &b, const float &c)
 
template<>
__host__ __device__ void quda::copy_and_scale (float2 &a, const char2 &b, const float &c)
 
template<>
__host__ __device__ void quda::copy_and_scale (float &a, const short &b, const float &c)
 
template<>
__host__ __device__ void quda::copy_and_scale (float &a, const char &b, const float &c)
 
template<typename VectorType >
__device__ __host__ VectorType quda::vector_load (void *ptr, int idx)
 
template<typename VectorType >
__device__ __host__ void quda::vector_store (void *ptr, int idx, const VectorType &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const double2 &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const float4 &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const float2 &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const short4 &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const short2 &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const char4 &value)
 
template<>
__device__ __host__ void quda::vector_store (void *ptr, int idx, const char2 &value)
 

Detailed Description

Provides precision abstractions and defines the register precision given the storage precision using C++ traits.

Definition in file register_traits.h.

Macro Definition Documentation

◆ USE_LDG

#define USE_LDG