QUDA  v1.1.0
A library for QCD on GPUs
Classes | Namespaces | Functions
quda_matrix.h File Reference
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <register_traits.h>
#include <float_vector.h>
#include <complex_quda.h>

Go to the source code of this file.

Classes

struct  quda::Zero< T >
 
struct  quda::Identity< T >
 
class  quda::Matrix< T, N >
 
struct  quda::HMatrix_wrapper< T, Hmat >
 wrapper class that enables us to write to Hmatrices in packed format More...
 
class  quda::HMatrix< T, N >
 Specialized container for Hermitian matrices (e.g., used for wrapping clover matrices) More...
 
class  quda::Array< T, N >
 

Namespaces

 quda
 

Functions

template<class T >
__device__ __host__ T quda::getTrace (const Matrix< T, 3 > &a)
 
template<template< typename, int > class Mat, class T >
__device__ __host__ T quda::getDeterminant (const Mat< T, 3 > &a)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator+ (const Mat< T, N > &a, const Mat< T, N > &b)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator+= (Mat< T, N > &a, const Mat< T, N > &b)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator+= (Mat< T, N > &a, const T &b)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator-= (Mat< T, N > &a, const Mat< T, N > &b)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator- (const Mat< T, N > &a, const Mat< T, N > &b)
 
template<template< typename, int > class Mat, class T , int N, class S >
__device__ __host__ Mat< T, N > quda::operator* (const S &scalar, const Mat< T, N > &a)
 
template<template< typename, int > class Mat, class T , int N, class S >
__device__ __host__ Mat< T, N > quda::operator* (const Mat< T, N > &a, const S &scalar)
 
template<template< typename, int > class Mat, class T , int N, class S >
__device__ __host__ Mat< T, N > quda::operator*= (Mat< T, N > &a, const S &scalar)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator- (const Mat< T, N > &a)
 
template<template< typename, int > class Mat, class T , int N>
__device__ __host__ Mat< T, N > quda::operator* (const Mat< T, N > &a, const Mat< T, N > &b)
 Generic implementation of matrix multiplication. More...
 
template<template< typename > class complex, typename T , int N>
__device__ __host__ Matrix< complex< T >, N > quda::operator* (const Matrix< complex< T >, N > &a, const Matrix< complex< T >, N > &b)
 Specialization of complex matrix multiplication that will issue optimal fma instructions. More...
 
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 , int N>
__device__ __host__ Matrix< typename PromoteTypeId< T, U >::type, N > quda::operator* (const Matrix< T, N > &a, const Matrix< U, N > &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__ Matrix< T, 3 > quda::inverse (const Matrix< T, 3 > &u)
 
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<typename Complex , int N>
__device__ __host__ void quda::makeAntiHerm (Matrix< Complex, N > &m)
 
template<typename Complex , int N>
__device__ __host__ void quda::makeHerm (Matrix< Complex, 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>
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 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 T >
__device__ __host__ Matrix< T, 3 > quda::getSubTraceUnit (const Matrix< T, 3 > &a)
 
template<class T >
__device__ __host__ void quda::SubTraceUnit (Matrix< T, 3 > &a)
 
template<class T >
__device__ __host__ double quda::getRealTraceUVdagger (const Matrix< T, 3 > &a, const Matrix< T, 3 > &b)
 
template<class Cmplx >
__host__ __device__ void quda::printLink (const Matrix< Cmplx, 3 > &link)
 
template<class Cmplx >
__device__ __host__ double quda::ErrorSU3 (const Matrix< Cmplx, 3 > &matrix)
 
template<class T >
__device__ __host__ auto quda::exponentiate_iQ (const Matrix< T, 3 > &Q)
 
template<typename Float >
__device__ __host__ void quda::expsu3 (Matrix< complex< Float >, 3 > &q)