QUDA  v0.5.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 | 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 int sharedBytesPerThread () const =0
 
virtual int sharedBytesPerBlock (const TuneParam &param) const =0
 
virtual bool advanceGridDim (TuneParam &param) const
 
virtual bool advanceBlockDim (TuneParam &param) const
 
virtual bool advanceSharedBytes (TuneParam &param) const
 

Detailed Description

Definition at line 68 of file tune_quda.h.

Constructor & Destructor Documentation

quda::Tunable::Tunable ( )
inline

Definition at line 135 of file tune_quda.h.

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

Definition at line 136 of file tune_quda.h.

Member Function Documentation

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

Reimplemented in quda::DomainWallDslashCuda< sFloat, gFloat >, and quda::DslashCuda.

Definition at line 93 of file tune_quda.h.

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

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

Definition at line 80 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 115 of file tune_quda.h.

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

Definition at line 178 of file tune_quda.h.

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

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

Definition at line 72 of file tune_quda.h.

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 187 of file tune_quda.h.

virtual void quda::Tunable::defaultTuneParam ( TuneParam param) const
inlinevirtual
virtual long long quda::Tunable::flops ( ) const
protectedpure virtual
virtual void quda::Tunable::initTuneParam ( TuneParam param) const
inlinevirtual
virtual std::string quda::Tunable::paramString ( const TuneParam param) const
inlinevirtual
virtual std::string quda::Tunable::perfString ( float  time) const
inlinevirtual

Definition at line 152 of file tune_quda.h.

virtual void quda::Tunable::postTune ( )
inlinevirtual
virtual void quda::Tunable::preTune ( )
inlinevirtual
virtual int quda::Tunable::sharedBytesPerBlock ( const TuneParam param) const
protectedpure virtual
virtual int quda::Tunable::sharedBytesPerThread ( ) const
protectedpure virtual
virtual TuneKey quda::Tunable::tuneKey ( ) const
pure virtual
virtual int quda::Tunable::tuningIter ( ) const
inlinevirtual

Definition at line 141 of file tune_quda.h.


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