OpenFPM_pdata  1.1.0
Project that contain the implementation of distributed structures
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Friends Pages
map_grid.hpp
1 #ifndef MAP_HPP_
2 #define MAP_HPP_
3 
4 #include "config.h"
5 
8 #include "util/object_util.hpp"
9 #include "Grid/util.hpp"
10 #include "Vector/vect_isel.hpp"
11 #include "Vector/util.hpp"
12 #include "Vector/map_vector_grow_p.hpp"
13 #include "memory/ExtPreAlloc.hpp"
14 #include "util/util_debug.hpp"
15 #include "util/Pack_stat.hpp"
16 #include <boost/fusion/include/mpl.hpp>
17 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
18 #include <boost/fusion/include/at_c.hpp>
19 #include <boost/fusion/include/for_each.hpp>
20 #include <boost/fusion/container/vector.hpp>
21 #include <boost/fusion/include/vector.hpp>
22 #include <boost/fusion/container/vector/vector_fwd.hpp>
23 #include <boost/fusion/include/vector_fwd.hpp>
24 #include <boost/type_traits.hpp>
25 #include <boost/fusion/include/for_each.hpp>
26 #include <boost/mpl/range_c.hpp>
27 #include <boost/mpl/for_each.hpp>
28 #include "memory_ly/memory_conf.hpp"
29 #include "util/copy_compare/meta_copy.hpp"
30 #ifdef SE_CLASS2
31 #include "Memleak_check.hpp"
32 #endif
33 #include "util/for_each_ref.hpp"
34 #include "util.hpp"
35 #include <utility>
36 #ifdef CUDA_GPU
37 #include "memory/CudaMemory.cuh"
38 #endif
39 #include "grid_sm.hpp"
40 #include "Encap.hpp"
41 #include "memory_ly/memory_array.hpp"
42 #include "memory_ly/memory_c.hpp"
43 #include <vector>
44 #include "se_grid.hpp"
45 #include "memory/HeapMemory.hpp"
46 #include "memory/PtrMemory.hpp"
47 #include "grid_common.hpp"
48 #include "util/se_util.hpp"
49 #include "iterators/grid_key_dx_iterator.hpp"
50 #include "iterators/grid_key_dx_iterator_sub.hpp"
51 #include "iterators/grid_key_dx_iterator_sp.hpp"
52 #include "iterators/grid_key_dx_iterator_sub_bc.hpp"
53 #include "Packer_Unpacker/Packer_util.hpp"
54 #include "Packer_Unpacker/has_pack_agg.hpp"
55 #include "grid_base_implementation.hpp"
56 
57 #ifndef CUDA_GPU
58 typedef HeapMemory CudaMemory;
59 #endif
60 
64 template<unsigned int dim, typename T, typename S=HeapMemory, typename layout = typename memory_traits_lin<T>::type >
65 class grid_cpu
66 {
67 };
68 
69 
101 template<unsigned int dim, typename T, typename S>
102 class grid_cpu<dim,T,S,typename memory_traits_lin<T>::type> : public grid_base_impl<dim,T,S,typename memory_traits_lin<T>::type, memory_traits_lin>
103 {
104 
105 public:
106 
109 
111  // you can access all the properties of T
113 
115  inline grid_cpu() THROW
117  {
118  }
119 
128  inline grid_cpu(const grid_cpu<dim,T,S,typename memory_traits_lin<T>::type> & g) THROW
130  {
131  }
132 
140  inline grid_cpu(const size_t & sz) THROW
142  {
143  }
144 
146  inline grid_cpu(const size_t (& sz)[dim]) THROW
148  {
149  }
150 
157  {
159 
160  return *this;
161  }
162 
169  {
171 
172  return *this;
173  }
174 
180  static bool noPointers()
181  {
182  return false;
183  }
184 };
185 
186 #include "grid_gpu.hpp"
187 
188 #endif
189 
190 
Transform the boost::fusion::vector into memory specification (memory_traits)
Definition: memory_conf.hpp:93
grid_cpu< dim, T, S, typename memory_traits_lin< T >::type > & operator=(const grid_base_impl< dim, T, S, layout, memory_traits_lin > &g)
It copy a grid.
Definition: map_grid.hpp:156
grid_base_impl< dim, T, S, typename memory_traits_lin< T >::type, memory_traits_lin >::container container
Object container for T, it is the return type of get_o it return a object type trough.
Definition: map_grid.hpp:112
static bool noPointers()
This structure has pointers.
Definition: map_grid.hpp:180
This class allocate, and destroy CPU memory.
Definition: HeapMemory.hpp:39
memory_traits_lin< T >::type layout
type of layout of the structure
Definition: map_grid.hpp:108
void swap(grid_base_impl< dim, T, S, layout, layout_base > &grid)
It move the allocated object from one grid to another.
grid_cpu< dim, T, S, typename memory_traits_lin< T >::type > & operator=(grid_base_impl< dim, T, S, layout, memory_traits_lin > &&g)
It copy a grid.
Definition: map_grid.hpp:168
grid_cpu(const size_t &sz) THROW
create a grid of size sz on each direction
Definition: map_grid.hpp:140
This class is a container for the memory interface like HeapMemory CudaMemory.
Definition: memory_c.hpp:31
grid_cpu(const grid_cpu< dim, T, S, typename memory_traits_lin< T >::type > &g) THROW
create a grid from another grid
Definition: map_grid.hpp:128
grid_base_impl< dim, T, S, layout, layout_base > duplicate() const THROW
create a duplicated version of the grid
grid_cpu(const size_t(&sz)[dim]) THROW
Constructor allocate memory and give them a representation.
Definition: map_grid.hpp:146
Implementation of a N-dimensional grid.