Release 3.8.0 (2024/10/02)
This release includes several new changes, such as exception support, improved scheduling algorithms,
Download
Taskflow 3.8.0 can be downloaded from here.
System Requirements
To use Taskflow v3.8.0, you need a compiler that supports C++17:
- GNU C++ Compiler at least v8.4 with -std=c++17
- Clang C++ Compiler at least v6.0 with -std=c++17
- Microsoft Visual Studio at least v19.27 with /std:c++17
- AppleClang Xcode Version at least v12.0 with -std=c++17
- Nvidia CUDA Toolkit and Compiler (nvcc) at least v11.1 with -std=c++17
- Intel C++ Compiler at least v19.0.1 with -std=c++17
- Intel DPC++ Clang Compiler at least v13.0.0 with -std=c++17
Taskflow works on Linux, Windows, and Mac OS X.
Release Summary
This releases (1) enhances the scheduling performance through C++20 atomic notification and a bounded queue strategy and (2) revised the semaphore model for better runtime control.
New Features
Taskflow Core
- Enhanced the core scheduling algorithm using a new bounded queue strategy
- Enhanced the core scheduling performance using C++20 atomic notification
# compile your taskflow program with C++20 enabled ~$ g++ -std=c++20 my_taskflow.cpp
- Revised the semaphore programming model for better runtime control through tf::
Runtime
tf::Executor executor(8); // create an executor of 8 workers tf::Taskflow taskflow; tf::Semaphore semaphore(1); // create a semaphore with initial count 1 for(size_t i=0; i<1000; i++) { taskflow.emplace([&](tf::Runtime& rt){ rt.acquire(semaphore); std::cout << "critical section here (one worker here only)\n"; critical_section(); rt.release(semaphore); }); } executor.run(taskflow).wait();
- Enhanced async-tasking performance through TLS
- Added async-task benchmark
- Added non-blocking notifier and atomic notifier modules
- Added tf::
BoundedTaskQueue and tf:: UnboundedTaskQueue - Added tf::Freelist module to replace the centralized overflow queue
- Removed the redundant exception handling in object pool
Utilities
Bug Fixes
- Fixed the compilation error for not finding the C++ atomic library
- Fixed the missing tf::
Runtime in asynchronous tasking - Fixed the non-heterogeneity of tf::
Taskflow:: for_each_index - Fixed the bug of UUID unit test in a multithreaded environment
Breaking Changes
- Removed the support of object pool by default
- Removed the support of prioritized tasking due to inconsistency with work stealing
Documentation
- Revised Limit the Maximum Concurrency
- Removed Prioritized Tasking
- Fixed typos in multiple pages
Miscellaneous Items
Please do not hesitate to contact Dr. Tsung-Wei Huang if you intend to collaborate with us on using Taskflow in your scientific computing projects.