Logo
PopXL User Guide and API (experimental)
Version: latest
  • 1. Introduction
  • 2. Setup quick start
    • 2.1. Enable Poplar SDK
    • 2.2. Create and enable a Python virtual environment
  • 3. Concepts
    • 3.1. IRs
    • 3.2. Graphs
    • 3.3. Tensors
    • 3.4. Operations
  • 4. Simple example
  • 5. Data types
    • 5.1. 8-bit floating point datatypes
    • 5.2. 8-bit floating point inference model example
  • 6. Tensors
    • 6.1. Constant tensors
    • 6.2. Variable tensors
    • 6.3. Intermediate tensors
  • 7. Supported operations
    • 7.1. Data input and output
    • 7.2. List of available operations
  • 8. Custom operations
    • 8.1. Environment
    • 8.2. Parameter struct
    • 8.3. Operation class
    • 8.4. Opx class
    • 8.5. Gradient operation class
    • 8.6. Gradient opx class
    • 8.7. Python bindings
    • 8.8. Python wrapper
    • 8.9. Auto-compiling custom operations with cppimport
    • 8.10. Using your custom operation
  • 9. Graphs
    • 9.1. Main graph
    • 9.2. Graphs
    • 9.3. Creating a graph
    • 9.4. Calling a graph
    • 9.5. Calling a graph in a loop
    • 9.6. Graph replication
    • 9.7. Code loading from Streaming Memory
      • 9.7.1. Minimal example
      • 9.7.2. Controlling liveness between multiple calls
      • 9.7.3. Optimisation: merging the code load operations
      • 9.7.4. Advanced example: nested code loading
      • 9.7.5. Advanced concept: code loading in dynamic branches
  • 10. Transforms
    • 10.1. Autodiff
  • 11. Context manager
  • 12. Session
    • 12.1. Running a session
    • 12.2. Getting and setting tensor data
      • 12.2.1. When transfers will occur between host and device
    • 12.3. Nested Session Contexts
    • 12.4. Number of host transfers
    • 12.5. Data input shape
    • 12.6. Device Types
  • 13. Variables in Streaming Memory
    • 13.1. Remote buffers
    • 13.2. Remote variable tensors
    • 13.3. Variable tensors for replicated tensor sharding
  • 14. Replication
    • 14.1. Graph replication
    • 14.2. Replica grouping
    • 14.3. Code examples
    • 14.4. Retrieval modes
  • 15. Distributed PopXL Instances
    • 15.1. Introduction
    • 15.2. Primer on using PopDist and PopRun to run multi-instance applications
    • 15.3. Basic Example
    • 15.4. Variable ReplicaGroupings and multiple instances
      • 15.4.1. Detail of inter-instance communication
    • 15.5. Sharding and multiple instances
      • 15.5.1. Basic Example
      • 15.5.2. Using shard_over
      • 15.5.3. Complex Example
  • 16. Application example: MNIST
    • 16.1. Import the necessary libraries
    • 16.2. Prepare dataset
    • 16.3. Create IR for training
      • 16.3.1. Create network
      • 16.3.2. Calculate gradients and update weights
    • 16.4. Run the IR to train the model
    • 16.5. Create an IR for testing and run the IR to test the model
  • 17. Application example: MNIST with replication and RTS
    • 17.1. Add support for replications
    • 17.2. Change variable tensors to RTS variable tensors
  • 18. Environment variables
    • 18.1. Logging
      • 18.1.1. POPART_LOG_LEVEL
      • 18.1.2. POPART_LOG_DEST
      • 18.1.3. POPART_LOG_CONFIG
    • 18.2. Generating DOT files
    • 18.3. Caching of compiled executables
    • 18.4. Preloading of compiled executables
  • 19. Python API Reference
    • 19.1. Ir
    • 19.2. Contexts
    • 19.3. Data types
    • 19.4. Graphs
    • 19.5. Modules
    • 19.6. Random seeds
    • 19.7. Remote buffers
    • 19.8. Replica grouping
    • 19.9. Session
    • 19.10. Streams
    • 19.11. Tensors
    • 19.12. Tensor locations
    • 19.13. Transforms
    • 19.14. Utils
    • 19.15. Ops available in PopXL
  • 20. Index
  • 21. Legal notices
PopXL User Guide and API (experimental)

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

21. Legal notices

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 © 2022—2023 Graphcore Ltd. All rights reserved.

Previous

Revision 242fabd7.