Skip to content

Commit

Permalink
Update to 2020.2
Browse files Browse the repository at this point in the history
Closes wjakob#63
  • Loading branch information
jschueller authored and wjakob committed Jul 13, 2020
1 parent ddbe45c commit faab196
Show file tree
Hide file tree
Showing 927 changed files with 19,569 additions and 6,510 deletions.
4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ matrix:
- os: osx
compiler: clang
script:
- cmake -DTBB_CI_BUILD=ON .
- cmake .
- make -j2
- ctest -j2 --output-on-failure --timeout 500
- os: linux
Expand All @@ -35,6 +35,7 @@ matrix:
- gcc-mingw-w64-x86-64
- binutils-mingw-w64-x86-64
- cmake
- make
- os: linux
compiler: i686-w64-mingw32-g++
script:
Expand All @@ -47,3 +48,4 @@ matrix:
- gcc-mingw-w64-i686
- binutils-mingw-w64-i686
- cmake
- make
154 changes: 147 additions & 7 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,146 @@
The list of most significant changes made over time in
Intel(R) Threading Building Blocks (Intel(R) TBB).

Intel TBB 2020 Update 2
TBB_INTERFACE_VERSION == 11102

Changes (w.r.t. Intel TBB 2020 Update 1):

- Cross-allocator copying constructor and copy assignment operator for
concurrent_vector are deprecated.
- Added input_node to the flow graph API. It acts like a source_node
except for being inactive by default; source_node is deprecated.
- Allocator template parameter for flow graph nodes is deprecated. Set
TBB_DEPRECATED_FLOW_NODE_ALLOCATOR to 1 to avoid compilation errors.
- Flow graph preview hetero-features are deprecated.

Bugs fixed:

- Fixed the task affinity mechanism to prevent unlimited memory
consumption in case the number of threads is explicitly decreased.
- Fixed memory leak related NUMA support functionality in task_arena.

------------------------------------------------------------------------
Intel TBB 2020 Update 1
TBB_INTERFACE_VERSION == 11101

Changes (w.r.t. Intel TBB 2020):

Preview features:

- The NUMA support library (tbbbind) no more depends on the main
TBB library.

Bugs fixed:

- Fixed the issue of task_arena constraints not propagated on
copy construction.
- Fixed TBBGet.cmake script broken by TBB package name changes
(https://github.com/intel/tbb/issues/209).

------------------------------------------------------------------------
Intel TBB 2020
TBB_INTERFACE_VERSION == 11100

Changes (w.r.t. Intel TBB 2019 Update 9):

- Extended task_arena interface to simplify development of NUMA-aware
applications.
- Added warning notifications when the deprecated functionality is used.

Open-source contributions integrated:

- Fixed various build warnings
(https://github.com/intel/tbb/pull/179) by Raf Schietekat.

------------------------------------------------------------------------
Intel TBB 2019 Update 9
TBB_INTERFACE_VERSION == 11009

Changes (w.r.t. Intel TBB 2019 Update 8):

- Multiple APIs are deprecated. For details, please see
Deprecated Features appendix in the TBB reference manual.
- Added C++17 deduction guides for flow graph nodes.

Preview Features:

- Added isolated_task_group class that allows multiple threads to add
and execute tasks sharing the same isolation.
- Extended the flow graph API to simplify connecting nodes.
- Added erase() by heterogeneous keys for concurrent ordered containers.
- Added a possibility to suspend task execution at a specific point
and resume it later.

Bugs fixed:

- Fixed the emplace() method of concurrent unordered containers to
destroy a temporary element that was not inserted.
- Fixed a bug in the merge() method of concurrent unordered
containers.
- Fixed behavior of a continue_node that follows buffering nodes.
- Fixed compilation error caused by missed stdlib.h when CMake
integration is used (https://github.com/intel/tbb/issues/195).
Inspired by Andrew Penkrat.

Open-source contributions integrated:

- Added support for move-only types to tbb::parallel_pipeline
(https://github.com/intel/tbb/pull/159) by Raf Schietekat.
- Fixed detection of clang version when CUDA toolkit is installed
(https://github.com/intel/tbb/pull/150) by Guilherme Amadio.

------------------------------------------------------------------------
Intel TBB 2019 Update 8
TBB_INTERFACE_VERSION == 11008

Changes (w.r.t. Intel TBB 2019 Update 7):

Bugs fixed:

- Fixed a bug in TBB 2019 Update 7 that could lead to incorrect memory
reallocation on Linux (https://github.com/intel/tbb/issues/148).
- Fixed enqueuing tbb::task into tbb::task_arena not to fail on threads
with no task scheduler initialized
(https://github.com/intel/tbb/issues/116).

------------------------------------------------------------------------
Intel TBB 2019 Update 7
TBB_INTERFACE_VERSION == 11007

Changes (w.r.t. Intel TBB 2019 Update 6):

- Added TBBMALLOC_SET_HUGE_SIZE_THRESHOLD parameter to set the lower
bound for allocations that are not released back to OS unless
a cleanup is explicitly requested.
- Added zip_iterator::base() method to get the tuple of underlying
iterators.
- Improved async_node to never block a thread that sends a message
through its gateway.
- Extended decrement port of the tbb::flow::limiter_node to accept
messages of integral types.
- Added support of Windows* to the CMake module TBBInstallConfig.
- Added packaging of CMake configuration files to TBB packages built
using build/build.py script
(https://github.com/intel/tbb/issues/141).

Changes affecting backward compatibility:

- Removed the number_of_decrement_predecessors parameter from the
constructor of flow::limiter_node. To allow its usage, set
TBB_DEPRECATED_LIMITER_NODE_CONSTRUCTOR macro to 1.

Preview Features:

- Added ordered associative containers:
concurrent_{map,multimap,set,multiset} (requires C++11).

Open-source contributions integrated:

- Fixed makefiles to properly obtain the GCC version for GCC 7
and later (https://github.com/intel/tbb/pull/147) by Timmmm.

------------------------------------------------------------------------
Intel TBB 2019 Update 6
TBB_INTERFACE_VERSION == 11006

Expand Down Expand Up @@ -57,7 +197,7 @@ Bugs fixed:
it follows a thread-bound filter.
- Fixed a performance regression observed when multiple parallel
algorithms start simultaneously.

------------------------------------------------------------------------
Intel TBB 2019 Update 4
TBB_INTERFACE_VERSION == 11004
Expand All @@ -66,7 +206,7 @@ Changes (w.r.t. Intel TBB 2019 Update 3):

- global_control class is now a fully supported feature.
- Added deduction guides for tbb containers: concurrent_hash_map,
concurrent_unordered_map, concurrent_unordered_set.
concurrent_unordered_map, concurrent_unordered_set.
- Added tbb::scalable_memory_resource function returning
std::pmr::memory_resource interface to the TBB memory allocator.
- Added tbb::cache_aligned_resource class that implements
Expand All @@ -83,7 +223,7 @@ Changes (w.r.t. Intel TBB 2019 Update 3):

Bugs fixed:

- Fixed compilation for tbb::concurrent_vector when used with
- Fixed compilation for tbb::concurrent_vector when used with
std::pmr::polymorphic_allocator.

Open-source contributions integrated:
Expand Down Expand Up @@ -546,7 +686,7 @@ Changes (w.r.t. Intel TBB 4.4 Update 5):
- Added TBB_USE_GLIBCXX_VERSION macro to specify the version of GNU
libstdc++ when it cannot be properly recognized, e.g. when used
with Clang on Linux* OS. Inspired by a contribution from David A.
- Added graph/stereo example to demostrate tbb::flow::async_msg.
- Added graph/stereo example to demonstrate tbb::flow::async_msg.
- Removed a few cases of excessive user data copying in the flow graph.
- Reworked split_node to eliminate unnecessary overheads.
- Added support for C++11 move semantics to the argument of
Expand Down Expand Up @@ -1257,7 +1397,7 @@ Changes (w.r.t. Intel TBB 4.1 Update 4):
were added on OS X*.
- For OS X* exact exception propagation is supported with Clang;
it requires use of libc++ and corresponding Intel TBB binaries.
- Support for C++11 initializer lists in constructor and assigment
- Support for C++11 initializer lists in constructor and assignment
has been added to concurrent_hash_map, concurrent_unordered_set,
concurrent_unordered_multiset, concurrent_unordered_map,
concurrent_unordered_multimap.
Expand Down Expand Up @@ -1853,7 +1993,7 @@ Changes (w.r.t. 20100310 open-source release):
- Reworked enumerable_thread_specific to use a custom implementation of
hash map that is more efficient for ETS usage models.
- Added example for class task_group; see examples/task_group/sudoku.
- Removed two examples, as they were long outdated and superceded:
- Removed two examples, as they were long outdated and superseded:
pipeline/text_filter (use pipeline/square);
parallel_while/parallel_preorder (use parallel_do/parallel_preorder).
- PDF documentation updated.
Expand Down Expand Up @@ -2071,7 +2211,7 @@ Changes (w.r.t. Intel TBB 2.1 U3 commercial-aligned release):

- Added tests for aligned memory allocations and malloc replacement.
- Several improvements for better bundling with Intel(R) C++ Compiler.
- A few other small changes in code and documentaion.
- A few other small changes in code and documentation.

Bugs fixed:

Expand Down
75 changes: 75 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

tbb_root?=.
cfg?=release
include $(tbb_root)/build/common.inc
.PHONY: default all tbb tbbmalloc tbbproxy test examples

#workaround for non-depend targets tbb and tbbmalloc which both depend on version_string.ver
#According to documentation, recursively invoked make commands can process their targets in parallel
.NOTPARALLEL: tbb tbbmalloc tbbproxy

default: tbb tbbmalloc $(if $(use_proxy),tbbproxy)

all: tbb tbbmalloc tbbproxy test examples

tbb: mkdir
$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbb cfg=release

tbbmalloc: mkdir
$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=release malloc

tbbproxy: mkdir
$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbproxy cfg=release tbbproxy

tbbbind: mkdir
$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbbind cfg=release tbbbind

test: tbb tbbmalloc $(if $(use_proxy),tbbproxy)
-$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=release malloc_test
-$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.test cfg=release

rml: mkdir
$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.rml cfg=release

examples: tbb tbbmalloc
$(MAKE) -C examples -r -f Makefile tbb_root=.. release test

python: tbb
$(MAKE) -C "$(work_dir)_release" -rf $(tbb_root)/python/Makefile install

doxygen:
doxygen Doxyfile

.PHONY: clean clean_examples mkdir info

clean: clean_examples
$(shell $(RM) $(work_dir)_release$(SLASH)*.* >$(NUL) 2>$(NUL))
$(shell $(RD) $(work_dir)_release >$(NUL) 2>$(NUL))
@echo clean done

clean_examples:
$(shell $(MAKE) -s -i -r -C examples -f Makefile tbb_root=.. clean >$(NUL) 2>$(NUL))

mkdir:
$(shell $(MD) "$(work_dir)_release" >$(NUL) 2>$(NUL))
@echo Created the $(work_dir)_release directory

info:
@echo OS: $(tbb_os)
@echo arch=$(arch)
@echo compiler=$(compiler)
@echo runtime=$(runtime)
@echo tbb_build_prefix=$(tbb_build_prefix)
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[![Build Status](https://travis-ci.org/wjakob/tbb.svg?branch=master)](https://travis-ci.org/wjakob/tbb)
[![Build status](https://ci.appveyor.com/api/projects/status/fvepmk5nxekq27r8?svg=true)](https://ci.appveyor.com/project/wjakob/tbb/branch/master)

This is git repository is currently based on TBB 2019 Update 6 and will be
This is git repository is currently based on TBB 2020.2 and will be
updated from time to time to track the most recent release. The only
modification is the addition of a CMake-based build system.

Expand Down
2 changes: 1 addition & 1 deletion build/AIX.gcc.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions build/AIX.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -18,7 +18,7 @@ ifndef arch
endif

ifndef runtime
gcc_version:=$(shell gcc -dumpversion)
gcc_version:=$(shell gcc -dumpfullversion -dumpversion)
os_version:=$(shell uname -r)
os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
Expand Down
2 changes: 1 addition & 1 deletion build/BSD.clang.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions build/BSD.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -25,7 +25,7 @@ ifndef arch
endif

ifndef runtime
clang_version:=$(shell clang -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/")
clang_version:=$(shell clang --version | sed -n "1s/.*version \(.*[0-9]\) .*/\1/p")
os_version:=$(shell uname -r)
os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
export runtime:=cc$(clang_version)_kernel$(os_kernel_version)
Expand Down
2 changes: 1 addition & 1 deletion build/FreeBSD.clang.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions build/FreeBSD.gcc.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -32,7 +32,7 @@ C_FLAGS = $(CPLUS_FLAGS)

# gcc 6.0 and later have -flifetime-dse option that controls
# elimination of stores done outside the object lifetime
ifneq (,$(shell gcc -dumpversion | egrep "^([6-9])"))
ifneq (,$(shell gcc -dumpfullversion -dumpversion | egrep "^([6-9]|1[0-9])"))
# keep pre-contruction stores for zero initialization
DSE_KEY = -flifetime-dse=1
endif
Expand Down
2 changes: 1 addition & 1 deletion build/FreeBSD.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2005-2019 Intel Corporation
# Copyright (c) 2005-2020 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down
Loading

0 comments on commit faab196

Please sign in to comment.