Skip to content

Commit

Permalink
Committing Intel(R) TBB 4.4 Update 1 source code
Browse files Browse the repository at this point in the history
  • Loading branch information
tbbdev committed Sep 15, 2016
1 parent a0eae69 commit 62b2955
Show file tree
Hide file tree
Showing 71 changed files with 1,259 additions and 470 deletions.
50 changes: 50 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,49 @@
The list of most significant changes made over time in
Intel(R) Threading Building Blocks (Intel(R) TBB).

Intel TBB 4.4 Update 1
TBB_INTERFACE_VERSION == 9001

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

- Added support for Microsoft* Visual Studio* 2015.
- Intel TBB no longer performs dynamic replacement of memory allocation
functions for Microsoft Visual Studio 2005 and earlier versions.
- For GCC 4.7 and higher, the intrinsics-based platform isolation layer
uses __atomic_* built-ins instead of the legacy __sync_* ones.
This change is inspired by a contribution from Mathieu Malaterre.
- Improvements in task_arena:
Several application threads may join a task_arena and execute tasks
simultaneously. The amount of concurrency reserved for application
threads at task_arena construction can be set to any value between
0 and the arena concurrency limit.
- The fractal example was modified to demonstrate class task_arena
and moved to examples/task_arena/fractal.

Bugs fixed:

- Fixed a deadlock during destruction of task_scheduler_init objects
when one of destructors is set to wait for worker threads.
- Added a workaround for a possible crash on OS X* when dynamic memory
allocator replacement (libtbbmalloc_proxy) is used and memory is
released during application startup.
- Usage of mutable functors with task_group::run_and_wait() and
task_arena::enqueue() is disabled. An attempt to pass a functor
which operator()() is not const will produce compilation errors.
- Makefiles and environment scripts now properly recognize GCC 5.0 and
higher.

Open-source contributions integrated:

- Improved performance of parallel_for_each for inputs allowing random
access, by Raf Schietekat.

------------------------------------------------------------------------
Intel TBB 4.4
TBB_INTERFACE_VERSION == 9000

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

- The following features are now fully supported:
tbb::flow::composite_node;
additional policies of tbb::flow::graph_node::reset().
Expand Down Expand Up @@ -60,13 +100,15 @@ Intel TBB 4.3 Update 6
TBB_INTERFACE_VERSION == 8006

Changes (w.r.t. Intel TBB 4.3 Update 5):

- Supported zero-copy realloc for objects >1MB under Linux* via
mremap system call.
- C++11 move-aware insert and emplace methods have been added to
concurrent_hash_map container.
- install_name is set to @rpath/<library name> on OS X*.

Preview Features:

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

Bugs fixed:

- concurrent_unordered_{set,map} behaves correctly for degenerate
hashes.
- Fixed a race condition in the memory allocator that may lead to
Expand All @@ -85,9 +128,11 @@ Intel TBB 4.3 Update 5
TBB_INTERFACE_VERSION == 8005

Changes (w.r.t. Intel TBB 4.3 Update 4):

- Added add_ref_count() method of class tbb::task.

Preview Features:

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

Bugs fixed:

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

Open-source contributions integrated:

- (Added but not enabled) push_front() method of class tbb::task_list
by Raf Schietekat.

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

Changes (w.r.t. Intel TBB 4.3 Update 3):

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

Preview Features:

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

Open-source contributions integrated:

- Draft code for enumerable_thread_specific constructor with multiple
arguments (see above) by Adrien Guinet.
- Fix for GCC invocation on IBM* Blue Gene*
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Intel(R) Threading Building Blocks 4.4
# Intel(R) Threading Building Blocks 4.4 Update 1

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

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

## Documentation
* Intel(R) TBB [tutorial] (https://software.intel.com/en-us/tbb-tutorial)
Expand Down
2 changes: 2 additions & 0 deletions build/android.inc
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ ifneq ("command line","$(origin arch)")
export COMPILER_VERSION := ICC: $(shell icc -V </dev/null 2>&1 | grep 'Version')
ifneq (,$(findstring IA-32, $(COMPILER_VERSION)))
export arch:=ia32
else ifneq (,$(findstring Intel(R) 64, $(COMPILER_VERSION)))
export arch:=intel64
else
$(error "No support for Android in $(COMPILER_VERSION)")
endif
Expand Down
2 changes: 1 addition & 1 deletion build/linux.gcc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
endif

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

Expand Down
3 changes: 3 additions & 0 deletions build/windows.icl.inc
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,9 @@ endif
ifeq ($(VCCOMPAT_FLAG),)
VCCOMPAT_FLAG := $(if $(findstring vc12, $(VCVERSION)),/Qvc12)
endif
ifeq ($(VCCOMPAT_FLAG),)
VCCOMPAT_FLAG := $(if $(findstring vc14, $(VCVERSION)),/Qvc14)
endif
ifeq ($(VCCOMPAT_FLAG),)
$(error VC version not detected correctly: $(VCVERSION) )
endif
Expand Down
11 changes: 11 additions & 0 deletions doc/Release_Notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,11 @@ Library Issues
of Microsoft* Visual C++ 10.0 runtime (msvcp100d.dll) in order
to run.

- For applications linked with the debug version of Microsoft*
Universal CRT (ucrtbased.dll, used since Microsoft Visual C++
14.0) dynamic replacement of memory management functions
is not supported.

- If an application uses static MSVCRT libraries or the Intel TBB
library built with static MSVCRT (vc_mt variant), and throws
an exception from a functor passed to task_group::run_and_wait(),
Expand Down Expand Up @@ -157,6 +162,12 @@ Library Issues
4.8.2, and 4.9.2), the destructor of a task_group might not
throw missing_wait exception.

- On OS X* 10.11 some examples might fail to run via makefiles in
case System Integrity Protection is enabled. In such case
instead of `make <args>` use the following command:
`run_cmd="DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH" make <args>`
or run executables directly.

------------------------------------------------------------------------
Copyright (C) 2005-2015 Intel Corporation. All Rights Reserved.

Expand Down
18 changes: 9 additions & 9 deletions doc/html/a00241.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 62b2955

Please sign in to comment.