Poplar and PopLibs
DataStream.hpp
1// Copyright (c) 2017 Graphcore Ltd. All rights reserved.
2
3#ifndef poplar_DataStream_hpp
4#define poplar_DataStream_hpp
5#include <memory>
6#include <poplar/DataStreamType.hpp>
7#include <poplar/ReplicatedStreamMode.hpp>
8#include <poplar/Type.hpp>
9
10namespace poplar {
11namespace core {
12class DataStreamRef;
13class RemoteBufferRef;
14} // namespace core
15
27public:
28 DataStream();
29 DataStream(const DataStream &);
30 DataStream(DataStream &&) noexcept;
32
33 DataStream &operator=(const DataStream &);
34 DataStream &operator=(DataStream &&) noexcept;
35
36 std::string handle() const;
37 std::size_t numElements() const;
38 unsigned replicationFactor() const;
39 ReplicatedStreamMode replicatedMode() const;
40 DataStreamType type() const;
41 Type elementType() const;
42
43 // Implementation
44 DataStream(std::unique_ptr<core::DataStreamRef>);
45 const core::DataStreamRef &getImpl() const { return *impl; }
46
47private:
48 std::unique_ptr<core::DataStreamRef> impl;
49};
50
56public:
59 RemoteBuffer(RemoteBuffer &&) noexcept;
61
62 RemoteBuffer &operator=(const RemoteBuffer &);
63 RemoteBuffer &operator=(RemoteBuffer &&) noexcept;
64
65 std::string handle() const;
66 DataStream getIpuToHostStream() const;
67 DataStream getHostToIpuStream() const;
68 size_t numElements() const;
69 size_t getRepeats() const;
70 Type elementType() const;
71 bool isRearrangeOnHost() const;
72 bool isOptimisedForMemory() const;
73
74 // Implementation
75 RemoteBuffer(std::unique_ptr<core::RemoteBufferRef>);
76 const core::RemoteBufferRef &getImpl() const { return *impl; }
77
78 bool operator==(const RemoteBuffer &b) const;
79 bool operator!=(const RemoteBuffer &b) const;
80
81private:
82 std::unique_ptr<core::RemoteBufferRef> impl;
83};
84
85} // end namespace poplar
86
87#endif // poplar_DataStream_hpp
An object representing a stream for communicating between the host and the device.
Definition: DataStream.hpp:26
A remote buffer is a region of remote (meaning not on the IPU) memory that is used as a cache.
Definition: DataStream.hpp:55
Class representing device data types.
Definition: Type.hpp:42
Poplar classes and functions.
Definition: ArrayRef.hpp:14
ReplicatedStreamMode
Define how a stream is replicated when added to a replicated graph.
Definition: ReplicatedStreamMode.hpp:12
DataStreamType
An enumeration to represent the different types of DataStream or stream components of a RemoteBuffer.
Definition: DataStreamType.hpp:14