Skip to content

Commit 62b2955

Browse files
author
tbbdev
committed
Committing Intel(R) TBB 4.4 Update 1 source code
1 parent a0eae69 commit 62b2955

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1259
-470
lines changed

CHANGES

+50
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,49 @@
22
The list of most significant changes made over time in
33
Intel(R) Threading Building Blocks (Intel(R) TBB).
44

5+
Intel TBB 4.4 Update 1
6+
TBB_INTERFACE_VERSION == 9001
7+
8+
Changes (w.r.t. Intel TBB 4.4):
9+
10+
- Added support for Microsoft* Visual Studio* 2015.
11+
- Intel TBB no longer performs dynamic replacement of memory allocation
12+
functions for Microsoft Visual Studio 2005 and earlier versions.
13+
- For GCC 4.7 and higher, the intrinsics-based platform isolation layer
14+
uses __atomic_* built-ins instead of the legacy __sync_* ones.
15+
This change is inspired by a contribution from Mathieu Malaterre.
16+
- Improvements in task_arena:
17+
Several application threads may join a task_arena and execute tasks
18+
simultaneously. The amount of concurrency reserved for application
19+
threads at task_arena construction can be set to any value between
20+
0 and the arena concurrency limit.
21+
- The fractal example was modified to demonstrate class task_arena
22+
and moved to examples/task_arena/fractal.
23+
24+
Bugs fixed:
25+
26+
- Fixed a deadlock during destruction of task_scheduler_init objects
27+
when one of destructors is set to wait for worker threads.
28+
- Added a workaround for a possible crash on OS X* when dynamic memory
29+
allocator replacement (libtbbmalloc_proxy) is used and memory is
30+
released during application startup.
31+
- Usage of mutable functors with task_group::run_and_wait() and
32+
task_arena::enqueue() is disabled. An attempt to pass a functor
33+
which operator()() is not const will produce compilation errors.
34+
- Makefiles and environment scripts now properly recognize GCC 5.0 and
35+
higher.
36+
37+
Open-source contributions integrated:
38+
39+
- Improved performance of parallel_for_each for inputs allowing random
40+
access, by Raf Schietekat.
41+
42+
------------------------------------------------------------------------
543
Intel TBB 4.4
644
TBB_INTERFACE_VERSION == 9000
745

46+
Changes (w.r.t. Intel TBB 4.3 Update 6):
47+
848
- The following features are now fully supported:
949
tbb::flow::composite_node;
1050
additional policies of tbb::flow::graph_node::reset().
@@ -60,13 +100,15 @@ Intel TBB 4.3 Update 6
60100
TBB_INTERFACE_VERSION == 8006
61101

62102
Changes (w.r.t. Intel TBB 4.3 Update 5):
103+
63104
- Supported zero-copy realloc for objects >1MB under Linux* via
64105
mremap system call.
65106
- C++11 move-aware insert and emplace methods have been added to
66107
concurrent_hash_map container.
67108
- install_name is set to @rpath/<library name> on OS X*.
68109

69110
Preview Features:
111+
70112
- Added template class async_node to the flow graph API. It allows a
71113
flow graph to communicate with an external activity managed by
72114
the user or another runtime.
@@ -75,6 +117,7 @@ Preview Features:
75117
- extract() method of graph nodes now takes no arguments.
76118

77119
Bugs fixed:
120+
78121
- concurrent_unordered_{set,map} behaves correctly for degenerate
79122
hashes.
80123
- Fixed a race condition in the memory allocator that may lead to
@@ -85,9 +128,11 @@ Intel TBB 4.3 Update 5
85128
TBB_INTERFACE_VERSION == 8005
86129

87130
Changes (w.r.t. Intel TBB 4.3 Update 4):
131+
88132
- Added add_ref_count() method of class tbb::task.
89133

90134
Preview Features:
135+
91136
- Added class global_control for application-wide control of allowed
92137
parallelism and thread stack size.
93138
- memory_pool_allocator now throws the std::bad_alloc exception on
@@ -96,6 +141,7 @@ Preview Features:
96141
std::bad_alloc to std::invalid_argument and std::runtime_error.
97142

98143
Bugs fixed:
144+
99145
- scalable_allocator now throws the std::bad_alloc exception on
100146
allocation failure.
101147
- Fixed a race condition in the memory allocator that may lead to
@@ -104,6 +150,7 @@ Bugs fixed:
104150
might be unable to modify the number of worker threads.
105151

106152
Open-source contributions integrated:
153+
107154
- (Added but not enabled) push_front() method of class tbb::task_list
108155
by Raf Schietekat.
109156

@@ -112,6 +159,7 @@ Intel TBB 4.3 Update 4
112159
TBB_INTERFACE_VERSION == 8004
113160

114161
Changes (w.r.t. Intel TBB 4.3 Update 3):
162+
115163
- Added a C++11 variadic constructor for enumerable_thread_specific.
116164
The arguments from this constructor are used to construct
117165
thread-local values.
@@ -123,6 +171,7 @@ Changes (w.r.t. Intel TBB 4.3 Update 3):
123171
concurrent unordered containers.
124172

125173
Preview Features:
174+
126175
- Interface-breaking change: typedefs changed for node predecessor and
127176
successor lists, affecting copy_predecessors and copy_successors
128177
methods.
@@ -132,6 +181,7 @@ Preview Features:
132181
automatically using the node port with index 0 for an edge.
133182

134183
Open-source contributions integrated:
184+
135185
- Draft code for enumerable_thread_specific constructor with multiple
136186
arguments (see above) by Adrien Guinet.
137187
- Fix for GCC invocation on IBM* Blue Gene*

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Intel(R) Threading Building Blocks 4.4
1+
# Intel(R) Threading Building Blocks 4.4 Update 1
22

33
Intel(R) Threading Building Blocks (Intel(R) TBB) lets you easily write parallel C++ programs that take
44
full advantage of multicore performance, that are portable, composable and have future-proof scalability.
@@ -8,7 +8,7 @@ Here are the latest [Changes] (CHANGES) and [Release Notes]
88
(doc/Release_Notes.txt) (contains system requirements and known issues).
99

1010
## Licensing
11-
Intel(R) TBB 4.4 is licensed under [GPLv2] (COPYING) with the runtime exception.
11+
Intel(R) TBB 4.4 Update 1 is licensed under [GPLv2] (COPYING) with the runtime exception.
1212

1313
## Documentation
1414
* Intel(R) TBB [tutorial] (https://software.intel.com/en-us/tbb-tutorial)

build/android.inc

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ ifneq ("command line","$(origin arch)")
3333
export COMPILER_VERSION := ICC: $(shell icc -V </dev/null 2>&1 | grep 'Version')
3434
ifneq (,$(findstring IA-32, $(COMPILER_VERSION)))
3535
export arch:=ia32
36+
else ifneq (,$(findstring Intel(R) 64, $(COMPILER_VERSION)))
37+
export arch:=intel64
3638
else
3739
$(error "No support for Android in $(COMPILER_VERSION)")
3840
endif

build/linux.gcc.inc

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
4949
endif
5050

5151
# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
52-
ifneq (,$(shell gcc -dumpversion | egrep "^4\.[8-9]"))
52+
ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[8-9]|[5-9])"))
5353
RTM_KEY = -mrtm
5454
endif
5555

build/windows.icl.inc

+3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ endif
126126
ifeq ($(VCCOMPAT_FLAG),)
127127
VCCOMPAT_FLAG := $(if $(findstring vc12, $(VCVERSION)),/Qvc12)
128128
endif
129+
ifeq ($(VCCOMPAT_FLAG),)
130+
VCCOMPAT_FLAG := $(if $(findstring vc14, $(VCVERSION)),/Qvc14)
131+
endif
129132
ifeq ($(VCCOMPAT_FLAG),)
130133
$(error VC version not detected correctly: $(VCVERSION) )
131134
endif

doc/Release_Notes.txt

+11
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ Library Issues
106106
of Microsoft* Visual C++ 10.0 runtime (msvcp100d.dll) in order
107107
to run.
108108

109+
- For applications linked with the debug version of Microsoft*
110+
Universal CRT (ucrtbased.dll, used since Microsoft Visual C++
111+
14.0) dynamic replacement of memory management functions
112+
is not supported.
113+
109114
- If an application uses static MSVCRT libraries or the Intel TBB
110115
library built with static MSVCRT (vc_mt variant), and throws
111116
an exception from a functor passed to task_group::run_and_wait(),
@@ -157,6 +162,12 @@ Library Issues
157162
4.8.2, and 4.9.2), the destructor of a task_group might not
158163
throw missing_wait exception.
159164

165+
- On OS X* 10.11 some examples might fail to run via makefiles in
166+
case System Integrity Protection is enabled. In such case
167+
instead of `make <args>` use the following command:
168+
`run_cmd="DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH" make <args>`
169+
or run executables directly.
170+
160171
------------------------------------------------------------------------
161172
Copyright (C) 2005-2015 Intel Corporation. All Rights Reserved.
162173

doc/html/a00241.html

+9-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)