Back to Taskflow

Release Notes » Release 3.8.0 (2024/10/02)

docs/release-3-8-0.html

4.0.03.2 KB
Original Source

Release Notes » Release 3.8.0 (2024/10/02)

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.

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.

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 workerstf::Taskflow taskflow;tf::Semaphore semaphore(1); // create a semaphore with initial count 1for(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

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.