DASH  0.2.0
Namespaces | Classes | Typedefs | Enumerations | Functions
dash Namespace Reference

Namespaces

 exception
 
 internal
 
 tools
 
 util
 

Classes

class  Array
 A distributed array. More...
 
class  ArrayRef
 
class  ArrayRefView
 
class  AsyncArrayRef
 
class  CartesianIndexSpace
 Defines a cartesian, totally-ordered index space by mapping linear indices to cartesian coordinates depending on memory order. More...
 
class  CartesianSpace
 Cartesian space defined by extents in n dimensions. More...
 
struct  CartView
 
class  CartViewBase
 Base class for a cartesian view, i.e. More...
 
class  CSRPattern
 Irregular Pattern for Compressed Sparse Row Storage. More...
 
class  CSRPattern< 1, Arrangement, IndexType >
 Irregular Pattern for Compressed Sparse Row Storage. More...
 
class  CSRPattern< 2, Arrangement, IndexType >
 Irregular Pattern for Compressed Sparse Row Storage. More...
 
struct  dart_datatype
 Type traits for mapping to DART data types. More...
 
struct  dart_datatype< double >
 
struct  dart_datatype< float >
 
struct  dart_datatype< int >
 
class  Dimensional
 Base class for dimensional attributes, stores an n-dimensional value with identical type all dimensions. More...
 
class  Distribution
 Specifies how a Pattern distributes elements to units in a specific dimension. More...
 
class  DistributionSpec
 DistributionSpec describes distribution patterns of all dimensions,. More...
 
struct  Extent
 
class  Future
 
class  GlobAsyncIter
 
class  GlobAsyncRef
 Global value reference for asynchronous / non-blocking operations. More...
 
class  GlobIter
 
class  GlobMem
 
class  GlobPtr
 
class  GlobRef
 
class  GlobViewIter
 
struct  has_subscript_operator
 
class  HIter
 
class  HView
 
class  HView< ContainerType,-1 >
 
class  LocalArrayRef
 
struct  LocalIndexRange
 
class  LocalMatrixRef
 Forward-declaration. More...
 
class  LocalMatrixRef< T, NumDimensions, 0, PatternT >
 Local Matrix representation, provides local operations. More...
 
class  LocalMemoryLayout
 Specifies how local element indices are arranged in a specific number of dimensions. More...
 
struct  LocalRange
 
class  Matrix
 Forward-declaration. More...
 
class  MatrixRef
 Forward-declaration. More...
 
class  MatrixRef< ElementT, NumDimensions, 0, PatternT >
 A view on a referenced Matrix object, such as a dimensional projection returned by Matrix::sub. More...
 
class  MatrixRefView
 Stores information needed by subscripting and subdim selection. More...
 
class  Pattern
 Defines how a list of global indices is mapped to single units within a Team. More...
 
class  Pattern< 1, Arrangement, IndexType >
 Defines how a list of global indices is mapped to single units within a Team. More...
 
struct  pattern_constraints
 Traits for compile-time pattern constraints checking, suitable as a helper for template definitions employing SFINAE where no verbose error reporting is required. More...
 
struct  pattern_layout_properties
 
struct  pattern_layout_properties< pattern_layout_tag::type::blocked, Tags...>
 Specialization of dash::pattern_layout_properties to process tag dash::pattern_layout_tag::type::blocked in template parameter list. More...
 
struct  pattern_layout_properties< pattern_layout_tag::type::canonical, Tags...>
 Specialization of dash::pattern_layout_properties to process tag dash::pattern_layout_tag::type::canonical in template parameter list. More...
 
struct  pattern_layout_properties< pattern_layout_tag::type::linear, Tags...>
 Specialization of dash::pattern_layout_properties to process tag dash::pattern_layout_tag::type::linear in template parameter list. More...
 
struct  pattern_layout_tag
 
struct  pattern_layout_traits
 
struct  pattern_mapping_properties
 Generic type of mapping properties of a model satisfying the Pattern concept. More...
 
struct  pattern_mapping_properties< pattern_mapping_tag::type::balanced, Tags...>
 Specialization of dash::pattern_mapping_properties to process tag dash::pattern_mapping_tag::type::balanced in template parameter list. More...
 
struct  pattern_mapping_properties< pattern_mapping_tag::type::cyclic, Tags...>
 Specialization of dash::pattern_mapping_properties to process tag dash::pattern_mapping_tag::type::cyclic in template parameter list. More...
 
struct  pattern_mapping_properties< pattern_mapping_tag::type::diagonal, Tags...>
 Specialization of dash::pattern_mapping_properties to process tag dash::pattern_mapping_tag::type::diagonal in template parameter list. More...
 
struct  pattern_mapping_properties< pattern_mapping_tag::type::neighbor, Tags...>
 Specialization of dash::pattern_mapping_properties to process tag dash::pattern_mapping_tag::type::neighbor in template parameter list. More...
 
struct  pattern_mapping_properties< pattern_mapping_tag::type::shifted, Tags...>
 Specialization of dash::pattern_mapping_properties to process tag dash::pattern_mapping_tag::type::shifted in template parameter list. More...
 
struct  pattern_mapping_properties< pattern_mapping_tag::type::unbalanced, Tags...>
 Specialization of dash::pattern_mapping_properties to process tag dash::pattern_mapping_tag::type::unbalanced in template parameter list. More...
 
struct  pattern_mapping_tag
 Container type for mapping properties of models satisfying the Pattern concept. More...
 
struct  pattern_mapping_traits
 
struct  pattern_partitioning_properties
 
struct  pattern_partitioning_properties< pattern_partitioning_tag::type::balanced, Tags...>
 Specialization of dash::pattern_partitioning_properties to process tag dash::pattern_partitioning_tag::type::balanced in template parameter list. More...
 
struct  pattern_partitioning_properties< pattern_partitioning_tag::type::minimal, Tags...>
 Specialization of dash::pattern_partitioning_properties to process tag dash::pattern_partitioning_tag::type::minimal in template parameter list. More...
 
struct  pattern_partitioning_properties< pattern_partitioning_tag::type::rectangular, Tags...>
 Specialization of dash::pattern_partitioning_properties to process tag dash::pattern_partitioning_tag::type::rectangular in template parameter list. More...
 
struct  pattern_partitioning_properties< pattern_partitioning_tag::type::regular, Tags...>
 Specialization of dash::pattern_partitioning_properties to process tag dash::pattern_partitioning_tag::type::regular in template parameter list. More...
 
struct  pattern_partitioning_properties< pattern_partitioning_tag::type::unbalanced, Tags...>
 Specialization of dash::pattern_partitioning_properties to process tag dash::pattern_partitioning_tag::type::unbalanced in template parameter list. More...
 
struct  pattern_partitioning_tag
 
struct  pattern_partitioning_traits
 
struct  pattern_traits
 
class  PatternIterator
 Usage: More...
 
struct  plus
 Reduce operands to their sum. More...
 
struct  Point
 
class  ReduceOperation
 Base type of all reduce operations, primarily acts as a container of a dart_operation_t. More...
 
class  Shared
 Shared access to a value in global memory across a team. More...
 
class  SharedCounter
 A simple shared counter that allows atomic increment- and decrement operations. More...
 
class  ShiftTilePattern
 Defines how a list of global indices is mapped to single units within a Team. More...
 
class  ShiftTilePattern< 1, Arrangement, IndexType >
 Defines how a list of global indices is mapped to single units within a Team. More...
 
class  SizeSpec
 Specifies cartesian extents in a specific number of dimensions. More...
 
class  Team
 A Team instance specifies a subset of all available units. More...
 
class  TeamSpec
 Specifies the arrangement of team units in a specified number of dimensions. More...
 
class  TilePattern
 Defines how a list of global indices is mapped to single units within a Team. More...
 
class  TilePattern< 1, Arrangement, IndexType >
 Defines how a list of global indices is mapped to single units within a Team. More...
 
struct  ViewPair
 Offset and extent in a single dimension. More...
 
struct  ViewRegion
 Representation of a ViewPair as region specified by origin and end coordinates. More...
 
class  ViewSpec
 Specifies view parameters for implementing submat, rows and cols. More...
 

Typedefs

typedef dash::pattern_partitioning_properties< dash::pattern_partitioning_tag::minimal, dash::pattern_partitioning_tag::rectangular, dash::pattern_partitioning_tag::balancedsumma_pattern_partitioning_constraints
 Constraints on pattern partitioning properties of matrix operands passed to dash::summa. More...
 
typedef dash::pattern_mapping_properties< dash::pattern_mapping_tag::unbalancedsumma_pattern_mapping_constraints
 Constraints on pattern mapping properties of matrix operands passed to dash::summa. More...
 
typedef dash::pattern_layout_properties< dash::pattern_layout_tag::blocked, dash::pattern_layout_tag::linearsumma_pattern_layout_constraints
 Constraints on pattern layout properties of matrix operands passed to dash::summa. More...
 
typedef enum dash::MemArrange MemArrange
 
typedef dash::pattern_partitioning_properties< pattern_partitioning_tag::rectangular, pattern_partitioning_tag::unbalancedpattern_partitioning_default_properties
 
typedef dash::pattern_mapping_properties< pattern_mapping_tag::unbalancedpattern_mapping_default_properties
 
typedef dash::pattern_layout_properties< pattern_layout_tag::row_major, pattern_layout_tag::canonical, pattern_layout_tag::linearpattern_layout_default_properties
 
typedef int dim_t
 Scalar type for a dimension value, with 0 indicating the first dimension. More...
 
typedef internal::default_signed_index default_index_t
 Signed integer type used as default for index values. More...
 
typedef internal::default_unsigned_index default_extent_t
 Unsigned integer type used as default for extent values. More...
 
typedef internal::default_unsigned_index default_size_t
 Unsigned integer type used as default for size values. More...
 
typedef internal::default_signed_index gptrdiff_t
 Difference type for global pointers. More...
 

Enumerations

enum  MemArrange { MEM_ARRANGE_UNDEFINED = 0, ROW_MAJOR, COL_MAJOR }
 

Functions

template<class GlobInputIt , class ValueType , class BinaryOperation >
ValueType accumulate (GlobInputIt in_first, GlobInputIt in_last, ValueType init, BinaryOperation binary_op=dash::plus< ValueType >())
 Computes the sum of the given value init and the elements in the range [first, last). More...
 
template<typename ValueType , class InputIt , class OutputIt >
OutputIt copy (InputIt in_first, InputIt in_last, OutputIt out_first)
 Copies the elements in the range, defined by [in_first, in_last), to another range beginning at out_first. More...
 
template<typename ValueType , class GlobInputIt >
dash::Future< ValueType * > copy_async (GlobInputIt in_first, GlobInputIt in_last, ValueType *out_first)
 Specialization of dash::copy as global-to-local blocking copy operation. More...
 
template<typename ValueType , class GlobInputIt >
ValueType * copy (GlobInputIt in_first, GlobInputIt in_last, ValueType *out_first)
 Specialization of dash::copy as global-to-local blocking copy operation. More...
 
template<typename ValueType , class GlobOutputIt >
GlobOutputIt copy (ValueType *in_first, ValueType *in_last, GlobOutputIt out_first)
 Specialization of dash::copy as local-to-global blocking copy operation. More...
 
template<typename ValueType , class GlobInputIt , class GlobOutputIt >
ValueType * copy (GlobInputIt in_first, GlobInputIt in_last, GlobOutputIt out_first)
 Specialization of dash::copy as global-to-global blocking copy operation. More...
 
template<typename ElementType , class PatternType >
void fill (GlobIter< ElementType, PatternType > first, GlobIter< ElementType, PatternType > last, const ElementType &value)
 Assigns the given value to the elements in the range [first, last) More...
 
template<typename ElementType , typename IndexType , class PatternType >
void for_each (const GlobIter< ElementType, PatternType > &first, const GlobIter< ElementType, PatternType > &last,::std::function< void(IndexType)> &func)
 Invoke a function on every element in a range distributed by a pattern. More...
 
template<typename ElementType , typename IndexType , class PatternType >
void for_each_with_index (const GlobIter< ElementType, PatternType > &first, const GlobIter< ElementType, PatternType > &last,::std::function< void(const ElementType &, IndexType)> &func)
 Invoke a function on every element in a range distributed by a pattern. More...
 
template<typename ElementType , class PatternType >
void generate (GlobIter< ElementType, PatternType > first, GlobIter< ElementType, PatternType > last,::std::function< ElementType(void)> &g)
 Assigns each element in range [first, last) a value generated by the given function object g. More...
 
template<class GlobInputIter >
std::enable_if< !GlobInputIter::has_view::value, LocalIndexRange< typename GlobInputIter::pattern_type::index_type >>::type local_index_range (const GlobInputIter &first, const GlobInputIter &last)
 Resolves the local index range between global iterators. More...
 
template<class GlobInputIter >
std::enable_if< GlobInputIter::has_view::value, LocalIndexRange< typename GlobInputIter::pattern_type::index_type >>::type local_index_range (const GlobInputIter &first, const GlobInputIter &last)
 Resolves the local index range between global view iterators. More...
 
template<class GlobIterType >
LocalRange< const typename GlobIterType::value_type > local_range (const GlobIterType &first, const GlobIterType &last)
 Resolves the local address range between global iterators. More...
 
template<class GlobIterType >
LocalRange< typename GlobIterType::value_type > local_range (GlobIterType &first, GlobIterType &last)
 
template<typename ElementType , class PatternType >
ElementType * local (const GlobIter< ElementType, PatternType > &g_it)
 Convert global iterator referencing an element the active unit's memory to a corresponding native pointer referencing the element. More...
 
template<typename ElementType , class PatternType >
GlobPtr< ElementType, PatternType > min_element (const GlobIter< ElementType, PatternType > &first, const GlobIter< ElementType, PatternType > &last, const std::function< bool(const ElementType &, const ElementType) > &compare=std::less< const ElementType & >())
 Finds an iterator pointing to the element with the smallest value in the range [first,last). More...
 
template<typename ElementType >
const ElementType * min_element (const ElementType *first, const ElementType *last, const std::function< bool(const ElementType &, const ElementType) > &compare=std::less< const ElementType & >())
 Finds an iterator pointing to the element with the smallest value in the range [first,last). More...
 
template<typename ElementType , class PatternType >
GlobPtr< ElementType, PatternType > max_element (const GlobIter< ElementType, PatternType > &first, const GlobIter< ElementType, PatternType > &last, const std::function< bool(const ElementType &, const ElementType) > &compare=std::greater< const ElementType & >())
 Finds an iterator pointing to the element with the greatest value in the range [first,last). More...
 
template<typename ElementType >
const ElementType * max_element (const ElementType *first, const ElementType *last, const std::function< bool(const ElementType &, const ElementType) > &compare=std::greater< const ElementType & >())
 Finds an iterator pointing to the element with the greatest value in the range [first,last). More...
 
template<typename MatrixTypeA , typename MatrixTypeB , typename MatrixTypeC >
void summa (MatrixTypeA &A, MatrixTypeB &B, MatrixTypeC &C)
 Multiplies two matrices using the SUMMA algorithm. More...
 
template<typename MatrixTypeA , typename MatrixTypeB , typename MatrixTypeC >
std::enable_if< dash::pattern_constraints< dash::summa_pattern_partitioning_constraints, dash::summa_pattern_mapping_constraints, dash::summa_pattern_layout_constraints, typename MatrixTypeA::pattern_type >::satisfied::value &&dash::pattern_constraints< dash::summa_pattern_partitioning_constraints, dash::summa_pattern_mapping_constraints, dash::summa_pattern_layout_constraints, typename MatrixTypeB::pattern_type >::satisfied::value &&dash::pattern_constraints< dash::summa_pattern_partitioning_constraints, dash::summa_pattern_mapping_constraints, dash::summa_pattern_layout_constraints, typename MatrixTypeC::pattern_type >::satisfied::value, void >::type multiply (MatrixTypeA &A, MatrixTypeB &B, MatrixTypeC &C)
 Registration of dash::summa as an implementation of matrix-matrix multiplication (xDGEMM). More...
 
template<typename ValueType , class InputIt , class OutputIt , class UnaryOperation >
OutputIt transform (InputIt in_first, InputIt in_last, OutputIt out_first, UnaryOperation unary_op)
 Apply a given function to elements in a range and store the result in another range, beginning at out_first. More...
 
template<typename ValueType , class InputAIt , class InputBIt , class OutputIt , class BinaryOperation >
OutputIt transform (InputAIt in_a_first, InputAIt in_a_last, InputBIt in_b_first, OutputIt out_first, BinaryOperation binary_op)
 Apply a given function to pairs of elements from two ranges and store the result in another range, beginning at out_first. More...
 
template<typename ValueType , class InputAIt , class InputBIt , class OutputIt , class BinaryOperation >
OutputIt transform_local (InputAIt in_a_first, InputAIt in_a_last, InputBIt in_b_first, OutputIt out_first, BinaryOperation binary_op)
 Transform operation on ranges with identical distribution and start offset. More...
 
template<typename ValueType , class InputIt , class GlobInputIt , class GlobOutputIt , class BinaryOperation >
GlobOutputIt transform (InputIt in_a_first, InputIt in_a_last, GlobInputIt in_b_first, GlobOutputIt out_first, BinaryOperation binary_op)
 
template<typename ValueType , class PatternType , class GlobInputIt , class GlobOutputIt , class BinaryOperation >
GlobOutputIt transform (GlobIter< ValueType, PatternType > in_a_first, GlobIter< ValueType, PatternType > in_a_last, GlobInputIt in_b_first, GlobOutputIt out_first, BinaryOperation binary_op=dash::plus< ValueType >())
 Specialization of dash::transform for global lhs input range. More...
 
template<typename ValueType , class InputIt , class GlobInputIt , class BinaryOperation >
GlobAsyncRef< ValueType > transform (InputIt in_a_first, InputIt in_a_last, GlobInputIt in_b_first, GlobAsyncRef< ValueType > out_first, BinaryOperation binary_op=dash::plus< ValueType >())
 Specialization of dash::transform as non-blocking operation. More...
 
template<dash::dim_t NumDimensions, typename SizeType >
std::ostream & operator<< (std::ostream &os, const dash::CartesianSpace< NumDimensions, SizeType > &cartesian_space)
 
template<typename IndexType >
static bool operator== (const ViewPair< IndexType > &lhs, const ViewPair< IndexType > &rhs)
 Equality comparison operator for ViewPair. More...
 
template<typename IndexType >
static bool operator!= (const ViewPair< IndexType > &lhs, const ViewPair< IndexType > &rhs)
 Inequality comparison operator for ViewPair. More...
 
template<typename IndexType >
std::ostream & operator<< (std::ostream &os, const ViewPair< IndexType > &viewpair)
 
template<typename ElementType , dim_t NumDimensions>
std::ostream & operator<< (std::ostream &os, const Dimensional< ElementType, NumDimensions > &dimensional)
 
template<dim_t NumDimensions, typename IndexType >
std::ostream & operator<< (std::ostream &os, const ViewSpec< NumDimensions, IndexType > &viewspec)
 
template<typename ResultT >
std::ostream & operator<< (std::ostream &os, const Future< ResultT > &future)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const GlobAsyncRef< T > &gar)
 
template<typename ElementType , typename PatternType >
auto distance (const GlobIter< ElementType, PatternType > &first, const GlobIter< ElementType, PatternType > &last) -> typename PatternType::index_type
 Resolve the number of elements between two global iterators. More...
 
template<typename ElementType >
dash::default_index_t distance (dart_gptr_t first, dart_gptr_t last)
 Resolve the number of elements between two global pointers. More...
 
template<typename ElementType , class Pattern , class Pointer , class Reference >
std::ostream & operator<< (std::ostream &os, const dash::GlobIter< ElementType, Pattern, Pointer, Reference > &it)
 
template<typename T >
GlobPtr< T > memalloc (size_t nelem)
 
template<typename T , class PatternT >
std::ostream & operator<< (std::ostream &os, const GlobPtr< T, PatternT > &it)
 
template<typename T , class PatternT >
void put_value (const T &newval, const GlobPtr< T, PatternT > &gptr)
 
template<typename T , class PatternT >
void get_value (T *ptr, const GlobPtr< T, PatternT > &gptr)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const GlobRef< T > &gref)
 
template<typename ElementType , typename PatternType >
auto distance (const GlobViewIter< ElementType, PatternType > &first, const GlobViewIter< ElementType, PatternType > &last) -> typename PatternType::index_type
 Resolve the number of elements between two global iterators. More...
 
template<typename ElementType , class Pattern , class Pointer , class Reference >
std::ostream & operator<< (std::ostream &os, const dash::GlobViewIter< ElementType, Pattern, Pointer, Reference > &it)
 
void init (int *argc, char ***argv)
 
void finalize ()
 
bool is_initialized ()
 
int myid ()
 
size_t size ()
 
void barrier ()
 
template<typename PartitioningTraits , typename MappingTraits , typename LayoutTraits , class SizeSpecType , class TeamSpecType >
DistributionSpec< SizeSpecType::ndim()> make_distribution_spec (const SizeSpecType &sizespec, const TeamSpecType &teamspec)
 Generic Abstract Factory for instances of dash::DistributionSpec. More...
 
template<typename PartitioningTraits = dash::pattern_partitioning_default_properties, typename MappingTraits = dash::pattern_mapping_default_properties, typename LayoutTraits = dash::pattern_layout_default_properties, class SizeSpecType , class TeamSpecType >
std::enable_if< PartitioningTraits::minimal &&LayoutTraits::blocked, TilePattern< SizeSpecType::ndim(), dash::ROW_MAJOR, typename SizeSpecType::index_type >>::type make_pattern (const SizeSpecType &sizespec, const TeamSpecType &teamspec)
 Generic Abstract Factory for models of the Pattern concept. More...
 
template<typename PartitioningTraits = dash::pattern_partitioning_default_properties, typename MappingTraits = dash::pattern_mapping_default_properties, typename LayoutTraits = dash::pattern_layout_default_properties, class SizeSpecType , class TeamSpecType >
std::enable_if< MappingTraits::diagonal &&(LayoutTraits::blocked||(PartitioningTraits::balanced &&SizeSpecType::ndim()==1)), ShiftTilePattern< SizeSpecType::ndim(), dash::ROW_MAJOR, typename SizeSpecType::index_type >>::type make_pattern (const SizeSpecType &sizespec, const TeamSpecType &teamspec)
 Generic Abstract Factory for models of the Pattern concept. More...
 
template<typename PartitioningTraits = dash::pattern_partitioning_default_properties, typename MappingTraits = dash::pattern_mapping_default_properties, typename LayoutTraits = dash::pattern_layout_default_properties, class SizeSpecType , class TeamSpecType >
std::enable_if< LayoutTraits::canonical, Pattern< SizeSpecType::ndim(), dash::ROW_MAJOR, typename SizeSpecType::index_type >>::type make_pattern (const SizeSpecType &sizespec, const TeamSpecType &teamspec)
 Generic Abstract Factory for models of the Pattern concept. More...
 
template<typename T >
void fence (const GlobPtr< T > &gptr)
 Block until completion of local and global operations on a global address. More...
 
template<typename T >
void fence_local (const GlobPtr< T > &gptr)
 Block until completion of local operations on a global address. More...
 
template<typename T >
void put_value_nonblock (const T &newval, const GlobPtr< T > &gptr)
 Write a value to a global pointer, non-blocking. More...
 
template<typename T >
void get_value_nonblock (T *ptr, const GlobPtr< T > &gptr)
 Read a value fom a global pointer, non-blocking. More...
 
template<typename T >
void put_value (const T &newval, const GlobPtr< T > &gptr)
 Write a value to a global pointer. More...
 
template<typename T >
void get_value (T *ptr, const GlobPtr< T > &gptr)
 Read a value fom a global pointer. More...
 
template<typename PartitioningConstraints , typename MappingConstraints , typename LayoutConstraints , typename PatternType >
bool check_pattern_constraints (const PatternType &pattern)
 Traits for compile- and run-time pattern constraints checking, suitable for property checks where detailed error reporting is desired. More...
 
template<pattern_layout_tag::type... Tags>
std::ostream & operator<< (std::ostream &os, const pattern_layout_properties< Tags...> traits)
 
template<pattern_mapping_tag::type... Tags>
std::ostream & operator<< (std::ostream &os, const pattern_mapping_properties< Tags...> traits)
 
template<pattern_partitioning_tag::type... Tags>
std::ostream & operator<< (std::ostream &os, const pattern_partitioning_properties< Tags...> traits)
 
std::ostream & operator<< (std::ostream &os, const Team &team)
 
bool operator== (const Team::Deallocator &lhs, const Team::Deallocator &rhs)
 

Typedef Documentation

Unsigned integer type used as default for extent values.

Signed integer type used as default for index values.

Unsigned integer type used as default for size values.

typedef int dash::dim_t

Scalar type for a dimension value, with 0 indicating the first dimension.

Difference type for global pointers.

Constraints on pattern layout properties of matrix operands passed to dash::summa.

Constraints on pattern mapping properties of matrix operands passed to dash::summa.

Constraints on pattern partitioning properties of matrix operands passed to dash::summa.

Enumeration Type Documentation

Enumerator
MEM_ARRANGE_UNDEFINED 
ROW_MAJOR 
COL_MAJOR 

Function Documentation

void dash::barrier ( )
template<typename PartitioningConstraints , typename MappingConstraints , typename LayoutConstraints , typename PatternType >
bool dash::check_pattern_constraints ( const PatternType &  pattern)

Traits for compile- and run-time pattern constraints checking, suitable for property checks where detailed error reporting is desired.

template<typename ValueType , class InputIt , class OutputIt >
OutputIt dash::copy ( InputIt  in_first,
InputIt  in_last,
OutputIt  out_first 
)

Copies the elements in the range, defined by [in_first, in_last), to another range beginning at out_first.

In terms of data distribution, ranges passed to dash::copy can be local (*ValueType) or global (GlobIter<ValueType>).

The operation performed is non-blocking if the output iterator is an instance of a GlobAsyncIter type.

Example:

// Start asynchronous copying
GlobAsyncIter<T> dest_last =
dash::copy(array_a.lbegin(),
array_a.lend(),
array_b.async[200]);
// Overlapping computation here
// ...
// Wait for completion of asynchronous copying:
dest_last.fence();
template<typename ValueType , class GlobInputIt >
ValueType* dash::copy ( GlobInputIt  in_first,
GlobInputIt  in_last,
ValueType *  out_first 
)

Specialization of dash::copy as global-to-local blocking copy operation.

template<typename ValueType , class GlobOutputIt >
GlobOutputIt dash::copy ( ValueType *  in_first,
ValueType *  in_last,
GlobOutputIt  out_first 
)

Specialization of dash::copy as local-to-global blocking copy operation.

template<typename ValueType , class GlobInputIt , class GlobOutputIt >
ValueType* dash::copy ( GlobInputIt  in_first,
GlobInputIt  in_last,
GlobOutputIt  out_first 
)

Specialization of dash::copy as global-to-global blocking copy operation.

template<typename ValueType , class GlobInputIt >
dash::Future<ValueType *> dash::copy_async ( GlobInputIt  in_first,
GlobInputIt  in_last,
ValueType *  out_first 
)

Specialization of dash::copy as global-to-local blocking copy operation.

template<typename ElementType , typename PatternType >
auto dash::distance ( const GlobIter< ElementType, PatternType > &  first,
const GlobIter< ElementType, PatternType > &  last 
) -> typename PatternType::index_type

Resolve the number of elements between two global iterators.

The difference of global pointers is not well-defined if their range spans over more than one block. The corresponding invariant is: g_last == g_first + (l_last - l_first) Example:

unit: 0 1 0
local offset: | 0 1 2 | 0 1 2 | 3 4 5 | ...
global offset: | 0 1 2 3 4 5 6 7 8 ...
range: [- - - - -]

When iterating in local memory range [0,5[ of unit 0, the position of the global iterator to return is 8 != 5

Template Parameters
ElementTypeType of the elements in the range
Time complexity
O(1)
Parameters
firstGlobal iterator to the initial position in the global sequence
lastGlobal iterator to the final position in the global sequence
template<typename ElementType >
dash::default_index_t dash::distance ( dart_gptr_t  first,
dart_gptr_t  last 
)

Resolve the number of elements between two global pointers.

The difference of global pointers is not well-defined if their range spans over more than one block. The corresponding invariant is:

g_last == g_first + (l_last - l_first)
Example:
unit: 0 1 0
local offset: | 0 1 2 | 0 1 2 | 3 4 5 | ...
global offset: | 0 1 2 3 4 5 6 7 8 ...
range: [- - - - -]

When iterating in local memory range [0,5[ of unit 0, the position of the global iterator to return is 8 != 5

Template Parameters
ElementTypeType of the elements in the range
Time complexity
O(1)
Parameters
firstGlobal pointer to the initial position in the global sequence
lastGlobal pointer to the final position in the global sequence
template<typename ElementType , typename PatternType >
auto dash::distance ( const GlobViewIter< ElementType, PatternType > &  first,
const GlobViewIter< ElementType, PatternType > &  last 
) -> typename PatternType::index_type

Resolve the number of elements between two global iterators.

The difference of global pointers is not well-defined if their range spans over more than one block. The corresponding invariant is: g_last == g_first + (l_last - l_first) Example:

unit: 0 1 0
local offset: | 0 1 2 | 0 1 2 | 3 4 5 | ...
global offset: | 0 1 2 3 4 5 6 7 8 ...
range: [- - - - -]

When iterating in local memory range [0,5[ of unit 0, the position of the global iterator to return is 8 != 5

Template Parameters
ElementTypeType of the elements in the range
Time complexity
O(1)
Parameters
firstGlobal iterator to the initial position in the global sequence
lastGlobal iterator to the final position in the global sequence
template<typename T >
void dash::fence ( const GlobPtr< T > &  gptr)

Block until completion of local and global operations on a global address.

template<typename T >
void dash::fence_local ( const GlobPtr< T > &  gptr)

Block until completion of local operations on a global address.

void dash::finalize ( )
template<typename T , class PatternT >
void dash::get_value ( T *  ptr,
const GlobPtr< T, PatternT > &  gptr 
)
template<typename T >
void dash::get_value ( T *  ptr,
const GlobPtr< T > &  gptr 
)

Read a value fom a global pointer.

Calls to this routine are blocking

Parameters
[out]ptrLocal pointer that will contain the value of the global address
[in]gptrGlobal pointer to read
template<typename T >
void dash::get_value_nonblock ( T *  ptr,
const GlobPtr< T > &  gptr 
)

Read a value fom a global pointer, non-blocking.

Requires a later fence operation to guarantee local and/or remote completion.

Parameters
[out]ptrLocal pointer that will contain the value of the global address
[in]gptrGlobal pointer to read
void dash::init ( int *  argc,
char ***  argv 
)
bool dash::is_initialized ( )
template<typename ElementType , class PatternType >
ElementType* dash::local ( const GlobIter< ElementType, PatternType > &  g_it)

Convert global iterator referencing an element the active unit's memory to a corresponding native pointer referencing the element.

Precondition: g_it is local

Parameters
g_itGlobal iterator referencing element in local memory
template<class GlobInputIter >
std::enable_if< GlobInputIter::has_view::value, LocalIndexRange<typename GlobInputIter::pattern_type::index_type>>::type dash::local_index_range ( const GlobInputIter &  first,
const GlobInputIter &  last 
)

Resolves the local index range between global view iterators.

TODO: Only all-local or all-nonlocal ranges supported for now.

Example:

Total range 0 1 2 3 4 5 6 7 8 9
Global iterators first = 4; last = 7;

| 0 1 2 3 [4 5 6 7] 8 9] Local elements | (local index:value) 0:2 1:3 2:6 3:7 Result | (local indices) 2 3

Returns
A local index range consisting of offsets of the first and last element in local memory within the sequence limited by the given global iterators.
Template Parameters
ElementTypeType of the elements in the sequence
PatternTypeType of the global iterators' pattern implementation
Time complexity
O(d), with d dimensions in the global iterators' pattern
Parameters
firstIterator to the initial position in the global sequence
lastIterator to the final position in the global sequence
template<class GlobIterType >
LocalRange<typename GlobIterType::value_type> dash::local_range ( GlobIterType &  first,
GlobIterType &  last 
)

Global iterators to local index range, O(d):

Parameters
firstIterator to the initial position in the global sequence
lastIterator to the final position in the global sequence
template<typename PartitioningTraits , typename MappingTraits , typename LayoutTraits , class SizeSpecType , class TeamSpecType >
DistributionSpec<SizeSpecType::ndim()> dash::make_distribution_spec ( const SizeSpecType &  sizespec,
const TeamSpecType &  teamspec 
)

Generic Abstract Factory for instances of dash::DistributionSpec.

Creates a DistributionSpec object from given pattern traits.

Parameters
sizespecSize spec of cartesian space to be distributed by the pattern.
teamspecTeam spec containing layout of units mapped by the pattern.
template<typename PartitioningTraits = dash::pattern_partitioning_default_properties, typename MappingTraits = dash::pattern_mapping_default_properties, typename LayoutTraits = dash::pattern_layout_default_properties, class SizeSpecType , class TeamSpecType >
std::enable_if< PartitioningTraits::minimal && LayoutTraits::blocked, TilePattern<SizeSpecType::ndim(), dash::ROW_MAJOR, typename SizeSpecType::index_type>>::type dash::make_pattern ( const SizeSpecType &  sizespec,
const TeamSpecType &  teamspec 
)

Generic Abstract Factory for models of the Pattern concept.

Creates an instance of a Pattern model that satisfies the contiguos linearization property from given pattern traits.

Returns
An instance of dash::TilePattern if the following constraints are specified: (Partitioning: minimal) and (Layout: blocked)
Parameters
sizespecSize spec of cartesian space to be distributed by the pattern.
teamspecTeam spec containing layout of units mapped by the pattern.
template<typename PartitioningTraits = dash::pattern_partitioning_default_properties, typename MappingTraits = dash::pattern_mapping_default_properties, typename LayoutTraits = dash::pattern_layout_default_properties, class SizeSpecType , class TeamSpecType >
std::enable_if< MappingTraits::diagonal && (LayoutTraits::blocked || (PartitioningTraits::balanced && SizeSpecType::ndim() == 1)), ShiftTilePattern<SizeSpecType::ndim(), dash::ROW_MAJOR, typename SizeSpecType::index_type>>::type dash::make_pattern ( const SizeSpecType &  sizespec,
const TeamSpecType &  teamspec 
)

Generic Abstract Factory for models of the Pattern concept.

Creates an instance of a Pattern model that satisfies the contiguos linearization property from given pattern traits.

Returns
An instance of dash::ShiftTilePattern if the following constraints are specified: (Mapping: diagonal) and (Layout: blocked or (Partitioning: balanced Dimensions: 1))
Parameters
sizespecSize spec of cartesian space to be distributed by the pattern.
teamspecTeam spec containing layout of units mapped by the pattern.
template<typename PartitioningTraits = dash::pattern_partitioning_default_properties, typename MappingTraits = dash::pattern_mapping_default_properties, typename LayoutTraits = dash::pattern_layout_default_properties, class SizeSpecType , class TeamSpecType >
std::enable_if< LayoutTraits::canonical, Pattern<SizeSpecType::ndim(), dash::ROW_MAJOR, typename SizeSpecType::index_type>>::type dash::make_pattern ( const SizeSpecType &  sizespec,
const TeamSpecType &  teamspec 
)

Generic Abstract Factory for models of the Pattern concept.

Creates an instance of a Pattern model that satisfies the canonical (strided) layout property from given pattern traits.

Returns
An instance of dash::BlockPattern if the following constraints are specified:
  • Layout: canonical
Parameters
sizespecSize spec of cartesian space to be distributed by the pattern.
teamspecTeam spec containing layout of units mapped by the pattern.
template<typename T >
GlobPtr<T> dash::memalloc ( size_t  nelem)
template<typename MatrixTypeA , typename MatrixTypeB , typename MatrixTypeC >
std::enable_if< dash::pattern_constraints< dash::summa_pattern_partitioning_constraints, dash::summa_pattern_mapping_constraints, dash::summa_pattern_layout_constraints, typename MatrixTypeA::pattern_type >::satisfied::value && dash::pattern_constraints< dash::summa_pattern_partitioning_constraints, dash::summa_pattern_mapping_constraints, dash::summa_pattern_layout_constraints, typename MatrixTypeB::pattern_type >::satisfied::value && dash::pattern_constraints< dash::summa_pattern_partitioning_constraints, dash::summa_pattern_mapping_constraints, dash::summa_pattern_layout_constraints, typename MatrixTypeC::pattern_type >::satisfied::value, void>::type dash::multiply ( MatrixTypeA &  A,
MatrixTypeB &  B,
MatrixTypeC &  C 
)

Registration of dash::summa as an implementation of matrix-matrix multiplication (xDGEMM).

Delegates dash::multiply<MatrixType> to dash::summa<MatrixType> if MatrixType::pattern_type satisfies the pattern property constraints of the SUMMA implementation.

Parameters
AMatrix to multiply, extents n x m
BMatrix to multiply, extents m x p
CMatrix to contain the multiplication result, extents n x p, initialized with zeros
int dash::myid ( )
template<typename IndexType >
static bool dash::operator!= ( const ViewPair< IndexType > &  lhs,
const ViewPair< IndexType > &  rhs 
)
static

Inequality comparison operator for ViewPair.

std::ostream& dash::operator<< ( std::ostream &  os,
const Team team 
)
template<typename T , class PatternT >
std::ostream & dash::operator<< ( std::ostream &  os,
const GlobPtr< T, PatternT > &  it 
)
template<typename ResultT >
std::ostream& dash::operator<< ( std::ostream &  os,
const Future< ResultT > &  future 
)
template<typename T >
std::ostream& dash::operator<< ( std::ostream &  os,
const GlobRef< T > &  gref 
)
template<typename T >
std::ostream& dash::operator<< ( std::ostream &  os,
const GlobAsyncRef< T > &  gar 
)
template<typename IndexType >
std::ostream& dash::operator<< ( std::ostream &  os,
const ViewPair< IndexType > &  viewpair 
)
template<typename ElementType , class Pattern , class Pointer , class Reference >
std::ostream& dash::operator<< ( std::ostream &  os,
const dash::GlobIter< ElementType, Pattern, Pointer, Reference > &  it 
)
template<typename ElementType , dim_t NumDimensions>
std::ostream& dash::operator<< ( std::ostream &  os,
const Dimensional< ElementType, NumDimensions > &  dimensional 
)
template<dim_t NumDimensions, typename IndexType >
std::ostream& dash::operator<< ( std::ostream &  os,
const ViewSpec< NumDimensions, IndexType > &  viewspec 
)
template<pattern_layout_tag::type... Tags>
std::ostream& dash::operator<< ( std::ostream &  os,
const pattern_layout_properties< Tags...>  traits 
)
template<pattern_mapping_tag::type... Tags>
std::ostream& dash::operator<< ( std::ostream &  os,
const pattern_mapping_properties< Tags...>  traits 
)
template<pattern_partitioning_tag::type... Tags>
std::ostream& dash::operator<< ( std::ostream &  os,
const pattern_partitioning_properties< Tags...>  traits 
)
template<typename ElementType , class Pattern , class Pointer , class Reference >
std::ostream& dash::operator<< ( std::ostream &  os,
const dash::GlobViewIter< ElementType, Pattern, Pointer, Reference > &  it 
)
template<dash::dim_t NumDimensions, typename SizeType >
std::ostream& dash::operator<< ( std::ostream &  os,
const dash::CartesianSpace< NumDimensions, SizeType > &  cartesian_space 
)
template<typename IndexType >
static bool dash::operator== ( const ViewPair< IndexType > &  lhs,
const ViewPair< IndexType > &  rhs 
)
static

Equality comparison operator for ViewPair.

bool dash::operator== ( const Team::Deallocator lhs,
const Team::Deallocator rhs 
)
template<typename T , class PatternT >
void dash::put_value ( const T &  newval,
const GlobPtr< T, PatternT > &  gptr 
)
template<typename T >
void dash::put_value ( const T &  newval,
const GlobPtr< T > &  gptr 
)

Write a value to a global pointer.

Calls to this routine are blocking

Parameters
[in]newvalValue to set
[in]gptrGlobal pointer referencing target address of value
template<typename T >
void dash::put_value_nonblock ( const T &  newval,
const GlobPtr< T > &  gptr 
)

Write a value to a global pointer, non-blocking.

Requires a later fence operation to guarantee local and/or remote completion.

Parameters
[in]newvalValue to set
[in]gptrGlobal pointer referencing target address of value
size_t dash::size ( )
template<typename MatrixTypeA , typename MatrixTypeB , typename MatrixTypeC >
void dash::summa ( MatrixTypeA &  A,
MatrixTypeB &  B,
MatrixTypeC &  C 
)

Multiplies two matrices using the SUMMA algorithm.

Performs (2 * (nunits-1) * nunits^2) async copy operations of submatrices in A and B.

Pseudocode:

C = zeros(n,n) for k = 1:b:n { // k increments in steps of blocksize b u = k:(k+b-1) // u is [k, k+1, ..., k+b-1] C = C + A(:,u) * B(u,:) // Multiply n x b matrix from A with // b x p matrix from B }

Parameters
AMatrix to multiply, extents n x m
BMatrix to multiply, extents m x p
CMatrix to contain the multiplication result, extents n x p, initialized with zeros
template<typename ValueType , class InputIt , class GlobInputIt , class GlobOutputIt , class BinaryOperation >
GlobOutputIt dash::transform ( InputIt  in_a_first,
InputIt  in_a_last,
GlobInputIt  in_b_first,
GlobOutputIt  out_first,
BinaryOperation  binary_op 
)
template<typename ValueType , class PatternType , class GlobInputIt , class GlobOutputIt , class BinaryOperation >
GlobOutputIt dash::transform ( GlobIter< ValueType, PatternType >  in_a_first,
GlobIter< ValueType, PatternType >  in_a_last,
GlobInputIt  in_b_first,
GlobOutputIt  out_first,
BinaryOperation  binary_op = dash::plus<ValueType>() 
)

Specialization of dash::transform for global lhs input range.

template<typename ValueType , class InputIt , class GlobInputIt , class BinaryOperation >
GlobAsyncRef<ValueType> dash::transform ( InputIt  in_a_first,
InputIt  in_a_last,
GlobInputIt  in_b_first,
GlobAsyncRef< ValueType >  out_first,
BinaryOperation  binary_op = dash::plus<ValueType>() 
)

Specialization of dash::transform as non-blocking operation.

Template Parameters
InputItIterator on first (typically local) input range
GlobInputItIterator on second (typically global) input range
GlobOutputItIterator on global result range
BinaryOperationReduce operation type
template<typename ValueType , class InputAIt , class InputBIt , class OutputIt , class BinaryOperation >
OutputIt dash::transform_local ( InputAIt  in_a_first,
InputAIt  in_a_last,
InputBIt  in_b_first,
OutputIt  out_first,
BinaryOperation  binary_op 
)

Transform operation on ranges with identical distribution and start offset.

In this case, no communication is needed as all output values can be obtained from input values in local memory:

input a: [ u0 | u1 | u2 | ... ] op op op ... input b: [ u0 | u1 | u2 | ... ] = = = ... output: [ u0 | u1 | u2 | ... ]