SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace > Class Template Reference#

DiFfRG: DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace > Class Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace > Class Template Reference

A linear interpolator for 1D data, using texture memory on the GPU and floating point arithmetic on the CPU. More...

#include <spline_interpolator_1d_stack.hh>

Public Types

using memory_space = DefaultMemorySpace
 
using other_memory_space = other_memory_space_t< DefaultMemorySpace >
 
using ctype = typename Coordinates::ctype
 
using value_type = NT
 

Public Member Functions

 SplineInterpolator1DStack (const Coordinates &coordinates)
 Construct a SplineInterpolator1DStack with zeroed data and a coordinate system.
 
KOKKOS_FUNCTION SplineInterpolator1DStack (const SplineInterpolator1DStack &other)
 Copy constructor for SplineInterpolator1DStack. This is ONLY for usage inside Kokkos parallel loops.
 
KOKKOS_FUNCTION ~SplineInterpolator1DStack ()
 
template<typename NT2 >
void update (const NT2 *in_data, const ctype lower_y1=std::numeric_limits< ctype >::max(), const ctype upper_y1=std::numeric_limits< ctype >::max())
 
template<typename View >
requires (Kokkos::is_view<View>::value && View::rank == 2)
void update (const View &view, const ctype lower_y1=std::numeric_limits< ctype >::max(), const ctype upper_y1=std::numeric_limits< ctype >::max())
 
NT KOKKOS_FUNCTION operator() (const typename Coordinates::ctype s, const typename Coordinates::ctype x) const
 Interpolate the data at a given point.
 
NT operator[] (size_t i) const
 
autoCPU () const
 
autoGPU () const
 
template<typename MemorySpace >
autoget_on () const
 
const Coordinatesget_coordinates () const
 Get the coordinate system of the data.
 
NTdata ()
 

Static Public Attributes

static constexpr size_t dim = 2
 

Private Types

using ValueViewType = Kokkos::View< NT **, DefaultMemorySpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > >
 
using CoeffViewType = Kokkos::View< NT **, DefaultMemorySpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > >
 
using HostValueViewType = typename ValueViewType::host_mirror_type
 
using HostCoeffViewType = typename CoeffViewType::host_mirror_type
 

Private Member Functions

void build_y2 (const size_t sidx, const ctype lower_y1, const ctype upper_y1)
 

Private Attributes

const Coordinates coordinates
 
const device::array< size_t, 2 > sizes
 
ValueViewType device_values
 
CoeffViewType device_coeffs
 
HostValueViewType host_values
 
HostCoeffViewType host_coeffs
 
SplineInterpolator1DStack< NT, Coordinates, other_memory_space > * other_instance = nullptr
 
bool owns_other_instance = false
 

Friends

class SplineInterpolator1DStack< NT, Coordinates, other_memory_space >
 

Detailed Description

template<typename NT, typename Coordinates, typename DefaultMemorySpace = CPU_memory>
class DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >

A linear interpolator for 1D data, using texture memory on the GPU and floating point arithmetic on the CPU.

Template Parameters
NTinput data type
Coordinatescoordinate system of the input data

Member Typedef Documentation

◆ CoeffViewType

using DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::CoeffViewType = Kokkos::View<NT **, DefaultMemorySpace, Kokkos::MemoryTraits<Kokkos::RandomAccess> >
private

◆ ctype

◆ HostCoeffViewType

using DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::HostCoeffViewType = typename CoeffViewType::host_mirror_type
private

◆ HostValueViewType

using DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::HostValueViewType = typename ValueViewType::host_mirror_type
private

◆ memory_space

◆ other_memory_space

◆ value_type

◆ ValueViewType

using DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::ValueViewType = Kokkos::View<NT **, DefaultMemorySpace, Kokkos::MemoryTraits<Kokkos::RandomAccess> >
private

Constructor & Destructor Documentation

◆ SplineInterpolator1DStack() [1/2]

DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::SplineInterpolator1DStack ( const Coordinates coordinates)
inline

Construct a SplineInterpolator1DStack with zeroed data and a coordinate system.

Parameters
coordinatescoordinate system of the data

◆ SplineInterpolator1DStack() [2/2]

Copy constructor for SplineInterpolator1DStack. This is ONLY for usage inside Kokkos parallel loops.

◆ ~SplineInterpolator1DStack()

Member Function Documentation

◆ build_y2()

void DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::build_y2 ( const size_t  sidx,
const ctype  lower_y1,
const ctype  upper_y1 
)
inlineprivate

◆ CPU()

◆ data()

◆ get_coordinates()

Get the coordinate system of the data.

Returns
const Coordinates& the coordinate system

◆ get_on()

◆ GPU()

◆ operator()()

NT KOKKOS_FUNCTION DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::operator() ( const typename Coordinates::ctype  s,
const typename Coordinates::ctype  x 
) const
inline

Interpolate the data at a given point.

Parameters
xthe point at which to interpolate
Returns
NT the interpolated value

◆ operator[]()

◆ update() [1/2]

template<typename NT2 >
void DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::update ( const NT2 in_data,
const ctype  lower_y1 = std::numeric_limits<ctype>::max(),
const ctype  upper_y1 = std::numeric_limits<ctype>::max() 
)
inline

◆ update() [2/2]

template<typename View >
requires (Kokkos::is_view<View>::value && View::rank == 2)
void DiFfRG::SplineInterpolator1DStack< NT, Coordinates, DefaultMemorySpace >::update ( const View view,
const ctype  lower_y1 = std::numeric_limits<ctype>::max(),
const ctype  upper_y1 = std::numeric_limits<ctype>::max() 
)
inline

Friends And Related Symbol Documentation

◆ SplineInterpolator1DStack< NT, Coordinates, other_memory_space >

Member Data Documentation

◆ coordinates

◆ device_coeffs

◆ device_values

◆ dim

◆ host_coeffs

◆ host_values

◆ other_instance

◆ owns_other_instance

◆ sizes


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