|
Poplar and PopLibs
|
#include <poplar/DebugContext.hpp>#include <poplar/Graph.hpp>#include <poplar/OptionFlags.hpp>#include <poplar/Program.hpp>#include <poplar/Tensor.hpp>#include <iosfwd>#include <vector>Go to the source code of this file.
Classes | |
| struct | gcl::CommGroup |
| Struct to specify sub-groups of replicas. More... | |
| struct | gcl::Chunk |
| Represents a section of a tensor mapped to an IPU. More... | |
| struct | gcl::Chunks |
| A vector of Chunk data. More... | |
Namespaces | |
| namespace | gcl |
| Graphcore Communications Library. | |
Macros | |
| #define | GCL_NO_DISCARD |
| Produce compile time warning for unused return values. | |
Enumerations | |
| enum class | gcl::CommGroupType { gcl::ALL , gcl::CONSECUTIVE , gcl::ORTHOGONAL } |
| Enum to define communication group specification type. More... | |
| enum class | gcl::CollectiveOperator { } |
| Supported collective operators. More... | |
Functions | |
| std::istream & | gcl::operator>> (std::istream &is, CollectiveOperator &op) |
Parse token from input stream is to op. More... | |
| std::ostream & | gcl::operator<< (std::ostream &os, const CollectiveOperator &op) |
Write op to output stream os. More... | |
CrossReplica functions | |
Collective operations working across replicas. | |
| poplar::Tensor | gcl::allReduceCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Perform an all-reduce operation. More... | |
| std::vector< poplar::Tensor > | gcl::allReduceCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Perform an all-reduce operation on multiple tensors. More... | |
| poplar::Tensor | gcl::allReduceCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceCrossReplica() without the group arg (for all replicas). More... | |
| std::vector< poplar::Tensor > | gcl::allReduceCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceCrossReplica() with multiple input tensors and without the group arg. More... | |
| void | gcl::allReduceToDestinationCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::Tensor &destination, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceCrossReplica() but writes the result to the destination tensor. More... | |
| void | gcl::allReduceToDestinationCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, const std::vector< poplar::Tensor > &destinations, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| As allReduceToDestinationCrossReplica() with multiple input and output tensors. More... | |
| void | gcl::allReduceToDestinationCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::Tensor &destination, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceToDestinationCrossReplica() without group arg. More... | |
| void | gcl::allReduceInPlaceCrossReplica (poplar::Graph &graph, poplar::Tensor &data, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceCrossReplica() but writes result back to the input data tensor. More... | |
| void | gcl::allReduceInPlaceCrossReplica (poplar::Graph &graph, std::vector< poplar::Tensor > &datas, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
Perform an all-reduce operation on multiple tensors writing the results back to the input datas tensors. More... | |
| void | gcl::allReduceInPlaceCrossReplica (poplar::Graph &graph, poplar::Tensor &data, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceInPlaceCrossReplica() without group arg. More... | |
| void | gcl::allReduceInPlaceCrossReplica (poplar::Graph &graph, std::vector< poplar::Tensor > &datas, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allReduceInPlaceCrossReplica() with multiple input tensors and without group arg. More... | |
| poplar::Tensor | gcl::reduceScatterCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
Reduce the replicated rank-1 tensor data with the result scattered across the replicas. More... | |
| std::vector< poplar::Tensor > | gcl::reduceScatterCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| As reduceScatterCrossReplica() but with vector input argument and vector output as return value. More... | |
| void | gcl::reduceScatterToDestinationCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, const std::vector< poplar::Tensor > &destinations, CollectiveOperator op, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| As reduceScatterCrossReplica() but with vector input/output arguments. More... | |
| poplar::Tensor | gcl::reduceScatterCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As reduceScatterCrossReplica() without group arg. More... | |
| poplar::Tensor | gcl::allGatherCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
Gather the replicated tensor data. More... | |
| std::vector< poplar::Tensor > | gcl::allGatherCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| As allGatherCrossReplica() but with vector input argument and vector output as return value. More... | |
| void | gcl::allGatherToDestinationCrossReplica (poplar::Graph &graph, const std::vector< poplar::Tensor > &datas, const std::vector< poplar::Tensor > &destinations, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| As allGatherCrossReplica() but with vector input/output arguments. More... | |
| poplar::Tensor | gcl::allGatherCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allGatherCrossReplica() without group arg. More... | |
| poplar::Tensor | gcl::allToAllCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::program::Sequence &prog, const CommGroup &group, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Perform an all-to-all exchange of the elements of the input tensor based on replica ID. More... | |
| poplar::Tensor | gcl::allToAllCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
As allToAllCrossReplica() without group arg. More... | |
| poplar::Tensor | gcl::broadcastCrossReplica (poplar::Graph &graph, const poplar::Tensor &data, poplar::program::Sequence &prog, const CommGroup &group={}, unsigned rootReplica=0, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Perform a broadcast from one replica to all other replicas. More... | |
WithinReplica functions | |
Collective operations working within replicas. | |
| poplar::Tensor | gcl::concatChunks (const Chunks &chunks) |
| Concatenates chunks. More... | |
| Chunks | gcl::reduceScatterWithinReplica (poplar::Graph &graph, const poplar::Tensor &toReduce, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Reduce a rank 2 tensor. More... | |
| poplar::Tensor | gcl::allGatherWithinReplica (poplar::Graph &graph, const Chunks &toGather, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Broadcast data distributed over all IPUs. More... | |
| poplar::Tensor | gcl::allReduceWithinReplica (poplar::Graph &graph, const poplar::Tensor &toReduce, CollectiveOperator op, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}) |
| Perform an all-reduce operation on the specified tensor. More... | |