Logo
PopXL User Guide and API (experimental)
Version: 3.1.0
  • 1. Introduction
  • 2. Concepts
    • 2.1. IRs
    • 2.2. Graphs
    • 2.3. Tensors
    • 2.4. Operations
  • 3. Simple example
  • 4. Data types
    • 4.1. 8-bit floating point datatypes
    • 4.2. 8-bit floating point inference model example
  • 5. Tensors
    • 5.1. Constant tensors
    • 5.2. Variable tensors
    • 5.3. Intermediate tensors
  • 6. Supported operations
    • 6.1. Data input and output
    • 6.2. List of available operations
  • 7. Custom operations
    • 7.1. Environment
    • 7.2. Parameter struct
    • 7.3. Operation class
    • 7.4. Opx class
    • 7.5. Gradient operation class
    • 7.6. Gradient opx class
    • 7.7. Python bindings
    • 7.8. Python wrapper
    • 7.9. Auto-compiling custom operations with cppimport
    • 7.10. Using your custom operation
  • 8. Graphs
    • 8.1. Main graph
    • 8.2. Graphs
    • 8.3. Creating a graph
    • 8.4. Calling a graph
    • 8.5. Calling a graph in a loop
    • 8.6. Graph replication
    • 8.7. Code loading from Streaming Memory
      • 8.7.1. Minimal example
      • 8.7.2. Controlling liveness between multiple calls
      • 8.7.3. Optimisation: merging the code load operations
      • 8.7.4. Advanced example: nested code loading
      • 8.7.5. Advanced concept: code loading in dynamic branches
  • 9. Transforms
    • 9.1. Autodiff
  • 10. Context manager
  • 11. Session
    • 11.1. Running a session
    • 11.2. Getting and setting tensor data
      • 11.2.1. When transfers will occur between host and device
    • 11.3. Nested Session Contexts
    • 11.4. Number of host transfers
    • 11.5. Data input shape
    • 11.6. Device Types
  • 12. Variables in Streaming Memory
    • 12.1. Remote buffers
    • 12.2. Remote variable tensors
    • 12.3. Variable tensors for replicated tensor sharding
  • 13. Replication
    • 13.1. Graph replication
    • 13.2. Replica grouping
    • 13.3. Code examples
    • 13.4. Retrieval modes
  • 14. Distributed PopXL Instances
    • 14.1. Introduction
    • 14.2. Primer on using PopDist and PopRun to run multi-instance applications
    • 14.3. Basic Example
    • 14.4. Variable ReplicaGroupings and multiple instances
      • 14.4.1. Detail of inter-instance communication
    • 14.5. Sharding and multiple instances
      • 14.5.1. Basic Example
      • 14.5.2. Using shard_over
      • 14.5.3. Complex Example
  • 15. Application example: MNIST
    • 15.1. Import the necessary libraries
    • 15.2. Prepare dataset
    • 15.3. Create IR for training
      • 15.3.1. Create network
      • 15.3.2. Calculate gradients and update weights
    • 15.4. Run the IR to train the model
    • 15.5. Create an IR for testing and run the IR to test the model
  • 16. Application example: MNIST with replication and RTS
    • 16.1. Add support for replications
    • 16.2. Change variable tensors to RTS variable tensors
  • 17. Environment variables
    • 17.1. Logging
      • 17.1.1. POPART_LOG_LEVEL
      • 17.1.2. POPART_LOG_DEST
      • 17.1.3. POPART_LOG_CONFIG
    • 17.2. Generating DOT files
    • 17.3. Caching of compiled executables
  • 18. Python API Reference
    • 18.1. Ir
    • 18.2. Contexts
    • 18.3. Data types
    • 18.4. Graphs
    • 18.5. Modules
    • 18.6. Random seeds
    • 18.7. Remote buffers
    • 18.8. Replica grouping
    • 18.9. Session
    • 18.10. Streams
    • 18.11. Tensors
    • 18.12. Tensor locations
    • 18.13. Transforms
    • 18.14. Utils
    • 18.15. Ops available in PopXL
  • 19. Index
  • 20. Legal notices
PopXL User Guide and API (experimental)

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

Previous

Revision 2eab3dd3.