I'd like to share our vision and the initial roadmap for the AOT feature. AOT is our solution to make Taichi kernels and programs runnable in non-Python environments. Mobile and game engines, for example.
The ongoing efforts include:
defining the base AOT API
implementing this AOT API for the Vulkan backend
The API design, its features and limitations are all documented in
SPIR-V based codegen: Cross compiling the SPIR-V shader to other platforms, including OpenGL, Apple Metal (OpenCL?)
AOT compute graph: This would significantly reduce the efforts to porting a demo written in Taichi to non-Python environments. In essence, the AOT module will save not only the Taichi kernels, but also the host logic invoking them. https://github.com/taichi-dev/taichi/issues/4786
The LLVM AOT impl would allow us to understand how to support the more advanced sparse SNodes, e.g. pointer.
The SPIR-V codegen would also need to support these sparse SNodes. When the SPIR-V cross-compilation is ready, all SPIR-V-based backends will gain sparsity support for free.
LLVM + SPIR-V means that the AOT solution can finally cover all the backends in Taichi.
Clean up Taichi's C++ codebase, make it more modular and easily linkable with other C++ projects: https://github.com/taichi-dev/taichi/issues/4832. @PENGUINLIONG is working on the Windows part, while @qiao-bo (and possibly @turbo0628) is working on the Linux part.
a. This would help integrating Taichi with Unity, or any other kind of C/C++ projects. In the end, it's just a nicely encapsulated CPP library.
Better AOT runtime API: Right now this is kind of messy. Different backends have their own runtime implementation, but are not unified. So too much implementation details will be leaked to AOT users as of now. @turbo0628 and I will find a way to refactor this.
I'd like to share our vision and the initial roadmap for the AOT feature. AOT is our solution to make Taichi kernels and programs runnable in non-Python environments. Mobile and game engines, for example.
The ongoing efforts include:
The API design, its features and limitations are all documented in
Starting from here, we can immediately explore the following directions:
pointer
.