QUDA  v0.7.0
A library for QCD on GPUs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
quda::Tunable Class Referenceabstract

#include <tune_quda.h>

+ Inheritance diagram for quda::Tunable:

Public Member Functions

 Tunable ()
 
virtual ~Tunable ()
 
virtual TuneKey tuneKey () const =0
 
virtual void apply (const cudaStream_t &stream)=0
 
virtual void preTune ()
 
virtual void postTune ()
 
virtual int tuningIter () const
 
virtual std::string paramString (const TuneParam &param) const
 
virtual std::string perfString (float time) const
 
virtual void initTuneParam (TuneParam &param) const
 
virtual void defaultTuneParam (TuneParam &param) const
 
virtual bool advanceTuneParam (TuneParam &param) const
 
void checkLaunchParam (TuneParam &param)
 

Protected Member Functions

virtual long long flops () const =0
 
virtual long long bytes () const
 
virtual unsigned int sharedBytesPerThread () const =0
 
virtual unsigned int sharedBytesPerBlock (const TuneParam &param) const =0
 
virtual unsigned int minThreads () const
 
virtual bool tuneGridDim () const
 
virtual bool tuneSharedBytes () const
 
virtual bool advanceGridDim (TuneParam &param) const
 
virtual bool advanceBlockDim (TuneParam &param) const
 
virtual bool advanceSharedBytes (TuneParam &param) const
 
void writeAuxString (const char *format,...)
 

Protected Attributes

char aux [TuneKey::aux_n]
 

Detailed Description

Definition at line 40 of file tune_quda.h.

Constructor & Destructor Documentation

quda::Tunable::Tunable ( )
inline

Definition at line 148 of file tune_quda.h.

virtual quda::Tunable::~Tunable ( )
inlinevirtual

Definition at line 149 of file tune_quda.h.

Member Function Documentation

virtual bool quda::Tunable::advanceBlockDim ( TuneParam param) const
inlineprotectedvirtual

Definition at line 74 of file tune_quda.h.

virtual bool quda::Tunable::advanceGridDim ( TuneParam param) const
inlineprotectedvirtual

Definition at line 57 of file tune_quda.h.

virtual bool quda::Tunable::advanceSharedBytes ( TuneParam param) const
inlineprotectedvirtual

The goal here is to throttle the number of thread blocks per SM by over-allocating shared memory (in order to improve L2 utilization, etc.). Note that:

  • On Fermi, requesting greater than 16 KB will switch the cache config, so we restrict ourselves to 16 KB for now.
  • On GT200 and older, kernel arguments are passed via shared memory, so available space may be smaller than 16 KB. We thus request the smallest amount of dynamic shared memory that guarantees throttling to a given number of blocks, in order to allow some extra leeway.

Definition at line 113 of file tune_quda.h.

virtual bool quda::Tunable::advanceTuneParam ( TuneParam param) const
inlinevirtual

Definition at line 205 of file tune_quda.h.

virtual void quda::Tunable::apply ( const cudaStream_t &  stream)
pure virtual
virtual long long quda::Tunable::bytes ( ) const
inlineprotectedvirtual
void quda::Tunable::checkLaunchParam ( TuneParam param)
inline

Check the launch parameters of the kernel to ensure that they are valid for the current device.

Definition at line 214 of file tune_quda.h.

virtual void quda::Tunable::defaultTuneParam ( TuneParam param) const
inlinevirtual

sets default values for when tuning is disabled

Reimplemented in quda::ShiftColorSpinorField< Output, Input >.

Definition at line 199 of file tune_quda.h.

virtual long long quda::Tunable::flops ( ) const
protectedpure virtual
virtual void quda::Tunable::initTuneParam ( TuneParam param) const
inlinevirtual

Reimplemented in quda::ShiftColorSpinorField< Output, Input >.

Definition at line 175 of file tune_quda.h.

virtual unsigned int quda::Tunable::minThreads ( ) const
inlineprotectedvirtual

Reimplemented in quda::CloverCuda< sFloat, cFloat >.

Definition at line 53 of file tune_quda.h.

virtual std::string quda::Tunable::paramString ( const TuneParam param) const
inlinevirtual
virtual std::string quda::Tunable::perfString ( float  time) const
inlinevirtual

Definition at line 165 of file tune_quda.h.

virtual void quda::Tunable::postTune ( )
inlinevirtual
virtual void quda::Tunable::preTune ( )
inlinevirtual
virtual unsigned int quda::Tunable::sharedBytesPerBlock ( const TuneParam param) const
protectedpure virtual
virtual unsigned int quda::Tunable::sharedBytesPerThread ( ) const
protectedpure virtual
virtual bool quda::Tunable::tuneGridDim ( ) const
inlineprotectedvirtual

Reimplemented in quda::CloverCuda< sFloat, cFloat >.

Definition at line 54 of file tune_quda.h.

virtual TuneKey quda::Tunable::tuneKey ( ) const
pure virtual
virtual bool quda::Tunable::tuneSharedBytes ( ) const
inlineprotectedvirtual

Definition at line 55 of file tune_quda.h.

virtual int quda::Tunable::tuningIter ( ) const
inlinevirtual

Reimplemented in quda::copy::CopyCuda< FloatN, N, Output, Input >.

Definition at line 154 of file tune_quda.h.

void quda::Tunable::writeAuxString ( const char *  format,
  ... 
)
inlineprotected

Definition at line 138 of file tune_quda.h.

Member Data Documentation

char quda::Tunable::aux[TuneKey::aux_n]
protected

Definition at line 136 of file tune_quda.h.


The documentation for this class was generated from the following file: