Logo
PopART User Guide
Version: latest
  • 1. Introduction
  • 2. Setup quick start
    • 2.1. Enable Poplar SDK
    • 2.2. Create and enable a Python virtual environment
  • 3. Importing graphs
    • 3.1. Creating a session
    • 3.2. Session control options
    • 3.3. Executing an imported graph
  • 4. Building graphs in PopART
    • 4.1. Adding operations to the graph
    • 4.2. Adding parameters to the graph
    • 4.3. Setting outputs
    • 4.4. Setting the IPU number for operations
  • 5. Executing graphs
    • 5.1. Setting input and output data buffers for an execution
      • 5.1.1. Retrieving results
    • 5.2. Session options
      • 5.2.1. Stochastic rounding
    • 5.3. Selecting a device for execution
    • 5.4. Executing a session
    • 5.5. Saving and loading a model
    • 5.6. Retrieving profiling reports
    • 5.7. Turning on execution tracing
      • 5.7.1. Programming interface
      • 5.7.2. Output format
    • 5.8. Errors
      • 5.8.1. Application errors
      • 5.8.2. System errors
  • 6. Performance optimisation
    • 6.1. Pipelined execution
    • 6.2. Graph replication
      • 6.2.1. Local replication
      • 6.2.2. Global replication
    • 6.3. Sync configuration
      • 6.3.1. Sync patterns
  • 7. Grouping graph replicas
    • 7.1. Concept
    • 7.2. VariableSettings
    • 7.3. Instantiating variables with VariableSettings
    • 7.4. Weight input/output
    • 7.5. ONNX checkpoints
  • 8. Supported operators
    • 8.1. Domain: ai.onnx
    • 8.2. Domain: ai.graphcore
    • 8.3. Limitations
      • 8.3.1. Limitations of ai.onnx operators
      • 8.3.2. Limitations of ai.graphcore operators
    • 8.4. Converting ONNX models with opset versions not supported by PopART
  • 9. Custom operators
    • 9.1. Overview
      • 9.1.1. Custom op classes
    • 9.2. Implementing a custom op
      • 9.2.1. The Op class
        • LeakyReluOp example
      • 9.2.2. The grad op class
      • 9.2.3. The Opx class
      • 9.2.4. The grad opx class
    • 9.3. Making the op available to PopART
      • 9.3.1. Define the op identifier
      • 9.3.2. Define the Op creator
      • 9.3.3. Define the Opx creator
    • 9.4. ONNX schema and shape inference
    • 9.5. Compiling and using the custom op
      • 9.5.1. Compiling the code
      • 9.5.2. Using the compiled custom op in an application
  • 10. Environment variables
    • 10.1. Logging
      • 10.1.1. POPART_LOG_LEVEL
      • 10.1.2. POPART_LOG_DEST
      • 10.1.3. POPART_LOG_CONFIG
    • 10.2. Generating DOT files
      • 10.2.1. POPART_DOT_CHECKS
    • 10.3. Caching of compiled executables
    • 10.4. Preloading of compiled executables
    • 10.5. Inspecting the IR
      • 10.5.1. POPART_IR_DUMP
    • 10.6. Manipulating outliner behaviour for PopLiner
      • 10.6.1. POPART_POPLINER_OUTLINER_REGEX
  • 11. Overlapping IO with compute
    • 11.1. Configuring IO tiles
    • 11.2. Specify overlap strategy for inputs
    • 11.3. Specify overlap strategy for anchors
    • 11.4. Exchange strategies
  • 12. Tensor locations
    • 12.1. Streaming Memory
    • 12.2. Replicated tensor sharding
    • 12.3. RTS sharding domains and distributed instances
  • 13. PopART Python API
    • 13.1. Sessions
      • 13.1.1. Training session
      • 13.1.2. Inference session
      • 13.1.3. Session Options
    • 13.2. Data input and output
    • 13.3. Tensors
    • 13.4. Optimizers
      • 13.4.1. SGD
      • 13.4.2. ConstSGD
      • 13.4.3. Adam
      • 13.4.4. AdaDelta, RMSProp & AdaGrad
    • 13.5. Builder
      • 13.5.1. AiGraphcoreOpset1
    • 13.6. Data flow
    • 13.7. Device manager
    • 13.8. Ops
      • 13.8.1. Op definition for PopART IR
    • 13.9. Patterns
    • 13.10. Utility classes
      • 13.10.1. Writer
      • 13.10.2. Error handling
      • 13.10.3. Debug context
      • 13.10.4. Input shape information
      • 13.10.5. Type definitions
      • 13.10.6. Enums
  • 14. PopART C++ API
    • 14.1. Sessions
      • 14.1.1. Training session
      • 14.1.2. Inference session
      • 14.1.3. Session options
    • 14.2. Data input and output (IStepIO)
    • 14.3. Tensors
    • 14.4. Optimizers
      • 14.4.1. Stochastic Gradient Descent (SGD)
      • 14.4.2. Adam, AdaMax & Lamb
      • 14.4.3. AdaDelta, RMSProp & AdaGrad
    • 14.5. Builder
    • 14.6. Data flow
    • 14.7. Device manager
    • 14.8. Ops
      • 14.8.1. Op definition for PopART IR
      • 14.8.2. Op definition for Poplar implementation
      • 14.8.3. Available Ops (Op class)
      • 14.8.4. Available Ops (Opx class)
    • 14.9. Patterns
      • 14.9.1. Available patterns
    • 14.10. Transforms
      • 14.10.1. Available transforms
    • 14.11. Utility classes
      • 14.11.1. Graph
      • 14.11.2. Region
      • 14.11.3. Error handling
      • 14.11.4. Debug context
      • 14.11.5. Attributes
      • 14.11.6. Void data
      • 14.11.7. Input shape information
      • 14.11.8. Profiling
      • 14.11.9. Task information
      • 14.11.10. Type definitions
      • 14.11.11. Enums
      • 14.11.12. Structs
      • 14.11.13. Other classes
  • 15. Glossary
  • 16. References
    • 16.1. Documentation
    • 16.2. Running applications in Docker
    • 16.3. Tutorials and simple examples
    • 16.4. Application and code examples
    • 16.5. Other support
  • 17. Index
  • 18. Trademarks & copyright
PopART User Guide

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


Revision e448f0af.