Extending Aesara¶
This advanced tutorial is for users who want to extend Aesara with new Types, new Operations (Ops), and new graph optimizations. This first page of the tutorial mainly focuses on the Python implementation of an Op and then proposes an overview of the most important methods that define an op. The second page of the tutorial (Extending Aesara with a C Op) provides then information on the C implementation of an Op. The rest of the tutorial goes more in depth on advanced topics related to Ops, such as how to write efficient code for an Op and how to write an optimization to speed up the execution of an Op.
Along the way, this tutorial also introduces many aspects of how Aesara works, so it is also good for you if you are interested in getting more under the hood with Aesara itself.
Note
Before tackling this more advanced presentation, it is highly recommended to read the introductory Tutorial, especially the sections that introduce the Aesara Graphs, as providing a novel Aesara op requires a basic understanting of the Aesara Graphs.
See also the Developer Start Guide for information regarding the versioning framework, namely about git and GitHub, regarding the development workflow and how to make a quality contribution.
- Creating a new Op: Python implementation
- Extending Aesara with a C Op
- Writing an Op to work on an
ndarray
in C - Overview of the compilation pipeline
- Aesara vs. C
- Graph Structures
- Making the double type
- Making arithmetic Ops on double
- Views and inplace operations
- Implementing some specific Ops
- Implementing double in C
- Implementing the arithmetic COps in C
- Using Op params
- Extending Aesara with a GPU Op
- Graph optimization
- Tips
- Unit Testing
- Developper documentation for Scan
- Extending Aesara: FAQ and Troubleshooting