Logo
Poplar and PopLibs API Reference
Version: latest
  • 1. Using the libraries
    • Setting Options
      • Environment variables
      • Option values
      • Unsupported options
    • Linking
  • 2. Poplar runtime API reference
    • FieldTypes
    • HalfFloat
    • InOutTypes
    • StackSizeDefs
    • VectorListTypes
    • VectorTypes
    • Vertex
  • 3. Poplar API reference
    • Utility classes
      • ArrayRef
      • CSRFunctions
      • CodeletFileType
      • Interval
      • OptionFlags
      • Quarter
      • RandomSeed
      • ReplicatedStreamMode
      • RuntimeOptions
      • SerializationFormat
      • StringRef
      • SyncType
      • Type
      • TypeTraits
    • Graph creation
      • DataStream
      • DataStreamType
      • Graph
      • GraphElements
      • LateInitCallback
      • MetadataCreation
      • StreamCallback
      • Tensor
      • TensorCloneMethod
      • TensorRearranger
      • VariableMappingMethod
      • VariableRef
      • VectorLayout
      • VertexIntrospector
    • Control programs
      • Program
    • Device management
      • Device
      • DeviceManager
      • IpuLinkConfiguration
      • IpuLinkTopology
      • Target
      • TargetType
    • Graph execution
      • Engine
      • Error
      • Executable
      • Module
      • RuntimeOptions
      • Exceptions
    • Profiling and debugging
      • CycleCount
      • DebugContext
      • GlobalExchangeConstraints
      • IPUModel
      • PerfEstimateFunc
      • ProfileValue
  • 4. PopLibs API reference
    • Adding PopLibs code to a graph program
    • Utility functions (poputil)
      • Broadcast
      • DebugInfo
      • GraphFunction
      • OptionParsing
      • TensorMetaData
      • TileMapping
      • Util
      • VarStructure
      • VertexTemplates
    • Tensor operations (popops)
      • AllTrue
      • Cast
      • CircBuf
      • DynamicSlice
      • ElementWise
      • ElementWiseUtil
      • Encoding
      • EncodingConstants
      • Expr
      • ExprOp
      • Fill
      • Gather
      • GatherStatistics
      • HostSliceTensor
      • Loop
      • NaN
      • NormaliseImage
      • Operation
      • Pad
      • Rearrange
      • Reduce
      • ScaledAdd
      • Scatter
      • SelectScalarFromRows
      • SequenceSlice
      • Sort
      • SortOrder
      • SplineBasis
      • SplineWeighting
      • TopK
      • UpdateScalarInRows
      • Zero
    • Linear algebra functions (poplin)
      • Cholesky
      • ConvParams
      • ConvPreplan
      • ConvUtil
      • Convolution
      • FullyConnected
      • MatMul
      • MeshGrid
      • MultiConvolution
      • Norms
      • TriangularSolve
      • QRFactorization
    • Random number operations (poprand)
      • RandomGen
    • Sparse tensor operations (popsparse)
      • Embedding
      • FullyConnected
      • FullyConnectedParams
      • MatMul
      • MatMulParams
      • PlanningCache
      • SparsePartitioner
      • SparseStorageFormats
      • SparseTensor
      • SparsityParams
      • BlockSparse
      • BlockSparseMatMul
    • Neural network functions (popnn)
      • BatchNorm
      • CTCInference
      • CTCLoss
      • CTCPlan
      • GroupNorm
      • Gru
      • GruDef
      • InstanceNorm
      • LayerNorm
      • LogSoftmax
      • Loss
      • Lstm
      • LstmDef
      • NonLinearity
      • NonLinearityDef
      • NonLinearityDefUtil
      • Norms
      • Pooling
      • PoolingDef
      • Recurrent
      • Rnn
      • SpatialSoftMax
  • 5. Graphcore Communication Library (GCL) API reference
  • 6. Poplar compiler intrinsics
    • IPU C/C++ builtins
      • IPU functionality and memory
        • Get lower half of cycle count from CSR
        • Get upper half of cycle count from CSR
        • Get vertex base from CSR
        • Get tile ID from CSR
        • Check for worker mode
          • Example
        • Triple-pack three addresses
        • Write to a CSR
          • Example
        • Write to an upper CSR
          • Example
        • Read from a CSR
          • Example
        • Read from an upper CSR
          • Example
        • Read from an upper CSR
        • Load and write 64-bit value to the common configuration space
        • Load and write 128-bit value to the common configuration space
        • 64-bit load and 64-bit store, with post-incrementing addresses
      • Bit operations
        • And operation
        • Andc operation
        • Or operation
        • Not operation
        • Reverse bytes
        • Reverse bytes
        • SIMD roll permutation on 4x32-bit values
        • SIMD roll-left permutation on 8x8-bit values
        • SIMD roll-right permutation on 8x8-bit values
        • Upper half of SIMD shuffle permutation on 8x8-bit values
        • Lower half of SIMD shuffle permutation on 8x8-bit values
        • Upper half of SIMD sort permutation on 4x32-bit values
        • Lower half of SIMD sort permutation on 4x32-bit values
        • SIMD sort8 permutation on 4x8-bit values
        • SIMD swap8 permutation on 4x8-bit values
        • Conditional ternary operator
      • Float operations
        • Absolute addition of two values
        • Absolute maximum of two values
        • Maximum of two values
        • Lateral maximum of two values
        • Minimum of two values
        • Min-of-maximum of two values
        • CMAC operation
        • Natural exponential
        • 2-to-the-power-of
        • Natural logarithm
        • Base-2 logarithm
        • Probabilistic mask function
        • Sigmoid function
        • Lateral sum
        • Tanh
        • Vector product
        • Vector sum with scalar multiplicand
        • Get and initialise accumulators
      • Float comparisons
        • Equality test
        • Greater-than-or-equal-to test
        • Greater-than test
        • Less-than-or-equal-to test
        • Less-than test
        • Inequality test
      • Float classification
        • Classify float
        • Check whether floating-point value is finite
        • Check whether floating-point value is infinite
        • Check whether floating-point value is NaN
      • Random number generation
        • Generate half2 vector using Gaussian distribution
        • Generate float2 vector using Gaussian distribution
        • Generate random 32-bit integer
        • Generate random 64-bit integer
        • Generate random 16-bit float
        • Generate random 32-bit float
    • IPU C++ intrinsics
    • IPU C++ memory intrinsics
  • 7. Deprecated
  • 8. Index
  • 9. Trademarks & copyright
  • Doxygen
Poplar and PopLibs API Reference

Search help

Note: Searching from the top-level index page will search all documents. Searching from a specific document will search only that document.

  • Find an exact phrase: Wrap your search phrase in "" (double quotes) to only get results where the phrase is exactly matched. For example "PyTorch for the IPU" or "replicated tensor sharding"
  • Prefix query: Add an * (asterisk) at the end of any word to indicate a prefix query. This will return results containing all words with the specific prefix. For example tensor*
  • Fuzzy search: Use ~N (tilde followed by a number) at the end of any word for a fuzzy search. This will return results that are similar to the search word. N specifies the “edit distance” (fuzziness) of the match. For example Polibs~1
  • Words close to each other: ~N (tilde followed by a number) after a phrase (in quotes) returns results where the words are close to each other. N is the maximum number of positions allowed between matching words. For example "ipu version"~2
  • Logical operators. You can use the following logical operators in a search:
    • + signifies AND operation
    • | signifies OR operation
    • - negates a single word or phrase (returns results without that word or phrase)
    • () controls operator precedence

9. Trademarks & copyright

Graphcloud®, Graphcore®, Poplar® and PopVision® are registered trademarks of Graphcore Ltd.

Bow™, Bow-2000™, Bow Pod™, Colossus™, In-Processor-Memory™, IPU-Core™, IPU-Exchange™, IPU-Fabric™, IPU-Link™, IPU-M2000™, IPU-Machine™, IPU-POD™, IPU-Tile™, PopART™, PopDist™, PopLibs™, PopRun™, PopTorch™, Streaming Memory™ and Virtual-IPU™ are trademarks of Graphcore Ltd.

All other trademarks are the property of their respective owners.

This software is made available under the terms of the Graphcore End User License Agreement (EULA) and the Graphcore Container License Agreement. Please ensure you have read and accept the terms of the corresponding license before using the software. The Graphcore EULA applies unless indicated otherwise.

© Copyright 2019-2023, Graphcore Ltd.

Previous

Revision f625431e.