release-3-5-0

# Release 3.5.0 (2023/01/05)

Download
release-3-5-0_1release-3-5-0_download
System Requirements
release-3-5-0_1release-3-5-0_system_requirements
Release Summary
release-3-5-0_1release-3-5-0_summary
New Features
release-3-5-0_1release-3-5-0_new_features
Taskflow Core
release-3-5-0_1release-3-5-0_taskflow_core
cudaFlow
release-3-5-0_1release-3-5-0_cudaflow
Utilities
release-3-5-0_1release-3-5-0_utilities
Taskflow Profiler (TFProf)
release-3-5-0_1release-3-5-0_profiler
Bug Fixes
release-3-5-0_1release-3-5-0_bug_fixes
Breaking Changes
release-3-5-0_1release-3-5-0_breaking_changes
Deprecated and Removed Items
release-3-5-0_1release-3-5-0_deprecated_items
Documentation
release-3-5-0_1release-3-5-0_documentation
Miscellaneous Items
release-3-5-0_1release-3-5-0_miscellaneous_items

Taskflow 3.5.0 is the 6th release in the 3.x line! This release includes several new changes, such as pipeline parallelism, improved work-stealing performance, profiling, documentation, examples, and unit tests.

# Download

Taskflow 3.5.0 can be downloaded from here.

# System Requirements

To use Taskflow v3.5.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.

# Release Summary

This release introduces a new data-parallel pipeline programming model, solves the busy-waiting problem in our work-stealing scheduler, and adds a new text-based feature for profiler report.

# New Features

## Taskflow Core

- Added tf::WorkerInterface to allow changing properties of workers upon their creations

- Added tf::Executor::loop_until to allow looping a worker with a custom stop predicate

- Added tf::DataPipeline to implement data-parallel algorithms

  - See Data-parallel Pipeline

- Extended tf::Executor to include tf::WorkerInterface

- Improved parallel algorithms (e.g., tf::Taskflow::for_each) with tail optimization

- Resolved the busy-waiting problem in our work-stealing algorithm (#400)

## cudaFlow

This release has no update on tf::cudaFlow.

## Utilities

- Added tf::unroll to unroll loops using template techniques

- Added tf::CachelineAligned to create a cacheline-aligned object

- Replaced std::aligned_union (deprecated in C++23) with a custom byte type (#445)

## Taskflow Profiler (TFProf)

- Added a new feature to generate a profile summary report

  - See Display Profile Summary

# Bug Fixes

- Fixed the compilation error in taking move-only types for tf::Taskflow::transform_reduce

- Fixed the compilation error in the graph pipeline benchmark

- Fixed the compilation error in unknown OS (replaced with `TF_OS_UNKNOWN`)

If you encounter any potential bugs, please submit an issue at issue tracker.

# Breaking Changes

This release has no breaking changes.

# Deprecated and Removed Items

This release has no deprecated and removed items.

# Documentation

- Revised Executor

  - Added Execute a Taskflow from an Internal Worker

- Added Data-parallel Pipeline

# Miscellaneous Items

We have published Taskflow in the following venues:

- Tsung-Wei Huang and Leslie Hwang, "Task-Parallel Programming with Constrained Parallelism," IEEE High-Performance Extreme Computing Conference (HPEC), MA, 2022

- Tsung-Wei Huang, "Enhancing the Performance Portability of Heterogeneous Circuit Analysis Programs," IEEE High-Performance Extreme Computing Conference (HPEC), MA, 2022

- Dian-Lun Lin, Haoxing Ren, Yanqing Zhang, and Tsung-Wei Huang, "From RTL to CUDA: A GPU Acceleration Flow for RTL Simulation with Batch Stimulus," ACM International Conference on Parallel Processing (ICPP), Bordeaux, France, 2022

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.