Interval

#include <poplar/Interval.hpp>
namespace poplar

Poplar classes and functions.

A VectorList is a list of vectors with a specific layout and with the usage semantics of a 2D vector.

A 1D vector must be laid out in a contiguous memory region. A 2D vector is a vector of 1D vectors. Each of these 1D vectors that make up a 2D vector is called a “sub-vector” for the remainder of this document. The elements of a 2D vector can be accessed by indexing the 2D vector along the outer and inner dimensions as A[outer][inner].

The following two categories of layouts are supported:

  1. VectorListLayout::DELTANELEMENTS is a memory efficient 2D vector layout. For legacy systems VectorListLayout::DELTAN served a similar purpose. Each sub-vector must be laid out as a contiguous memory region but the sub-vectors may may not be laid out contiguous with respect to each other in memory. Each sub-vector may have a different length.

  2. VectorListLayout::ONE_PTR and other VectorListLayout layouts that are prefixed by SCALED_PTR are for Poplar runtime use only.

Typedefs

typedef GenericInterval<std::size_t> Interval

Functions

template<class T>
inline bool operator==(const GenericInterval<T> &a, const GenericInterval<T> &b)
template<class T>
inline bool operator<(const GenericInterval<T> &a, const GenericInterval<T> &b)
template<class T>
inline bool operator!=(const GenericInterval<T> &a, const GenericInterval<T> &b)
template<class T>
inline bool operator>=(const GenericInterval<T> &a, const GenericInterval<T> &b)
template<class T>
inline bool operator>(const GenericInterval<T> &a, const GenericInterval<T> &b)
template<class T>
inline bool operator<=(const GenericInterval<T> &a, const GenericInterval<T> &b)
template<class T>
inline std::ostream &operator<<(std::ostream &os, const GenericInterval<T> &b)
template<class T>
struct GenericInterval
#include <Interval.hpp>

This class represents an interval that is closed at its lower bound and open at its upper bound.

It is almost always used with T = std::size_t, for which there is a convenient Interval typedef.

Public Functions

GenericInterval() = default

Initialise with begin and end set to their default value of 0.

inline GenericInterval(T begin, T end)
inline const T &begin() const
inline const T &end() const
inline const T &lower() const

Get the lower bound of the half open interval.

Returns

the lower bound of the interval.

inline const T &upper() const

Get the upper bound of the half open interval.

Returns

the upper bound of the interval.

inline T size() const

Get the size of the interval.

Returns

The size of the interval.

Private Members

T begin_ = {}
T end_ = {}