Skip to content

Commit

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

Intel TBB 4.4 Update 2
TBB_INTERFACE_VERSION == 9002

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

- Improved interoperability with Intel(R) OpenMP RTL (libiomp) on Linux:
OpenMP affinity settings do not affect the default number of threads
used in the task scheduler. Intel(R) C++ Compiler 16.0 Update 1
or later is required.
- Added a new flow graph example with different implementations of the
Cholesky Factorization algorithm.

Preview Features:

- Added template class opencl_node to the flow graph API. It allows a
flow graph to offload computations to OpenCL* devices.
- Extended join_node to use type-specified message keys. It simplifies
the API of the node by obtaining message keys via functions
associated with the message type (instead of node ports).
- Added static_partitioner that minimizes overhead of parallel_for and
parallel_reduce for well-balanced workloads.
- Improved template class async_node in the flow graph API to support
user settable concurrency limits.

Bugs fixed:

- Fixed a possible crash in the GUI layer for library examples on Linux.

------------------------------------------------------------------------
Intel TBB 4.4 Update 1
TBB_INTERFACE_VERSION == 9001

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 Update 1
# Intel(R) Threading Building Blocks 4.4 Update 2

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 Update 1 is licensed under [GPLv2] (COPYING) with the runtime exception.
Intel(R) TBB 4.4 Update 2 is licensed under [GPLv2] (COPYING) with the runtime exception.

## Documentation
* Intel(R) TBB [tutorial] (https://software.intel.com/en-us/tbb-tutorial)
Expand Down
9 changes: 9 additions & 0 deletions build/Makefile.test
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,15 @@ test_tbb_cilk:
@echo "Intel(R) Cilk(TM) Plus is not available"
endif

test_opencl_node.$(TEST_EXT): LIBS += $(OPENCL.LIB)

ifeq (windows,$(tbb_os))
ifneq (gcc,$(compiler))
test_opencl_node.$(TEST_EXT): override CXXFLAGS += /bigobj
test_join_node.$(TEST_EXT): override CXXFLAGS += /bigobj
endif
endif

$(TEST_TBB_PLAIN.EXE): WARNING_KEY += $(TEST_WARNING_KEY)

# Run tests that are in SCHEDULER_DIRECTLY_INCLUDED and TEST_TBB_PLAIN.EXE but not in skip_tests (which is specified by user)
Expand Down
2 changes: 2 additions & 0 deletions build/SunOS.suncc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ tbb_strict=0

CPLUS = CC
CONLY = cc

OPENMP_FLAG = -xopenmp
LIB_LINK_FLAGS = -G -R . -M$(tbb_root)/build/suncc.map.pause
LINK_FLAGS += -M$(tbb_root)/build/suncc.map.pause
LIBS = -lpthread -lrt -R .
Expand Down
7 changes: 6 additions & 1 deletion build/linux.icc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ else
CPLUS_FLAGS = $(ITT_NOTIFY) -O0 -g -DUSE_PTHREAD -DTBB_USE_DEBUG
endif

OPENMP_FLAG = -openmp
LIB_LINK_FLAGS = -shared -static-intel -Wl,-soname=$(BUILDING_LIBRARY)
LIBS += -lpthread -lrt
LINK_FLAGS = -rdynamic
Expand All @@ -50,6 +49,12 @@ ifneq (,$(shell icc -dumpversion | egrep "^1[1-9]\."))
CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X
endif

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

# ICC 12.0 and higher provide Intel(R) Cilk(TM) Plus
ifneq (,$(shell icc -dumpversion | egrep "^1[2-9]\."))
CILK_AVAILABLE = yes
Expand Down
2 changes: 2 additions & 0 deletions build/linux.inc
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,5 @@ RML.DLL = $(RML_NO_VERSION.DLL).1
RML.LIB = $(RML_NO_VERSION.DLL)

TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)

OPENCL.LIB = -lOpenCL
18 changes: 15 additions & 3 deletions build/macos.clang.inc
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,21 @@ ifeq (ppc32,$(arch))
endif

ifeq (armv7,$(arch))
CPLUS_FLAGS += -arch armv7
LINK_FLAGS += -arch armv7
LIB_LINK_FLAGS += -arch armv7
CPLUS_FLAGS += -arch armv7 -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
LINK_FLAGS += -arch armv7 -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
LIB_LINK_FLAGS += -arch armv7 -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
endif

ifeq (armv7s,$(arch))
CPLUS_FLAGS += -arch armv7s -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
LINK_FLAGS += -arch armv7s -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
LIB_LINK_FLAGS += -arch armv7s -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
endif

ifeq (arm64,$(arch))
CPLUS_FLAGS += -arch arm64 -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
LINK_FLAGS += -arch arm64 -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
LIB_LINK_FLAGS += -arch arm64 -miphoneos-version-min=8.0 -Wno-implicit-function-declaration -fembed-bitcode
endif

ifdef SDKROOT
Expand Down
13 changes: 10 additions & 3 deletions build/macos.icc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ DYLIB_KEY = -dynamiclib
EXPORT_KEY = -Wl,-exported_symbols_list,
LIBDL = -ldl

OPENMP_FLAG = -openmp
LIBS = -lpthread
LINK_FLAGS =
LIB_LINK_FLAGS = -dynamiclib -static-intel -install_name @rpath/$(BUILDING_LIBRARY)
Expand All @@ -41,6 +40,12 @@ ifneq (,$(shell icc -dumpversion | egrep "^1[1-9]\."))
CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X
endif

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

# ICC 12.0 and higher provide Intel(R) Cilk(TM) Plus
ifneq (,$(shell icc -dumpversion | egrep "^1[2-9]\."))
CILK_AVAILABLE = yes
Expand All @@ -63,10 +68,12 @@ ifneq (00,$(lambdas)$(cpp0x))
endif

# ICC 14.0 and higher support usage of libc++, clang standard library
# Extending minimal deployment version of official binaries to unsupported 10.8
# per customer requests. TODO: make a dedicated variable for this
ifneq (,$(shell icc -dumpversion | egrep "^1[4-9]\."))
ifneq (,$(stdlib))
CPLUS_FLAGS += -stdlib=$(stdlib)
LIB_LINK_FLAGS += -stdlib=$(stdlib)
CPLUS_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=10.8
LIB_LINK_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=10.8
endif
endif

Expand Down
11 changes: 7 additions & 4 deletions build/macos.inc
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ ifeq (icc,$(compiler))
export COMPILER_VERSION := ICC: $(shell icc -V </dev/null 2>&1 | grep 'Version')
ifneq (,$(findstring IA-32, $(COMPILER_VERSION)))
export arch:=ia32
endif
ifneq (,$(findstring Intel(R) 64, $(COMPILER_VERSION)))
export arch:=intel64
else
ifneq (,$(findstring Intel(R) 64, $(COMPILER_VERSION)))
export arch:=intel64
endif
endif
ifeq (,$(arch))
$(warning "Unknown Intel compiler")
Expand Down Expand Up @@ -68,7 +69,7 @@ endif

native_compiler := clang
export compiler ?= clang
debugger ?= gdb
debugger ?= lldb

export stdlib ?= libc++

Expand Down Expand Up @@ -113,3 +114,5 @@ MALLOCPROXY.LIB = $(MALLOCPROXY.DLL)
LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB)

TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)

OPENCL.LIB = -framework OpenCL
5 changes: 5 additions & 0 deletions build/mic.icc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,12 @@ ifneq (,$(codecov))
CPLUS_FLAGS += -prof-genx
endif

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

LIB_LINK_FLAGS = -shared -static-intel -Wl,-soname=$(BUILDING_LIBRARY)
LIBS += -lpthread -lrt
C_FLAGS = $(CPLUS_FLAGS)
Expand Down
7 changes: 6 additions & 1 deletion build/test_launcher.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,18 @@ stressed() { echo Doing stress testing. Press Ctrl-C to terminate #
repeated() { #
i=0; while [ "$i" -lt $repeat ]; do i=`expr $i + 1`; echo $i of $repeat:; $*; done #
} #
# DYLD_LIBRARY_PATH can be purged on OS X 10.11, set it again
if [ `uname` = 'Darwin' -a -z "$DYLD_LIBRARY_PATH" ] ; then #
DYLD_LIBRARY_PATH=. #
export DYLD_LIBRARY_PATH #
fi #
# Run the command line passed via parameters
[ $verbose ] && echo Running $run_prefix $* #
if [ -n "$LD_PRELOAD" ] ; then #
export LD_PRELOAD #
elif [ -n "$DYLD_INSERT_LIBRARIES" ] ; then #
export DYLD_INSERT_LIBRARIES #
fi
fi #
exec 4>&1 # extracting exit code of the first command in pipeline needs duplicated stdout
# custom redirection needs eval, otherwise shell cannot parse it
err=`eval '( $run_prefix $* || echo \$? >&3; )' ${OUTPUT} 3>&1 >&4` #
Expand Down
2 changes: 2 additions & 0 deletions build/windows.inc
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,5 @@ MAKE_VERSIONS = cmd /C cscript /nologo /E:jscript $(subst \,/,$(tbb_root))/build
MAKE_TBBVARS = cmd /C "$(subst /,\,$(tbb_root))\build\generate_tbbvars.bat"

TEST_LAUNCHER = $(subst /,\,$(tbb_root))\build\test_launcher.bat $(largs)

OPENCL.LIB = OpenCL.$(LIBEXT)
4 changes: 2 additions & 2 deletions doc/Release_Notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ Library Issues
OMP_PROC_BIND, as well as programmatically setting thread
affinity before Intel TBB task scheduler is initialized.
An affinity mask set for a thread that initializes Intel TBB
limits the number of worker threads used by default in the task
scheduler.
may limit the number of worker threads used by default
in the task scheduler.

- If an open source version of Intel TBB is installed to a system
folder like /usr/lib64 on Linux OS, examples may fail to link
Expand Down
2 changes: 1 addition & 1 deletion doc/html/a00009.html

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

Loading

0 comments on commit 3095e71

Please sign in to comment.