Poplar and PopLibs
|
This file is for internal use only and should not be used. More...
#include "popops/Expr.hpp"
#include <poplar/PerfEstimateFunc.hpp>
#include <poplar/Target.hpp>
#include <poplar/VectorLayout.hpp>
#include <popops/OperationDef.hpp>
Go to the source code of this file.
Classes | |
struct | popops::internal::MultiSliceTargetParameters |
Cycle estimate for MultiSlice vertex. More... | |
struct | popops::internal::MultiUpdateOpTargetParameters |
Cycle estimate for MultiUpdateAdd vertex. More... | |
struct | popops::internal::CastTargetParameters |
Target parameters used in cast estimation. More... | |
Namespaces | |
namespace | popops |
Common functions, such as elementwise and reductions. | |
Functions | |
std::uint64_t | popops::internal::basicOpSupervisorOverhead (const bool isScaledPtr64Type=false) |
Supervisor context cycle estimate for BinaryOp and UnaryOp Supervisor/ MultiVertex codelets. More... | |
std::uint64_t | popops::internal::basicOpLoopCycles (const unsigned numElems, const unsigned vectorSize, const unsigned cyclesPerVector) |
Cycle cost for processing an arbitrary number of elements given the cycle cost for processing a vector of elements simultaneously. More... | |
std::uint64_t | popops::internal::binaryOpInnerLoopCycles (const poplar::Target &target, const poplar::Type &type, const unsigned cyclesPerVector, const bool vectorize, const unsigned numElems, const std::uint64_t overheadPerLoop) |
Cycle cost for processing an arbitrary number of elements given the cycle cost for processing a vector of elements simultaneously. More... | |
std::uint64_t | popops::internal::getDynamicSlice1DEstimate (const poplar::Target &target, const poplar::Type &type, const unsigned regionSize, const unsigned numSubElements) |
Cycle estimate for Dynamic Slice 1D vertex. More... | |
std::uint64_t | popops::internal::getBinaryOp1DInPlaceEstimate (const poplar::Target &target, const poplar::Type &type, const popops::expr::BinaryOpType op, const unsigned numElems) |
Cycle estimate for Binary-1D In-Place MultiVertex. More... | |
This file is for internal use only and should not be used.
std::uint64_t popops::internal::basicOpLoopCycles | ( | const unsigned | numElems, |
const unsigned | vectorSize, | ||
const unsigned | cyclesPerVector | ||
) |
Cycle cost for processing an arbitrary number of elements given the cycle cost for processing a vector of elements simultaneously.
numElems | Number of elements in the operand. |
vectorSize | Size of vector of elements that can be processed simultaneously. |
cyclesPerVector | Cycle cost per vector of elements. |
std::uint64_t popops::internal::basicOpSupervisorOverhead | ( | const bool | isScaledPtr64Type = false | ) |
Supervisor context cycle estimate for BinaryOp and UnaryOp Supervisor/ MultiVertex codelets.
isScaledPtr64Type | Is true if vector vertex field is ScaledPtr64 and false otherwise. |
std::uint64_t popops::internal::binaryOpInnerLoopCycles | ( | const poplar::Target & | target, |
const poplar::Type & | type, | ||
const unsigned | cyclesPerVector, | ||
const bool | vectorize, | ||
const unsigned | numElems, | ||
const std::uint64_t | overheadPerLoop | ||
) |
Cycle cost for processing an arbitrary number of elements given the cycle cost for processing a vector of elements simultaneously.
target | The target on which the operation should be estimated |
type | Data type of elements. |
cyclesPerVector | Cycle cost per vector of elements. |
vectorSize | Size of vector of elements that be processed simultaneously. |
numElems | Number of elements in the operand. |
overheadPerLoop | Cycles overhead per loop. |
std::uint64_t popops::internal::getBinaryOp1DInPlaceEstimate | ( | const poplar::Target & | target, |
const poplar::Type & | type, | ||
const popops::expr::BinaryOpType | op, | ||
const unsigned | numElems | ||
) |
Cycle estimate for Binary-1D In-Place MultiVertex.
target | The target on which the operation should be estimated. |
type | Data type of elements. |
op | Binary operator type. |
numElems | Total number of output elements. |
std::uint64_t popops::internal::getDynamicSlice1DEstimate | ( | const poplar::Target & | target, |
const poplar::Type & | type, | ||
const unsigned | regionSize, | ||
const unsigned | numSubElements | ||
) |
Cycle estimate for Dynamic Slice 1D vertex.
target | The target on which the operation should be estimated. |
type | Data type of elements. |
regionSize | Number of elements in tensor to be sliced. |
numSubElements | Number of elements per slice. |