Release Notes » Release 3.1.0 (2021/04/14)

Taskflow 3.1.0 is the 2nd release in the 3.x line! This release includes several new changes such as CPU-GPU tasking, algorithm collection, enhanced web-based profiler, documentation, and unit tests.

Download

Taskflow 3.1.0 can be downloaded from here.

System Requirements

To use Taskflow v3.1.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 and SYCL20

Taskflow works on Linux, Windows, and Mac OS X.

New Features

Taskflow Core

  • optimized task node storage by using std::unique_ptr for semaphores
  • merged the execution flow of cudaFlow and cudaFlow capturer

cudaFlow

  • optimized tf::cudaRoundRobinCapturing through an event-pruning heuristic
  • optimized the default block size used in cudaFlow algorithms
  • added tf::cudaFlow::clear() to clean up a cudaFlow
  • added tf::cudaFlow::num_tasks() to query the task count in a cudaFlow
  • added tf::cudaTask::num_dependents() to query the dependent count in a cudaTask
  • added tf::cudaFlowCapturer::clear() to clean up a cudaFlow capturer
  • added tf::cudaFlowCapturer::num_tasks() to query the task count in a cudaFlow capturer
  • added tf::cudaFlowCapturer rebind methods:
    • tf::cudaFlowCapturer::rebind_single_task
    • tf::cudaFlowCapturer::rebind_for_each
    • tf::cudaFlowCapturer::rebind_for_each_index
    • tf::cudaFlowCapturer::rebind_transform
    • tf::cudaFlowCapturer::rebind_reduce
    • tf::cudaFlowCapturer::rebind_uninitialized_reduce
  • added tf::cudaFlow update methods:
    • tf::cudaFlow::update_for_each
    • tf::cudaFlow::update_for_each_index
    • tf::cudaFlow::update_transform
    • tf::cudaFlow::update_reduce
    • tf::cudaFlow::update_uninitialized_reduce
  • added cudaFlow examples:
    • parallel reduction (examples/cuda/cuda_reduce.cu)
    • parallel transform (examples/cuda/cuda_transform.cu)
    • rebind (examples/cuda/cuda_rebind.cu)

Utilities

  • resolved the compiler warning in serializer caused by constexpr if
  • resolved the compiler error of nvcc when parsin variadic namespace

Taskflow Profiler (TFProf)

No update for TFProf in this release.

Bug Fixes

  • fixed the macro expansion issue with MSVC on TF_CUDA_CHECK
  • fixed the serializer compile error (#288)
  • fixed the tf::cudaTask::type bug in mixing host and empty task types

Breaking Changes

There are no breaking changes in this release.

Deprecated and Removed Items

There are no deprecated or removed items in this release.

Documentation

Miscellaneous Items

  • removed Circle-CI from the continuous integration
  • updated grok to the user list
  • updated RavEngine to the user list
  • updated RPGMPacker to the user list
  • updated Leanify to the user list