Definition at line 490 of file SparseGridGpu.hpp.
Public Types | |
typedef int | yes_i_am_grid |
it define that this data-structure is a grid | |
typedef linearizer | grid_info |
typedef linearizer | linearizer_type |
template<typename Tfunc > | |
using | layout_mfunc = memory_traits_inte< Tfunc > |
typedef sparse_grid_gpu_index< self > | base_key |
typedef AggregateT | value_type |
typedef self | device_grid_type |
![]() | |
typedef aggregate_convert< dim, blockEdgeSize, AggregateT >::type | AggregateType |
Public Member Functions | |
size_t | size () const |
return the size of the grid More... | |
template<typename ... v_reduce> | |
void | flush (mgpu::ofp_context_t &context, flush_type opt=FLUSH_ON_HOST) |
void | saveUnpackVariableIfNotKeepGeometry (int opt, bool is_unpack_remote) |
void | RestoreUnpackVariableIfKeepGeometry (int opt, bool is_unpack_remote) |
void | savePackVariableIfNotKeepGeometry (int opt, bool is_pack_remote) |
void | RestorePackVariableIfKeepGeometry (int opt, bool is_pack_remote) |
template<unsigned int n_it> | |
void | calculatePackingPointsFromBoxes (int opt, size_t tot_pnt) |
void | resize (size_t(&res)[dim]) |
resize the SparseGrid More... | |
SparseGridGpu (const size_t(&res)[dim], unsigned int stencilSupportRadius=1) | |
Constructor from glock geometry. More... | |
SparseGridGpu (linearizer &gridGeometry, unsigned int stencilSupportRadius=1) | |
Constructor from glock geometry. More... | |
SparseGridGpu_ker< dim, blockEdgeSize, typename BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::AggregateInternalT, ct_par< 0, 1 >, indexT, layout_base, decltype(extendedBlockGeometry), linearizer, AggregateT > | toKernel () |
template<unsigned int nNN, unsigned int nLoop> | |
SparseGridGpu_ker< dim, blockEdgeSize, typename BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::AggregateInternalT, ct_par< nNN, nLoop >, indexT, layout_base, decltype(extendedBlockGeometry), linearizer, AggregateT > | toKernelNN () |
void | clear () |
void | setMemory () |
linearizer & | getGrid () |
Return the grid information object. More... | |
template<typename stencil_type > | |
void | setNNType () |
Set the neighborhood type. More... | |
constexpr unsigned int | getBlockSize () const |
template<typename CoordT > | |
size_t | getLinId (CoordT &coord) |
grid_key_dx< dim, int > | getCoord (size_t linId) const |
ite_gpu< dim > | getGridGPUIterator (const grid_key_dx< dim, int > &start, const grid_key_dx< dim, int > &stop, size_t n_thr=threadBlockSize) |
template<typename CoordT > | |
base_key | get_sparse (const grid_key_dx< dim, CoordT > &coord) const |
Get an element using the point coordinates. More... | |
template<unsigned int p, typename CoordT > | |
auto | get (const grid_key_dx< dim, CoordT > &coord) const -> const ScalarTypeOf< AggregateBlockT, p > & |
Get an element using the point coordinates. More... | |
template<unsigned int p> | |
auto | get (const sparse_grid_gpu_index< self > &coord) const -> const ScalarTypeOf< AggregateBlockT, p > & |
Get an element using sparse_grid_gpu_index (using this index it guarantee that the point exist) More... | |
auto | private_get_data_array () -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getDataBuffer()) & |
Return the index array of the blocks. More... | |
auto | private_get_data_array () const -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getDataBuffer()) |
Return the data array of the blocks. More... | |
template<typename CoordT > | |
auto | get_o (const grid_key_dx< dim, CoordT > &coord) const -> encap_data_block< typename std::remove_const< decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::get(0))>::type > |
Get an element using the point coordinates. More... | |
auto | get_o (const sparse_grid_gpu_index< self > &coord) const -> encap_data_block< typename std::remove_const< decltype(private_get_data_array().get(0))>::type > |
Get an element using sparse_grid_gpu_index (using this index it guarantee that the point exist) More... | |
bool | isSkipLabellingPossible () |
This function check if keep geometry is possible for this grid. More... | |
template<unsigned int p> | |
auto | get (const sparse_grid_gpu_index< self > &coord) -> ScalarTypeOf< AggregateBlockT, p > & |
Get an element using sparse_grid_gpu_index (using this index it guarantee that the point exist) More... | |
unsigned char | getFlag (const sparse_grid_gpu_index< self > &coord) const |
Return the flag of the point. More... | |
template<unsigned int p, typename CoordT > | |
auto | insert (const CoordT &coord) -> ScalarTypeOf< AggregateBlockT, p > & |
template<typename CoordT > | |
auto | insert_o (const CoordT &coord) -> encap_data_block< typename std::remove_const< decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::insert_o(0))>::type > |
void | construct_link (self &grid_up, self &grid_dw, mgpu::ofp_context_t &context) |
construct link between levels More... | |
openfpm::vector_gpu< aggregate< unsigned int > > & | getDownLinksOffsets () |
Get the offsets for each point of the links down. More... | |
openfpm::vector_gpu< aggregate< int, short int > > & | getDownLinks () |
Get the links down for each point. More... | |
openfpm::vector_gpu< aggregate< unsigned int > > & | getUpLinksOffsets () |
Get the offsets for each point of the links up. More... | |
openfpm::vector_gpu< aggregate< int, short int > > & | getUpLinks () |
Get the links up for each point. More... | |
void | construct_link_dw (self &grid_dw, const Box< dim, int > &db_, Point< dim, int > p_dw, mgpu::ofp_context_t &context) |
construct link on the down level More... | |
void | construct_link_up (self &grid_up, const Box< dim, int > &db_, Point< dim, int > p_up, mgpu::ofp_context_t &context) |
construct link on the up levels More... | |
template<typename dim3T > | |
void | setGPUInsertBuffer (dim3T nBlock, dim3T nSlot) |
void | preFlush () |
In case we manually set the added index buffer and the add data buffer we have to call this function before flush. More... | |
template<typename stencil_type = NNStar<dim>, typename checker_type = No_check> | |
void | tagBoundaries (mgpu::ofp_context_t &context, checker_type chk=checker_type(), tag_boundaries opt=tag_boundaries::NO_CALCULATE_EXISTING_POINTS) |
template<typename NNtype = NNStar<dim>> | |
void | findNeighbours () |
size_t | countExistingElements () const |
size_t | countBoundaryElements () |
void | measureBlockOccupancyMemory (double &mean, double &deviation) |
void | measureBlockOccupancy (double &mean, double &deviation) |
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 a cross like stencil. More... | |
template<unsigned int prop_src, unsigned int prop_dst, unsigned int stencil_size, typename lambda_f , typename ... ArgsT> | |
void | conv (grid_key_dx< 3 > start, grid_key_dx< 3 > stop, lambda_f func, ArgsT ... args) |
Apply a free type convolution using blocks. More... | |
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 free type convolution using blocks. More... | |
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 free type convolution using blocks. More... | |
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 free type convolution using blocks. More... | |
Box< dim, int > | getBox () |
Return a Box with the range if the SparseGrid. More... | |
template<typename stencil , typename... Args> | |
void | applyStencils (const Box< dim, int > &box, StencilMode mode, Args... args) |
template<typename stencil1 , typename stencil2 , typename ... otherStencils, typename... Args> | |
void | applyStencils (Box< dim, int > box, StencilMode mode, Args... args) |
template<typename CoordT > | |
size_t | getBlockLinId (const CoordT &blockCoord) const |
Linearization of block coordinates. More... | |
template<unsigned int p> | |
auto | insertFlush (const sparse_grid_gpu_index< self > &coord) -> ScalarTypeOf< AggregateBlockT, p > & |
Insert the point on host side and flush directly. More... | |
template<unsigned int p, typename CoordT > | |
auto | insertFlush (const grid_key_dx< dim, CoordT > &coord) -> ScalarTypeOf< AggregateBlockT, p > & |
Insert the point on host side and flush directly. More... | |
template<unsigned int p> | |
void | print_vct_add_data () |
template<unsigned int p> | |
void | setBackgroundValue (typename boost::mpl::at< typename AggregateT::type, boost::mpl::int_< p >>::type backgroundValue) |
set the background for property p More... | |
template<int ... prp> | |
void | packRequest (size_t &req) const |
Asking to pack a SparseGrid GPU without GPU context pack the grid on CPU and host memory. More... | |
template<int ... prp> | |
void | pack (ExtPreAlloc< HeapMemory > &mem, Pack_stat &sts) const |
Pack the object into the memory. More... | |
template<int ... prp> | |
void | unpack (ExtPreAlloc< HeapMemory > &mem, Unpack_stat &ps) |
Unpack the object into the memory. More... | |
template<int ... prp> | |
void | unpack (ExtPreAlloc< CudaMemory > &mem, Unpack_stat &ps) |
Unpack the object into the memory. More... | |
template<int ... prp> | |
void | packRequest (size_t &req, mgpu::ofp_context_t &context) const |
memory requested to pack this object More... | |
template<int ... prp> | |
void | packRequest (SparseGridGpu_iterator_sub< dim, self > &sub_it, size_t &req) const |
Calculate the size to pack part of this structure. More... | |
void | packReset () |
Reset the pack calculation. More... | |
template<int ... prp> | |
void | packCalculate (size_t &req, mgpu::ofp_context_t &context) |
Calculate the size of the information to pack. More... | |
auto | getMappingVector () -> decltype(this->blockMap.getMappingVector()) |
Return the mapping vector used to know where the data has been added. More... | |
auto | getMergeIndexMapVector () -> decltype(this->blockMap.getMergeIndexMapVector()) |
Return the mapping vector used to know where the data has been added. More... | |
template<int ... prp> | |
void | pack (ExtPreAlloc< CudaMemory > &mem, SparseGridGpu_iterator_sub< dim, self > &sub_it, Pack_stat &sts) |
Pack the object into the memory given an iterator. More... | |
template<unsigned int ... prp> | |
void | removeCopyToFinalize (mgpu::ofp_context_t &ctx, int opt) |
It finalize the queued operations of remove() and copy_to() More... | |
template<int ... prp> | |
void | packFinalize (ExtPreAlloc< CudaMemory > &mem, Pack_stat &sts, int opt=0, bool is_pack_remote=false) |
Finalize the packing procedure. More... | |
void | removeAddUnpackReset () |
In this case it does nothing. More... | |
void | swap (self &gr) |
void | removePoints (mgpu::ofp_context_t &context) |
Remove the points we queues to remove. More... | |
template<unsigned int ... prp> | |
void | removeAddUnpackFinalize (mgpu::ofp_context_t &context, int opt) |
This function remove the points we queue to remove and it flush all the added/unpacked data. More... | |
void | copyRemoveReset () |
Reset the queue to remove and copy section of grids. More... | |
void | remove (const Box< dim, int > §ion_to_delete) |
Remove all the points in this region. More... | |
void | copy_to (self &grid_src, const Box< dim, size_t > &box_src, const Box< dim, size_t > &box_dst) |
It queue a copy. More... | |
template<unsigned int ... prp, typename S2 , typename header_type > | |
void | unpack_with_headers (ExtPreAlloc< S2 > &mem, SparseGridGpu_iterator_sub< dim, self > &sub_it, header_type &headers, int ih, Unpack_stat &ps, mgpu::ofp_context_t &context, rem_copy_opt opt=rem_copy_opt::NONE_OPT) |
unpack the sub-grid object More... | |
template<unsigned int ... prp, typename S2 > | |
void | unpack (ExtPreAlloc< S2 > &mem, SparseGridGpu_iterator_sub< dim, self > &sub_it, Unpack_stat &ps, mgpu::ofp_context_t &context, rem_copy_opt opt=rem_copy_opt::NONE_OPT) |
unpack the sub-grid object More... | |
void | removeUnusedBuffers () |
Eliminate many internal temporary buffer you can use this between flushes if you get some out of memory. More... | |
decltype(self::type_of_iterator()) | getIterator () const |
Return a SparseGrid iterator. More... | |
decltype(self::type_of_subiterator()) | getIterator (const grid_key_dx< dim > &start, const grid_key_dx< dim > &stop, int is_to_init=1) const |
Return a SparseGrid iterator only on a sub-set of elements. More... | |
auto | private_get_add_index_array () -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.private_get_vct_add_index()) & |
Return the index array of the blocks. More... | |
auto | private_get_add_index_array () const -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.private_get_vct_add_index()) & |
Return the index array of the blocks. More... | |
auto | private_get_index_array () const -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getIndexBuffer()) & |
Return the index array of the blocks. More... | |
auto | getSegmentToOutMap () -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getSegmentToOutMap()) |
auto | getSegmentToOutMap () const -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getSegmentToOutMap()) |
auto | getSegmentToMergeIndexMap () -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getSegmentToMergeIndexMap()) |
auto | getSegmentToMergeIndexMap () const -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getSegmentToMergeIndexMap()) |
auto | private_get_index_array () -> decltype(BlockMapGpu< AggregateInternalT, threadBlockSize, indexT, layout_base >::blockMap.getIndexBuffer()) |
Return the index array of the blocks. More... | |
auto | private_get_neighborhood_array () -> decltype(nn_blocks) & |
Return the index array of the blocks. More... | |
![]() | |
void | clear () |
void | swap (self &bm) |
sparse_grid_bck_value< typename std::remove_reference< decltype(blockMap.getBackground())>::type > | getBackgroundValue () |
Get the background value. More... | |
auto | get (unsigned int linId) const -> const ScalarTypeOf< aggregate_convert< dim, blockEdgeSize, AggregateT >::type, p > & |
auto | get (unsigned int linId) const -> const decltype(blockMap.get(0)) & |
auto | insert (unsigned int linId) -> ScalarTypeOf< aggregate_convert< dim, blockEdgeSize, AggregateT >::type, p > & |
insert data, host version More... | |
auto | insert_o (unsigned int linId) -> decltype(blockMap.insert(0)) |
insert data, host version More... | |
auto | insertBlockFlush (size_t blockId) -> decltype(blockMap.insertFlush(blockId, is_new).template get< p >()) |
insert a block + flush, host version More... | |
auto | insertBlockFlush (size_t blockId) -> decltype(blockMap.insertFlush(blockId, is_new)) |
insert a block + flush, host version More... | |
BlockMapGpu_ker< AggregateInternalT, indexT, layout_base > | toKernel () |
void | deviceToHost () |
void | deviceToHost () |
void | hostToDevice () |
void | hostToDevice () |
void | setGPUInsertBuffer (int nBlock, int nSlot) |
void | preFlush () |
In case we manually set the added index buffer and the add data buffer we have to call this function before flush. More... | |
void | initializeGPUInsertBuffer () |
void | flush (mgpu::ofp_context_t &context, flush_type opt=FLUSH_ON_HOST) |
void | setBackgroundValue (TypeBck backgroundValue) |
set the background for property p More... | |
void | removeUnusedBuffers () |
Eliminate many internal temporary buffer you can use this between flushes if you get some out of memory. More... | |
decltype(blockMap) & | private_get_blockMap_non_const () |
Return internal structure block map. More... | |
decltype(blockMap) & | private_get_blockMap () |
Return internal structure block map. More... | |
decltype(blockMap) const & | private_get_blockMap () const |
Return internal structure block map. More... | |
Static Public Member Functions | |
template<typename stencil = no_stencil> | |
static SparseGridGpu_iterator_sub< dim, self > | type_of_subiterator () |
This is a meta-function return which type of sub iterator a grid produce. More... | |
static SparseGridGpu_iterator< dim, self > | type_of_iterator () |
This is a meta-function return which type of iterator a grid produce. More... | |
template<typename dim3T > | |
static int | dim3SizeToInt (dim3T d) |
static int | dim3SizeToInt (size_t d) |
static int | dim3SizeToInt (unsigned int d) |
static constexpr unsigned int | getBlockEdgeSize () |
template<typename BitMaskT > | |
static bool | isPadding (BitMaskT &bitMask) |
template<typename BitMaskT > | |
static void | setPadding (BitMaskT &bitMask) |
template<typename BitMaskT > | |
static void | unsetPadding (BitMaskT &bitMask) |
static bool | pack () |
static bool | packRequest () |
static constexpr bool | isCompressed () |
This is a multiresolution sparse grid so is a compressed format. More... | |
template<typename pointers_type , typename headers_type , typename result_type , unsigned int ... prp> | |
static void | unpack_headers (pointers_type &pointers, headers_type &headers, result_type &result, int n_slot) |
Stub does not do anything. More... | |
static bool | is_unpack_header_supported () |
Indicate that unpacking the header is supported. More... | |
![]() | |
static bool | getBit (const BitMaskT &bitMask, unsigned char pos) |
static bool | setBit (BitMaskT &bitMask, unsigned char pos) |
static bool | unsetBit (BitMaskT &bitMask, unsigned char pos) |
static bool | exist (BitMaskT &bitMask) |
static void | setExist (BitMaskT &bitMask) |
static void | unsetExist (BitMaskT &bitMask) |
Data Fields | |
decltype(std::declval< BMG >().toKernel().insertBlock(0)) typedef | insert_encap |
Static Public Attributes | |
static constexpr unsigned int | dims = dim |
static constexpr unsigned int | blockEdgeSize_ = blockEdgeSize |
Protected Types | |
typedef AggregateBlockT | AggregateInternalT |
![]() | |
typedef AggregateAppend< DataBlock< unsigned char, BlockT0::size >, aggregate_convert< dim, blockEdgeSize, AggregateT >::type >::type | AggregateInternalT |
Static Protected Attributes | |
static constexpr unsigned int | blockSize = BlockTypeOf<AggregateBlockT, 0>::size |
![]() | |
static const unsigned char | EXIST_BIT |
static const unsigned int | pMask |
Private Types | |
typedef BlockMapGpu< typename aggregate_convert< dim, blockEdgeSize, AggregateT >::type, threadBlockSize, indexT, layout_base > | BMG |
typedef aggregate_convert< dim, blockEdgeSize, AggregateT >::type | AggregateBlockT |
typedef SparseGridGpu< dim, AggregateT, blockEdgeSize, threadBlockSize, indexT, layout_base, linearizer > | self |
typedef aggregate_convert< dim, blockEdgeSize, aggregate< int > >::type | convertAggr |
Private Member Functions | |
void | swap_internal_remote () |
void | swap_internal_local () |
void | swap_local_pack () |
void | swap_remote_pack () |
void | computeSizeOfGhostLayer () |
void | allocateGhostLayerMapping () |
template<typename stencil_type > | |
void | computeGhostLayerMapping () |
void | initialize (const size_t(&res)[dim]) |
template<typename stencil , typename... Args> | |
void | applyStencilInPlace (const Box< dim, int > &box, StencilMode &mode, Args... args) |
template<typename stencil , typename... Args> | |
void | applyStencilInPlaceNoShared (const Box< dim, int > &box, StencilMode &mode, Args... args) |
template<typename ids_type > | |
void | fill_chunks_boxes (openfpm::vector< SpaceBox< dim, double >> &chunks_box, ids_type &chunk_ids, Point< dim, double > &spacing, Point< dim, double > &offset) |
template<typename MemType , unsigned int ... prp> | |
void | preUnpack (ExtPreAlloc< MemType > *prAlloc_prp, mgpu::ofp_context_t &ctx, int opt) |
template<unsigned int ... prp> | |
void | removeCopyToFinalize_phase1 (mgpu::ofp_context_t &ctx, int opt) |
template<unsigned int ... prp> | |
void | removeCopyToFinalize_phase2 (mgpu::ofp_context_t &ctx, int opt) |
template<unsigned int ... prp> | |
void | removeCopyToFinalize_phase3 (mgpu::ofp_context_t &ctx, int opt, bool is_unpack_remote) |
template<unsigned int n_it, unsigned int ... prp> | |
void | pack_sg_implement (ExtPreAlloc< CudaMemory > &mem, Pack_stat &sts, int opt, bool is_pack_remote) |
template<unsigned int ... prp, typename S2 > | |
void | addAndConvertPackedChunkToTmp (ExtPreAlloc< S2 > &mem, SparseGridGpu_iterator_sub< dim, self > &sub_it, Unpack_stat &ps, mgpu::ofp_context_t &context) |
unpack the sub-grid object More... | |
template<typename origPackType , typename IteratorType > | |
void | convertChunkIds (short int *offset, origPackType &origPack, IteratorType &sub_it) |
convert the offset index from the packed to the add buffer More... | |
Private Attributes | |
linearizer | gridGeometry |
grid_sm< dim, int > | extendedBlockGeometry |
grid_sm< dim, int > | gridSize |
unsigned int | stencilSupportRadius |
unsigned int | ghostLayerSize |
int | req_index |
int | req_index_swp |
int | req_index_swp_r |
AggregateT | bck |
openfpm::vector_gpu< Box< dim, unsigned int > > | rem_sects |
openfpm::vector< sparse_grid_section< self > > | copySect |
CudaMemory | mem |
openfpm::vector< void * > | index_ptrs |
openfpm::vector< void * > | index_ptrs_swp |
openfpm::vector< void * > | index_ptrs_swp_r |
openfpm::vector< void * > | scan_ptrs |
openfpm::vector< void * > | scan_ptrs_swp |
openfpm::vector< void * > | scan_ptrs_swp_r |
openfpm::vector< void * > | data_ptrs |
openfpm::vector< void * > | data_ptrs_swp |
openfpm::vector< void * > | data_ptrs_swp_r |
openfpm::vector< void * > | offset_ptrs |
openfpm::vector< void * > | offset_ptrs_swp |
openfpm::vector< void * > | offset_ptrs_swp_r |
openfpm::vector< void * > | mask_ptrs |
openfpm::vector< void * > | mask_ptrs_swp |
openfpm::vector< void * > | mask_ptrs_swp_r |
openfpm::vector< void * > | offset_ptrs_cp |
openfpm::vector< void * > | offset_ptrs_cp_swp |
openfpm::vector< void * > | offset_ptrs_cp_swp_r |
openfpm::vector< void * > | scan_ptrs_cp |
openfpm::vector< void * > | scan_ptrs_cp_swp |
openfpm::vector< void * > | scan_ptrs_cp_swp_r |
openfpm::vector< void * > | data_base_ptr_cp |
openfpm::vector< void * > | data_base_ptr_cp_swp |
openfpm::vector< void * > | data_base_ptr_cp_swp_r |
openfpm::vector< int > | n_cnk_cp |
openfpm::vector< int > | n_cnk_cp_swp |
openfpm::vector< int > | n_cnk_cp_swp_r |
openfpm::vector< int > | n_pnt_cp |
openfpm::vector< int > | n_pnt_cp_swp |
openfpm::vector< int > | n_pnt_cp_swp_r |
openfpm::vector< int > | n_shifts_cp |
openfpm::vector< int > | n_shift_cp_swp |
openfpm::vector< int > | n_shift_cp_swp_r |
openfpm::vector_gpu< convertAggr > | convert_blk |
openfpm::vector_gpu< convertAggr > | convert_blk_swp |
openfpm::vector_gpu< convertAggr > | convert_blk_swp_r |
openfpm::vector< Box< dim, size_t > > | box_cp |
openfpm::vector< Box< dim, size_t > > | box_cp_swp |
openfpm::vector< Box< dim, size_t > > | box_cp_swp_r |
openfpm::vector_gpu< aggregate< indexT > > | e_points |
openfpm::vector_gpu< aggregate< indexT > > | e_points_swp |
openfpm::vector_gpu< aggregate< indexT > > | e_points_swp_r |
openfpm::vector_gpu< aggregate< unsigned int > > | pack_output |
Helper array to pack points. | |
openfpm::vector_gpu< aggregate< unsigned int > > | pack_output_swp |
openfpm::vector_gpu< aggregate< unsigned int > > | pack_output_swp_r |
openfpm::vector_gpu< aggregate< short int, short int > > | ghostLayerToThreadsMapping |
openfpm::vector_gpu< aggregate< indexT > > | nn_blocks |
openfpm::vector_gpu< aggregate< indexT, unsigned int > > | tmp |
temporal | |
openfpm::vector_gpu< aggregate< indexT, unsigned int > > | tmp_swp |
openfpm::vector_gpu< aggregate< indexT, unsigned int > > | tmp_swp_r |
openfpm::vector_gpu< aggregate< indexT > > | tmp2 |
temporal 2 | |
openfpm::vector_gpu< aggregate< indexT > > | tmp3 |
temporal 3 | |
openfpm::vector_gpu< aggregate< indexT > > | scan_it |
contain the scan of the point for each iterator | |
openfpm::vector_gpu< aggregate< int > > | new_map |
Map between the (Last) added chunks and their position in chunks data. | |
openfpm::vector_gpu< aggregate< int > > | new_map_swp |
openfpm::vector_gpu< aggregate< int > > | new_map_swp_r |
openfpm::vector_gpu< Box< dim, int > > | pack_subs |
the set of all sub-set to pack | |
openfpm::vector_gpu< Box< dim, int > > | pack_subs_swp |
openfpm::vector_gpu< Box< dim, int > > | pack_subs_swp_r |
int | index_size_swp = -1 |
int | index_size_swp_r = -1 |
openfpm::vector_gpu< aggregate< size_t > > | links_up |
links of the padding points with real points of a coarse sparsegrid | |
openfpm::vector_gpu< aggregate< unsigned int > > | link_dw_scan |
scan offsets of the links down | |
openfpm::vector_gpu< aggregate< int, short int > > | link_dw |
links of the padding points with real points of a finer sparsegrid | |
openfpm::vector_gpu< aggregate< unsigned int > > | link_up_scan |
scan offsets of the links down | |
openfpm::vector_gpu< aggregate< int, short int > > | link_up |
links of the padding points with real points of a finer sparsegrid | |
ExtPreAlloc< CudaMemory > * | prAlloc_prp |
Memory to remove copy finalize. | |
openfpm::vector_gpu< aggregate< int[dim]> > | shifts |
shifts for chunk conversion | |
bool | findNN = false |
Static Private Attributes | |
static const unsigned char | PADDING_BIT = 1 |
Additional Inherited Members | |
![]() | |
openfpm::vector_sparse_gpu_block< AggregateInternalT, BlockMapGpuFunctors::BlockFunctor< threadBlockSize >, indexT > | blockMap |
|
inline |
Constructor from glock geometry.
Definition at line 1687 of file SparseGridGpu.hpp.
|
inline |
Constructor from glock geometry.
Definition at line 1697 of file SparseGridGpu.hpp.
|
inlineprivate |
unpack the sub-grid object
prp | properties to unpack |
mem | preallocated memory from where to unpack the object |
sub | sub-grid iterator |
obj | object where to unpack |
Definition at line 1414 of file SparseGridGpu.hpp.
|
inline |
Reset the structure
Definition at line 1787 of file SparseGridGpu.hpp.
|
inline |
construct link between levels
\praram grid_up grid level up
grid_dw | grid level down |
Definition at line 2014 of file SparseGridGpu.hpp.
|
inline |
construct link on the down level
grid_dw | grid level down |
db | domain box |
p_dw | point offset when you go down |
gpu | context |
Definition at line 2101 of file SparseGridGpu.hpp.
|
inline |
construct link on the up levels
\praram grid_up grid level up
Definition at line 2179 of file SparseGridGpu.hpp.
|
inline |
Apply a free type convolution using blocks.
Definition at line 2576 of file SparseGridGpu.hpp.
|
inline |
Apply a free type convolution using blocks.
Definition at line 2636 of file SparseGridGpu.hpp.
|
inline |
Apply a free type convolution using blocks.
Definition at line 2616 of file SparseGridGpu.hpp.
|
inline |
Apply a convolution using a cross like stencil.
in 2D for example the stencil is
* * * * *
Definition at line 2557 of file SparseGridGpu.hpp.
|
inline |
Apply a free type convolution using blocks.
Definition at line 2596 of file SparseGridGpu.hpp.
|
inlineprivate |
convert the offset index from the packed to the add buffer
Definition at line 1610 of file SparseGridGpu.hpp.
|
inline |
It queue a copy.
grid_src | source grid |
box_src | gource box |
box_dst | destination box |
Definition at line 3491 of file SparseGridGpu.hpp.
|
inline |
Reset the queue to remove and copy section of grids.
Definition at line 3445 of file SparseGridGpu.hpp.
|
inline |
Get an element using the point coordinates.
p | property index |
coord | point coordinates |
Definition at line 1886 of file SparseGridGpu.hpp.
|
inline |
Get an element using sparse_grid_gpu_index (using this index it guarantee that the point exist)
p | property index |
element |
Definition at line 1901 of file SparseGridGpu.hpp.
|
inline |
Get an element using sparse_grid_gpu_index (using this index it guarantee that the point exist)
p | property index |
element |
Definition at line 1975 of file SparseGridGpu.hpp.
|
inline |
Get an element using the point coordinates.
coord | point coordinates |
Definition at line 1934 of file SparseGridGpu.hpp.
|
inline |
Get an element using sparse_grid_gpu_index (using this index it guarantee that the point exist)
element |
Definition at line 1950 of file SparseGridGpu.hpp.
|
inline |
Get an element using the point coordinates.
p | property index |
coord | point coordinates |
Definition at line 1857 of file SparseGridGpu.hpp.
|
inline |
Linearization of block coordinates.
blockCoord | block coordinates |
Definition at line 2731 of file SparseGridGpu.hpp.
|
inline |
Return a Box with the range if the SparseGrid.
Definition at line 2656 of file SparseGridGpu.hpp.
|
inline |
Get the links down for each point.
Definition at line 2068 of file SparseGridGpu.hpp.
|
inline |
Get the offsets for each point of the links down.
Definition at line 2058 of file SparseGridGpu.hpp.
|
inline |
Return the flag of the point.
It indicate for example is if the point is a padding point (internaly it return the pMask flag)
Definition at line 1987 of file SparseGridGpu.hpp.
|
inline |
Return the grid information object.
Definition at line 1803 of file SparseGridGpu.hpp.
|
inline |
Return a SparseGrid iterator.
Definition at line 3691 of file SparseGridGpu.hpp.
|
inline |
Return a SparseGrid iterator only on a sub-set of elements.
Definition at line 3701 of file SparseGridGpu.hpp.
|
inline |
Return the mapping vector used to know where the data has been added.
Definition at line 3156 of file SparseGridGpu.hpp.
|
inline |
Return the mapping vector used to know where the data has been added.
Definition at line 3166 of file SparseGridGpu.hpp.
|
inline |
Get the links up for each point.
Definition at line 2088 of file SparseGridGpu.hpp.
|
inline |
Get the offsets for each point of the links up.
Definition at line 2078 of file SparseGridGpu.hpp.
|
inline |
Insert the point on host side and flush directly.
First you have to move everything on host with deviceToHost, insertFlush and than move to GPU again
grid | point where to insert |
Definition at line 2747 of file SparseGridGpu.hpp.
|
inline |
Insert the point on host side and flush directly.
First you have to move everything on host with deviceToHost, insertFlush and than move to GPU again
grid | point where to insert |
Definition at line 2773 of file SparseGridGpu.hpp.
|
inlinestatic |
Indicate that unpacking the header is supported.
Definition at line 3592 of file SparseGridGpu.hpp.
|
inlinestatic |
This is a multiresolution sparse grid so is a compressed format.
Definition at line 3479 of file SparseGridGpu.hpp.
|
inline |
This function check if keep geometry is possible for this grid.
Definition at line 1960 of file SparseGridGpu.hpp.
|
inline |
Pack the object into the memory.
prp | properties to pack |
mem | preallocated memory where to pack the objects |
sts | pack statistic |
Definition at line 2867 of file SparseGridGpu.hpp.
|
inline |
Pack the object into the memory given an iterator.
prp | properties to pack |
mem | preallocated memory where to pack the objects |
sub_it | sub grid iterator ( or the elements in the grid to pack ) |
sts | pack statistic |
Definition at line 3185 of file SparseGridGpu.hpp.
|
inline |
Calculate the size of the information to pack.
req | output size (it does not reset the counter it accumulate) |
context | gpu contect |
Definition at line 3018 of file SparseGridGpu.hpp.
|
inline |
Finalize the packing procedure.
prp | properties to pack |
mem | preallocated memory where to pack the objects |
sub_it | sub grid iterator ( or the elements in the grid to pack ) |
sts | pack statistic |
Definition at line 3284 of file SparseGridGpu.hpp.
|
inline |
Asking to pack a SparseGrid GPU without GPU context pack the grid on CPU and host memory.
Definition at line 2846 of file SparseGridGpu.hpp.
|
inline |
memory requested to pack this object
req | request |
Definition at line 2925 of file SparseGridGpu.hpp.
|
inline |
Calculate the size to pack part of this structure.
prp | set of properties to pack |
sub | sub-grid to pack |
req | output byte |
Definition at line 2982 of file SparseGridGpu.hpp.
|
inline |
Reset the pack calculation.
Definition at line 2998 of file SparseGridGpu.hpp.
|
inline |
In case we manually set the added index buffer and the add data buffer we have to call this function before flush.
Definition at line 2273 of file SparseGridGpu.hpp.
|
inline |
Return the index array of the blocks.
Definition at line 3711 of file SparseGridGpu.hpp.
|
inline |
Return the index array of the blocks.
Definition at line 3721 of file SparseGridGpu.hpp.
|
inline |
Return the index array of the blocks.
Definition at line 1911 of file SparseGridGpu.hpp.
|
inline |
Return the data array of the blocks.
Definition at line 1921 of file SparseGridGpu.hpp.
|
inline |
Return the index array of the blocks.
Definition at line 3731 of file SparseGridGpu.hpp.
|
inline |
Return the index array of the blocks.
Definition at line 3761 of file SparseGridGpu.hpp.
|
inline |
Return the index array of the blocks.
Definition at line 3771 of file SparseGridGpu.hpp.
|
inline |
Remove all the points in this region.
box_src | box to kill the points |
Definition at line 3469 of file SparseGridGpu.hpp.
|
inline |
This function remove the points we queue to remove and it flush all the added/unpacked data.
Definition at line 3433 of file SparseGridGpu.hpp.
|
inline |
In this case it does nothing.
Definition at line 3317 of file SparseGridGpu.hpp.
|
inline |
It finalize the queued operations of remove() and copy_to()
In particular suppose we have 3 grids and we copy sections of the grid 1 into 2 and 3 , sections of grid 2 into 1 and 3 and sections of grid 3 into 1 and 2. Than we have to first call on all 3 grids removeCopyFinalize with PHASE1. Than we call removeCopyFinalize with PHASE2 on all 3 grids and finally removeCopyFinalize with PHASE3
In case we can guarantee that the chunks structure has not changed we can pass the option KEEP_GEOMETRY to make this function faster
ctx | context |
options |
Definition at line 3256 of file SparseGridGpu.hpp.
|
inline |
Remove the points we queues to remove.
context | modern gpu context |
Definition at line 3358 of file SparseGridGpu.hpp.
|
inline |
Eliminate many internal temporary buffer you can use this between flushes if you get some out of memory.
Definition at line 3679 of file SparseGridGpu.hpp.
|
inline |
resize the SparseGrid
res | indicate the resolution in each dimension |
Definition at line 1678 of file SparseGridGpu.hpp.
|
inline |
set the background for property p
p | property p |
Definition at line 2820 of file SparseGridGpu.hpp.
|
inline |
\Brief Before insert any element you have to call this function to initialize the insert buffer
nBlock | number of blocks the insert buffer has |
nSlot | maximum number of insertion each block does |
Definition at line 2259 of file SparseGridGpu.hpp.
|
inline |
Set the neighborhood type.
stencil_type | Type of stencil |
Definition at line 1814 of file SparseGridGpu.hpp.
|
inline |
return the size of the grid
Definition at line 728 of file SparseGridGpu.hpp.
|
inline |
Swap the content of two sarse grid
gr | sparse grid from which to swap |
Definition at line 3344 of file SparseGridGpu.hpp.
|
inlinestatic |
This is a meta-function return which type of iterator a grid produce.
Definition at line 749 of file SparseGridGpu.hpp.
|
inlinestatic |
This is a meta-function return which type of sub iterator a grid produce.
Definition at line 739 of file SparseGridGpu.hpp.
|
inline |
Unpack the object into the memory.
prp | properties to pack |
mem | preallocated memory where to pack the objects |
sts | pack statistic |
Definition at line 2889 of file SparseGridGpu.hpp.
|
inline |
Unpack the object into the memory.
prp | properties to pack |
mem | preallocated memory where to pack the objects |
sts | pack statistic |
Definition at line 2912 of file SparseGridGpu.hpp.
|
inline |
unpack the sub-grid object
prp | properties to unpack |
mem | preallocated memory from where to unpack the object |
sub | sub-grid iterator |
obj | object where to unpack |
Definition at line 3605 of file SparseGridGpu.hpp.
|
inlinestatic |
Stub does not do anything.
Definition at line 3509 of file SparseGridGpu.hpp.
|
inline |
unpack the sub-grid object
prp | properties to unpack |
mem | preallocated memory from where to unpack the object |
sub | sub-grid iterator |
obj | object where to unpack |
Definition at line 3535 of file SparseGridGpu.hpp.
|
private |
set of existing points the formats is id/blockSize = data block poosition id % blockSize = offset
Definition at line 575 of file SparseGridGpu.hpp.
|
private |
For stencil in a block-wise computation we have to load blocks + ghosts area. The ghost area live in neighborhood blocks For example the left ghost margin live in the right part of the left located neighborhood block, the right margin live in the left part of the of the right located neighborhood block, the top ... The first index indicate the index of the point in the block + ghost area, the second index indicate the correspondent neighborhood index (in a star like 0 mean negative x 1 positive x, 1 mean negative y and so on)
Definition at line 589 of file SparseGridGpu.hpp.
|
mutableprivate |
Size of the index vector packed. These varaible are used to understand if the option KEEP_GEOMETRY can be used keep geometry option infact require that when we record the packing variables the number of chunks (and chunks indexes) does not change
Definition at line 620 of file SparseGridGpu.hpp.