SENSEI
A frame work for generic in situ analytics
sensei::MPIUtils Namespace Reference

A collection of communication routines. More...

Functions

template<typename cpp_t >
void GlobalCounts (MPI_Comm comm, std::vector< cpp_t > &vec)
 helper to recuce by summation elements in a vector it's assumed that the vector is the same size on all ranks. More...
 
template<typename cpp_t >
void GlobalBounds (MPI_Comm comm, const std::vector< std::array< cpp_t, 6 >> &lbounds, std::array< cpp_t, 6 > &gbounds)
 helper function to compute an axis aligned bounding box that bounds a collection of distrubted axis aligned bounding boxes More...
 
template<typename cpp_t >
void GlobalRange (MPI_Comm comm, const std::vector< std::array< cpp_t, 2 >> &lrange, std::array< cpp_t, 2 > &grange)
 helper function to compute glpbal array range More...
 
template<typename cpp_t >
void GlobalView (MPI_Comm comm, const std::vector< cpp_t > &ldata, std::vector< cpp_t > &gdata)
 
template<typename cpp_t >
void GlobalViewV (MPI_Comm comm, const std::vector< cpp_t > &ldata, std::vector< int > &gcounts, std::vector< int > &goffset, std::vector< cpp_t > &gdata)
 
template<typename cpp_t >
void GlobalViewV (MPI_Comm comm, const std::vector< cpp_t > &ldata, std::vector< cpp_t > &gdata)
 use this if you don't need counts & offsets More...
 
template<typename cpp_t >
void GlobalViewV (MPI_Comm comm, std::vector< cpp_t > &ldata)
 use this if you don't need counts & offsets and want the result to replace the input. More...
 
template<typename cpp_t , std::size_t N>
void GlobalViewV (MPI_Comm comm, const std::vector< std::array< cpp_t, N >> &ldata, std::vector< std::array< cpp_t, N >> &gdata)
 helper function to generate a global view from a local view. More...
 
template<typename cpp_t , std::size_t N>
void GlobalViewV (MPI_Comm comm, std::vector< std::array< cpp_t, N >> &ldata)
 use this if you don't need counts & offsets and want the result to replace the input. More...
 
template<typename cpp_t >
void GlobalViewV (MPI_Comm comm, std::vector< std::vector< cpp_t >> &ldata)
 use this if you don't need counts & offsets and want the result to replace the input. More...
 

Detailed Description

A collection of communication routines.

Function Documentation

◆ GlobalBounds()

template<typename cpp_t >
void sensei::MPIUtils::GlobalBounds ( MPI_Comm  comm,
const std::vector< std::array< cpp_t, 6 >> &  lbounds,
std::array< cpp_t, 6 > &  gbounds 
)

helper function to compute an axis aligned bounding box that bounds a collection of distrubted axis aligned bounding boxes

these can be integer index space bounds (ie SVTK extents) or floating point world cooridnate system bounds, but for index space bounds a signed integer type is required.

local bounds are expected in the layout:

bx_0_0, bx_1_0, by_0_0, by_1_0, bz_0_0, bz_1_0,
...
bx_0_n, bx_1_n, by_0_n, by_1_n, bz_0_n, bz_1_n

where n is the number of blocks minus 1

global bounds are returned in the same layout:

bx_0, bx_1, by_0, by_1, bz_0, bz_1

◆ GlobalCounts()

template<typename cpp_t >
void sensei::MPIUtils::GlobalCounts ( MPI_Comm  comm,
std::vector< cpp_t > &  vec 
)

helper to recuce by summation elements in a vector it's assumed that the vector is the same size on all ranks.

◆ GlobalRange()

template<typename cpp_t >
void sensei::MPIUtils::GlobalRange ( MPI_Comm  comm,
const std::vector< std::array< cpp_t, 2 >> &  lrange,
std::array< cpp_t, 2 > &  grange 
)

helper function to compute glpbal array range

◆ GlobalViewV() [1/5]

template<typename cpp_t >
void sensei::MPIUtils::GlobalViewV ( MPI_Comm  comm,
const std::vector< cpp_t > &  ldata,
std::vector< cpp_t > &  gdata 
)

use this if you don't need counts & offsets

◆ GlobalViewV() [2/5]

template<typename cpp_t >
void sensei::MPIUtils::GlobalViewV ( MPI_Comm  comm,
std::vector< cpp_t > &  ldata 
)

use this if you don't need counts & offsets and want the result to replace the input.

◆ GlobalViewV() [3/5]

template<typename cpp_t , std::size_t N>
void sensei::MPIUtils::GlobalViewV ( MPI_Comm  comm,
const std::vector< std::array< cpp_t, N >> &  ldata,
std::vector< std::array< cpp_t, N >> &  gdata 
)

helper function to generate a global view from a local view.

A vector of local data items is passed in, this vector could be a different length on each rank. a vector of the global data items is returned along with an array of counts, and offsets that are used to index into the global data. counts is indexed by rank and contains the number of items contributed by each rank. offsets contains an offset of each ranks data.

◆ GlobalViewV() [4/5]

template<typename cpp_t , std::size_t N>
void sensei::MPIUtils::GlobalViewV ( MPI_Comm  comm,
std::vector< std::array< cpp_t, N >> &  ldata 
)

use this if you don't need counts & offsets and want the result to replace the input.

◆ GlobalViewV() [5/5]

template<typename cpp_t >
void sensei::MPIUtils::GlobalViewV ( MPI_Comm  comm,
std::vector< std::vector< cpp_t >> &  ldata 
)

use this if you don't need counts & offsets and want the result to replace the input.