Skip to content
Permalink
Browse files

Committing TBB 2019 Update 9 source code

  • Loading branch information...
tbbdev committed Oct 9, 2019
1 parent 4bdba61 commit a803f276186fa2c286a357207832112265b448e4
Showing 305 changed files with 8,103 additions and 2,800 deletions.
@@ -85,3 +85,4 @@ CMakeFiles/
.svn
crash*
*.tmp
/.vs
34 CHANGES
@@ -2,6 +2,40 @@
The list of most significant changes made over time in
Intel(R) Threading Building Blocks (Intel(R) TBB).

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.

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

@@ -1,5 +1,5 @@
# Threading Building Blocks 2019 Update 8
[![Stable release](https://img.shields.io/badge/version-2019_U8-green.svg)](https://github.com/01org/tbb/releases/tag/2019_U8)
# Threading Building Blocks 2019 Update 9
[![Stable release](https://img.shields.io/badge/version-2019_U9-green.svg)](https://github.com/intel/tbb/releases/tag/2019_U9)
[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE)

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

Since [2018 U5](https://github.com/01org/tbb/releases/tag/2018_U5) TBB binary packages include [Parallel STL](https://github.com/intel/parallelstl) as a high-level component.
Since [2018 U5](https://github.com/intel/tbb/releases/tag/2018_U5) TBB binary packages include [Parallel STL](https://github.com/intel/parallelstl) as a high-level component.

## Documentation
* TBB [tutorial](https://software.intel.com/en-us/tbb-tutorial)
@@ -17,7 +17,7 @@ and [latest](https://www.threadingbuildingblocks.org/docs/help/index.htm)

## Support
Please report issues and suggestions via
[GitHub issues](https://github.com/01org/tbb/issues) or start a topic on the
[GitHub issues](https://github.com/intel/tbb/issues) or start a topic on the
[TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/).

## How to Contribute
@@ -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)
@@ -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 -dumpfullversion -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
@@ -60,6 +60,13 @@ TBB_DEP_NON_RML_TEST?= cache_aligned_allocator_rml.$(OBJ) dynamic_link_rml.$(OBJ
ifeq ($(cfg),debug)
RML_TBB_DEP+= spin_mutex_rml.$(OBJ)
TBB_DEP_RML_TEST?= $(RML_ASM.OBJ) tbb_misc_rml.$(OBJ)

ifeq (windows icl,$(tbb_os) $(compiler_name))
# Some versions of ICC link to the wrong version of the vc runtime
# libcpmtd.lib should be used instead of libcpmt.lib
LIB_LINK_FLAGS += /nodefaultlib:libcpmt.lib
endif

else
TBB_DEP_RML_TEST?= $(RML_ASM.OBJ)
endif
@@ -103,6 +103,9 @@ test_dynamic_link.$(TEST_EXT): LIBS += $(LIBDL)
ifneq (,$(BIGOBJ_KEY))
TEST_BIGOBJ = test_opencl_node.$(TEST_EXT) \
test_atomic.$(TEST_EXT) \
test_concurrent_hash_map.$(TEST_EXT) \
test_concurrent_set.$(TEST_EXT) \
test_concurrent_map.$(TEST_EXT) \
test_concurrent_unordered_set.$(TEST_EXT) \
test_concurrent_unordered_map.$(TEST_EXT) \
test_join_node_key_matching.$(TEST_EXT) \
@@ -130,6 +133,8 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \
test_concurrent_unordered_set.$(TEST_EXT) \
test_concurrent_unordered_map.$(TEST_EXT) \
test_concurrent_hash_map.$(TEST_EXT) \
test_concurrent_set.$(TEST_EXT) \
test_concurrent_map.$(TEST_EXT) \
test_enumerable_thread_specific.$(TEST_EXT) \
test_handle_perror.$(TEST_EXT) \
test_halt.$(TEST_EXT) \
@@ -211,6 +216,7 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \
test_composite_node.$(TEST_EXT) \
test_async_node.$(TEST_EXT) \
test_async_msg.$(TEST_EXT) \
test_resumable_tasks.$(TEST_EXT) \
test_tbb_version.$(TEST_EXT) # insert new files right above

# These tests depend on other technologies
@@ -42,6 +42,10 @@ endif
INCLUDES += $(INCLUDE_KEY)$(tbb_root)/src $(INCLUDE_KEY)$(tbb_root)/src/rml/include $(INCLUDE_KEY)$(tbb_root)/include

CPLUS_FLAGS += $(WARNING_KEY) $(CXXFLAGS)

# Suppress warnings about usage of deprecated content
CPLUS_FLAGS += $(DEFINE_KEY)TBB_SUPPRESS_DEPRECATED_MESSAGES=1

ifeq (1,$(tbb_cpf))
CPLUS_FLAGS += $(DEFINE_KEY)__TBB_CPF_BUILD=1
endif
@@ -57,12 +57,18 @@ function doWork() {
WScript.Echo("mingw" + gccVersion);
}
else if (WScript.Arguments(0) == "/minversion") {
// Comparing strings, not numbers; will not work for two-digit versions
if (gccVersion >= WScript.Arguments(2)) {
WScript.Echo("ok");
} else {
WScript.Echo("fail");
for (var i = 0; i < 3; i++) {
v1 = parseInt(gccVersion.split('.')[i]);
v2 = parseInt(WScript.Arguments(2).split('.')[i]);

if (v1 > v2) {
break;
} else if (v1 < v2) {
WScript.Echo("fail");
return;
}
}
WScript.Echo("ok");
}
}
return;
@@ -121,6 +127,8 @@ function doWork() {
} else if (mapContext.match(vc140)) {
if (WshShell.ExpandEnvironmentStrings("%VisualStudioVersion%") == "15.0")
WScript.Echo("vc14.1");
else if (WshShell.ExpandEnvironmentStrings("%VisualStudioVersion%") == "16.0")
WScript.Echo("vc14.2");
else
WScript.Echo("vc14");
} else {
@@ -30,17 +30,21 @@ EXPORT_KEY = -Wl,--version-script,
LIBDL = -ldl

LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
LIBS += -lpthread -lrt
LIBS += -lrt
LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
C_FLAGS = $(CPLUS_FLAGS)

ifeq ($(cfg), release)
CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
# -g is set intentionally in the release mode. It should not affect performance.
CPLUS_FLAGS = -O2 -g
endif
ifeq ($(cfg), debug)
CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
CPLUS_FLAGS = -DTBB_USE_DEBUG -O0 -g
endif

CPLUS_FLAGS += $(ITT_NOTIFY) -DUSE_PTHREAD -pthread
LIB_LINK_FLAGS += -pthread

ifneq (,$(stdlib))
CPLUS_FLAGS += -stdlib=$(stdlib)
LIB_LINK_FLAGS += -stdlib=$(stdlib)
@@ -31,46 +31,50 @@ EXPORT_KEY = -Wl,--version-script,
LIBDL = -ldl

LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
LIBS += -lpthread -lrt
LIBS += -lrt
LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
C_FLAGS = $(CPLUS_FLAGS)

# gcc 4.2 and higher support OpenMP
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^(4\.[2-9]|[5-9]|1[0-9])"))
OPENMP_FLAG = -fopenmp
endif

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

# gcc 4.0 and later have -Wextra that is used by some our customers.
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([4-9])"))
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([4-9]|1[0-9])"))
WARNING_KEY += -Wextra
endif

# gcc 5.0 and later have -Wsuggest-override and -Wno-sized-deallocation options
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([5-9])"))
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([5-9]|1[0-9])"))
# enable -Wsuggest-override via a pre-included header in order to limit to C++11 and above
INCLUDE_TEST_HEADERS = -include $(tbb_root)/src/test/harness_preload.h
WARNING_SUPPRESS += -Wno-sized-deallocation
endif

# gcc 6.0 and later have -flifetime-dse option that controls
# elimination of stores done outside the object lifetime
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([6-9])"))
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([6-9]|1[0-9])"))
# keep pre-contruction stores for zero initialization
DSE_KEY = -flifetime-dse=1
endif

ifeq ($(cfg), release)
CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
# -g is set intentionally in the release mode. It should not affect performance.
CPLUS_FLAGS = -O2 -g
endif
ifeq ($(cfg), debug)
CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
CPLUS_FLAGS = -DTBB_USE_DEBUG -O0 -g
endif

CPLUS_FLAGS += $(ITT_NOTIFY) -DUSE_PTHREAD -pthread
LIB_LINK_FLAGS += -pthread

TBB_ASM.OBJ=
MALLOC_ASM.OBJ=

@@ -34,16 +34,20 @@ endif
ITT_NOTIFY = -DDO_ITT_NOTIFY
ifeq (release,$(cfg))
SDL_FLAGS += -D_FORTIFY_SOURCE=2
CPLUS_FLAGS = $(ITT_NOTIFY) -O2 -g -DUSE_PTHREAD
# -g is set intentionally in the release mode. It should not affect performance.
CPLUS_FLAGS = -O2 -g -qno-opt-report-embed
else
CPLUS_FLAGS = $(ITT_NOTIFY) -O0 -g -DUSE_PTHREAD -DTBB_USE_DEBUG
CPLUS_FLAGS = -O0 -g -DTBB_USE_DEBUG
endif

LIB_LINK_FLAGS = -shared -static-intel -Wl,-soname=$(BUILDING_LIBRARY) -z relro -z now
LIBS += -lpthread -lrt
LIBS += -lrt
LINK_FLAGS = -rdynamic
C_FLAGS = $(CPLUS_FLAGS)

CPLUS_FLAGS += $(ITT_NOTIFY) -DUSE_PTHREAD -pthread
LIB_LINK_FLAGS += -pthread

ifneq (,$(shell icc -dumpversion | egrep "^1[6-9]\."))
OPENMP_FLAG = -qopenmp
else
@@ -42,6 +42,11 @@ endif

CPLUS_FLAGS += -DUSE_PTHREAD $(ITT_NOTIFY)

ifeq (1,$(tbb_cpf))
# For correct ucontext.h structures layout
CPLUS_FLAGS += -D_XOPEN_SOURCE
endif

# For Clang, we add the option to support RTM intrinsics *iff* xtest is found in <immintrin.h>
ifneq (,$(shell grep xtest `echo "\#include<immintrin.h>" | $(CONLY) -E -M - 2>&1 | grep immintrin.h` 2>/dev/null))
RTM_KEY = -mrtm
@@ -35,19 +35,19 @@ LIB_LINK_FLAGS = -dynamiclib -install_name @rpath/$(BUILDING_LIBRARY)
C_FLAGS = $(CPLUS_FLAGS)

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

# gcc 5.0 and later have -Wsuggest-override option
# enable it via a pre-included header in order to limit to C++11 and above
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([5-9])"))
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([5-9]|1[0-9])"))
INCLUDE_TEST_HEADERS = -include $(tbb_root)/src/test/harness_preload.h
endif

# gcc 6.0 and later have -flifetime-dse option that controls
# elimination of stores done outside the object lifetime
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([6-9])"))
ifneq (,$(shell $(CONLY) -dumpfullversion -dumpversion | egrep "^([6-9]|1[0-9])"))
# keep pre-contruction stores for zero initialization
DSE_KEY = -flifetime-dse=1
endif
@@ -49,14 +49,19 @@ endif

ifeq ($(cfg), release)
SDL_FLAGS += -D_FORTIFY_SOURCE=2
CPLUS_FLAGS = -g -O2 -fno-omit-frame-pointer
CPLUS_FLAGS = -g -O2 -fno-omit-frame-pointer -qno-opt-report-embed
else
CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
endif

ITT_NOTIFY = -DDO_ITT_NOTIFY
CPLUS_FLAGS += -DUSE_PTHREAD $(ITT_NOTIFY)

ifeq (1,$(tbb_cpf))
# For correct ucontext.h structures layout
CPLUS_FLAGS += -D_XOPEN_SOURCE
endif

ifneq (,$(codecov))
CPLUS_FLAGS += -prof-gen=srcpos
endif
@@ -45,7 +45,7 @@ ifndef arch
endif

ifndef runtime
clang_version:=$(shell clang -v 2>&1 >/dev/null | grep version | sed -e "s/.*version \(.*[0-9]\) .*/\1/")
clang_version:=$(shell clang --version | sed -n "1s/.*version \(.*[0-9]\) .*/\1/p")
ifndef os_version
os_version:=$(shell /usr/bin/sw_vers -productVersion)
endif
@@ -19,7 +19,7 @@ echo "#define __TBB_VERSION_STRINGS(N) \\"
echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`arch`")"'" ENDL \'
echo '#N": BUILD_OS'"\t\t"`sw_vers -productName`" version "`sw_vers -productVersion`'" ENDL \'
echo '#N": BUILD_KERNEL'"\t"`uname -v`'" ENDL \'
echo '#N": BUILD_CLANG'"\t"`clang --version </dev/null 2>&1 | grep 'version '`'" ENDL \'
echo '#N": BUILD_CLANG'"\t"`clang --version | sed -n "1p"`'" ENDL \'
echo '#N": BUILD_XCODE'"\t"`xcodebuild -version </dev/null 2>&1 | grep 'Xcode'`'" ENDL \'
[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \'
echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \'

0 comments on commit a803f27

Please sign in to comment.
You can’t perform that action at this time.