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


Revision 242fabd7.