DiFfRG
Loading...
Searching...
No Matches
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size > Class Template Reference

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

#include <tex_linear_interpolation_1D_stack.hh>

Public Types

using ReturnType = typename internal::__TLITypes<NT>::ReturnType
 

Public Member Functions

 TexLinearInterpolator1DStack (const std::vector< NT > &data, const Coordinates &coordinates)
 Construct a TexLinearInterpolator1D object from a vector of data and a coordinate system.
 
 TexLinearInterpolator1DStack (const NT *data, const Coordinates &coordinates)
 Construct a TexLinearInterpolator1D object from a pointer to data and a coordinate system.
 
 TexLinearInterpolator1DStack (const Coordinates &coordinates)
 Construct a TexLinearInterpolator1D with internal, zeroed data and a coordinate system.
 
template<typename Coordinates2 >
 TexLinearInterpolator1DStack (const Coordinates2 &coordinates, const uint m_start, const uint m_end, const double T)
 
 TexLinearInterpolator1DStack (const TexLinearInterpolator1DStack &other)
 Construct a copy of a TexLinearInterpolator1D object.
 
 ~TexLinearInterpolator1DStack ()
 
template<typename NT2 >
void update (const NT2 *data)
 
void update ()
 
float * data (const uint i) const
 
float * data_AD (const uint i) const
 
__device__ __host__ ReturnType operator() (const float m, const float p) const
 Interpolate the data at a given point.
 
ReturnTypeoperator[] (const uint i)
 
const ReturnTypeoperator[] (const uint i) const
 
const Coordinates & get_coordinates () const
 Get the coordinate system of the data.
 

Private Attributes

const uint stack_size
 
const uint p_size
 
const Coordinates coordinates
 
std::vector< std::shared_ptr< float[]> > m_data
 
std::vector< cudaArray_t > device_array
 
cudaTextureObject_t texture [max_stack_size]
 
std::vector< std::shared_ptr< float[]> > m_data_AD
 
std::vector< cudaArray_t > device_array_AD
 
cudaTextureObject_t texture_AD [max_stack_size]
 
const bool owner
 

Detailed Description

template<typename NT, typename Coordinates, uint max_stack_size = 64>
class DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >

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

◆ ReturnType

template<typename NT , typename Coordinates , uint max_stack_size = 64>
using DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::ReturnType = typename internal::__TLITypes<NT>::ReturnType

Constructor & Destructor Documentation

◆ TexLinearInterpolator1DStack() [1/5]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::TexLinearInterpolator1DStack ( const std::vector< NT > & data,
const Coordinates & coordinates )

Construct a TexLinearInterpolator1D object from a vector of data and a coordinate system.

Parameters
datavector containing the data
coordinatescoordinate system of the data

◆ TexLinearInterpolator1DStack() [2/5]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::TexLinearInterpolator1DStack ( const NT * data,
const Coordinates & coordinates )

Construct a TexLinearInterpolator1D object from a pointer to data and a coordinate system.

Parameters
datapointer to the data
coordinatescoordinate system of the data

◆ TexLinearInterpolator1DStack() [3/5]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::TexLinearInterpolator1DStack ( const Coordinates & coordinates)

Construct a TexLinearInterpolator1D with internal, zeroed data and a coordinate system.

Parameters
coordinatescoordinate system of the data

◆ TexLinearInterpolator1DStack() [4/5]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
template<typename Coordinates2 >
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::TexLinearInterpolator1DStack ( const Coordinates2 & coordinates,
const uint m_start,
const uint m_end,
const double T )
inline

◆ TexLinearInterpolator1DStack() [5/5]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::TexLinearInterpolator1DStack ( const TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size > & other)

Construct a copy of a TexLinearInterpolator1D object.

Parameters
otherthe object to copy

◆ ~TexLinearInterpolator1DStack()

template<typename NT , typename Coordinates , uint max_stack_size = 64>
DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::~TexLinearInterpolator1DStack ( )

Member Function Documentation

◆ data()

template<typename NT , typename Coordinates , uint max_stack_size = 64>
float * DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::data ( const uint i) const

◆ data_AD()

template<typename NT , typename Coordinates , uint max_stack_size = 64>
float * DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::data_AD ( const uint i) const

◆ get_coordinates()

template<typename NT , typename Coordinates , uint max_stack_size = 64>
const Coordinates & DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::get_coordinates ( ) const
inline

Get the coordinate system of the data.

Returns
const Coordinates& the coordinate system

◆ operator()()

template<typename NT , typename Coordinates , uint max_stack_size = 64>
__device__ __host__ ReturnType DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::operator() ( const float m,
const float p ) const
inline

Interpolate the data at a given point.

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

◆ operator[]() [1/2]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
ReturnType & DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::operator[] ( const uint i)

◆ operator[]() [2/2]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
const ReturnType & DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::operator[] ( const uint i) const

◆ update() [1/2]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
void DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::update ( )

◆ update() [2/2]

template<typename NT , typename Coordinates , uint max_stack_size = 64>
template<typename NT2 >
void DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::update ( const NT2 * data)
inline

Member Data Documentation

◆ coordinates

template<typename NT , typename Coordinates , uint max_stack_size = 64>
const Coordinates DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::coordinates
private

◆ device_array

template<typename NT , typename Coordinates , uint max_stack_size = 64>
std::vector<cudaArray_t> DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::device_array
private

◆ device_array_AD

template<typename NT , typename Coordinates , uint max_stack_size = 64>
std::vector<cudaArray_t> DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::device_array_AD
private

◆ m_data

template<typename NT , typename Coordinates , uint max_stack_size = 64>
std::vector<std::shared_ptr<float[]> > DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::m_data
private

◆ m_data_AD

template<typename NT , typename Coordinates , uint max_stack_size = 64>
std::vector<std::shared_ptr<float[]> > DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::m_data_AD
private

◆ owner

template<typename NT , typename Coordinates , uint max_stack_size = 64>
const bool DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::owner
private

◆ p_size

template<typename NT , typename Coordinates , uint max_stack_size = 64>
const uint DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::p_size
private

◆ stack_size

template<typename NT , typename Coordinates , uint max_stack_size = 64>
const uint DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::stack_size
private

◆ texture

template<typename NT , typename Coordinates , uint max_stack_size = 64>
cudaTextureObject_t DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::texture[max_stack_size]
private

◆ texture_AD

template<typename NT , typename Coordinates , uint max_stack_size = 64>
cudaTextureObject_t DiFfRG::TexLinearInterpolator1DStack< NT, Coordinates, max_stack_size >::texture_AD[max_stack_size]
private

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