namespace tf { /** @page release-3-3-0 Release 3.3.0 (2022/01/03) %Taskflow 3.3.0 is the 4th release in the 3.x line! This release includes several new changes, such as sanitized data race, pipeline parallelism, documentation, and unit tests. @note We highly recommend that adopting %Taskflow v3.3 in your projects if possible. This release has resolved pretty much all the potential data-race issues induced by incorrect memory order. @tableofcontents @section release-3-3-0_download Download %Taskflow 3.3.0 can be downloaded from here. @section release-3-3-0_system_requirements System Requirements To use %Taskflow v3.3.0, you need a compiler that supports C++17: @li GNU C++ Compiler at least v8.4 with -std=c++17 @li Clang C++ Compiler at least v6.0 with -std=c++17 @li Microsoft Visual Studio at least v19.27 with /std:c++17 @li AppleClang Xcode Version at least v12.0 with -std=c++17 @li Nvidia CUDA Toolkit and Compiler (nvcc) at least v11.1 with -std=c++17 @li Intel C++ Compiler at least v19.0.1 with -std=c++17 @li Intel DPC++ Clang Compiler at least v13.0.0 with -std=c++17 and SYCL20 %Taskflow works on Linux, Windows, and Mac OS X. @section release-3-3-0_summary Release Summary 1. This release has resolved data race issues reported by [tsan](https://github.com/google/sanitizers) and has incorporated essential sanitizers into the @CI for detecting data race, illegal memory access, and memory leak of the %Taskflow codebase. 2. This release has introduced a new pipeline interface (tf::Pipeline) that allow users to create a pipeline scheduling framework for implementing pipeline algorithms. 3. This release has introduced a new thread-id mapping algorithm to resolve unexpected thread-local storage (TLS) errors when building %Taskflow projects in a shared library environment. @section release-3-3-0_new_features New Features @subsection release-3-3-0_taskflow_core Taskflow Core + Changed all lambda operators in parallel algorithms to copy by default + Cleaned up data race errors in [tsan](https://github.com/google/sanitizers) caused by incorrect memory order + Enhanced scheduling performance by caching tasks in the invoke loop + Added tf::Task::data to allow associating a task with user-level data + Added tf::Executor::named_async to allow associating an asynchronous task a name + Added tf::Executor::named_silent_async to allow associating a silent asynchronous task a name + Added tf::Subflow::named_async to allow associating an asynchronous task a name + Added tf::Subflow::named_silent_async to allow associating a silent asynchronous task a name + Added multi-conditional tasking to allow a task to jump to multiple successors + Added tf::Runtime tasking interface to enable in-task scheduling control + Added tf::Taskflow::transform to perform parallel-transform algorithms + Added tf::Graph interface to allow users to create custom module tasks + Added tf::FlowBuilder::erase to remove a task from the associated graph @subsection release-3-3-0_cudaflow cudaFlow Starting from v3.3, using tf::cudaFlow needs to include the header, `%taskflow/cuda/cudaflow.hpp`. See @ref release-3-3-0_breaking_changes. @subsection release-3-3-0_syclflow syclFlow This release does not have any update on %syclFlow. @subsection release-3-3-0_utilities Utilities + Added tf::SmallVector to the documentation + Added relax_cpu call to optimize the work-stealing loop @subsection release-3-3-0_profiler Taskflow Profiler (TFProf) This release does not have any update on the profiler. @section release-3-3-0_bug_fixes Bug Fixes + Fixed incorrect static TLS access when building %Taskflow in a shared lib + Fixed memory leak in updating tf::cudaFlowCapturer of undestroyed graph + Fixed data race in the object-pool when accessing the heap pointer + Fixed invalid lambda capture by reference in tf::Taskflow::sort + Fixed invalid lambda capture by reference in tf::Taskflow::reduce + Fixed invalid lambda capture by reference in tf::Taskflow::transform_reduce + Fixed invalid lambda capture by reference in tf::Taskflow::for_each + Fixed invalid lambda capture by reference in tf::Taskflow::for_each_index If you encounter any potential bugs, please submit an issue at @IssueTracker. @section release-3-3-0_breaking_changes Breaking Changes For the purpose of compilation speed, you will need to separately include the follwoing files for using specific features and algorithms: + `%taskflow/algorithm/reduce.hpp` for creating a parallel-reduction task + `%taskflow/algorithm/sort.hpp` for creating a parallel-sort task + `%taskflow/algorithm/transform.hpp` for creating a parallel-transform task + `%taskflow/algorithm/pipeline.hpp` for creating a parallel-pipeline task + `%taskflow/cuda/cudaflow.hpp` for creating a tf::cudaFlow and a tf::cudaFlowCapturer tasks + `%taskflow/cuda/algorithm/for_each.hpp` for creating a single-threaded task on a CUDA GPU + `%taskflow/cuda/algorithm/for_each.hpp` for creating a parallel-iteration task on a CUDA GPU + `%taskflow/cuda/algorithm/transform.hpp` for creating a parallel-transform task on a CUDA GPU + `%taskflow/cuda/algorithm/reduce.hpp` for creating a parallel-reduce task on a CUDA GPU + `%taskflow/cuda/algorithm/scan.hpp` for creating a parallel-scan task on a CUDA GPU + `%taskflow/cuda/algorithm/merge.hpp` for creating a parallel-merge task on a CUDA GPU + `%taskflow/cuda/algorithm/sort.hpp` for creating a parallel-sort task on a CUDA GPU + `%taskflow/cuda/algorithm/find.hpp` for creating a parallel-find task on a CUDA GPU @section release-3-3-0_deprecated_items Deprecated and Removed Items This release does not have any deprecated and removed items. @section release-3-3-0_documentation Documentation + Revised @ref install + @ref BAIBuildSanitizers + Revised @ref StaticTasking + @ref AttachUserDataToATask + Revised @ref ComposableTasking + @ref CreateACustomComposableGraph + Revised @ref ConditionalTasking + @ref CreateAMultiConditionTask + Revised @ref GPUTaskingcudaFlow + Revised @ref GPUTaskingcudaFlowCapturer + Revised @ref LimitTheMaximumConcurrency + @ref DefineAConflictGraph + Revised @ref ParallelSort to add header-include information + Revised @ref ParallelReduction to add header-include information + Revised @ref cudaFlowAlgorithms to add header-include information + Revised @ref cudaStandardAlgorithms to add header-include information + Added @ref RuntimeTasking + Added @ref ParallelTransforms + Added @ref TaskParallelPipeline @section release-3-3-0_miscellaneous_items Miscellaneous Items We have published %Taskflow in the following venues: 1. Tsung-Wei Huang, Dian-Lun Lin, Chun-Xun Lin, and Yibo Lin, "[Taskflow: A Lightweight Parallel and Heterogeneous Task Graph Computing System](https://tsung-wei-huang.github.io/papers/tpds21-taskflow.pdf)," IEEE Transactions on Parallel and Distributed Systems (TPDS), vol. 33, no. 6, pp. 1303-1320, June 2022 2. Tsung-Wei Huang, "[TFProf: Profiling Large Taskflow Programs with Modern D3 and C++](https://tsung-wei-huang.github.io/papers/tpds21-taskflow.pdf)," IEEE International Workshop on Programming and Performance Visualization Tools (ProTools), St. Louis, Missouri, 2021 Please do not hesitate to contact @twhuang if you intend to collaborate with us on using %Taskflow in your scientific computing projects. */ }