QUDA  0.9.0
Classes | Namespaces | Macros | Functions | Variables
multi_reduce_quda.cu File Reference
#include <blas_quda.h>
#include <tune_quda.h>
#include <float_vector.h>
#include <color_spinor_field_order.h>
#include <uint_to_char.h>
#include <cub_helper.cuh>
#include <texture.h>
#include <multi_reduce_core.cuh>
#include <multi_reduce_core.h>
Include dependency graph for multi_reduce_quda.cu:

Go to the source code of this file.

Classes

struct  ScalarType< typename >
 
struct  ScalarType< double >
 
struct  ScalarType< double2 >
 
struct  ScalarType< double3 >
 
struct  Vec2Type< typename >
 
struct  Vec2Type< double >
 
struct  quda::blas::write< writeX, writeY, writeZ, writeW >
 
struct  quda::blas::MultiReduceFunctor< NXZ, ReduceType, Float2, FloatN >
 
struct  quda::blas::Dot< NXZ, ReduceType, Float2, FloatN >
 
struct  quda::blas::Cdot< NXZ, ReduceType, Float2, FloatN >
 
struct  quda::blas::CdotCopy< NXZ, ReduceType, Float2, FloatN >
 
class  quda::blas::TileSizeTune< ReducerDiagonal, writeDiagonal, ReducerOffDiagonal, writeOffDiagonal >
 

Namespaces

 quda
 
 quda::blas
 
 quda::blas::reduce
 
 quda::blas::reduce::multi
 

Macros

#define QudaSumFloat   double
 
#define QudaSumFloat2   double2
 
#define QudaSumFloat3   double3
 
#define MAX_MULTI_BLAS_N   2
 
#define BLAS_SPINOR
 

Functions

static void checkSpinor (const ColorSpinorField &a, const ColorSpinorField &b)
 
const mapquda::getTuneCache ()
 
void quda::disableProfileCount ()
 
void quda::enableProfileCount ()
 
void quda::setPolicyTuning (bool)
 
cudaStream_t * quda::blas::getStream ()
 
cudaEvent_t * quda::blas::getReduceEvent ()
 
template<typename ReduceType >
__device__ __host__ void quda::blas::dot_ (ReduceType &sum, const double2 &a, const double2 &b)
 
template<typename ReduceType >
__device__ __host__ void quda::blas::dot_ (ReduceType &sum, const float2 &a, const float2 &b)
 
template<typename ReduceType >
__device__ __host__ void quda::blas::dot_ (ReduceType &sum, const float4 &a, const float4 &b)
 
void quda::blas::reDotProduct (double *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 
template<typename ReduceType >
__device__ __host__ void quda::blas::cdot_ (ReduceType &sum, const double2 &a, const double2 &b)
 
template<typename ReduceType >
__device__ __host__ void quda::blas::cdot_ (ReduceType &sum, const float2 &a, const float2 &b)
 
template<typename ReduceType >
__device__ __host__ void quda::blas::cdot_ (ReduceType &sum, const float4 &a, const float4 &b)
 
template<template< int MXZ, typename ReducerType, typename Float, typename FloatN > class ReducerDiagonal, typename writeDiagonal , template< int MXZ, typename ReducerType, typename Float, typename FloatN > class ReducerOffDiagonal, typename writeOffDiagonal >
void quda::blas::multiReduce_recurse (Complex *result, std::vector< ColorSpinorField *> &x, std::vector< ColorSpinorField *> &y, std::vector< ColorSpinorField *> &z, std::vector< ColorSpinorField *> &w, int i_idx, int j_idx, bool hermitian, unsigned int tile_size)
 
void quda::blas::cDotProduct (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 Computes the matrix of inner products between the vector set a and the vector set b. More...
 
void quda::blas::hDotProduct (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 Computes the matrix of inner products between the vector set a and the vector set b. This routine is specifically for the case where the result matrix is guarantted to be Hermitian. Requires a.size()==b.size(). More...
 
void quda::blas::hDotProduct_Anorm (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b)
 Computes the matrix of inner products between the vector set a and the vector set b. This routine is specifically for the case where the result matrix is guarantted to be Hermitian. Uniquely defined for cases like (p, Ap) where the output is Hermitian, but there's an A-norm instead of an L2 norm. Requires a.size()==b.size(). More...
 
void quda::blas::cDotProductCopy (Complex *result, std::vector< ColorSpinorField *> &a, std::vector< ColorSpinorField *> &b, std::vector< ColorSpinorField *> &c)
 Computes the matrix of inner products between the vector set a and the vector set b, and copies b into c. More...
 

Variables

struct {
   const char *   vol_str
 
   const char *   aux_str
 
   char   aux_tmp [quda::TuneKey::aux_n]
 
blasStrings
 

Macro Definition Documentation

◆ BLAS_SPINOR

#define BLAS_SPINOR

Definition at line 82 of file multi_reduce_quda.cu.

◆ MAX_MULTI_BLAS_N

#define MAX_MULTI_BLAS_N   2

◆ QudaSumFloat

#define QudaSumFloat   double

Definition at line 31 of file multi_reduce_quda.cu.

◆ QudaSumFloat2

#define QudaSumFloat2   double2

Definition at line 32 of file multi_reduce_quda.cu.

◆ QudaSumFloat3

#define QudaSumFloat3   double3

Definition at line 33 of file multi_reduce_quda.cu.

Function Documentation

◆ checkSpinor()

static void checkSpinor ( const ColorSpinorField a,
const ColorSpinorField b 
)
static

Definition at line 42 of file multi_reduce_quda.cu.

References a, b, and errorQuda.

Variable Documentation

◆ aux_str

const char* aux_str

Definition at line 51 of file multi_reduce_quda.cu.

◆ aux_tmp

char aux_tmp[quda::TuneKey::aux_n]

Definition at line 52 of file multi_reduce_quda.cu.

◆ blasStrings

struct { ... } blasStrings

◆ vol_str

const char* vol_str

Definition at line 50 of file multi_reduce_quda.cu.