DiFfRG
Loading...
Searching...
No Matches
DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 > Class Template Reference

#include <integrator_4D_gpu_fq.hh>

Classes

struct  functor
 

Public Types

using ctype = typename get_type::ctype<NT>
 Numerical type to be used for integration tasks e.g. the argument or possible jacobians.
 

Public Member Functions

 Integrator4DGPU_fq (QuadratureProvider &quadrature_provider, const std::array< uint, 4 > grid_sizes, const ctype x_extent, const JSONValue &json)
 
 Integrator4DGPU_fq (QuadratureProvider &quadrature_provider, std::array< uint, 4 > grid_sizes, const ctype x_extent, const uint max_block_size=256)
 
 Integrator4DGPU_fq (const Integrator4DGPU_fq &other)
 
template<typename... T>
NT get (const ctype k, const T &...t) const
 Get the integral of the kernel.
 
template<typename... T>
std::future< NT > request (const ctype k, const T &...t) const
 Request a future for the integral of the kernel.
 

Private Types

using PoolMR = rmm::mr::pool_memory_resource<rmm::mr::device_memory_resource>
 

Private Attributes

QuadratureProviderquadrature_provider
 
const std::array< uint, 4 > grid_sizes
 
std::array< uint, 3 > block_sizes
 
const uint device_data_size
 
const ctypeptr_x_quadrature_p
 
const ctypeptr_x_quadrature_w
 
const ctypeptr_ang_quadrature_p
 
const ctypeptr_ang_quadrature_w
 
const ctype x_extent
 
dim3 num_blocks
 
dim3 threads_per_block
 
int n_devices
 
std::vector< std::shared_ptr< PoolMR > > pool
 
const rmm::cuda_stream_pool cuda_stream_pool
 
std::atomic_ullong evaluations
 

Member Typedef Documentation

◆ ctype

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
using DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::ctype = typename get_type::ctype<NT>

Numerical type to be used for integration tasks e.g. the argument or possible jacobians.

◆ PoolMR

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
using DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::PoolMR = rmm::mr::pool_memory_resource<rmm::mr::device_memory_resource>
private

Constructor & Destructor Documentation

◆ Integrator4DGPU_fq() [1/3]

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::Integrator4DGPU_fq ( QuadratureProvider & quadrature_provider,
const std::array< uint, 4 > grid_sizes,
const ctype x_extent,
const JSONValue & json )
inline

◆ Integrator4DGPU_fq() [2/3]

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::Integrator4DGPU_fq ( QuadratureProvider & quadrature_provider,
std::array< uint, 4 > grid_sizes,
const ctype x_extent,
const uint max_block_size = 256 )
inline

◆ Integrator4DGPU_fq() [3/3]

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::Integrator4DGPU_fq ( const Integrator4DGPU_fq< NT, KERNEL, q1, q2 > & other)
inline

Member Function Documentation

◆ get()

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
template<typename... T>
NT DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::get ( const ctype k,
const T &... t ) const
inline

Get the integral of the kernel.

Template Parameters
TTypes of the parameters for the kernel.
Parameters
kRG-scale.
tParameters forwarded to the kernel.
Returns
NT Integral of the kernel plus the constant part.

◆ request()

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
template<typename... T>
std::future< NT > DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::request ( const ctype k,
const T &... t ) const
inline

Request a future for the integral of the kernel.

Template Parameters
TTypes of the parameters for the kernel.
Parameters
kRG-scale.
tParameters forwarded to the kernel.
Returns
std::future<NT> future holding the integral of the kernel plus the constant part.

Member Data Documentation

◆ block_sizes

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
std::array<uint, 3> DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::block_sizes
private

◆ cuda_stream_pool

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const rmm::cuda_stream_pool DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::cuda_stream_pool
private

◆ device_data_size

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const uint DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::device_data_size
private

◆ evaluations

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
std::atomic_ullong DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::evaluations
mutableprivate

◆ grid_sizes

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const std::array<uint, 4> DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::grid_sizes
private

◆ n_devices

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
int DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::n_devices
private

◆ num_blocks

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
dim3 DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::num_blocks
private

◆ pool

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
std::vector<std::shared_ptr<PoolMR> > DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::pool
mutableprivate

◆ ptr_ang_quadrature_p

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const ctype* DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::ptr_ang_quadrature_p
private

◆ ptr_ang_quadrature_w

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const ctype* DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::ptr_ang_quadrature_w
private

◆ ptr_x_quadrature_p

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const ctype* DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::ptr_x_quadrature_p
private

◆ ptr_x_quadrature_w

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const ctype* DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::ptr_x_quadrature_w
private

◆ quadrature_provider

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
QuadratureProvider& DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::quadrature_provider
private

◆ threads_per_block

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
dim3 DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::threads_per_block
private

◆ x_extent

template<typename NT , typename KERNEL , size_t q1 = 32, size_t q2 = 8>
const ctype DiFfRG::Integrator4DGPU_fq< NT, KERNEL, q1, q2 >::x_extent
private

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