Poplar and PopLibs
PerformanceEstimation.hpp File Reference

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

Detailed Description

This file is for internal use only and should not be used.

Function Documentation

◆ basicOpLoopCycles()

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.

Parameters
numElemsNumber of elements in the operand.
vectorSizeSize of vector of elements that can be processed simultaneously.
cyclesPerVectorCycle cost per vector of elements.
Returns
Estimated number of cycles.

◆ basicOpSupervisorOverhead()

std::uint64_t popops::internal::basicOpSupervisorOverhead ( const bool  isScaledPtr64Type = false)

Supervisor context cycle estimate for BinaryOp and UnaryOp Supervisor/ MultiVertex codelets.

Parameters
isScaledPtr64TypeIs true if vector vertex field is ScaledPtr64 and false otherwise.
Returns
Estimated number of cycles.

◆ binaryOpInnerLoopCycles()

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.

Parameters
targetThe target on which the operation should be estimated
typeData type of elements.
cyclesPerVectorCycle cost per vector of elements.
vectorSizeSize of vector of elements that be processed simultaneously.
numElemsNumber of elements in the operand.
overheadPerLoopCycles overhead per loop.
Returns
Estimated number of cycles.

◆ getBinaryOp1DInPlaceEstimate()

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.

Parameters
targetThe target on which the operation should be estimated.
typeData type of elements.
opBinary operator type.
numElemsTotal number of output elements.
Returns
Estimated number of cycles.

◆ getDynamicSlice1DEstimate()

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.

Parameters
targetThe target on which the operation should be estimated.
typeData type of elements.
regionSizeNumber of elements in tensor to be sliced.
numSubElementsNumber of elements per slice.
Returns
Estimated number of cycles.