Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooBatchCompute Namespace Reference

Namespace for dispatching RooFit computations to various backends. More...

Namespaces

namespace  RF_ARCH
 

Classes

class  BracketAdapter
 Little adapter that gives a bracket operator to types that don't have one. More...
 
class  BracketAdapterWithMask
 
struct  ReduceNLLOutput
 
class  RooBatchComputeInterface
 The interface which should be implemented to provide optimised computation functions for implementations of RooAbsReal::evaluateSpan(). More...
 
struct  RunContext
 This struct enables passing computation data around between elements of a computation graph. More...
 

Typedefs

typedef std::vector< doubleArgVector
 
typedef const double *__restrict InputArr
 
typedef double *__restrict RestrictArr
 
typedef std::vector< RooSpan< const double > > VarVector
 

Enumerations

enum class  Architecture {
  AVX512 , AVX2 , AVX , SSE4 ,
  GENERIC , CUDA
}
 
enum  Computer {
  AddPdf , ArgusBG , BMixDecay , Bernstein ,
  BifurGauss , BreitWigner , Bukin , CBShape ,
  Chebychev , ChiSquare , DeltaFunction , DstD0BG ,
  Exponential , Gamma , GaussModelExpBasis , Gaussian ,
  Identity , Johnson , Landau , Lognormal ,
  NegativeLogarithms , NormalizedPdf , Novosibirsk , Poisson ,
  Polynomial , ProdPdf , Ratio , TruthModelExpBasis ,
  TruthModelSinBasis , TruthModelCosBasis , TruthModelLinBasis , TruthModelQuadBasis ,
  TruthModelSinhBasis , TruthModelCoshBasis , Voigtian
}
 

Functions

__roodevice__ double fast_cos (double x)
 
__roodevice__ double fast_exp (double x)
 
__roodevice__ double fast_isqrt (double x)
 
__roodevice__ double fast_log (double x)
 
__roodevice__ double fast_sin (double x)
 
void init ()
 Inspect hardware capabilities, and load the optimal library for RooFit computations.
 

Variables

constexpr std::size_t bufferSize = 64
 
R__EXTERN RooBatchComputeInterfacedispatchCPU = nullptr
 This dispatch pointer points to an implementation of the compute library, provided one has been loaded.
 
R__EXTERN RooBatchComputeInterfacedispatchCUDA = nullptr
 

Detailed Description

Namespace for dispatching RooFit computations to various backends.

This namespace contains an interface for providing high-performance computation functions for use in RooAbsReal::evaluateSpan(), see RooBatchComputeInterface.

Furthermore, several implementations of this interface can be created, which reside in RooBatchCompute::RF_ARCH, where RF_ARCH may be replaced by the architecture that this implementation targets, e.g. SSE, AVX, etc.

Using the pointer RooBatchCompute::dispatch, a computation request can be dispatched to the fastest backend that is available on a specific platform.

Typedef Documentation

◆ ArgVector

typedef std::vector<double> RooBatchCompute::ArgVector

Definition at line 37 of file RooBatchComputeTypes.h.

◆ InputArr

typedef const double* __restrict RooBatchCompute::InputArr

Definition at line 39 of file RooBatchComputeTypes.h.

◆ RestrictArr

typedef double* __restrict RooBatchCompute::RestrictArr

Definition at line 38 of file RooBatchComputeTypes.h.

◆ VarVector

typedef std::vector<RooSpan<const double> > RooBatchCompute::VarVector

Definition at line 36 of file RooBatchComputeTypes.h.

Enumeration Type Documentation

◆ Architecture

enum class RooBatchCompute::Architecture
strong
Enumerator
AVX512 
AVX2 
AVX 
SSE4 
GENERIC 
CUDA 

Definition at line 40 of file RooBatchCompute.h.

◆ Computer

Enumerator
AddPdf 
ArgusBG 
BMixDecay 
Bernstein 
BifurGauss 
BreitWigner 
Bukin 
CBShape 
Chebychev 
ChiSquare 
DeltaFunction 
DstD0BG 
Exponential 
Gamma 
GaussModelExpBasis 
Gaussian 
Identity 
Johnson 
Landau 
Lognormal 
NegativeLogarithms 
NormalizedPdf 
Novosibirsk 
Poisson 
Polynomial 
ProdPdf 
Ratio 
TruthModelExpBasis 
TruthModelSinBasis 
TruthModelCosBasis 
TruthModelLinBasis 
TruthModelQuadBasis 
TruthModelSinhBasis 
TruthModelCoshBasis 
Voigtian 

Definition at line 42 of file RooBatchCompute.h.

Function Documentation

◆ fast_cos()

__roodevice__ double RooBatchCompute::fast_cos ( double  x)
inline

Definition at line 78 of file RooVDTHeaders.h.

◆ fast_exp()

__roodevice__ double RooBatchCompute::fast_exp ( double  x)
inline

Definition at line 68 of file RooVDTHeaders.h.

◆ fast_isqrt()

__roodevice__ double RooBatchCompute::fast_isqrt ( double  x)
inline

Definition at line 88 of file RooVDTHeaders.h.

◆ fast_log()

__roodevice__ double RooBatchCompute::fast_log ( double  x)
inline

Definition at line 83 of file RooVDTHeaders.h.

◆ fast_sin()

__roodevice__ double RooBatchCompute::fast_sin ( double  x)
inline

Definition at line 73 of file RooVDTHeaders.h.

◆ init()

void RooBatchCompute::init ( )

Inspect hardware capabilities, and load the optimal library for RooFit computations.

Definition at line 44 of file Initialisation.cxx.

Variable Documentation

◆ bufferSize

constexpr std::size_t RooBatchCompute::bufferSize = 64
constexpr

Definition at line 38 of file Batches.h.

◆ dispatchCPU

RooBatchCompute::RooBatchComputeInterface * RooBatchCompute::dispatchCPU = nullptr

This dispatch pointer points to an implementation of the compute library, provided one has been loaded.

Using a virtual call, computation requests are dispatched to backends with architecture-specific functions such as SSE, AVX, AVX2, etc.

See also
RooBatchComputeInterface, RooBatchComputeClass, RF_ARCH

Definition at line 149 of file RooBatchCompute.h.

◆ dispatchCUDA

RooBatchCompute::RooBatchComputeInterface * RooBatchCompute::dispatchCUDA = nullptr

Definition at line 149 of file RooBatchCompute.h.