Skip to content
Dian-Lun Lin (Luan) edited this page Oct 19, 2023 · 11 revisions

Taro is an open-source heterogeneous task graph programming system using C++ Coroutine. Taro provides an expressive task graph programming model that relieves users from handling complex coroutine management. It also introduces a coroutine-aware work-stealing algorithm to support the programming model while minimizing CPU migration overhead.

Taro is just about to start! We are still working on documentation. If you would like to report a bug or are having difficulty using Taro, please open a github issue. We are also happy to review and take code contributions.

Why Taro

The key contribution of Taro is the ability to enable multitasking within a task graph. Take the following task graph as an example:

Taro

This task graph contains task B, which incorporates a CPU operation (Bc) and a GPU operation (Bg). Most task graph programming systems assume an atomic execution per heterogeneous task and do not anticipate multitasking that can bring significant yet largely untapped performance benefits. Without multitasking, when the CPU thread executes B and finishes Bc, it will block until the GPU completes Bg, as shown in (b).

C++ Coroutine can solve this problem by allowing suspension and resumption of a function from its running thread. However, implementing coroutines correctly and efficiently requires a deep understanding of the underlying mechanisms and language rules.

That's where Taro comes into play!

In Taro, we allow you to easily enable multitasking within a task graph. We also design a coroutine-aware work-stealing algorithm to schedule your multitasking task graph. Check Getting Started to write your first Taro program!

On top of that, one of our design goals is to ensure Taro's scalability and adaptability, making it easier to extend support to different computing architectures in the future. We currently support CUDA for heterogeneous computing. You are very welcome to see how to extend and take code contributions.

License

Taro is licensed with the MIT License. You are completely free to re-distribute your work derived from Taro.