release-3-7-0

# Release 3.7.0 (2024/05/07)

Download
release-3-7-0_1release-3-7-0_download
System Requirements
release-3-7-0_1release-3-7-0_system_requirements
Release Summary
release-3-7-0_1release-3-7-0_summary
New Features
release-3-7-0_1release-3-7-0_new_features
Taskflow Core
release-3-7-0_1release-3-7-0_taskflow_core
Utilities
release-3-7-0_1release-3-7-0_utilities
Bug Fixes
release-3-7-0_1release-3-7-0_bug_fixes
Breaking Changes
release-3-7-0_1release-3-7-0_breaking_changes
Documentation
release-3-7-0_1release-3-7-0_documentation
Miscellaneous Items
release-3-7-0_1release-3-7-0_miscellaneous_items

Taskflow 3.7.0 is the 8th release in the 3.x line! This release includes several new changes, such as exception support, improved scheduling algorithms, documentation, examples, and unit tests.

# Download

Taskflow 3.7.0 can be downloaded from here.

# System Requirements

To use Taskflow v3.7.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 release introduces a new exception interface to help identify C++ errors in taskflow programs.

# New Features

## Taskflow Core

- Improved scheduling performance of dependent asynchronous tasks

- Improved scheduling performance of module task by removing busy looping

- Improved tf::Executor::wait_for_all using C++20 atomic wait

- Improved tf::Notifier using C++20 atomic wait

- Improved worker-thread ID mapping performance using C++20 atomic wait

- Added `-Wshadow` to the compilation check

- Added tf::AsyncTask::is_done to query the completion status of an async task

- Added tf::Taskflow::remove_dependency to remove dependencies from the graph

- Added support for exception in tf::Taskflow and tf::Executor

    tf::Executorexecutor;
    tf::Taskflowtaskflow;
    taskflow.emplace([](){throwstd::runtime_error("exception");});
    try{
    executor.run(taskflow).get();
    }
    catch(conststd::runtime_error&e){
    std::cerr<<e.what()<<std::endl;
    }

- Modified the CI to exclude exception test under sanitizers

- Modified the tf::PartitionerBase to allow defining custom closure wrappers

    std::atomic<int>count=0;
    tf::Taskflowtaskflow;
    taskflow.for_each_index(0,100,1,
    [](){
    printf("%d\n",i);
    },
    tf::StaticPartitioner(0,[](auto&&closure){
    //dosomethingbeforeinvokingthepartitionedtask
    //...

    //invokethepartitionedtask
    closure();

    //dosomethingelseafterinvokingthepartitionedtask
    //...
    }
    );
    executor.run(taskflow).wait();

## Utilities

# Bug Fixes

- Fixed compilation error of CUDA examples caused by not including `for_each.hpp`

- Fixed the runtime error of tf::Taskflow::for_each_index when the range invalid

# Breaking Changes

- Renamed tf::Runtime::join to tf::Runtime::corun_all

- Removed tf::WorkerInterface due to the support of exception

# Documentation

- Revised Asynchronous Tasking with Dependencies

  - Added Query the Completion Status of Dependent Async Tasks

- Revised Exception Handling

- Revised Executor

  - Removed the section of tf::WorkerInterface

- Revised Partitioning Algorithm

# Miscellaneous Items

We have published Taskflow in the following venues:

- Cheng-Hsiang Chiu, Zhicheng Xiong, Zizheng Guo, Tsung-Wei Huang, and Yibo Lin, "An Efficient Task-parallel Pipeline Programming Framework," ACM International Conference on High-performance Computing in Asia-Pacific Region (HPC Asia), Nagoya, Japan, 2024

- Cheng-Hsiang Chiu, Dian-Lun Lin, and Tsung-Wei Huang,, "Programming Dynamic Task Parallelism for Heterogeneous EDA Algorithms," IEEE/ACM International Conference on Computer-aided Design (ICCAD), San Francisco, CA, 2023

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.