| Taskflow: A General-purpose Task-parallel Programming System

Loading...
Searching...
No Matches
Contributors

If you are using Taskflow, please cite the following paper we published at 2022 IEEE Transactions on Parallel and Distributed Systems (TPDS):

- Tsung-Wei Huang, Dian-Lun Lin, Chun-Xun Lin, and Yibo Lin, "Taskflow: A Lightweight Parallel and Heterogeneous Task Graph Computing System," IEEE Transactions on Parallel and Distributed Systems (TPDS), vol. 33, no. 6, pp. 1303-1320, June 2022

The paper describes the design principles, programming model, and performance characteristics of Taskflow as a lightweight system for task-parallel programming.

# Thank You for Developing Taskflow

We are grateful for the following contributors (alphabetic order) to the Taskflow project:

- Alexander Neumann: made Taskflow importable from external CMake projects
- Andatr: improved the hashing performance in freelist
- Anesthesia4: added unit tests for parallel-transform algorithms
- Antony Chan: added unit tests for parallel-transform algorithms
- Andreas Olofsson: supported the Taskflow project through the DARPA IDEA program
- Aaron Boxer: fixed compiler warning caused by unsigned-signed conversion
- Wolfgang Bangerth: fixed the redundant `nullptr` check
- Benson Muite: fixed compilation errors of the BFS benchmark
- Cheng-Hsiang Chiu: improved the documentation, fixes typos, and test code examples
- Chandrahas Pundru: implemented cancellation of submitted taskflows
- Chun-Xun Lin: co-created the Taskflow project and designed the core functionalities
- Conrad Jones: added cancellation query support from the runtime task
- Craffael: improved the CMake to allow relocatable installation
- Dan Kersten: designed an interface to allow customizing worker behaviors
- Daniel Jour: improved CMake via out-of-tree builds and designed the semaphore interface
- Dian-Lun Lin: applied Taskflow to win the champion award of the IEEE HPEC 2020 Graph Challenge
- Evgeny Gorodetskiy: fixed task queue compilation error due to wrong macro locations
- Filip Strugar: fixed the bugs in fire-and-get taskflow execution and parallel algorithms
- Foge Mistress: helped design the executor interface to avoid over-subscribed threads
- Francisco Facioni: improved the interface of Taskflow exception support through macro
- George Price: improved the documentation pages and fixed several typos
- Glen Fraser: contributed to the design of executor and thread pool
- Guannan Guo: benchmarked different scheduling algorithms and architectures
- Hjxy2012: fixed the compilation error in nvcc due to removed features in C++17
- Hoildkv: fixed documentation errors in explaining the observer interface of executor
- Isaac Yousuf: fixed the bug in exception handling for worker loop
- Jean Michael: integrated Taskflow to the OSSIA project
- Jiawei Liu: fixed typos in the documentation
- Junlian Gilbey: added the explicit link to libatomic on some architectures
- Junlin Huang: fixed the erroneous template argument in serializer and deserializer
- KingDuckZ: helped discover memory leak in the object pool
- Levi Armstrong: added threads target to the CMake file as an interface library
- Lily: helped added Taskflow to the MS vcpkg project
- Longpractice: fixed the MS compilation error for launch-loop algorithm
- Lukas Burgholzer: improved the MAC OS compatibility with the standard variant library
- Lukasz Wojakowski: identified delayed execution bug in module task
- Luke Majors: implemented a sanitizer algorithm to sanitize deadlock control-flow tasks
- McKay Mower: implemented a sanitizer algorithm to sanitize non-reachable control-flow tasks
- Mamy Ratsimbazafy: fixed the reference link error in the documentation
- Martin Krutak: fixed min/max macros expansion error when windows.h header is included
- Martin Wong: supported the Taskflow project development through NSF and DARPA grant
- Matthew Powelson: fixed the installation error in the CMake script
- Maxi-git: improved the scheduler by removing redundant iterations in the busy stealing loop
- Miko: created a C++20 module support for Taskflow
- Nate: fixed the compilation error of priority task queue on MS platforms
- Nan Xiao: fixed compilation error of unit tests on the Arch platform
- NanaGlutamate: helped implement C++20 module support for faster compile time
- Netcan: designed a domain-specific graph language to simplify the creation of taskflows
- Nevin: fixed the macro crash in windows
- Ojas Mithbavkar: implemented cancellation of submitted taskflows
- Pancpp: removed hard-coded installation prefix with relative install path
- Paolo Bolzoni: helped remove extraneous semicolons to suppress extra warning
- Patrik Huber: fixed the typos of documentation
- Povilas Kanapickas: helped design a new scheduling invariant to avoid busy stealing
- qbojj: helped fixed documentation errors related to dependent asynchronous tasking
- Zizheng Xiong: added data-parallel programming models through GSoC 2022
- Pursche: fixed compilation warning on MSVC
- Remi Bedard-Couture: added big object compilation support on MSVC
- Robin Soderholm: fixed the runtime error of cudaEvent destructor
- Ruixin Huang: fixed bugs in conditional tasking documentation
- Snikitha: helped enhance the unit tests for notifier
- Soonho Kong: fixed the compilation warning of unused lambda variables
- Sztergbaum Roman: improved the CMake file to remove global setting
- Timo Heister: fixed documentation typos and integrated Taskflow to the deal.ii project
- Trevor Vincent: added support for the Intel C++ compiler (v19+)
- Tsung-Wei Huang: created the Taskflow project and designed the core functionalities
- Vedanta Krishna Bhutani: implemented cancellation of submitted taskflows
- Vlad Serebrennikov: implemented the interface to attach user data in a task
- Vedran Miletic: patched the OS detection utility to include Solaris and illumos
- Vladimir Vondrus: helped modernize Taskflow handbook using m.css
- Vladyslav: fixed comment errors in README.md and examples
- WiCyn: identified a bug in scheduling condition tasks during run-n
- Yasin Zamani: benchmarked the parallel sort with the TBB baseline
- Yibo Lin: helped design the interface of conditional tasking
- Yilin Qiu: helped implement the dependency removal methods in Taskflow
- Yun Kai Peng: implemented a priority-based scheduling interface
- Yumeno Yan: fixed the C++ macro error in the MSVC environment
- Weile: helped added Taskflow to the compiler explorer interface
- Zizheng Guo: applied Taskflow to speed up VLSI timing analysis and shared his feedback

Please contact us if we forgot your name!

# Thank You for Using Taskflow

We are grateful for the following organizations and projects that are using Taskflow:

- OpenTimer: A high-performance timing analysis tool for VLSI designs
- OSSIA: An open-source software system for interactive applications
- NovousCore: An emulating project for World of Warcraft (Wrath of the Lich King)
- deal.II: A C++ software library to support the creation of finite element code
- MyDataModels: An online platform for self-service machine learning for small data
- VSD: An online education platform for VLSI system design using open-source software
- OpenRoad: A 24-hour Fully Automatic Layout Generation Flow
- Open Ephys: Open-source tools for neuroscience research
- LiveHD: An infrastructure designed for Live Hardware Development
- ROS-Industrial Consortium: Organization for advanced factory automation
- revealtech.ai: Mobile application with focused and intelligent analytics on the edge
- PyRepScan: A Git Repository Leaks Scanner Python Library written in C++
- SNIG: An open-source inference engine for large sparse deep neural network
- OpenPhySyn: A plugin-based physical synthesis optimization kit as part of the OpenRoad flow
- LPMP: A C++ framework for developing scalable Lagrangian decomposition solvers
- GROK: World's Leading Open Source JPEG 2000 Codec
- RavEngine: A fast, easy to use C++17 3D game library for modern computers
- RPGMPacker: CLI program for packaging RPG Maker games in an automated build/deploy pipeline.
- Leanify: A lightweight lossless file compressor
- Xanadu AI: Accelerate simulation using quantum computing
- Operon: Modern C++ framework for Symbolic Regression using Genetic Programming
- Explosion: A modern cross-platform game engine
- BuildCC: An alternative to Makefiles while using the feature rich C++ language.
- SPLA: Generalized sparse linear algebra framework for multi-GPU computations.
- MethaneKit: Modern 3D graphics rendering abstraction API and cross-platform application framework
- XeGTAO: Implementation of the Practical Real-time Strategies for Accurate Indirect Occlusion
- ChainBlocks: A scripting tool to build tools
- RapidFuxx: Rapid fuzzy string matching in Python using various string metrics
- AtomicDEX: Secure wallet and decentralized exchange rolled into one application
- OOX: Out-of-order task execution library in modern C++
- ReAgent: An open-source platform for applied reinforcement learning developed by Meta
- Beast-Build: A build system built for speed and power
- Gate Sizing: A task-parallel gate sizing algorithm for VLSI design automation
- Shards: A scripting tool to build tools
- RAPIDS CuCim: An open-source, accelerated computer vision and image processing software library
- Tesseract Robotics: Lightweight robotics motion planning environment
- NcEngine: 3D game engine written in C++20 targeting Windows
- AMD Vivao: AMD's software synthesis suite for hardware designs
- ModuleWorks: Industry-proven ModuleWorks CAD/CAM technology into software solutions
- Nvidia std::exec: Nvidia's implementation for C++26 Standard executor libraries
- BQSim: GPU-accelerated Batch Quantum Circuit Simulator using Decision Diagram
- ColumbaEngine: Yet another C++ cross platform graphical/game engine
- PeriDEM: High-fidelity modeling of granular media consisting of deformable complex particles
- NUPACK: Software suite for the analysis and design of nucleic acid structures, devices, and systems
- IncreGPUSTA: A GPU-accelerated incremental static timing analysis engine

... more at GitHub.

Please contact us if we forgot your name!