QUDA v0.4.0
A library for QCD on GPUs
Classes | Namespaces | Defines | Functions
quda/lib/blas_quda.cu File Reference
#include <stdlib.h>
#include <stdio.h>
#include <quda_internal.h>
#include <blas_quda.h>
#include <color_spinor_field.h>
#include <face_quda.h>
#include <double_single.h>
#include <float_vector.h>
#include <texture.h>
#include <tune_quda.h>
#include <typeinfo>
#include <blas_core.h>
#include <reduce_core.h>

Go to the source code of this file.

Classes

class  CopyCuda< FloatN, N, Output, Input >
struct  axpby< Float2, FloatN >
struct  xpy< Float2, FloatN >
struct  axpy< Float2, FloatN >
struct  xpay< Float2, FloatN >
struct  mxpy< Float2, FloatN >
struct  ax< Float2, FloatN >
struct  caxpy< Float2, FloatN >
struct  caxpby< Float2, FloatN >
struct  cxpaypbz< Float2, FloatN >
struct  axpyBzpcx< Float2, FloatN >
struct  axpyZpbx< Float2, FloatN >
struct  caxpbypzYmbw< Float2, FloatN >
struct  cabxpyAx< Float2, FloatN >
struct  caxpbypz< Float2, FloatN >
struct  caxpbypczpw< Float2, FloatN >
struct  caxpyxmaz< Float2, FloatN >
struct  Norm2< ReduceType, Float2, FloatN >
struct  Dot< ReduceType, Float2, FloatN >
struct  axpyNorm2< ReduceType, Float2, FloatN >
struct  xmyNorm2< ReduceType, Float2, FloatN >
struct  caxpyNorm2< ReduceType, Float2, FloatN >
struct  caxpyxmaznormx< ReduceType, Float2, FloatN >
struct  cabxpyaxnorm< ReduceType, Float2, FloatN >
struct  Cdot< ReduceType, Float2, FloatN >
struct  xpaycdotzy< ReduceType, Float2, FloatN >
struct  caxpydotzy< ReduceType, Float2, FloatN >
struct  CdotNormA< ReduceType, Float2, FloatN >
struct  CdotNormB< ReduceType, Float2, FloatN >
struct  caxpbypzYmbwcDotProductUYNormY< ReduceType, Float2, FloatN >

Namespaces

namespace  quda

Defines

#define REDUCE_MAX_BLOCKS   65536
#define QudaSumFloat   doublesingle
#define QudaSumFloat2   doublesingle2
#define QudaSumFloat3   doublesingle3
#define checkSpinor(a, b)
#define checkSpinorLength(a, b)
#define MAX_BLOCK   512

Functions

void zeroCuda (cudaColorSpinorField &a)
void quda::initBlas ()
void quda::endBlas (void)
void quda::setBlasTuning (QudaTune tune, QudaVerbosity verbose)
template<typename FloatN , int N, typename Output , typename Input >
__global__ void copyKernel (Output Y, Input X, int length)
void copyCuda (cudaColorSpinorField &dst, const cudaColorSpinorField &src)
void axpbyCuda (const double &a, cudaColorSpinorField &x, const double &b, cudaColorSpinorField &y)
void xpyCuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
void axpyCuda (const double &a, cudaColorSpinorField &x, cudaColorSpinorField &y)
void xpayCuda (cudaColorSpinorField &x, const double &a, cudaColorSpinorField &y)
void mxpyCuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
void axCuda (const double &a, cudaColorSpinorField &x)
__device__ void caxpy_ (const float2 &a, const float4 &x, float4 &y)
__device__ void caxpy_ (const float2 &a, const float2 &x, float2 &y)
__device__ void caxpy_ (const double2 &a, const double2 &x, double2 &y)
void caxpyCuda (const quda::Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y)
__device__ void caxpby_ (const float2 &a, const float4 &x, const float2 &b, float4 &y)
__device__ void caxpby_ (const float2 &a, const float2 &x, const float2 &b, float2 &y)
__device__ void caxpby_ (const double2 &a, const double2 &x, const double2 &b, double2 &y)
void caxpbyCuda (const quda::Complex &a, cudaColorSpinorField &x, const quda::Complex &b, cudaColorSpinorField &y)
__device__ void cxpaypbz_ (const float4 &x, const float2 &a, const float4 &y, const float2 &b, float4 &z)
__device__ void cxpaypbz_ (const float2 &x, const float2 &a, const float2 &y, const float2 &b, float2 &z)
__device__ void cxpaypbz_ (const double2 &x, const double2 &a, const double2 &y, const double2 &b, double2 &z)
void cxpaypbzCuda (cudaColorSpinorField &x, const quda::Complex &a, cudaColorSpinorField &y, const quda::Complex &b, cudaColorSpinorField &z)
void axpyBzpcxCuda (const double &a, cudaColorSpinorField &x, cudaColorSpinorField &y, const double &b, cudaColorSpinorField &z, const double &c)
void axpyZpbxCuda (const double &a, cudaColorSpinorField &x, cudaColorSpinorField &y, cudaColorSpinorField &z, const double &b)
void caxpbypzYmbwCuda (const quda::Complex &a, cudaColorSpinorField &x, const quda::Complex &b, cudaColorSpinorField &y, cudaColorSpinorField &z, cudaColorSpinorField &w)
void cabxpyAxCuda (const double &a, const quda::Complex &b, cudaColorSpinorField &x, cudaColorSpinorField &y)
void caxpbypzCuda (const quda::Complex &a, cudaColorSpinorField &x, const quda::Complex &b, cudaColorSpinorField &y, cudaColorSpinorField &z)
void caxpbypczpwCuda (const quda::Complex &a, cudaColorSpinorField &x, const quda::Complex &b, cudaColorSpinorField &y, const quda::Complex &c, cudaColorSpinorField &z, cudaColorSpinorField &w)
void caxpyXmazCuda (const quda::Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y, cudaColorSpinorField &z)
__device__ double norm2_ (const double2 &a)
__device__ float norm2_ (const float2 &a)
__device__ float norm2_ (const float4 &a)
double normCuda (const cudaColorSpinorField &x)
__device__ double dot_ (const double2 &a, const double2 &b)
__device__ float dot_ (const float2 &a, const float2 &b)
__device__ float dot_ (const float4 &a, const float4 &b)
double reDotProductCuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
double axpyNormCuda (const double &a, cudaColorSpinorField &x, cudaColorSpinorField &y)
double xmyNormCuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
double caxpyNormCuda (const quda::Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y)
double caxpyXmazNormXCuda (const quda::Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y, cudaColorSpinorField &z)
double cabxpyAxNormCuda (const double &a, const quda::Complex &b, cudaColorSpinorField &x, cudaColorSpinorField &y)
__device__ double2 cdot_ (const double2 &a, const double2 &b)
__device__ double2 cdot_ (const float2 &a, const float2 &b)
__device__ double2 cdot_ (const float4 &a, const float4 &b)
quda::Complex cDotProductCuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
quda::Complex xpaycDotzyCuda (cudaColorSpinorField &x, const double &a, cudaColorSpinorField &y, cudaColorSpinorField &z)
quda::Complex caxpyDotzyCuda (const quda::Complex &a, cudaColorSpinorField &x, cudaColorSpinorField &y, cudaColorSpinorField &z)
__device__ double3 cdotNormA_ (const double2 &a, const double2 &b)
__device__ double3 cdotNormA_ (const float2 &a, const float2 &b)
__device__ double3 cdotNormA_ (const float4 &a, const float4 &b)
double3 cDotProductNormACuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
__device__ double3 cdotNormB_ (const double2 &a, const double2 &b)
__device__ double3 cdotNormB_ (const float2 &a, const float2 &b)
__device__ double3 cdotNormB_ (const float4 &a, const float4 &b)
double3 cDotProductNormBCuda (cudaColorSpinorField &x, cudaColorSpinorField &y)
double3 caxpbypzYmbwcDotProductUYNormYCuda (const quda::Complex &a, cudaColorSpinorField &x, const quda::Complex &b, cudaColorSpinorField &y, cudaColorSpinorField &z, cudaColorSpinorField &w, cudaColorSpinorField &u)

Define Documentation

#define checkSpinor (   a,
 
)
Value:
{                                                                       \
    if (a.Precision() != b.Precision())                                 \
      errorQuda("precisions do not match: %d %d", a.Precision(), b.Precision()); \
    if (a.Length() != b.Length())                                       \
      errorQuda("lengths do not match: %d %d", a.Length(), b.Length()); \
    if (a.Stride() != b.Stride())                                       \
      errorQuda("strides do not match: %d %d", a.Stride(), b.Stride()); \
  }

Definition at line 41 of file blas_quda.cu.

#define checkSpinorLength (   a,
 
)
Value:
{                                                                       \
    if (a.Length() != b.Length())                                       \
      errorQuda("lengths do not match: %d %d", a.Length(), b.Length()); \
    if (a.Stride() != b.Stride())                                       \
      errorQuda("strides do not match: %d %d", a.Stride(), b.Stride()); \
  }

Definition at line 52 of file blas_quda.cu.

#define MAX_BLOCK   512

Definition at line 142 of file blas_quda.cu.

#define QudaSumFloat   doublesingle

Definition at line 16 of file blas_quda.cu.

#define QudaSumFloat2   doublesingle2

Definition at line 17 of file blas_quda.cu.

#define QudaSumFloat3   doublesingle3

Definition at line 18 of file blas_quda.cu.

#define REDUCE_MAX_BLOCKS   65536

Definition at line 9 of file blas_quda.cu.


Function Documentation

void axCuda ( const double &  a,
cudaColorSpinorField x 
)

Definition at line 444 of file blas_quda.cu.

void axpbyCuda ( const double &  a,
cudaColorSpinorField x,
const double &  b,
cudaColorSpinorField y 
)

Definition at line 356 of file blas_quda.cu.

void axpyBzpcxCuda ( const double &  a,
cudaColorSpinorField x,
cudaColorSpinorField y,
const double &  b,
cudaColorSpinorField z,
const double &  c 
)

Definition at line 586 of file blas_quda.cu.

void axpyCuda ( const double &  a,
cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 391 of file blas_quda.cu.

double axpyNormCuda ( const double &  a,
cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 788 of file blas_quda.cu.

void axpyZpbxCuda ( const double &  a,
cudaColorSpinorField x,
cudaColorSpinorField y,
cudaColorSpinorField z,
const double &  b 
)

Definition at line 607 of file blas_quda.cu.

void cabxpyAxCuda ( const double &  a,
const quda::Complex b,
cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 651 of file blas_quda.cu.

double cabxpyAxNormCuda ( const double &  a,
const quda::Complex b,
cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 873 of file blas_quda.cu.

__device__ void caxpby_ ( const float2 &  a,
const float4 &  x,
const float2 &  b,
float4 &  y 
)

Functor to perform the operation y = a*x + b*y (complex-valued)

Definition at line 490 of file blas_quda.cu.

__device__ void caxpby_ ( const float2 &  a,
const float2 &  x,
const float2 &  b,
float2 &  y 
)

Definition at line 498 of file blas_quda.cu.

__device__ void caxpby_ ( const double2 &  a,
const double2 &  x,
const double2 &  b,
double2 &  y 
)

Definition at line 504 of file blas_quda.cu.

void caxpbyCuda ( const quda::Complex a,
cudaColorSpinorField x,
const quda::Complex b,
cudaColorSpinorField y 
)

Definition at line 520 of file blas_quda.cu.

void caxpbypczpwCuda ( const quda::Complex a,
cudaColorSpinorField x,
const quda::Complex b,
cudaColorSpinorField y,
const quda::Complex c,
cudaColorSpinorField z,
cudaColorSpinorField w 
)

Definition at line 696 of file blas_quda.cu.

void caxpbypzCuda ( const quda::Complex a,
cudaColorSpinorField x,
const quda::Complex b,
cudaColorSpinorField y,
cudaColorSpinorField z 
)

Definition at line 673 of file blas_quda.cu.

double3 caxpbypzYmbwcDotProductUYNormYCuda ( const quda::Complex a,
cudaColorSpinorField x,
const quda::Complex b,
cudaColorSpinorField y,
cudaColorSpinorField z,
cudaColorSpinorField w,
cudaColorSpinorField u 
)

Definition at line 1017 of file blas_quda.cu.

void caxpbypzYmbwCuda ( const quda::Complex a,
cudaColorSpinorField x,
const quda::Complex b,
cudaColorSpinorField y,
cudaColorSpinorField z,
cudaColorSpinorField w 
)

Definition at line 630 of file blas_quda.cu.

__device__ void caxpy_ ( const float2 &  a,
const float4 &  x,
float4 &  y 
)

Functor to perform the operation y += a * x (complex-valued)

Definition at line 454 of file blas_quda.cu.

__device__ void caxpy_ ( const float2 &  a,
const float2 &  x,
float2 &  y 
)

Definition at line 461 of file blas_quda.cu.

__device__ void caxpy_ ( const double2 &  a,
const double2 &  x,
double2 &  y 
)

Definition at line 466 of file blas_quda.cu.

void caxpyCuda ( const quda::Complex a,
cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 480 of file blas_quda.cu.

quda::Complex caxpyDotzyCuda ( const quda::Complex a,
cudaColorSpinorField x,
cudaColorSpinorField y,
cudaColorSpinorField z 
)

Definition at line 942 of file blas_quda.cu.

double caxpyNormCuda ( const quda::Complex a,
cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 827 of file blas_quda.cu.

void caxpyXmazCuda ( const quda::Complex a,
cudaColorSpinorField x,
cudaColorSpinorField y,
cudaColorSpinorField z 
)

Definition at line 720 of file blas_quda.cu.

double caxpyXmazNormXCuda ( const quda::Complex a,
cudaColorSpinorField x,
cudaColorSpinorField y,
cudaColorSpinorField z 
)

Definition at line 849 of file blas_quda.cu.

__device__ double2 cdot_ ( const double2 &  a,
const double2 &  b 
)

Returns complex-valued dot product of x and y

Definition at line 883 of file blas_quda.cu.

__device__ double2 cdot_ ( const float2 &  a,
const float2 &  b 
)

Definition at line 885 of file blas_quda.cu.

__device__ double2 cdot_ ( const float4 &  a,
const float4 &  b 
)

Definition at line 887 of file blas_quda.cu.

__device__ double3 cdotNormA_ ( const double2 &  a,
const double2 &  b 
)

First returns the dot product (x,y) Returns the norm of x

Definition at line 954 of file blas_quda.cu.

__device__ double3 cdotNormA_ ( const float4 &  a,
const float4 &  b 
)

Definition at line 958 of file blas_quda.cu.

__device__ double3 cdotNormA_ ( const float2 &  a,
const float2 &  b 
)

Definition at line 956 of file blas_quda.cu.

__device__ double3 cdotNormB_ ( const float4 &  a,
const float4 &  b 
)

Definition at line 985 of file blas_quda.cu.

__device__ double3 cdotNormB_ ( const double2 &  a,
const double2 &  b 
)

First returns the dot product (x,y) Returns the norm of y

Definition at line 981 of file blas_quda.cu.

__device__ double3 cdotNormB_ ( const float2 &  a,
const float2 &  b 
)

Definition at line 983 of file blas_quda.cu.

quda::Complex cDotProductCuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 898 of file blas_quda.cu.

double3 cDotProductNormACuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 971 of file blas_quda.cu.

double3 cDotProductNormBCuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 997 of file blas_quda.cu.

void copyCuda ( cudaColorSpinorField dst,
const cudaColorSpinorField src 
)

Definition at line 214 of file blas_quda.cu.

template<typename FloatN , int N, typename Output , typename Input >
__global__ void copyKernel ( Output  Y,
Input  X,
int  length 
)

Definition at line 148 of file blas_quda.cu.

__device__ void cxpaypbz_ ( const float4 &  x,
const float2 &  a,
const float4 &  y,
const float2 &  b,
float4 &  z 
)

Functor to performs the operation z[i] = x[i] + a*y[i] + b*z[i]

Definition at line 530 of file blas_quda.cu.

__device__ void cxpaypbz_ ( const double2 &  x,
const double2 &  a,
const double2 &  y,
const double2 &  b,
double2 &  z 
)

Definition at line 546 of file blas_quda.cu.

__device__ void cxpaypbz_ ( const float2 &  x,
const float2 &  a,
const float2 &  y,
const float2 &  b,
float2 &  z 
)

Definition at line 539 of file blas_quda.cu.

void cxpaypbzCuda ( cudaColorSpinorField x,
const quda::Complex a,
cudaColorSpinorField y,
const quda::Complex b,
cudaColorSpinorField z 
)

Definition at line 564 of file blas_quda.cu.

__device__ double dot_ ( const double2 &  a,
const double2 &  b 
)

Return the real dot product of x and y

Definition at line 755 of file blas_quda.cu.

__device__ float dot_ ( const float2 &  a,
const float2 &  b 
)

Definition at line 756 of file blas_quda.cu.

__device__ float dot_ ( const float4 &  a,
const float4 &  b 
)

Definition at line 757 of file blas_quda.cu.

void mxpyCuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 426 of file blas_quda.cu.

__device__ float norm2_ ( const float4 &  a)

Definition at line 733 of file blas_quda.cu.

__device__ double norm2_ ( const double2 &  a)

Return the L2 norm of x

Definition at line 731 of file blas_quda.cu.

__device__ float norm2_ ( const float2 &  a)

Definition at line 732 of file blas_quda.cu.

double normCuda ( const cudaColorSpinorField x)

Definition at line 745 of file blas_quda.cu.

double reDotProductCuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 768 of file blas_quda.cu.

double xmyNormCuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 807 of file blas_quda.cu.

quda::Complex xpaycDotzyCuda ( cudaColorSpinorField x,
const double &  a,
cudaColorSpinorField y,
cudaColorSpinorField z 
)

Definition at line 920 of file blas_quda.cu.

void xpayCuda ( cudaColorSpinorField x,
const double &  a,
cudaColorSpinorField y 
)

Definition at line 409 of file blas_quda.cu.

void xpyCuda ( cudaColorSpinorField x,
cudaColorSpinorField y 
)

Definition at line 373 of file blas_quda.cu.

void zeroCuda ( cudaColorSpinorField a)

Definition at line 39 of file blas_quda.cu.


Variable Documentation

int stride

Definition at line 68 of file blas_quda.cu.

int x[QUDA_MAX_DIM]

Definition at line 67 of file blas_quda.cu.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines