OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
memory_traits_lin< T > Struct Template Reference

Transform the boost::fusion::vector into memory specification (memory_traits) More...

Detailed Description

template<typename T>
struct memory_traits_lin< T >

Transform the boost::fusion::vector into memory specification (memory_traits)

Transform the boost::fusion::vector into memory specification (memory_traits). In this implementation we create a buffer of base type with memory_c

We basically create a buffer for each property

Parameters
Tbase type (T::type must define a boost::fusion::vector )

Definition at line 242 of file memory_conf.hpp.

#include <memory_conf.hpp>

Public Types

typedef memory_traits_lin_type< T, openfpm::vect_isel< T >::value==OPENFPM_NATIVE >::type type
 for each element in the vector interleave memory_c
 
typedef int yes_is_tlin
 
typedef boost::mpl::int_< AOS_layout > type_value
 

Static Public Member Functions

template<unsigned int p, typename data_type , typename g1_type , typename key_type >
__host__ static __device__ auto get (data_type &data_, const g1_type &g1, const key_type &v1) -> decltype(boost::fusion::at_c< p >(data_.mem_r.operator[](g1.LinId(v1)))) &
 Return a reference to the selected element. More...
 
template<unsigned int p, typename data_type , typename g1_type >
__host__ static __device__ auto get_lin (data_type &data_, const g1_type &g1, const size_t lin_id) -> decltype(boost::fusion::at_c< p >(data_.mem_r.operator[](lin_id))) &
 Return a reference to the selected element. More...
 
template<unsigned int p, typename data_type , typename g1_type , typename key_type >
__host__ static __device__ auto get_c (const data_type &data_, const g1_type &g1, const key_type &v1) -> decltype(boost::fusion::at_c< p >(data_.mem_r.operator[](g1.LinId(v1)))) &
 Return a reference to the selected element. More...
 
template<unsigned int p, typename data_type , typename g1_type >
__host__ static __device__ auto get_lin_c (const data_type &data_, const g1_type &g1, const size_t lin_id) -> decltype(boost::fusion::at_c< p >(data_.mem_r.operator[](lin_id))) &
 Return a reference to the selected element. More...
 
template<typename S , typename data_type , unsigned int ... prp>
static void hostToDevice (data_type &data_, size_t start, size_t stop)
 Copy the memory from host to device. More...
 
template<typename data_type , unsigned int ... prp>
static void deviceToHost (data_type &data_, size_t start, size_t stop)
 Synchronize the memory buffer in the device with the memory in the host. More...
 

Member Function Documentation

◆ deviceToHost()

template<typename T>
template<typename data_type , unsigned int ... prp>
static void memory_traits_lin< T >::deviceToHost ( data_type &  data_,
size_t  start,
size_t  stop 
)
inlinestatic

Synchronize the memory buffer in the device with the memory in the host.

Parameters
startstarting element to transfer
stopstop element to transfer
Template Parameters
propertiesto transfer (ignored all properties are trasfert)

Definition at line 334 of file memory_conf.hpp.

◆ get()

template<typename T>
template<unsigned int p, typename data_type , typename g1_type , typename key_type >
__host__ static __device__ auto memory_traits_lin< T >::get ( data_type &  data_,
const g1_type &  g1,
const key_type &  v1 
) -> decltype(boost::fusion::at_c<p>(data_.mem_r.operator[](g1.LinId(v1)))) &
inlinestatic

Return a reference to the selected element.

Parameters
dataobject from where to take the element
g1grid information
v1element id
Returns
a reference to the object selected

Definition at line 261 of file memory_conf.hpp.

◆ get_c()

template<typename T>
template<unsigned int p, typename data_type , typename g1_type , typename key_type >
__host__ static __device__ auto memory_traits_lin< T >::get_c ( const data_type &  data_,
const g1_type &  g1,
const key_type &  v1 
) -> decltype(boost::fusion::at_c<p>(data_.mem_r.operator[](g1.LinId(v1)))) &
inlinestatic

Return a reference to the selected element.

Parameters
dataobject from where to take the element
g1grid information
v1element id
Returns
a reference to the object selected

Definition at line 291 of file memory_conf.hpp.

◆ get_lin()

template<typename T>
template<unsigned int p, typename data_type , typename g1_type >
__host__ static __device__ auto memory_traits_lin< T >::get_lin ( data_type &  data_,
const g1_type &  g1,
const size_t  lin_id 
) -> decltype(boost::fusion::at_c<p>(data_.mem_r.operator[](lin_id))) &
inlinestatic

Return a reference to the selected element.

Parameters
dataobject from where to take the element
g1grid information
v1element id
Returns
a reference to the object selected

Definition at line 276 of file memory_conf.hpp.

◆ get_lin_c()

template<typename T>
template<unsigned int p, typename data_type , typename g1_type >
__host__ static __device__ auto memory_traits_lin< T >::get_lin_c ( const data_type &  data_,
const g1_type &  g1,
const size_t  lin_id 
) -> decltype(boost::fusion::at_c<p>(data_.mem_r.operator[](lin_id))) &
inlinestatic

Return a reference to the selected element.

Parameters
dataobject from where to take the element
g1grid information
v1element id
Returns
a reference to the object selected

Definition at line 306 of file memory_conf.hpp.

◆ hostToDevice()

template<typename T>
template<typename S , typename data_type , unsigned int ... prp>
static void memory_traits_lin< T >::hostToDevice ( data_type &  data_,
size_t  start,
size_t  stop 
)
inlinestatic

Copy the memory from host to device.

Template Parameters
(allproperties are copied to prp is useless in this case)
Parameters
startstart point
stopstop point

Definition at line 320 of file memory_conf.hpp.


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