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

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

#include <tex_linear_interpolation_2D.hh>

Public Types

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

Public Member Functions

 TexLinearInterpolator2D (const std::vector< NT > &data, const Coordinates &coordinates)
 Construct a TexLinearInterpolator2D object from a vector of data and a coordinate system.
 
 TexLinearInterpolator2D (const NT *data, const Coordinates &coordinates)
 Construct a TexLinearInterpolator2D object from a pointer to data and a coordinate system.
 
 TexLinearInterpolator2D (const Coordinates &coordinates)
 Construct a TexLinearInterpolator2D with internal, zeroed data and a coordinate system.
 
 TexLinearInterpolator2D (const TexLinearInterpolator2D &other)
 Construct a copy of a TexLinearInterpolator2D object.
 
 ~TexLinearInterpolator2D ()
 
template<typename NT2 >
void update (const NT2 *data)
 
void update ()
 
float * data () const
 
float * data_AD () const
 
__device__ __host__ ReturnType operator() (const float x, const float y) 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 size
 
const std::array< uint, 2 > shape
 
const Coordinates coordinates
 
std::shared_ptr< float[]> m_data
 
cudaArray_t device_array
 
cudaTextureObject_t texture
 
std::shared_ptr< float[]> m_data_AD
 
cudaArray_t device_array_AD
 
cudaTextureObject_t texture_AD
 
const bool owner
 

Detailed Description

template<typename NT, typename Coordinates>
class DiFfRG::TexLinearInterpolator2D< NT, Coordinates >

A linear interpolator for 2D 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 >
using DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::ReturnType = typename internal::__TLITypes<NT>::ReturnType

Constructor & Destructor Documentation

◆ TexLinearInterpolator2D() [1/4]

template<typename NT , typename Coordinates >
DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::TexLinearInterpolator2D ( const std::vector< NT > & data,
const Coordinates & coordinates )

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

Parameters
datavector containing the data
coordinatescoordinate system of the data

◆ TexLinearInterpolator2D() [2/4]

template<typename NT , typename Coordinates >
DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::TexLinearInterpolator2D ( const NT * data,
const Coordinates & coordinates )

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

Parameters
datapointer to the data
coordinatescoordinate system of the data

◆ TexLinearInterpolator2D() [3/4]

template<typename NT , typename Coordinates >
DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::TexLinearInterpolator2D ( const Coordinates & coordinates)

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

Parameters
coordinatescoordinate system of the data

◆ TexLinearInterpolator2D() [4/4]

template<typename NT , typename Coordinates >
DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::TexLinearInterpolator2D ( const TexLinearInterpolator2D< NT, Coordinates > & other)

Construct a copy of a TexLinearInterpolator2D object.

Parameters
otherthe object to copy

◆ ~TexLinearInterpolator2D()

template<typename NT , typename Coordinates >
DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::~TexLinearInterpolator2D ( )

Member Function Documentation

◆ data()

template<typename NT , typename Coordinates >
float * DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::data ( ) const

◆ data_AD()

template<typename NT , typename Coordinates >
float * DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::data_AD ( ) const

◆ get_coordinates()

template<typename NT , typename Coordinates >
const Coordinates & DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::get_coordinates ( ) const
inline

Get the coordinate system of the data.

Returns
const Coordinates& the coordinate system

◆ operator()()

template<typename NT , typename Coordinates >
__device__ __host__ ReturnType DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::operator() ( const float x,
const float y ) const
inline

Interpolate the data at a given point.

Parameters
xx-coordinate of the point
yy-coordinate of the point
Returns
ReturnType the interpolated value

◆ operator[]() [1/2]

template<typename NT , typename Coordinates >
ReturnType & DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::operator[] ( const uint i)

◆ operator[]() [2/2]

template<typename NT , typename Coordinates >
const ReturnType & DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::operator[] ( const uint i) const

◆ update() [1/2]

template<typename NT , typename Coordinates >
void DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::update ( )

◆ update() [2/2]

template<typename NT , typename Coordinates >
template<typename NT2 >
void DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::update ( const NT2 * data)
inline

Member Data Documentation

◆ coordinates

template<typename NT , typename Coordinates >
const Coordinates DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::coordinates
private

◆ device_array

template<typename NT , typename Coordinates >
cudaArray_t DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::device_array
private

◆ device_array_AD

template<typename NT , typename Coordinates >
cudaArray_t DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::device_array_AD
private

◆ m_data

template<typename NT , typename Coordinates >
std::shared_ptr<float[]> DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::m_data
private

◆ m_data_AD

template<typename NT , typename Coordinates >
std::shared_ptr<float[]> DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::m_data_AD
private

◆ owner

template<typename NT , typename Coordinates >
const bool DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::owner
private

◆ shape

template<typename NT , typename Coordinates >
const std::array<uint, 2> DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::shape
private

◆ size

template<typename NT , typename Coordinates >
const uint DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::size
private

◆ texture

template<typename NT , typename Coordinates >
cudaTextureObject_t DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::texture
private

◆ texture_AD

template<typename NT , typename Coordinates >
cudaTextureObject_t DiFfRG::TexLinearInterpolator2D< NT, Coordinates >::texture_AD
private

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