This is a distributed grid. More...
This is a distributed grid.
Implementation of a distributed grid the decomposition is geometrical, grid is splitted across several processor
dim | Dimensionality of the grid |
St | Type of space where the grid is living |
T | object the grid is storing |
Decomposition | Class that decompose the grid for example CartDecomposition |
Mem | Is the allocator |
device | type of base structure is going to store the data |
Definition at line 277 of file grid_dist_id.hpp.
#include <grid_dist_id.hpp>
Public Types | |
typedef device_grid | d_grid |
Which kind of grid the structure store. | |
typedef Decomposition | decomposition |
Decomposition used. | |
typedef T | value_type |
value_type | |
typedef St | stype |
Type of space. | |
typedef Memory | memory_type |
Type of Memory. | |
typedef device_grid | device_grid_type |
Type of device grid. | |
Public Member Functions | |
const Box< dim, St > | getDomain () const |
Get the domain where the grid is defined. | |
Point< dim, St > | getOffset (size_t i) |
Get the point where it start the origin of the grid of the sub-domain i. | |
St | spacing (size_t i) const |
Get the spacing of the grid in direction i. | |
size_t | size () const |
Return the total number of points in the grid. | |
void | setBackgroundValue (T &bv) |
set the background value | |
template<unsigned int p> | |
void | setBackgroundValue (const typename boost::mpl::at< typename T::type, boost::mpl::int_< p > >::type &bv) |
set the background value | |
size_t | size_local_inserted () const |
Return the local total number of points inserted in the grid. | |
size_t | size (size_t i) const |
Return the total number of points in the grid. | |
grid_dist_id (const grid_dist_id< dim, St, T, Decomposition, Memory, device_grid > &g) | |
Copy constructor. | |
template<typename H > | |
grid_dist_id (const grid_dist_id< dim, St, H, typename Decomposition::base_type, Memory, grid_cpu< dim, H > > &g, const Ghost< dim, long int > &gh, Box< dim, size_t > ext) | |
This constructor is special, it construct an expanded grid that perfectly overlap with the previous. | |
template<typename Decomposition2 > | |
grid_dist_id (const Decomposition2 &dec, const size_t(&g_sz)[dim], const Ghost< dim, St > &ghost) | |
grid_dist_id (Decomposition &&dec, const size_t(&g_sz)[dim], const Ghost< dim, St > &ghost) | |
grid_dist_id (const Decomposition &dec, const size_t(&g_sz)[dim], const Ghost< dim, long int > &g) | |
template<typename Decomposition2 > | |
grid_dist_id (const Decomposition2 &dec, const size_t(&g_sz)[dim], const Ghost< dim, long int > &g) | |
grid_dist_id (Decomposition &&dec, const size_t(&g_sz)[dim], const Ghost< dim, long int > &g) | |
grid_dist_id (const size_t(&g_sz)[dim], const Box< dim, St > &domain, const Ghost< dim, St > &g, size_t opt=0) | |
grid_dist_id (const size_t(&g_sz)[dim], const Box< dim, St > &domain, const Ghost< dim, long int > &g, size_t opt=0) | |
grid_dist_id (const size_t(&g_sz)[dim], const Box< dim, St > &domain, const Ghost< dim, St > &g, const periodicity< dim > &p, size_t opt=0) | |
grid_dist_id (const size_t(&g_sz)[dim], const Box< dim, St > &domain, const Ghost< dim, long int > &g, const periodicity< dim > &p, size_t opt=0, const grid_sm< dim, void > &g_dec=grid_sm< dim, void >()) | |
grid_dist_id (const size_t(&g_sz)[dim], const Box< dim, St > &domain, const Ghost< dim, long int > &g, const periodicity< dim > &p, openfpm::vector< Box< dim, long int > > &bx_def) | |
It construct a grid on the full domain restricted to the set of boxes specified. | |
const grid_sm< dim, T > & | getGridInfo () const |
Get an object containing the grid informations. | |
const grid_sm< dim, void > & | getGridInfoVoid () const |
Get an object containing the grid informations without type. | |
Decomposition & | getDecomposition () |
Get the object that store the information about the decomposition. | |
const Decomposition & | getDecomposition () const |
Get the object that store the information about the decomposition. | |
const CellDecomposer_sm< dim, St, shift< dim, St > > & | getCellDecomposer () const |
Return the cell decomposer. | |
bool | isInside (const grid_key_dx< dim > &gk) const |
Check that the global grid key is inside the grid domain. | |
size_t | getLocalDomainSize () const |
Get the total number of grid points for the calling processor. | |
size_t | getLocalDomainWithGhostSize () const |
Get the total number of grid points with ghost for the calling processor. | |
const openfpm::vector< GBoxes< device_grid::dims > > & | getLocalGridsInfo () const |
It return the informations about the local grids. | |
void | getGlobalGridsInfo (openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext_global) const |
It gathers the information about local grids for all of the processors. | |
grid_dist_iterator< dim, device_grid, decltype(device_grid::type_of_subiterator()), FREE > | getOldDomainIterator () const |
It return an iterator that span the full grid domain (each processor span its local domain) | |
grid_dist_id_iterator_dec< Decomposition > | getGridIterator (const grid_key_dx< dim > &start, const grid_key_dx< dim > &stop) |
grid_dist_id_iterator_dec< Decomposition, true > | getGridGhostIterator (const grid_key_dx< dim > &start, const grid_key_dx< dim > &stop) |
grid_dist_id_iterator_dec< Decomposition > | getGridIterator () |
grid_dist_iterator< dim, device_grid, decltype(device_grid::type_of_subiterator()), FREE > | getDomainIterator () const |
It return an iterator that span the full grid domain (each processor span its local domain) | |
template<unsigned int Np> | |
grid_dist_iterator< dim, device_grid, decltype(device_grid::template type_of_subiterator< stencil_offset_compute< dim, Np > >()), FREE, stencil_offset_compute< dim, Np > > | getDomainIteratorStencil (const grid_key_dx< dim >(&stencil_pnt)[Np]) const |
It return an iterator that span the full grid domain (each processor span its local domain) | |
grid_dist_iterator< dim, device_grid, decltype(device_grid::type_of_iterator()), FIXED > | getDomainGhostIterator () const |
It return an iterator that span the grid domain + ghost part. | |
grid_dist_iterator_sub< dim, device_grid > | getSubDomainIterator (const grid_key_dx< dim > &start, const grid_key_dx< dim > &stop) const |
It return an iterator that span the grid domain only in the specified part. | |
grid_dist_iterator_sub< dim, device_grid > | getSubDomainIterator (const long int(&start)[dim], const long int(&stop)[dim]) const |
It return an iterator that span the grid domain only in the specified part. | |
~grid_dist_id () | |
Destructor. | |
Vcluster & | getVC () |
Get the Virtual Cluster machine. | |
void | removeUnusedBuffers () |
Eliminate many internal temporary buffer you can use this between flushes if you get some out of memory. | |
bool | is_staggered () const |
Indicate that this grid is not staggered. | |
template<typename bg_key > | |
void | remove (const grid_dist_key_dx< dim, bg_key > &v1) |
remove an element in the grid | |
template<typename bg_key > | |
void | remove_no_flush (const grid_dist_key_dx< dim, bg_key > &v1) |
remove an element in the grid | |
template<typename ... v_reduce> | |
void | flush (flush_type opt=flush_type::FLUSH_ON_HOST) |
void | flush_remove () |
remove an element in the grid | |
template<unsigned int p, typename bg_key > | |
auto | insert (const grid_dist_key_dx< dim, bg_key > &v1) -> decltype(loc_grid.get(v1.getSub()).template insert< p >(v1.getKey())) |
insert an element in the grid | |
template<unsigned int p, typename bg_key > | |
auto | insertFlush (const grid_dist_key_dx< dim, bg_key > &v1) -> decltype(loc_grid.get(v1.getSub()).template insertFlush< p >(v1.getKey())) |
insert an element in the grid | |
template<typename bg_key > | |
auto | insertFlush (const grid_dist_key_dx< dim, bg_key > &v1) -> decltype(loc_grid.get(v1.getSub()).template insertFlush(v1.getKey())) |
insert an element in the grid | |
template<unsigned int p, typename bg_key > | |
auto | get (const grid_dist_key_dx< dim, bg_key > &v1) const -> typename std::add_lvalue_reference< decltype(loc_grid.get(v1.getSub()).template get< p >(v1.getKey()))>::type |
Get the reference of the selected element. | |
template<unsigned int p, typename bg_key > | |
auto | get (const grid_dist_key_dx< dim, bg_key > &v1) -> decltype(loc_grid.get(v1.getSub()).template get< p >(v1.getKey())) |
Get the reference of the selected element. | |
template<unsigned int p = 0> | |
auto | get (const grid_dist_g_dx< device_grid > &v1) const -> decltype(v1.getSub() ->template get< p >(v1.getKey())) |
Get the reference of the selected element. | |
template<unsigned int p = 0> | |
auto | get (const grid_dist_g_dx< device_grid > &v1) -> decltype(v1.getSub() ->template get< p >(v1.getKey())) |
Get the reference of the selected element. | |
template<unsigned int p = 0> | |
auto | get (const grid_dist_lin_dx &v1) const -> decltype(loc_grid.get(v1.getSub()).template get< p >(v1.getKey())) |
Get the reference of the selected element. | |
template<unsigned int p = 0> | |
auto | get (const grid_dist_lin_dx &v1) -> decltype(loc_grid.get(v1.getSub()).template get< p >(v1.getKey())) |
Get the reference of the selected element. | |
template<typename bg_key > | |
Point< dim, St > | getPos (const grid_dist_key_dx< dim, bg_key > &v1) |
Get the reference of the selected element. | |
template<typename bg_key > | |
bool | existPoint (const grid_dist_key_dx< dim, bg_key > &v1) const |
Check if the point exist. | |
template<unsigned int p = 0, typename bgkey > | |
auto | getProp (const grid_dist_key_dx< dim, bgkey > &v1) const -> decltype(this->template get< p >(v1)) |
Get the reference of the selected element. | |
template<unsigned int p = 0, typename bgkey > | |
auto | getProp (const grid_dist_key_dx< dim, bgkey > &v1) -> decltype(this->template get< p >(v1)) |
Get the reference of the selected element. | |
template<int... prp> | |
void | ghost_get (size_t opt=0) |
It synchronize the ghost parts. | |
template<template< typename, typename > class op, int... prp> | |
void | ghost_put () |
It synchronize the ghost parts. | |
grid_dist_id< dim, St, T, Decomposition, Memory, device_grid > & | copy (grid_dist_id< dim, St, T, Decomposition, Memory, device_grid > &g, bool use_memcpy=true) |
Copy the give grid into this grid. | |
grid_dist_id< dim, St, T, Decomposition, Memory, device_grid > & | copy_sparse (grid_dist_id< dim, St, T, Decomposition, Memory, device_grid > &g, bool use_memcpy=true) |
Copy the give grid into this grid. | |
Point< dim, St > | getSpacing () |
Get the spacing on each dimension. | |
grid_key_dx< dim > | getGKey (const grid_dist_key_dx< dim > &k) const |
Convert a g_dist_key_dx into a global key. | |
template<typename Model > | |
void | addComputationCosts (Model md=Model(), size_t ts=1) |
Add the computation cost on the decomposition using a resolution function. | |
template<unsigned int prop_src, unsigned int prop_dst, unsigned int stencil_size, unsigned int N, typename lambda_f , typename ... ArgsT> | |
void | conv (int(&stencil)[N][dim], grid_key_dx< 3 > start, grid_key_dx< 3 > stop, lambda_f func, ArgsT ... args) |
apply a convolution using the stencil N | |
template<unsigned int prop_src, unsigned int prop_dst, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv_cross (grid_key_dx< 3 > start, grid_key_dx< 3 > stop, lambda_f func, ArgsT ... args) |
apply a convolution using the stencil N | |
template<unsigned int prop_src, unsigned int prop_dst, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv_cross_b (grid_key_dx< 3 > start, grid_key_dx< 3 > stop, lambda_f func, ArgsT ... args) |
apply a convolution using the stencil N | |
template<unsigned int stencil_size, typename v_type , typename lambda_f , typename ... ArgsT> | |
void | conv_cross_ids (grid_key_dx< 3 > start, grid_key_dx< 3 > stop, lambda_f func, ArgsT ... args) |
apply a convolution using the stencil N | |
template<unsigned int prop_src1, unsigned int prop_src2, unsigned int prop_dst1, unsigned int prop_dst2, unsigned int stencil_size, unsigned int N, typename lambda_f , typename ... ArgsT> | |
void | conv2 (int(&stencil)[N][dim], grid_key_dx< dim > start, grid_key_dx< dim > stop, lambda_f func, ArgsT ... args) |
apply a convolution using the stencil N | |
template<unsigned int prop_src1, unsigned int prop_src2, unsigned int prop_dst1, unsigned int prop_dst2, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv2 (grid_key_dx< dim > start, grid_key_dx< dim > stop, lambda_f func, ArgsT ... args) |
apply a convolution on 2 property on GPU | |
template<unsigned int prop_src1, unsigned int prop_dst1, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv (grid_key_dx< dim > start, grid_key_dx< dim > stop, lambda_f func, ArgsT ... args) |
apply a convolution on GPU | |
template<unsigned int prop_src1, unsigned int prop_src2, unsigned int prop_dst1, unsigned int prop_dst2, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv2_b (grid_key_dx< dim > start, grid_key_dx< dim > stop, lambda_f func, ArgsT ... args) |
apply a convolution on 2 property on GPU | |
template<unsigned int prop_src1, unsigned int prop_src2, unsigned int prop_src3, unsigned int prop_dst1, unsigned int prop_dst2, unsigned int prop_dst3, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv3_b (grid_key_dx< dim > start, grid_key_dx< dim > stop, lambda_f func, ArgsT ... args) |
apply a convolution on 2 property on GPU | |
template<typename NNtype > | |
void | findNeighbours () |
template<unsigned int prop_src1, unsigned int prop_src2, unsigned int prop_dst1, unsigned int prop_dst2, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv_cross2 (grid_key_dx< 3 > start, grid_key_dx< 3 > stop, lambda_f func, ArgsT ... args) |
apply a convolution using the stencil N | |
bool | write (std::string output, size_t opt=VTK_WRITER|FORMAT_BINARY) |
Write the distributed grid information. | |
bool | write_debug (std::string output) |
Write all grids indigually. | |
bool | write_frame (std::string output, size_t i, size_t opt=VTK_WRITER|FORMAT_ASCII) |
Write the distributed grid information. | |
device_grid & | get_loc_grid (size_t i) |
Get the i sub-domain grid. | |
const device_grid & | get_loc_grid (size_t i) const |
Get the i sub-domain grid. | |
grid_key_dx_iterator_sub< dim, no_stencil > | get_loc_grid_iterator (size_t i) |
Get the i sub-domain grid. | |
template<unsigned int Np> | |
grid_key_dx_iterator_sub< dim, stencil_offset_compute< dim, Np >, typename device_grid::linearizer_type > | get_loc_grid_iterator_stencil (size_t i, const grid_key_dx< dim >(&stencil_pnt)[Np]) |
Get the i sub-domain grid. | |
size_t | getN_loc_grid () const |
Return the number of local grid. | |
long int | who () |
It return the id of structure in the allocation list. | |
void | debugPrint () |
It print the internal ghost boxes and external ghost boxes in global unit. | |
void | setPropNames (const openfpm::vector< std::string > &names) |
Set the properties names. | |
const openfpm::vector< std::string > & | getPropNames () |
Set the properties names. | |
void | clear () |
It delete all the points. | |
void | construct_link (self &grid_up, self &grid_dw) |
construct link between levels | |
void | construct_link_dw (self &grid_dw, openfpm::vector< offset_mv< dim > > &mvof) |
construct link between current and the level down | |
void | construct_link_up (self &grid_up, openfpm::vector< offset_mv< dim > > &mvof) |
construct link between current and the level up | |
template<typename stencil_type > | |
void | tagBoundaries () |
construct link between current and the level up | |
void | map (size_t opt=0) |
It move all the grid parts that do not belong to the local processor to the respective processor. | |
void | save (const std::string &filename) const |
Save the grid state on HDF5. | |
void | load (const std::string &filename) |
Reload the grid from HDF5 file. | |
const openfpm::vector< i_lbox_grid< dim > > & | get_loc_ig_box () |
Get the internal local ghost box. | |
const openfpm::vector< i_lbox_grid< dim > > & | get_ig_box () |
Get the internal ghost box. | |
void | print_stats () |
void | clear_stats () |
Public Member Functions inherited from grid_dist_id_comm< dim, St, T, Decomposition, Memory, device_grid > | |
void | grids_reconstruct (openfpm::vector< openfpm::vector< aggregate< device_grid, SpaceBox< dim, long int > > > > &m_oGrid_recv, openfpm::vector< device_grid > &loc_grid, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext, CellDecomposer_sm< dim, St, shift< dim, St > > &cd_sm) |
Reconstruct the local grids. | |
template<typename lambda_t > | |
void | labelIntersectionGridsProcessor_and_pack (Decomposition &dec, CellDecomposer_sm< dim, St, shift< dim, St > > &cd_sm, openfpm::vector< device_grid > &loc_grid_old, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext_old, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext_global, size_t p_id_cur, lambda_t f) |
Label intersection grids for mappings. | |
template<int ... prp> | |
void | unpack_buffer_to_local_grid (openfpm::vector< device_grid > &loc_grid, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext, ExtPreAlloc< Memory > &send_buffer, size_t sz) |
Unpack. | |
template<int ... prp> | |
void | map_ (Decomposition &dec, CellDecomposer_sm< dim, St, shift< dim, St > > &cd_sm, openfpm::vector< device_grid > &loc_grid, openfpm::vector< device_grid > &loc_grid_old, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext_old, openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext_global, size_t opt) |
Moves all the grids that does not belong to the local processor to the respective processor. | |
template<int... prp> | |
void | ghost_get_ (const openfpm::vector< ip_box_grid< dim > > &ig_box, const openfpm::vector< ep_box_grid< dim > > &eg_box, const openfpm::vector< i_lbox_grid< dim > > &loc_ig_box, const openfpm::vector< e_lbox_grid< dim > > &loc_eg_box, const openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext, const openfpm::vector< e_box_multi< dim > > &eb_gid_list, bool use_bx_def, openfpm::vector< device_grid > &loc_grid, const grid_sm< dim, void > &ginfo, std::unordered_map< size_t, size_t > &g_id_to_external_ghost_box, size_t opt) |
It fill the ghost part of the grids. | |
template<template< typename, typename > class op, int... prp> | |
void | ghost_put_ (Decomposition &dec, const openfpm::vector< ip_box_grid< dim > > &ig_box, const openfpm::vector< ep_box_grid< dim > > &eg_box, const openfpm::vector< i_lbox_grid< dim > > &loc_ig_box, const openfpm::vector< e_lbox_grid< dim > > &loc_eg_box, const openfpm::vector< GBoxes< device_grid::dims > > &gdb_ext, openfpm::vector< device_grid > &loc_grid, openfpm::vector< std::unordered_map< size_t, size_t > > &g_id_to_internal_ghost_box) |
It merge the information in the ghost with the real information. | |
grid_dist_id_comm () | |
Constructor. | |
grid_dist_id_comm (const grid_dist_id_comm< dim, St, T, Decomposition, Memory, device_grid > &gc) | |
Copy constructor. | |
Static Public Member Functions | |
template<typename stencil = no_stencil> | |
static grid_dist_iterator_sub< dim, device_grid > | type_of_subiterator () |
This is a meta-function return which type of sub iterator a grid produce. | |
Static Public Attributes | |
static const unsigned int | dims = dim |
Number of dimensions. | |
Protected Member Functions | |
Box< dim, size_t > | getDomain (size_t i) |
Given a local sub-domain i with a local grid Domain + ghost return the part of the local grid that is domain. | |
void | setDecompositionGranularity (size_t n_sub) |
Set the minimum number of sub-domain per processor. | |
void | reset_ghost_structures () |
Static Protected Member Functions | |
static Ghost< dim, St > | convert_ghost (const Ghost< dim, long int > &gd, const CellDecomposer_sm< dim, St, shift< dim, St > > &cd_sm) |
Convert a ghost from grid point units into continus space. | |
Private Types | |
typedef grid_dist_id< dim, St, T, Decomposition, Memory, device_grid > | self |
Private Member Functions | |
void | set_for_adjustment (size_t sub_id, const Box< dim, St > &sub_domain_other, const comb< dim > &cmb, Box< dim, long int > &ib, Ghost< dim, long int > &g) |
this function is for optimization of the ghost size | |
void | create_ig_box () |
Create per-processor internal ghost boxes list in grid units and g_id_to_external_ghost_box. | |
void | create_eg_box () |
Create per-processor internal ghost box list in grid units. | |
void | create_local_ig_box () |
Create local internal ghost box in grid units. | |
void | create_local_eg_box () |
Create per-processor external ghost boxes list in grid units. | |
void | check_size (const size_t(&g_sz)[dim]) |
Check the grid has a valid size. | |
void | check_domain (const Box< dim, St > &dom) |
Check the domain is valid. | |
void | Create (openfpm::vector< Box< dim, long int > > &bx_def, const Ghost< dim, long int > &g, bool use_bx_def) |
Create the grids on memory. | |
void | InitializeCellDecomposer (const CellDecomposer_sm< dim, St, shift< dim, St > > &cd_old, const Box< dim, size_t > &ext) |
Initialize the Cell decomposer of the grid enforcing perfect overlap of the cells. | |
void | InitializeCellDecomposer (const size_t(&g_sz)[dim], const size_t(&bc)[dim]) |
Initialize the Cell decomposer of the grid. | |
void | InitializeDecomposition (const size_t(&g_sz)[dim], const size_t(&bc)[dim], const grid_sm< dim, void > &g_dist=grid_sm< dim, void >()) |
Initialize the grid. | |
void | InitializeStructures (const size_t(&g_sz)[dim]) |
Initialize the grid. | |
void | InitializeStructures (const size_t(&g_sz)[dim], openfpm::vector< Box< dim, long int > > &bx, const Ghost< dim, long int > &g, bool use_bx_def) |
Initialize the grid. | |
Static Private Member Functions | |
static void * | msg_alloc_external_box (size_t msg_i, size_t total_msg, size_t total_p, size_t i, size_t ri, void *ptr) |
Call-back to allocate buffer to receive incoming objects (external ghost boxes) | |
Private Attributes | |
Box< dim, St > | domain |
Domain. | |
Ghost< dim, St > | ghost |
Ghost expansion. | |
Ghost< dim, long int > | ghost_int |
Ghost expansion. | |
openfpm::vector< device_grid > | loc_grid |
Local grids. | |
openfpm::vector< device_grid > | loc_grid_old |
Old local grids. | |
Decomposition | dec |
Space Decomposition. | |
openfpm::vector< size_t > | gdb_ext_markers |
openfpm::vector< GBoxes< device_grid::dims > > | gdb_ext |
Extension of each grid: Domain and ghost + domain. | |
openfpm::vector< GBoxes< device_grid::dims > > | gdb_ext_global |
Global gdb_ext. | |
openfpm::vector< GBoxes< device_grid::dims > > | gdb_ext_old |
Extension of each old grid (old): Domain and ghost + domain. | |
size_t | g_sz [dim] |
Size of the grid on each dimension. | |
CellDecomposer_sm< dim, St, shift< dim, St > > | cd_sm |
Structure that divide the space into cells. | |
size_t | gpu_n_insert_thread |
number of insert each GPU thread does | |
Vcluster & | v_cl |
Communicator class. | |
openfpm::vector< std::string > | prp_names |
properties names | |
std::unordered_map< size_t, size_t > | g_id_to_external_ghost_box |
openfpm::vector< e_box_multi< dim > > | eb_gid_list |
openfpm::vector< std::unordered_map< size_t, size_t > > | g_id_to_internal_ghost_box |
openfpm::vector< size_t > | recv_sz |
Receiving size. | |
openfpm::vector< HeapMemory > | recv_mem_gg |
Receiving buffer for particles ghost get. | |
grid_sm< dim, T > | ginfo |
Grid informations object. | |
grid_sm< dim, void > | ginfo_v |
Grid informations object without type. | |
openfpm::vector< Box< dim, long int > > | bx_def |
Set of boxes that define where the grid is defined. | |
bool | use_bx_def = false |
Indicate if we have to use bx_def to define the grid. | |
bool | init_local_i_g_box = false |
Indicate if the local internal ghost box has been initialized. | |
bool | init_local_e_g_box = false |
Indicate if the local external ghost box has been initialized. | |
bool | init_e_g_box = false |
Flag that indicate if the external ghost box has been initialized. | |
bool | init_i_g_box = false |
Flag that indicate if the internal ghost box has been initialized. | |
bool | init_fix_ie_g_box = false |
Flag that indicate if the internal and external ghost box has been fixed. | |
openfpm::vector< ip_box_grid< dim > > | ig_box |
Internal ghost boxes in grid units. | |
openfpm::vector< ep_box_grid< dim > > | eg_box |
External ghost boxes in grid units. | |
openfpm::vector< i_lbox_grid< dim > > | loc_ig_box |
Local internal ghost boxes in grid units. | |
openfpm::vector< e_lbox_grid< dim > > | loc_eg_box |
Local external ghost boxes in grid units. | |
size_t | v_sub_unit_factor = 64 |
Number of sub-sub-domain for each processor. | |
Ghost< dim, long int > | gint = Ghost<dim,long int>(0) |
typedef device_grid grid_dist_id< dim, St, T, Decomposition, Memory, device_grid >::d_grid |
Which kind of grid the structure store.
Definition at line 1280 of file grid_dist_id.hpp.
typedef Decomposition grid_dist_id< dim, St, T, Decomposition, Memory, device_grid >::decomposition |
Decomposition used.
Definition at line 1283 of file grid_dist_id.hpp.
typedef device_grid grid_dist_id< dim, St, T, Decomposition, Memory, device_grid >::device_grid_type |
Type of device grid.
Definition at line 1295 of file grid_dist_id.hpp.
typedef Memory grid_dist_id< dim, St, T, Decomposition, Memory, device_grid >::memory_type |
Type of Memory.
Definition at line 1292 of file grid_dist_id.hpp.
|
private |
Definition at line 279 of file grid_dist_id.hpp.
typedef St grid_dist_id< dim, St, T, Decomposition, Memory, device_grid >::stype |
Type of space.
Definition at line 1289 of file grid_dist_id.hpp.
typedef T grid_dist_id< dim, St, T, Decomposition, Memory, device_grid >::value_type |
value_type
Definition at line 1286 of file grid_dist_id.hpp.
|
inline |
|
inline |
This constructor is special, it construct an expanded grid that perfectly overlap with the previous.
The key-word here is "perfectly overlap". Using the default constructor you could create something similar, but because of rounding-off error it can happen that it is not perfectly overlapping
g | previous grid |
gh | Ghost part in grid units |
ext | extension of the grid (must be positive on every direction) |
Definition at line 1445 of file grid_dist_id.hpp.
|
inline |
It constructs a grid of a specified size, defined on a specified Box space, forcing to follow a specified decomposition and with a specified ghost size
dec | Decomposition |
g_sz | grid size on each dimension |
ghost | Ghost part |
Definition at line 1499 of file grid_dist_id.hpp.
|
inline |
It constructs a grid of a specified size, defined on a specified Box space, forcing to follow a specified decomposition and with a specified ghost size
dec | Decomposition |
g_sz | grid size on each dimension |
ghost | Ghost part |
Definition at line 1523 of file grid_dist_id.hpp.
|
inline |
It constructs a grid of a specified size, defined on a specified Box space, forcing to follow a specified decomposition, and having a specified ghost size
dec | Decomposition |
g_sz | grid size on each dimension |
g | Ghost part (given in grid units) |
Definition at line 1548 of file grid_dist_id.hpp.
|
inline |
It constructs a grid of a specified size, defined on a specified Box space, forcing to follow a specified decomposition, and having a specified ghost size
dec | Decomposition |
g_sz | grid size on each dimension |
g | Ghost part (given in grid units) |
Definition at line 1575 of file grid_dist_id.hpp.
|
inline |
It construct a grid of a specified size, defined on a specified Box space, forcing to follow a specified decomposition, and having a specified ghost size
dec | Decomposition |
g_sz | grid size on each dimension |
g | Ghost part (given in grid units) |
Definition at line 1601 of file grid_dist_id.hpp.
|
inline |
It construct a grid of a specified size, defined on a specified Box space, and having a specified ghost size
g_sz | grid size on each dimension |
domain | Box that contain the grid |
g | Ghost part (given in grid units) |
Definition at line 1630 of file grid_dist_id.hpp.
|
inline |
It construct a grid of a specified size, defined on a specified Box space, having a specified ghost size and periodicity
g_sz | grid size on each dimension |
domain | Box that contain the grid |
g | Ghost part of the domain (given in grid units) |
Definition at line 1644 of file grid_dist_id.hpp.
|
inline |
It construct a grid of a specified size, defined on a specified Box space, having a specified ghost size, and specified periodicity
g_sz | grid size on each dimension |
domain | Box that contain the grid |
g | Ghost part (given in grid units) |
p | Boundary conditions |
Definition at line 1659 of file grid_dist_id.hpp.
|
inline |
It construct a grid of a specified size, defined on a specified Box space, having a specified ghost size and periodicity
g_sz | grid size on each dimension |
domain | Box that contain the grid |
g | Ghost part of the domain (given in grid units) |
p | periodicity |
Definition at line 1686 of file grid_dist_id.hpp.
|
inline |
It construct a grid on the full domain restricted to the set of boxes specified.
In particular the grid is defined in the space equal to the domain intersected the boxes defined by bx
g_sz | grid size on each dimension |
domain | where the grid is constructed |
g | ghost size |
p | periodicity of the grid |
bx | set of boxes where the grid is defined |
Definition at line 1725 of file grid_dist_id.hpp.
|
inline |
Destructor.
Definition at line 2235 of file grid_dist_id.hpp.
|
inline |
Add the computation cost on the decomposition using a resolution function.
md | Model to use |
ts | It is an optional parameter approximately should be the number of ghost get between two rebalancing at first decomposition this number can be ignored (default = 1) because not used |
Definition at line 2789 of file grid_dist_id.hpp.
|
inlineprivate |
Check the domain is valid.
dom | domain is valid |
Definition at line 1057 of file grid_dist_id.hpp.
|
inlineprivate |
Check the grid has a valid size.
g_sz | size of the grid |
Definition at line 1043 of file grid_dist_id.hpp.
|
inline |
It delete all the points.
This function on dense does nothing in case of dense grid but in case of sparse_grid it kills all the points
Definition at line 3362 of file grid_dist_id.hpp.
|
inline |
Definition at line 3591 of file grid_dist_id.hpp.
|
inline |
construct link between levels
\praram grid_up grid level up
grid_dw | grid level down |
Definition at line 3374 of file grid_dist_id.hpp.
|
inline |
construct link between current and the level down
grid_dw | grid level down |
Definition at line 3388 of file grid_dist_id.hpp.
|
inline |
construct link between current and the level up
grid_dw | grid level down |
Definition at line 3406 of file grid_dist_id.hpp.
|
inline |
apply a convolution on GPU
Definition at line 2991 of file grid_dist_id.hpp.
|
inline |
apply a convolution using the stencil N
Definition at line 2817 of file grid_dist_id.hpp.
|
inline |
apply a convolution on 2 property on GPU
Definition at line 2962 of file grid_dist_id.hpp.
|
inline |
apply a convolution using the stencil N
Definition at line 2933 of file grid_dist_id.hpp.
|
inline |
apply a convolution on 2 property on GPU
Definition at line 3020 of file grid_dist_id.hpp.
|
inline |
apply a convolution on 2 property on GPU
Definition at line 3051 of file grid_dist_id.hpp.
|
inline |
apply a convolution using the stencil N
Definition at line 2846 of file grid_dist_id.hpp.
|
inline |
apply a convolution using the stencil N
Definition at line 3089 of file grid_dist_id.hpp.
|
inline |
apply a convolution using the stencil N
Definition at line 2875 of file grid_dist_id.hpp.
|
inline |
apply a convolution using the stencil N
Definition at line 2904 of file grid_dist_id.hpp.
|
inlinestaticprotected |
Convert a ghost from grid point units into continus space.
gd | Ghost in continuous space |
cd_sm | CellDecomposer of the grid |
Definition at line 1230 of file grid_dist_id.hpp.
|
inline |
Copy the give grid into this grid.
It copy the first grid into the given grid (No ghost)
g | Grid to copy |
use_memcpy | use memcpy function if possible |
Definition at line 2672 of file grid_dist_id.hpp.
|
inline |
Copy the give grid into this grid.
It copy the first grid into the given grid (No ghost)
g | Grid to copy |
use_memcpy | use memcpy function if possible |
Definition at line 2730 of file grid_dist_id.hpp.
|
inlineprivate |
Create the grids on memory.
bx_def | Where the grid is defined |
use_bx_def | use the array that define where the grid is defined |
Definition at line 1072 of file grid_dist_id.hpp.
|
inlineprivate |
Create per-processor internal ghost box list in grid units.
Definition at line 622 of file grid_dist_id.hpp.
|
inlineprivate |
Create per-processor internal ghost boxes list in grid units and g_id_to_external_ghost_box.
Definition at line 548 of file grid_dist_id.hpp.
|
inlineprivate |
Create per-processor external ghost boxes list in grid units.
Definition at line 954 of file grid_dist_id.hpp.
|
inlineprivate |
Create local internal ghost box in grid units.
Definition at line 830 of file grid_dist_id.hpp.
|
inline |
It print the internal ghost boxes and external ghost boxes in global unit.
Definition at line 3296 of file grid_dist_id.hpp.
|
inline |
Check if the point exist.
v1 | grid_key that identify the element in the grid |
Definition at line 2557 of file grid_dist_id.hpp.
|
inline |
Definition at line 3076 of file grid_dist_id.hpp.
|
inline |
Definition at line 2316 of file grid_dist_id.hpp.
|
inline |
remove an element in the grid
In case of dense grid this function print a warning, in case of sparse grid this function remove a grid point.
v1 | grid_key that identify the element in the grid |
Definition at line 2334 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2483 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2465 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2447 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2428 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2517 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2500 of file grid_dist_id.hpp.
|
inline |
Get the internal ghost box.
Definition at line 3571 of file grid_dist_id.hpp.
|
inline |
Get the i sub-domain grid.
i | sub-domain |
Definition at line 3217 of file grid_dist_id.hpp.
|
inline |
Get the i sub-domain grid.
i | sub-domain |
Definition at line 3229 of file grid_dist_id.hpp.
|
inline |
Get the i sub-domain grid.
i | sub-domain |
Definition at line 3241 of file grid_dist_id.hpp.
|
inline |
Get the i sub-domain grid.
i | sub-domain |
Definition at line 3257 of file grid_dist_id.hpp.
|
inline |
Get the internal local ghost box.
Definition at line 3561 of file grid_dist_id.hpp.
|
inline |
Return the cell decomposer.
Definition at line 1804 of file grid_dist_id.hpp.
|
inline |
Get the object that store the information about the decomposition.
Definition at line 1778 of file grid_dist_id.hpp.
|
inline |
Get the object that store the information about the decomposition.
Definition at line 1791 of file grid_dist_id.hpp.
|
inline |
Get the domain where the grid is defined.
Definition at line 1305 of file grid_dist_id.hpp.
|
inlineprotected |
Given a local sub-domain i with a local grid Domain + ghost return the part of the local grid that is domain.
i | sub-domain |
Definition at line 1217 of file grid_dist_id.hpp.
|
inline |
It return an iterator that span the grid domain + ghost part.
Definition at line 2175 of file grid_dist_id.hpp.
|
inline |
It return an iterator that span the full grid domain (each processor span its local domain)
Definition at line 2118 of file grid_dist_id.hpp.
|
inline |
It return an iterator that span the full grid domain (each processor span its local domain)
stencil_pnt | stencil points |
Definition at line 2148 of file grid_dist_id.hpp.
|
inline |
Convert a g_dist_key_dx into a global key.
k | grid_dist_key_dx point (in general returned by the iterators) |
Definition at line 2765 of file grid_dist_id.hpp.
|
inline |
It gathers the information about local grids for all of the processors.
gdb_ext_global | where to store the grid infos |
Definition at line 1892 of file grid_dist_id.hpp.
|
inline |
/brief Get a grid Iterator running on domain and ghost area
In case of dense grid getGridIterator is equivalent to getDomainIterator in case if sparse distributed grid getDomainIterator go across all the inserted point get grid iterator run across all grid points independently that the point has been insert or not
Definition at line 2081 of file grid_dist_id.hpp.
|
inline |
Get an object containing the grid informations.
Definition at line 1752 of file grid_dist_id.hpp.
|
inline |
Get an object containing the grid informations without type.
Definition at line 1765 of file grid_dist_id.hpp.
|
inline |
/brief Get a grid Iterator
In case of dense grid getGridIterator is equivalent to getDomainIterator in case if sparse distributed grid getDomainIterator go across all the inserted point get grid iterator run across all grid points independently that the point has been insert or not
Definition at line 2097 of file grid_dist_id.hpp.
|
inline |
/brief Get a grid Iterator
In case of dense grid getGridIterator is equivalent to getDomainIterator in case of sparse grid getDomainIterator go across all the inserted point get grid iterator run across all grid points independently that the point has been insert or not
Definition at line 1968 of file grid_dist_id.hpp.
|
inline |
Get the total number of grid points for the calling processor.
Definition at line 1838 of file grid_dist_id.hpp.
|
inline |
Get the total number of grid points with ghost for the calling processor.
Definition at line 1858 of file grid_dist_id.hpp.
|
inline |
It return the informations about the local grids.
Definition at line 1879 of file grid_dist_id.hpp.
|
inline |
Return the number of local grid.
Definition at line 3270 of file grid_dist_id.hpp.
|
inline |
Get the point where it start the origin of the grid of the sub-domain i.
i | sub-domain |
Definition at line 1317 of file grid_dist_id.hpp.
|
inline |
It return an iterator that span the full grid domain (each processor span its local domain)
Definition at line 1940 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2534 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2585 of file grid_dist_id.hpp.
|
inline |
Get the reference of the selected element.
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2571 of file grid_dist_id.hpp.
|
inline |
Set the properties names.
It is useful to specify name for the properties in vtk writers
names | set of properties names |
Definition at line 3351 of file grid_dist_id.hpp.
|
inline |
Get the spacing on each dimension.
Definition at line 2750 of file grid_dist_id.hpp.
|
inline |
It return an iterator that span the grid domain only in the specified part.
The key spanned are the one inside the box spanned by the start point and the end point included
start | point |
stop | point |
Definition at line 2204 of file grid_dist_id.hpp.
|
inline |
It return an iterator that span the grid domain only in the specified part.
The key spanned are the one inside the box spanned by the start point and the end point included
start | point |
stop | point |
Definition at line 2227 of file grid_dist_id.hpp.
|
inline |
Get the Virtual Cluster machine.
Definition at line 2248 of file grid_dist_id.hpp.
|
inline |
It synchronize the ghost parts.
prp... | Properties to synchronize |
Definition at line 2595 of file grid_dist_id.hpp.
|
inline |
It synchronize the ghost parts.
prp... | Properties to synchronize |
Definition at line 2631 of file grid_dist_id.hpp.
|
inlineprivate |
Initialize the Cell decomposer of the grid enforcing perfect overlap of the cells.
cd_old | the CellDecomposer we are trying to mach |
ext | extension of the domain |
Definition at line 1112 of file grid_dist_id.hpp.
|
inlineprivate |
Initialize the Cell decomposer of the grid.
g_sz | Size of the grid |
bc | boundary conditions |
Definition at line 1124 of file grid_dist_id.hpp.
|
inlineprivate |
Initialize the grid.
g_sz | Global size of the grid |
bc | boundary conditions |
Definition at line 1143 of file grid_dist_id.hpp.
|
inlineprivate |
Initialize the grid.
g_sz | Global size of the grid |
Definition at line 1175 of file grid_dist_id.hpp.
|
inlineprivate |
Initialize the grid.
g_sz | Global size of the grid |
g | ghost extension of the grid in integer unit |
bx | set of boxes that define where is defined the grid |
Definition at line 1193 of file grid_dist_id.hpp.
|
inline |
insert an element in the grid
In case of dense grid this function is equivalent to get, in case of sparse grid this function insert a grid point. When the point already exist it return a reference to the already existing point. In case of massive insert Sparse grids it give a reference to the inserted element in the insert buffer
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2356 of file grid_dist_id.hpp.
|
inline |
insert an element in the grid
In case of dense grid this function is equivalent to get, in case of sparse grid this function insert a grid point. When the point already exist it return a reference to the already existing point. In case of massive insert Sparse grids The point is inserted immediately and a reference to the inserted element is returned
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2409 of file grid_dist_id.hpp.
|
inline |
insert an element in the grid
In case of dense grid this function is equivalent to get, in case of sparse grid this function insert a grid point. When the point already exist it return a reference to the already existing point. In case of massive insert Sparse grids The point is inserted immediately and a reference to the inserted element is returned
p | property to get (is an integer) |
v1 | grid_key that identify the element in the grid |
Definition at line 2383 of file grid_dist_id.hpp.
|
inline |
Indicate that this grid is not staggered.
Definition at line 2273 of file grid_dist_id.hpp.
|
inline |
Check that the global grid key is inside the grid domain.
gk | point to check |
Definition at line 1819 of file grid_dist_id.hpp.
|
inline |
Reload the grid from HDF5 file.
filename | output filename |
Definition at line 3494 of file grid_dist_id.hpp.
|
inline |
It move all the grid parts that do not belong to the local processor to the respective processor.
Definition at line 3441 of file grid_dist_id.hpp.
|
inlinestaticprivate |
Call-back to allocate buffer to receive incoming objects (external ghost boxes)
msg_i | message size required to receive from i |
total_msg | message size to receive from all the processors |
total_p | the total number of processor want to communicate with you |
i | processor id |
ri | request id (it is an id that goes from 0 to total_p, and is unique every time message_alloc is called) |
ptr | void pointer parameter for additional data to pass to the call-back |
Definition at line 471 of file grid_dist_id.hpp.
|
inline |
Definition at line 3576 of file grid_dist_id.hpp.
|
inline |
remove an element in the grid
In case of dense grid this function print a warning, in case of sparse grid this function remove a grid point.
v1 | grid_key that identify the element in the grid |
Definition at line 2288 of file grid_dist_id.hpp.
|
inline |
remove an element in the grid
In case of dense grid this function print a warning, in case of sparse grid this function remove a grid point.
v1 | grid_key that identify the element in the grid |
Definition at line 2306 of file grid_dist_id.hpp.
|
inline |
Eliminate many internal temporary buffer you can use this between flushes if you get some out of memory.
Definition at line 2260 of file grid_dist_id.hpp.
|
inlineprotected |
Definition at line 1260 of file grid_dist_id.hpp.
|
inline |
Save the grid state on HDF5.
filename | output filename |
Definition at line 3482 of file grid_dist_id.hpp.
|
inlineprivate |
this function is for optimization of the ghost size
Because the decomposition work in continuum and discrete ghost is converted in continuum, in some case continuum ghost because of rounding-off error can produce ghost bigger than the discrete selected one. This function adjust for this round-off error
sub_id | sub-domain id |
sub_domain_other | the other sub-domain |
ib | internal ghost box to adjust |
Definition at line 500 of file grid_dist_id.hpp.
|
inline |
set the background value
You can use this function make sense in case of sparse in case of dense it does nothing
Definition at line 1363 of file grid_dist_id.hpp.
|
inline |
set the background value
You can use this function make sense in case of sparse in case of dense it does nothing
Definition at line 1350 of file grid_dist_id.hpp.
|
inlineprotected |
Set the minimum number of sub-domain per processor.
n_sub |
Definition at line 1255 of file grid_dist_id.hpp.
|
inline |
Set the properties names.
It is useful to specify name for the properties in vtk writers
names | set of properties names |
Definition at line 3339 of file grid_dist_id.hpp.
|
inline |
Return the total number of points in the grid.
Definition at line 1339 of file grid_dist_id.hpp.
|
inline |
Return the total number of points in the grid.
i | direction |
Definition at line 1394 of file grid_dist_id.hpp.
|
inline |
Return the local total number of points inserted in the grid.
in case of dense grid it return the number of local points, in case of sparse it return the number of inserted points
Definition at line 1377 of file grid_dist_id.hpp.
|
inline |
Get the spacing of the grid in direction i.
i | dimension |
Definition at line 1329 of file grid_dist_id.hpp.
|
inline |
construct link between current and the level up
grid_dw | grid level down |
Definition at line 3425 of file grid_dist_id.hpp.
|
inlinestatic |
This is a meta-function return which type of sub iterator a grid produce.
Definition at line 3551 of file grid_dist_id.hpp.
|
inline |
It return the id of structure in the allocation list.
Definition at line 3283 of file grid_dist_id.hpp.
|
inline |
Write the distributed grid information.
output | directory where to put the files + prefix |
opt | options |
Definition at line 3124 of file grid_dist_id.hpp.
|
inline |
Write all grids indigually.
output | files |
Definition at line 3156 of file grid_dist_id.hpp.
|
inline |
Write the distributed grid information.
output | directory where to put the files + prefix |
i | frame number |
opt | options |
Definition at line 3186 of file grid_dist_id.hpp.
|
private |
Set of boxes that define where the grid is defined.
Definition at line 425 of file grid_dist_id.hpp.
|
private |
Structure that divide the space into cells.
Definition at line 323 of file grid_dist_id.hpp.
|
private |
Space Decomposition.
Definition at line 297 of file grid_dist_id.hpp.
|
static |
Number of dimensions.
Definition at line 1298 of file grid_dist_id.hpp.
|
private |
Domain.
Definition at line 282 of file grid_dist_id.hpp.
|
private |
Link a received external ghost box to the linked eg_box. When the grid is defined everywhere for each received external ghost box exists one eg_box linked to it that contain the information on how to transfer the information to the associated sub-domain grid. Unfortunately when we specify where the grid is defined, a received external ghost box can be linked to multiple sub-domain grids (one sub-domain can have multiple sub grids). So in standard situation (grid defined everywhere) a received external ghost box is linked to a single eg_box entry and eb_gid_list play mainly no role. (play no role but must be filled ghost_get expect this structure to be filled consistently, it will be clear later how to do it in this case). When the grid is not defined everywhere a received ghost box can be linked to multiple external ghost boxes. (Like in figure)
+--------------------------------------------+------ | Sub-domain | Another sub-domain | +------+ +---------+ | | | | | | | | | | | | | | | | | | | | | 3 | | 4 | | | empty | | empty | | | | | | | | | | | | | | | | | | | | | 1 | | | | | | +-+-----+----+------+-----------+---------+----+-----+----- Processor bound |***##########*********#############****|****| | | 0 | | | | | 9 | | | | | | | +--------------------------------------------+ *
As we can see here the grid number 9 on processo 0 has an internal ghost box The internal ghost-box is sent to processor 1 and is a received external ghost box. This external ghost box is partially shared in two separated grids. It is important to note that 3 and 4 are grid defined externally and are not defined by the sub-domain border. It is important also to note that the sub-domain granularity in processor 1 define the granularity of the internal ghost box in processor 0 and consequently every external ghost box in processor 1 is linked uniquely with one internal ghost box in processor 0. On the other hand if we have a secondary granularity define by external boxes like 3 and 4 this is not anymore true and one internal ghost box in 0 can be linked with multiple grids. The granularity of the space division is different from the granularity of where the grid is defined. Space decomposition exist independently from the data-structure and can be shared across multiple data-structure this mean that cannot be redefined based on where is the grid definitions. The internal ghost box could be redefined in order to respect the granularity. We do not do this for 3 main reason.
1) The definition box must be communicated across processors. 2) An interprocessor global-id link must be established with lower sub-domain granularty 3) Despite the points * are not linked, but must be anyway sent to processor 1, this mean that make not too much sense to increase the granularity in advance on processor 0, but it is better receive the information an than solve the lower granularity locally on processor 1
Definition at line 406 of file grid_dist_id.hpp.
|
private |
External ghost boxes in grid units.
Definition at line 449 of file grid_dist_id.hpp.
|
private |
It map a global ghost id (g_id) to the external ghost box information It is unique across all the near processor
Definition at line 336 of file grid_dist_id.hpp.
|
private |
It map a global ghost id (g_id) to the internal ghost box information (is unique for processor), it is not unique across all the near processor
Definition at line 410 of file grid_dist_id.hpp.
|
private |
Size of the grid on each dimension.
Definition at line 320 of file grid_dist_id.hpp.
|
private |
Extension of each grid: Domain and ghost + domain.
Definition at line 311 of file grid_dist_id.hpp.
|
mutableprivate |
Global gdb_ext.
Definition at line 314 of file grid_dist_id.hpp.
|
private |
gdb_ext markers In the case where the grid is defined everywhere gdb_ext_marker is useless and so is empty in the case we have a grid defined on a smaller set of boxes gbd_ext_markers indicate the division across subdomains. For example Sub-domain 0 produce 2 grid Sub-domain 1 produce 3 grid Sub-domain 2 produce 2 grid Sub-domain 3 produce 1 grid gdb_ext_markers contain 0,2,5,7,8
Definition at line 308 of file grid_dist_id.hpp.
|
private |
Extension of each old grid (old): Domain and ghost + domain.
Definition at line 317 of file grid_dist_id.hpp.
|
private |
Ghost expansion.
Definition at line 285 of file grid_dist_id.hpp.
|
private |
Ghost expansion.
Definition at line 288 of file grid_dist_id.hpp.
|
private |
Grid informations object.
Definition at line 419 of file grid_dist_id.hpp.
|
private |
Grid informations object without type.
Definition at line 422 of file grid_dist_id.hpp.
|
private |
Definition at line 1206 of file grid_dist_id.hpp.
|
private |
number of insert each GPU thread does
Definition at line 326 of file grid_dist_id.hpp.
|
private |
Internal ghost boxes in grid units.
Definition at line 446 of file grid_dist_id.hpp.
|
private |
Flag that indicate if the external ghost box has been initialized.
Definition at line 437 of file grid_dist_id.hpp.
|
private |
Flag that indicate if the internal and external ghost box has been fixed.
Definition at line 443 of file grid_dist_id.hpp.
|
private |
Flag that indicate if the internal ghost box has been initialized.
Definition at line 440 of file grid_dist_id.hpp.
|
private |
Indicate if the local external ghost box has been initialized.
Definition at line 434 of file grid_dist_id.hpp.
|
private |
Indicate if the local internal ghost box has been initialized.
Definition at line 431 of file grid_dist_id.hpp.
|
private |
Local external ghost boxes in grid units.
Definition at line 455 of file grid_dist_id.hpp.
|
mutableprivate |
Local grids.
Definition at line 291 of file grid_dist_id.hpp.
|
mutableprivate |
Old local grids.
Definition at line 294 of file grid_dist_id.hpp.
|
private |
Local internal ghost boxes in grid units.
Definition at line 452 of file grid_dist_id.hpp.
|
private |
properties names
Definition at line 332 of file grid_dist_id.hpp.
|
private |
Receiving buffer for particles ghost get.
Definition at line 416 of file grid_dist_id.hpp.
|
private |
Receiving size.
Definition at line 413 of file grid_dist_id.hpp.
|
private |
Indicate if we have to use bx_def to define the grid.
Definition at line 428 of file grid_dist_id.hpp.
|
private |
Communicator class.
Definition at line 329 of file grid_dist_id.hpp.
|
private |
Number of sub-sub-domain for each processor.
Definition at line 458 of file grid_dist_id.hpp.