InOutTypes

#include <poplar/InOutTypes.hpp>

Defines

NO_INSTRUMENT
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.

template<typename T>
class InOut : public poplar::InOutBase<T>
#include <InOutTypes.hpp>

Input.

template<>
class InOut<quarter> : public poplar::InOutBase<quarter>
#include <InOutTypes.hpp>

InOut with metadata.

Public Functions

inline const NO_INSTRUMENT MetadataType * getMetadata () const
template<typename T>
class InOutBase : public poplar::IOBase<T>

Subclassed by poplar::InOut< T >, poplar::InOut< quarter >

Public Types

using baseT = T

Public Functions

inline NO_INSTRUMENT operator T&() const
inline NO_INSTRUMENT T & operator* () const
inline NO_INSTRUMENT T * operator-> () const
template<typename T>
class Input : public poplar::InputBase<T>
#include <InOutTypes.hpp>

Input.

template<>
class Input<quarter> : public poplar::InputBase<quarter>
#include <InOutTypes.hpp>

Input with metadata.

Public Functions

inline const NO_INSTRUMENT MetadataType * getMetadata () const
template<typename T>
class InputBase : public poplar::IOBase<T>

Subclassed by poplar::Input< T >, poplar::Input< quarter >

Public Types

using type = const T
using baseT = const T

Public Functions

inline NO_INSTRUMENT operator const T&() const
inline const NO_INSTRUMENT T & operator* () const
inline const NO_INSTRUMENT T * operator-> () const
template<typename T>
struct IOBase

Subclassed by poplar::InOutBase< quarter >, poplar::InputBase< quarter >, poplar::OutputBase< quarter >, poplar::InOutBase< T >, poplar::InputBase< T >, poplar::OutputBase< T >

Public Members

void *p
template<>
struct IOBase<quarter>

Public Members

void *p
void *meta
template<typename T>
class Output : public poplar::OutputBase<T>
#include <InOutTypes.hpp>

Output.

template<>
class Output<quarter> : public poplar::OutputBase<quarter>
#include <InOutTypes.hpp>

Output with metadata.

Public Functions

inline const NO_INSTRUMENT MetadataType * getMetadata () const
template<typename T>
class OutputBase : public poplar::IOBase<T>

Subclassed by poplar::Output< T >, poplar::Output< quarter >

Public Types

using baseT = T

Public Functions

inline NO_INSTRUMENT operator T&() const
inline NO_INSTRUMENT T & operator* () const
inline NO_INSTRUMENT T * operator-> () const