QUDA  v0.7.0
A library for QCD on GPUs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Namespaces | Functions
quda_matrix.h File Reference
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <cuda.h>
#include <float_vector.h>
#include <complex_quda.h>

Go to the source code of this file.

Classes

struct  quda::ComplexTypeId< T >
 
struct  quda::ComplexTypeId< float >
 
struct  quda::ComplexTypeId< double >
 
struct  quda::RealTypeId< T >
 
struct  quda::RealTypeId< float >
 
struct  quda::RealTypeId< double >
 
struct  quda::RealTypeId< float2 >
 
struct  quda::RealTypeId< double2 >
 
struct  quda::PromoteTypeId< T, U >
 
struct  quda::PromoteTypeId< float2, float >
 
struct  quda::PromoteTypeId< float, float2 >
 
struct  quda::PromoteTypeId< double2, double >
 
struct  quda::PromoteTypeId< double, double2 >
 
struct  quda::PromoteTypeId< double, int >
 
struct  quda::PromoteTypeId< int, double >
 
struct  quda::PromoteTypeId< float, int >
 
struct  quda::PromoteTypeId< int, float >
 
struct  quda::Zero< T >
 
struct  quda::Identity< T >
 
class  quda::Matrix< T, N >
 
class  quda::Array< T, N >
 

Namespaces

 quda
 

Functions

template<class Cmplx >
__device__ __host__ Cmplx quda::makeComplex (const typename RealTypeId< Cmplx >::Type &a, const typename RealTypeId< Cmplx >::Type &b)
 
__device__ __host__ double2 quda::makeComplex (const double &a, const double &b)
 
__device__ __host__ float2 quda::makeComplex (const float &a, const float &b)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator- (const Cmplx &a)
 
template<class Cmplx >
__device__ __host__ Cmplx & quda::operator+= (Cmplx &a, const Cmplx &b)
 
template<class Cmplx >
__device__ __host__ Cmplx & quda::operator-= (Cmplx &a, const Cmplx &b)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator+ (const Cmplx &a, const Cmplx &b)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator- (const Cmplx &a, const Cmplx &b)
 
__device__ __host__ double2 quda::operator* (const double2 &a, const double &scalar)
 
__device__ __host__ float2 quda::operator* (const float2 &a, const float &scalar)
 
template<class Cmplx , class Float >
__device__ __host__ Cmplx quda::operator+ (const Cmplx &a, const Float &scalar)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator/ (const Cmplx &a, const typename RealTypeId< Cmplx >::Type &scalar)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator+ (const typename RealTypeId< Cmplx >::Type &scalar, const Cmplx &a)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator- (const Cmplx &a, const typename RealTypeId< Cmplx >::Type &scalar)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator- (const typename RealTypeId< Cmplx >::Type &scalar, const Cmplx &a)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::operator* (const Cmplx &a, const Cmplx &b)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::conj (const Cmplx &a)
 
__device__ __host__ double quda::conj (const double &a)
 
__device__ __host__ float quda::conj (const float &a)
 
template<typename Cmplx >
__device__ __host__ Cmplx quda::Conj (const Cmplx &a)
 
template<class Cmplx >
__device__ __host__ Cmplx quda::getPreciseInverse (const Cmplx &z)
 
std::ostream & quda::operator<< (std::ostream &os, const float2 &z)
 
std::ostream & quda::operator<< (std::ostream &os, const double2 &z)
 
template<int N>
__device__ __host__ int quda::index (int i, int j)
 
template<class T >
__device__ __host__ T quda::getTrace (const Matrix< T, 3 > &a)
 
template<class T >
__device__ __host__ T quda::getDeterminant (const Matrix< T, 3 > &a)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::operator+ (const Matrix< T, N > &a, const Matrix< T, N > &b)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::operator+= (Matrix< T, N > &a, const Matrix< T, N > &b)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::operator-= (Matrix< T, N > &a, const Matrix< T, N > &b)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::operator- (const Matrix< T, N > &a, const Matrix< T, N > &b)
 
template<class T , int N, class S >
__device__ __host__ Matrix< T, N > quda::operator* (const S &scalar, const Matrix< T, N > &a)
 
template<class T , int N, class S >
__device__ __host__ Matrix< T, N > quda::operator* (const Matrix< T, N > &a, const S &scalar)
 
template<class T , int N, class S >
__device__ __host__ Matrix< T, N > quda::operator*= (Matrix< T, N > &a, const S &scalar)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::operator- (const Matrix< T, N > &a)
 
template<class T >
__device__ __host__ Matrix< T, 3 > quda::operator* (const Matrix< T, 3 > &a, const Matrix< T, 3 > &b)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::operator*= (Matrix< T, N > &a, const Matrix< T, N > &b)
 
template<class T , class U >
__device__ __host__ Matrix
< typename PromoteTypeId< T, U >
::Type, 3 > 
quda::operator* (const Matrix< T, 3 > &a, const Matrix< U, 3 > &b)
 
template<class T >
__device__ __host__ Matrix< T, 2 > quda::operator* (const Matrix< T, 2 > &a, const Matrix< T, 2 > &b)
 
template<class T , int N>
__device__ __host__ Matrix< T, N > quda::conj (const Matrix< T, N > &other)
 
template<class T >
__device__ __host__ void quda::computeMatrixInverse (const Matrix< T, 3 > &u, Matrix< T, 3 > *uinv)
 
template<class T , int N>
__device__ __host__ void quda::setIdentity (Matrix< T, N > *m)
 
template<int N>
__device__ __host__ void quda::setIdentity (Matrix< float2, N > *m)
 
template<int N>
__device__ __host__ void quda::setIdentity (Matrix< double2, N > *m)
 
template<class T , int N>
__device__ __host__ void quda::setZero (Matrix< T, N > *m)
 
template<int N>
__device__ __host__ void quda::setZero (Matrix< float2, N > *m)
 
template<int N>
__device__ __host__ void quda::setZero (Matrix< double2, N > *m)
 
template<class T , int N>
__device__ __host__ void quda::copyColumn (const Matrix< T, N > &m, int c, Array< T, N > *a)
 
template<class T , int N>
__device__ __host__ void quda::outerProd (const Array< T, N > &a, const Array< T, N > &b, Matrix< T, N > *m)
 
template<class T , int N>
__device__ __host__ void quda::outerProd (const T(&a)[N], const T(&b)[N], Matrix< T, N > *m)
 
template<class T , int N>
std::ostream & quda::operator<< (std::ostream &os, const Matrix< T, N > &m)
 
template<class T , int N>
std::ostream & quda::operator<< (std::ostream &os, const Array< T, N > &a)
 
template<class T >
__device__ void quda::loadLinkVariableFromArray (const T *const array, const int dir, const int idx, const int stride, Matrix< T, 3 > *link)
 
template<class T , int N>
__device__ void quda::loadMatrixFromArray (const T *const array, const int idx, const int stride, Matrix< T, N > *mat)
 
__device__ void quda::loadLinkVariableFromArray (const float2 *const array, const int dir, const int idx, const int stride, Matrix< double2, 3 > *link)
 
template<class T , int N>
__device__ void quda::writeMatrixToArray (const Matrix< T, N > &mat, const int idx, const int stride, T *const array)
 
__device__ void quda::appendMatrixToArray (const Matrix< double2, 3 > &mat, const int idx, const int stride, double2 *const array)
 
__device__ void quda::appendMatrixToArray (const Matrix< float2, 3 > &mat, const int idx, const int stride, float2 *const array)
 
template<class T >
__device__ void quda::writeLinkVariableToArray (const Matrix< T, 3 > &link, const int dir, const int idx, const int stride, T *const array)
 
__device__ void quda::writeLinkVariableToArray (const Matrix< double2, 3 > &link, const int dir, const int idx, const int stride, float2 *const array)
 
template<class T >
__device__ void quda::loadMomentumFromArray (const T *const array, const int dir, const int idx, const int stride, Matrix< T, 3 > *mom)
 
template<class T , class U >
__device__ void quda::writeMomentumToArray (const Matrix< T, 3 > &mom, const int dir, const int idx, const U coeff, const int stride, T *const array)
 
template<class Cmplx >
__device__ __host__ void quda::computeLinkInverse (Matrix< Cmplx, 3 > *uinv, const Matrix< Cmplx, 3 > &u)
 
void quda::copyArrayToLink (Matrix< float2, 3 > *link, float *array)
 
template<class Cmplx , class Real >
void quda::copyArrayToLink (Matrix< Cmplx, 3 > *link, Real *array)
 
void quda::copyLinkToArray (float *array, const Matrix< float2, 3 > &link)
 
template<class Cmplx , class Real >
void quda::copyLinkToArray (Real *array, const Matrix< Cmplx, 3 > &link)
 
template<class Cmplx >
__host__ __device__ void quda::printLink (const Matrix< Cmplx, 3 > &link)