DiFfRG
Loading...
Searching...
No Matches
integrators::Qmc< T, D, M, P, F, G, H > Class Template Reference

#include <qmc.hpp>

Public Member Functions

U get_next_n (U preferred_n, bool allow_median_lattices=true) const
 
template<typename I >
result< T > integrate (I &func)
 
template<typename I >
samples< T, D > evaluate (I &func)
 
template<typename I >
F< I, D, M >::transform_t fit (I &func)
 
template<typename I >
std::vector< Uget_median_z (U n, I &func)
 
 Qmc ()
 
virtual ~Qmc ()
 

Public Attributes

Logger logger
 
randomgenerator
 
U minn
 
U minm
 
epsrel
 
epsabs
 
U maxeval
 
U maxnperpackage
 
U maxmperpackage
 
ErrorMode errormode
 
U cputhreads
 
U cudablocks
 
U cudathreadsperblock
 
std::set< int > devices
 
std::map< U, std::vector< U > > generatingvectors
 
U verbosity
 
bool batching
 
U latticecandidates
 
bool keeplattices
 
U evaluateminn
 
size_t fitstepsize
 
size_t fitmaxiter
 
double fitxtol
 
double fitgtol
 
double fitftol
 
gsl_multifit_nlinear_parameters fitparametersgsl
 

Private Member Functions

void init_z (std::vector< U > &z, const U n, const U number_of_integration_variables) const
 
void init_d (std::vector< D > &d, const U m, const U number_of_integration_variables)
 
void init_r (std::vector< T > &r, const U m, const U r_size_over_m) const
 
template<typename I >
void sample_worker (const U thread_id, U &work_queue, std::mutex &work_queue_mutex, const std::vector< U > &z, const std::vector< D > &d, std::vector< T > &r, const U total_work_packages, const U n, const U m, I &func, const int device, D &time_in_ns, U &points_computed) const
 
template<typename I >
void evaluate_worker (const U thread_id, U &work_queue, std::mutex &work_queue_mutex, const std::vector< U > &z, const std::vector< D > &d, std::vector< T > &r, const U n, I &func, const int device, D &time_in_ns, U &points_computed) const
 
template<typename I >
result< T > sample (I &func, const U n, const U m, std::vector< result< T > > &previous_iterations, std::vector< U > *generating_vector=nullptr)
 
void update (const result< T > &res, U &n, U &m) const
 
template<typename I >
result< T > integrate_no_fit_no_transform (I &func)
 

Private Attributes

uniform_distribution {0,1}
 

Constructor & Destructor Documentation

◆ Qmc()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
integrators::Qmc< T, D, M, P, F, G, H >::Qmc ( )

◆ ~Qmc()

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
virtual integrators::Qmc< T, D, M, P, F, G, H >::~Qmc ( )
inlinevirtual

Member Function Documentation

◆ evaluate()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
samples< T, D > integrators::Qmc< T, D, M, P, F, G, H >::evaluate ( I & func)

◆ evaluate_worker()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
void integrators::Qmc< T, D, M, P, F, G, H >::evaluate_worker ( const U thread_id,
U & work_queue,
std::mutex & work_queue_mutex,
const std::vector< U > & z,
const std::vector< D > & d,
std::vector< T > & r,
const U n,
I & func,
const int device,
D & time_in_ns,
U & points_computed ) const
private

◆ fit()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
F< I, D, M >::transform_t integrators::Qmc< T, D, M, P, F, G, H >::fit ( I & func)

◆ get_median_z()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
std::vector< U > integrators::Qmc< T, D, M, P, F, G, H >::get_median_z ( U n,
I & func )

◆ get_next_n()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
U integrators::Qmc< T, D, M, P, F, G, H >::get_next_n ( U preferred_n,
bool allow_median_lattices = true ) const

◆ init_d()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
void integrators::Qmc< T, D, M, P, F, G, H >::init_d ( std::vector< D > & d,
const U m,
const U number_of_integration_variables )
private

◆ init_r()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
void integrators::Qmc< T, D, M, P, F, G, H >::init_r ( std::vector< T > & r,
const U m,
const U r_size_over_m ) const
private

◆ init_z()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
void integrators::Qmc< T, D, M, P, F, G, H >::init_z ( std::vector< U > & z,
const U n,
const U number_of_integration_variables ) const
private

◆ integrate()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
result< T > integrators::Qmc< T, D, M, P, F, G, H >::integrate ( I & func)

◆ integrate_no_fit_no_transform()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
result< T > integrators::Qmc< T, D, M, P, F, G, H >::integrate_no_fit_no_transform ( I & func)
private

◆ sample()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
result< T > integrators::Qmc< T, D, M, P, F, G, H >::sample ( I & func,
const U n,
const U m,
std::vector< result< T > > & previous_iterations,
std::vector< U > * generating_vector = nullptr )
private

◆ sample_worker()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
template<typename I >
void integrators::Qmc< T, D, M, P, F, G, H >::sample_worker ( const U thread_id,
U & work_queue,
std::mutex & work_queue_mutex,
const std::vector< U > & z,
const std::vector< D > & d,
std::vector< T > & r,
const U total_work_packages,
const U n,
const U m,
I & func,
const int device,
D & time_in_ns,
U & points_computed ) const
private

◆ update()

template<typename T , typename D , U M, template< typename, typename, U > class P, template< typename, typename, U > class F, typename G , typename H >
void integrators::Qmc< T, D, M, P, F, G, H >::update ( const result< T > & res,
U & n,
U & m ) const
private

Member Data Documentation

◆ batching

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
bool integrators::Qmc< T, D, M, P, F, G, H >::batching

◆ cputhreads

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::cputhreads

◆ cudablocks

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::cudablocks

◆ cudathreadsperblock

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::cudathreadsperblock

◆ devices

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
std::set<int> integrators::Qmc< T, D, M, P, F, G, H >::devices

◆ epsabs

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
D integrators::Qmc< T, D, M, P, F, G, H >::epsabs

◆ epsrel

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
D integrators::Qmc< T, D, M, P, F, G, H >::epsrel

◆ errormode

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
ErrorMode integrators::Qmc< T, D, M, P, F, G, H >::errormode

◆ evaluateminn

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::evaluateminn

◆ fitftol

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
double integrators::Qmc< T, D, M, P, F, G, H >::fitftol

◆ fitgtol

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
double integrators::Qmc< T, D, M, P, F, G, H >::fitgtol

◆ fitmaxiter

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
size_t integrators::Qmc< T, D, M, P, F, G, H >::fitmaxiter

◆ fitparametersgsl

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
gsl_multifit_nlinear_parameters integrators::Qmc< T, D, M, P, F, G, H >::fitparametersgsl

◆ fitstepsize

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
size_t integrators::Qmc< T, D, M, P, F, G, H >::fitstepsize

◆ fitxtol

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
double integrators::Qmc< T, D, M, P, F, G, H >::fitxtol

◆ generatingvectors

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
std::map<U,std::vector<U> > integrators::Qmc< T, D, M, P, F, G, H >::generatingvectors

◆ keeplattices

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
bool integrators::Qmc< T, D, M, P, F, G, H >::keeplattices

◆ latticecandidates

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::latticecandidates

◆ logger

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
Logger integrators::Qmc< T, D, M, P, F, G, H >::logger

◆ maxeval

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::maxeval

◆ maxmperpackage

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::maxmperpackage

◆ maxnperpackage

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::maxnperpackage

◆ minm

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::minm

◆ minn

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::minn

◆ randomgenerator

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
G integrators::Qmc< T, D, M, P, F, G, H >::randomgenerator

◆ uniform_distribution

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
H integrators::Qmc< T, D, M, P, F, G, H >::uniform_distribution {0,1}
private

◆ verbosity

template<typename T , typename D , U M, template< typename, typename, U > class P = transforms::Korobov<3>::template type, template< typename, typename, U > class F = fitfunctions::None::template type, typename G = std::mt19937_64, typename H = std::uniform_real_distribution<D>>
U integrators::Qmc< T, D, M, P, F, G, H >::verbosity

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