Where to Find the Release
Intel® oneAPI Threading Building Blocks
New in 2022.0 Release
New Features
- Extended the Flow Graph receiving nodes with a new try_put_and_wait API that submits a message to the graph and waits for its completion.
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
- When CPU resource coordination is enabled, tasks from a lower-priority task_arena might be executed before tasks from a higher-priority task_arena.
- Note: To see known limitations that impact all versions of oneTBB, refer to oneTBB Developer Guide and Reference.
Fixed Issues
- Fixed the missed signal for thread request for enqueue operation.
- Significantly improved scalability of task_group, flow_graph, and parallel_for_each.
- Removed usage of std::aligned_storage deprecated in C++23 (Inspired by Valery Matskevich https://github.com/oneapi-src/oneTBB/pull/1394).
- Fixed the issue where `oneapi::tbb::info` interfaces might interfere with the process affinity mask on the Windows* OS systems with multiple processor groups.
Open-source Contributions Integrated
- Detect the GNU Binutils version to determine WAITPKG support better. Contributed by Martijn Courteaux (https://github.com/oneapi-src/oneTBB/pull/1347).
New in 2021.13 Release
New Features
- Extended the parallel_reduce and parallel_deterministic_reduce functional form API to better support rvalues reduction (GitHub* #1299).
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
- When CPU resource coordination is enabled, tasks from a lower-priority task_arena might be executed before tasks from a higher-priority task_arena.
- Note: To see known limitations that impact all versions of oneTBB, refer to oneTBB Developer Guide and Reference.
Fixed Issues
- Improved security by excluding CWD from search of load-time dependencies.
- Improved performance on Apple* platforms by aligning block-time behavior with other OS.
- Improved performance on non-hybrid CPU hardware by reworking block-time behavior.
- Improved performance on ARM64 platform by fixing backoff behavior for spin loops.
- Improved performance when constraints API is used on server CPU HW with multiple NUMA nodes.
Open-source Contributions Integrated
- Improved WASM support by fixing a segmentation fault happening if global tbb::task_scheduler_observer is used. Contributed by Santiago Ospina De Los Ríos (https://github.com/oneapi-src/oneTBB/pull/1346).
Third Party Programs File
This file is the "third-party-programs.txt" file specified in the associated Intel end user license
agreement for the Intel software you are licensing.
The third party programs and their corresponding required notices and/or license
terms are listed below.
_______________________________________________________________________________________________________
1. Instrumentation and Tracing Technology (ITT) Notify User API:
Copyright (c) 2022 Intel Corporation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
_______________________________________________________________________________________________________
2. Portable Hardware Locality (hwloc):
Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana University Research and
Technology Corporation. All rights reserved.
Copyright (c) 2004-2005 The University of Tennessee and The University of Tennessee Research
Foundation. All rights reserved.
Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart.
All rights reserved.
Copyright (c) 2004-2005 The Regents of the University of California. All rights reserved.
Copyright (c) 2009 CNRS
Copyright (c) 2009-2016 Inria. All rights reserved.
Copyright (c) 2009-2015 Université Bordeaux
Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved.
Copyright (c) 2009-2012 Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2010 IBM
Copyright (c) 2010 Jirka Hladky
Copyright (c) 2012 Aleksej Saushev, The NetBSD Foundation
Copyright (c) 2012 Blue Brain Project, EPFL. All rights reserved.
Copyright (c) 2013-2014 University of Wisconsin-La Crosse. All rights reserved.
Copyright (c) 2015 Research Organization for Information Science and Technology (RIST).
All rights reserved.
Copyright (c) 2015-2016 Intel, Inc. All rights reserved.
See COPYING in top-level directory.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
_______________________________________________________________________________________________________
3. gperftools: Copyright (c) 2011, Google Inc.
Tachyon: Copyright (c) 1994-2008 John E. Stone. All rights reserved.
BSD 3-Clause "New" or "Revised" License
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
_______________________________________________________________________________________________________
4. Standard MSVS 2015/2017 runtime library: (c) 2015 Microsoft Corporation (applies to use with
the Windows OS only).
Terms for Microsoft "Distributable Code" provided as part of Microsoft's Visual Studio Enterprise
and Professional software.
1. License. This software package from Intel (the "Software Package") contains code from Microsoft
(the "Distributable Code").
You are provided a non-transferable, non-exclusive, non-sublicensable, limited right and
license only to use the Distributable Code as part of this Software Package.
You are not allowed to copy, modify, remove the Distributable Code from the Software Package
or redistribute the Distributable Code.
2. Restrictions. The Distributable Code is licensed, not sold. You are only provided the above
rights to use the Distributable Code.
Intel and Microsoft reserve all other rights. Unless applicable law gives you more rights,
you may use the Distributable Code only as expressly permitted in these terms.
In using the Distributable Code, you must comply with any technical limitations in
the Distributable Code that only allow you to use it in certain ways. You may not:
* work around any technical limitations in the Distributable Code;
* reverse engineer, decompile or disassemble the software, or otherwise attempt to derive
the source code for the Distributable Code, except and to the extent required by third party
licensing terms governing use of certain open source components that may be included in
the Distributable Code;
* remove, minimize, block or modify any notices of Intel, Microsoft or its suppliers in the
Distributable Code;
* use the Distributable Code in any way that is against the law;
* share, publish, rent or lease the software, or provide the Distributable Code as a stand-alone
offering for others to use.
3. NO WARRANTY. THE DISTRIBUTABLE CODE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED
WARRANTY OF ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR
A PARTICULAR PURPOSE.
4. LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM INTEL, MICROSOFT OR THEIR SUPPLIERS
ONLY DIRECT DAMAGES UP TO $5.00.
YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT
OR INCIDENTAL DAMAGES.
This limitation applies to (a) anything related to the Distributable Code; and (b) claims
for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence,
or other tort to the extent permitted by applicable law. It also applies even if Intel or
Microsoft knew or should have known about the possibility of the damages. The above limitation
or exclusion may not apply to you because your state or country may not allow the exclusion
or limitation of incidental, consequential or other damages.
5. Export Restrictions. You must comply with all domestic and international export laws and
regulations that apply to the software, which include restrictions on destinations, end users,
and end use. For further information on export restrictions, visit www.microsoft.com/exporting.
_______________________________________________________________________________________________________
5. Mateusz Kwiatkowski Workaround for bug 62258 in libstdc++
********************************************************************************
* Author: Mateusz Kwiatkowski <m.kwiatkowski@avsystem.com> *
* *
* I hereby renounce all copyright to this file and my rights resulting from *
* it, to the broadest extent permitted by law. It may be treated as public *
* domain. *
* *
* However, as this file interfaces with GCC internal ABI, it may be subject to *
* the terms and conditions of the GNU General Public License. Please consult *
* the GCC licensing terms and/or a lawyer for details. *
* *
* Note that libstdc++ licensing terms grant additional permissions described *
* in the GCC Runtime Library Exception, version 3.1, as published by the *
* Free Software Foundation. *
*******************************************************************************/
_______________________________________________________________________________________________________
6. Thread Composability Manager
Copyright (c) 2023 Intel Corporation.
Intel Simplified Software License (Version October 2022)
Use and Redistribution. You may use and redistribute the software,
which is provided in binary form only, (the "Software"), without
modification, provided the following conditions are met:
* Redistributions must reproduce the above copyright notice and these
terms of use in the Software and in the documentation and/or other
materials provided with the distribution.
* Neither the name of Intel nor the names of its suppliers may be used to
endorse or promote products derived from this Software without specific
prior written permission.
* No reverse engineering, decompilation, or disassembly of the Software is
permitted, nor any modification or alteration of the Software or its
operation at any time, including during execution.
No other licenses. Except as provided in the preceding section, Intel grants no
licenses or other rights by implication, estoppel or otherwise to, patent,
copyright, trademark, trade name, service mark or other intellectual property
licenses or rights of Intel.
Third party software. "Third Party Software" means the files (if any) listed
in the "third-party-software.txt" or other similarly-named text file that may be
included with the Software. Third Party Software, even if included with
the distribution of the Software, may be governed by separate license terms,
including without limitation, third party license terms, open source software
notices and terms, and/or other Intel software license terms. These separate
license terms solely govern Your use of the Third Party Software.
DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE
DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS
WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE
THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND
ATTORNEYS' FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT
INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE.
LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
No support. Intel may make changes to the Software, at any time without notice,
and is not obligated to support, update or provide training for the Software.
Termination. Your right to use the Software is terminated in the event of your
breach of this license.
Feedback. Should you provide Intel with comments, modifications, corrections,
enhancements or other input ("Feedback") related to the Software, Intel will be
free to use, disclose, reproduce, license or otherwise distribute or exploit the
Feedback in its sole discretion without any obligations or restrictions of any kind,
including without limitation, intellectual property rights or licensing obligations.
Compliance with laws. You agree to comply with all relevant laws and regulations
governing your use, transfer, import or export (or prohibition thereof) of the
Software.
Governing law. All disputes will be governed by the laws of the United States of
America and the State of Delaware without reference to conflict of law
principles and subject to the exclusive jurisdiction of the state or federal
courts sitting in the State of Delaware, and each party agrees that it submits
to the personal jurisdiction and venue of those courts and waives any
objections. THE UNITED NATIONS CONVENTION ON CONTRACTS FOR THE INTERNATIONAL
SALE OF GOODS (1980) IS SPECIFICALLY EXCLUDED AND WILL NOT APPLY TO THE SOFTWARE.
_______________________________________________________________________________________________________
7. ActiveState Thread pool with same API as (multi) processing. Pool (Python recipe)
#
# Copyright (c) 2008,2016 david decotigny (this file)
# Copyright (c) 2006-2008, R Oudkerk (multiprocessing.Pool)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of author nor the names of any contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
_______________________________________________________________________________________________________
8. doctest
Copyright (c) 2016-2023 Viktor Kirilov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
_______________________________________________________________________________________________________
*Other names and brands may be claimed as the property of others.
New in 2021.12 Release
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
- When CPU resource coordination is enabled, tasks from a lower-priority task_arena might be executed before tasks from a higher-priority task_arena.
- Note: To see known limitations that impact all versions of oneTBB, refer to oneTBB Developer Guide and Reference.
Fixed Issues
- Fixed parallel_for_each algorithm behavior for iterators defining iterator_concept trait instead of iterator_category.
- Fixed the redefinition issue for std::min and std::max on Windows* OS (GitHub* #832).
- Fixed the incorrect binary search order in TBBConfig.cmake.
- Enabled the oneTBB library search using the pkg-config tool in Conda packages.
Open-source Contributions Integrated
- Fixed the compiler warning for missing virtual destructor. Contributed by Elias Engelbert Plank (https://github.com/oneapi-src/oneTBB/pull/1215).
New in 2021.11 Release
New Features
- oneTBB can now coordinate with Intel® OpenMP Runtime on CPU resource usage to avoid excessive oversubscription when both runtimes are used within a process. To use it, set the “TCM_ENABLE” environmental variable to 1.
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
- When CPU resource coordination is enabled, tasks from a lower-priority task_arena might be executed before tasks from a higher-priority task_arena.
- Using TBBConfig.cmake in 32-bit environment may cause incorrect linkage with 64-bit oneTBB library. As a workaround, set CMAKE_PREFIX_PATH:
- On Linux* OS: to TBBROOT/lib32/
- On Windows* OS: to TBBROOT/lib32/;TBBROOT/bin32/
- Note: To see known limitations that impact all versions of oneTBB, refer to oneTBB Developer Guide and Reference.
Fixed Issues
- Fixed tbb::this_task_arena() behavior for specific tbb::task_arena{1,0}.
- Restored performance on systems with a high number of CPU cores that support _tpause.
New in 2021.10 Release
New Features
- Since C++17, parallel algorithms and Flow Graph nodes are allowed to accept pointers to the member functions and member objects as the user-provided callables.
- Added missed member functions, such as assignment operators and swap function, to the concurrent_queue and concurrent_bounded_queue containers.
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- A static assert will cause compilation failures in oneTBB headers when compiling with clang 12.0.0 or newer if using the LLVM standard library with -ffreestanding and C++11/14 compiler options.
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
Fixed Issues
- Fixed the hang in the reserve method of concurrent unordered containers (GitHub* #1056).
- Fixed the C++20 three-way comparison feature detection (GitHub* #1093).
- Fixed oneTBB integration with CMake* in the Conda* environment.
New in 2021.9 Release
New Features
- Hybrid CPU support is now a fully supported feature.
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- A static assert will cause compilation failures in oneTBB headers when compiling with clang 12.0.0 or newer if using the LLVM standard library with -ffreestanding and C++11/14 compiler options.
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
Fixed Issues
- Improved robustness of thread creation algorithm on Linux* OS.
- Enabled full support of Thread Sanitizer on macOS*
- Fixed the issue with destructor calls for uninitialized objects in oneapi::tbb::parallel_for_each algorithm (GitHub* #691)
- Fixed the issue with tbb::concurrent_lru_cache when items history capacity is zero (GitHub* #265)
- Fixed compilation issues on modern GCC* versions
Open-source Contributions Integrated
- Fixed the issue reported by the Address Sanitizer. Contributed by Rui Ueyama (https://github.com/oneapi-src/oneTBB/pull/959).
- Fixed the input_type alias exposed by flow_graph::join_node. Contributed by Deepan (https://github.com/oneapi-src/oneTBB/pull/868).
New in 2021.8 Release
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- A static assert will cause compilation failures in oneTBB headers when compiling with clang 12.0.0 or newer if using the LLVM standard library with -ffreestanding and C++11/14 compiler options.
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
Fixed Issues
- Fixed oneapi::tbb::concurrent_bounded_queue::pop return type (GitHub* #807).
- Fixed oneapi::tbb::concurrent_queue and oneapi::tbb::concurrent_bounded_queue with non-default constructible value types (GitHub* #885).
- Fixed incorrect splitting of iteration space in case there is no support for proportional splitting in custom ranges.
New in 2021.7 Release
Known Limitations
- Intel® oneAPI Toolkits 2022.1.3 and earlier and Intel® Parallel Studio XE (any version) do not support Microsoft Visual Studio 2022. On systems with Microsoft Visual Studio 2022 installed, Intel® oneAPI and Intel® Parallel Studio XE installers may fail during installation, upgrade, modification, or uninstallation. Refer to this article for more information.
- A static assert will cause compilation failures in oneTBB headers when compiling with clang 12.0.0 or newer if using the LLVM standard library with -ffreestanding and C++11/14 compiler options.
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
Fixed Issues
- Memory allocator crash when allocating ~1TB on 64-bit systems (GitHub* #838).
- Thread Distribution over NUMA Nodes on Windows OS systems.
- For oneapi::tbb::suspend it is now guaranteed that the user-specified callable object is executed by the calling thread.
New in 2021.6 Release
New Features
- Improved support and use of the latest C++ standards for parallel_sort that allows using this algorithm with user-defined and standard library-defined objects with modern semantics.
- The following features are now fully functional: task_arena extensions, collaborative_call_once, adaptive mutexes, heterogeneous overloads for concurrent_hash_map, and task_scheduler_handle.
- Added support for Windows* Server 2022 and Python 3.10.
Known Limitations
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
Fixed Issues
- Memory allocator crash on a system with an incomplete /proc/meminfo (GitHub* #584).
- Incorrect blocking of task stealing (GitHub* #478).
- Hang due to incorrect decrement of a limiter_node (GitHub* #634).
- Memory corruption in some rare cases when passing big messages in a flow graph (GitHub* #639).
- Possible deadlock in a throwable flow graph node with a lightweight policy. The lightweight policy is now ignored for functors that can throw exceptions (GitHub* #420).
- Crash when obtaining a range from empty ordered and unordered containers (GitHub* #641).
- Deadlock in a concurrent_vector resize() that could happen when the new size is less than the previous size (GitHub* #733).
Open-source Contributions Integrated
- Improved aligned memory allocation. Contributed by Andrey Semashev (https://github.com/oneapi-src/oneTBB/pull/671)
- Optimized usage of atomic_fence on IA-32 and Intel(R) 64 architectures. Contributed by Andrey Semashev (https://github.com/oneapi-src/oneTBB/pull/328)
- Fixed incorrect definition of the assignment operator in containers. Contributed by Andrey Semashev (https://github.com/oneapi-src/oneTBB/issues/372)
New in 2021.5 Release
Preview Features
- Extended task_group interface with a new run_and_wait overload to accept task_handle.
New Features
- Enabled Microsoft Visual Studio* 2022 and Python 3.9 support.
Known Limitations
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293).
Fixed Issues
- Reworked synchronization mechanism to reduce contention when multiple task_arena's are used concurrently.
- Fixed possible correctness issue in queuing_rw_mutex on non-Intel platforms.
- Fixed GCC* 11 warnings.
- Fixed sporadic memory corruption.
New in 2021.4 Release
Preview Features
- Introduced the collaborative_call_once algorithm that executes the callable object exactly once, but allows other threads to join oneTBB parallel construction used inside this callable object. Inspired by Ben FrantzDale and Henry Heffan.
Known Limitations
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux* OS, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) are installed in a system folder like /usr/lib64, the application may fail to link due to the order in which the linker searches for libraries. Use the -L linker option to specify the correct location of oneTBB library. This issue does not affect the program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
- The NUMA topology may be detected incorrectly on Windows OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- oneTBB does not support fork(), to work-around the issue, consider using task_scheduler_handle to join oneTBB worker threads before using fork().
Fixed Issues
- Enabled full support of Address Sanitizer and Thread Sanitizer.
- Fixed a race condition in tbbmalloc that may cause a crash in realloc() when using tbbmalloc_proxy.
- Enabled GCC* 11 support.
- Fixed limiter_node behavior when an integral type is used as an argument for the DecrementType template parameter.
- Fixed a possible memory leak when the static or affinity partitioners are used.
- Fixed possible system oversubscription when using a process mask and an explicit number of threads in the task arena.
Open-source Contributions Integrated
- Enabled PowerPC* Linux* OS support. Contributed by Mircho Rodozov (https://github.com/oneapi-src/oneTBB/pull/461)
- Improved UNIX* system support and enabled QNX Neutrino* RTOS support. Contributed by Pablo Romero (https://github.com/oneapi-src/oneTBB/pull/440)
- Enabled experimental Bazel* build system support. Contributed by Julian Amann (https://github.com/oneapi-src/oneTBB/pull/442)
- Enabled oneTBB build for Windows* OS on ARM64*. Contributed by Michael Vitrano (https://github.com/oneapi-src/oneTBB/pull/507)
- Added MinGW* and export attributes support. Contributed by Long Nguyen (https://github.com/oneapi-src/oneTBB/pull/351)
New in 2021.3 Release
New Features
- Since C++20 multiple interfaces are constrained to enforce requirements on argument types.
Preview Features
- Extended the high-level task API to simplify migration from TBB to oneTBB.
- Added mutex and rw_mutex that are suitable for long critical sections and resistant to high contention.
- Added ability to customize the concurrent_hash_map mutex type.
- Added heterogeneous lookup, erase, and insert operations to concurrent_hash_map.
Known Limitations
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) is installed in a system folder like /usr/lib64, the application may fail to link due to the linker search order for libraries. Use the -L linker option to specify the correct location of oneTBB libraries. This issue does not affect program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows systems (see https://github.com/open-mpi/hwloc/issues/366 for details).
Fixed Issues
- Fixed several issues in parallel algorithms and concurrent containers on ARM.
- Improved ThreadSanitizer support for the oneTBB Scalable Memory Allocator.
- Improved scheduler to reduce the impact of thread priority inversion.
- Fixed the behavior of affinity_partitioner and static_partitioner to resolve possible performance issues.
- Fixed crash when finalize is called with null scheduler_handler.
- Fixed the oneTBB assertion mechanism to avoid possible leaking of user directory paths.
- Fixed crash in resumable tasks on ARM-based macOS.
- Fixed compilation failures:
- with compilers supporting the WAITPKG feature (https://github.com/oneapi-src/oneTBB/issues/370)
- on macOS with Clang and GNU compilers and on ARM-based platforms (https://github.com/oneapi-src/oneTBB/issues/344). Inspired by Tao He (https://github.com/oneapi-src/oneTBB/pull/360)
- with Ninja generator and Clang compiler (https://github.com/oneapi-src/oneTBB/issues/364)
Open-source Contributions Integrated
- Improved replacing function attributes in tbbmalloc_proxy. Inspired by Steve Bronder (https://github.com/oneapi-src/oneTBB/pull/359).
New in 2021.2 Release
New Features
- Added three-way comparison operators for concurrent ordered containers and concurrent_vector.
Preview Features
- Extended task_arena constraints to support Intel Hybrid Technology and Intel Hyper-Threading Technology. To enable the feature set TBB_PREVIEW_TASK_ARENA_CONSTRAINTS_EXTENSION to 1.
Known Limitations
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) has been installed to a system folder like /usr/lib64, the application may fail to link due to the linker search order for libraries. Use the -L linker option to specify the correct location of oneTBB libraries. This issue does not affect program execution.
- The oneapi::tbb::info namespace interfaces might unexpectedly change the process affinity mask on Windows systems (see https://github.com/open-mpi/hwloc/issues/366 for details).
Fixed Issues
- Fixed C++17 Class Template Argument Deduction detection on Clang. Inspired by Dan Riley (https://github.com/oneapi-src/oneTBB/issues/284).
- Reworked C++17 Class Template Argument Deduction in concurrent containers to avoid compilation issues. Inspired by Anatoliy V Tomilov (https://github.com/oneapi-src/oneTBB/issues/301).
- Fixed compilation issues with GCC 9.3.0 on Ubuntu 20.04. Inspired by quicky2000 (https://github.com/oneapi-src/oneTBB/issues/312).
- Fixed parallel_for_each compilation issues for non-copyable elements. Inspired by Andrey Semashev (https://github.com/oneapi-src/oneTBB/issues/321).
- Fixed parallel_for_each semantics for input iterators and rvalue reference.
- Fixed a race in task_arena::enqueue that might affect behavior of task_arena initialized with 1 thread.
- Fixed a race in oneTBB scheduler that might affect affinity_partitioner behavior on CPUs that are not Intel® Architecture Processors.
New in 2021.1 Release
Changes affecting backward compatibility
- The code base was revamped to improve the usability and simplify the library, see TBB Revamp: Background, Changes, and Modernization. This version of the library is not backward compatible with any of the previous releases.
New Features
- Concurrent ordered containers, task_arena interface extension for NUMA, flow graph API to support relative priorities for functional nodes and resumable tasks are fully supported now.
- Added the terminate_on_exception property for global_control to prevent exceptions from the oneTBB library and terminate the library instead of throwing an exception.
- Reworked error handling for thread creation API to throw an exception to report an error. Inspired by Andrey Semashev (https://github.com/oneapi-src/oneTBB/issues/255).
- Upgraded the oneTBB Python module from Python2 to Python3. Inspired by Eisuke Kawashima (https://github.com/oneapi-src/oneTBB/pull/240).
- Implemented task_arena interface extension to specify priority of the arena.
Preview Features
- Introduced the task_scheduler_handler class as a replacement for blocking terminate extension of the task_scheduler_init class.
Known Limitations
- An application using Parallel STL algorithms in libstdc++ versions 9 and 10 may fail to compile due to incompatible interface changes between earlier versions of Threading Building Blocks (TBB) and oneAPI Threading Building Blocks (oneTBB). Disable support for Parallel STL algorithms by defining PSTL_USE_PARALLEL_POLICIES (in libstdc++ 9) or _GLIBCXX_USE_TBB_PAR_BACKEND (in libstdc++ 10) macro to zero before inclusion of the first standard header file in each translation unit.
- On Linux, if oneAPI Threading Building Blocks (oneTBB) or Threading Building Blocks (TBB) has been installed to a system folder like /usr/lib64, the application may fail to link due to the linker search order for libraries. Use the -L linker option to specify the correct location of oneTBB libraries. This issue does not affect program execution.
Fixed Issues
- Fixed compilation errors in C++20 mode due to ambiguity of comparison operators. Inspired by Barry Revzin (https://github.com/oneapi-src/oneTBB/pull/251).
- Resolved a possible over-subscription issue. Inspired by Andrey Semashev (https://github.com/oneapi-src/oneTBB/issues/255).
- Improved exception support in task arena. Inspired by Chris Jones (https://github.com/oneapi-src/oneTBB/issues/273).
Notices and Disclaimers
Intel technologies may require enabled hardware, software or service activation.
No product or component can be absolutely secure.
Your costs and results may vary.
© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.