Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a51a90bc60 | ||
|
|
b0d944cb24 | ||
|
|
615bb971db | ||
|
|
d7e1509134 | ||
|
|
633b01ad27 | ||
|
|
d31fcc6898 | ||
|
|
4c73c3b5d7 | ||
|
|
e8b3e241ca | ||
|
|
b9805bacad | ||
|
|
7a257a3ca0 | ||
|
|
b0df353a2f |
@@ -2,6 +2,229 @@
|
||||
The list of most significant changes made over time in
|
||||
Intel(R) Threading Building Blocks (Intel(R) TBB).
|
||||
|
||||
Intel TBB 2018 Update 6
|
||||
TBB_INTERFACE_VERSION == 10006
|
||||
|
||||
Changes (w.r.t. Intel TBB 2018 Update 5):
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed an issue with dynamic memory allocation replacement on Windows*
|
||||
occurred for some versions of ucrtbase.dll.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2018 Update 5
|
||||
TBB_INTERFACE_VERSION == 10005
|
||||
|
||||
Changes (w.r.t. Intel TBB 2018 Update 4):
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Added user event tracing API for Intel(R) VTune(TM) Amplifier and
|
||||
Flow Graph Analyzer.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed the memory allocator to properly support transparent huge pages.
|
||||
- Removed dynamic exception specifications in tbbmalloc_proxy for C++11
|
||||
and later (https://github.com/01org/tbb/issues/41).
|
||||
- Added -flifetime-dse=1 option when building with GCC on macOS*
|
||||
(https://github.com/01org/tbb/issues/60).
|
||||
|
||||
Open-source contributions integrated:
|
||||
|
||||
- Added ARMv8 support by Siddhesh Poyarekar.
|
||||
- Avoid GCC warnings for clearing an object of non-trivial type
|
||||
(https://github.com/01org/tbb/issues/54) by Daniel Arndt.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2018 Update 4
|
||||
TBB_INTERFACE_VERSION == 10004
|
||||
|
||||
Changes (w.r.t. Intel TBB 2018 Update 3):
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Improved support for Flow Graph Analyzer and Intel(R) VTune(TM)
|
||||
Amplifier in the task scheduler and generic parallel algorithms.
|
||||
- Default device set for opencl_node now includes all the devices from
|
||||
the first available OpenCL* platform.
|
||||
- Added lightweight policy for functional nodes in the flow graph. It
|
||||
indicates that the node body has little work and should, if possible,
|
||||
be executed immediately upon receiving a message, avoiding task
|
||||
scheduling overhead.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2018 Update 3
|
||||
TBB_INTERFACE_VERSION == 10003
|
||||
|
||||
Changes (w.r.t. Intel TBB 2018 Update 2):
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Added template class blocked_rangeNd for a generic multi-dimensional
|
||||
range (requires C++11). Inspired by a contribution from Jeff Hammond.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed a crash with dynamic memory allocation replacement on
|
||||
Windows* for applications using system() function.
|
||||
- Fixed parallel_deterministic_reduce to split range correctly when used
|
||||
with static_partitioner.
|
||||
- Fixed a synchronization issue in task_group::run_and_wait() which
|
||||
caused a simultaneous call to task_group::wait() to return
|
||||
prematurely.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2018 Update 2
|
||||
TBB_INTERFACE_VERSION == 10002
|
||||
|
||||
Changes (w.r.t. Intel TBB 2018 Update 1):
|
||||
|
||||
- Added support for Android* NDK r16, macOS* 10.13, Fedora* 26.
|
||||
- Binaries for Universal Windows Driver (vc14_uwd) now link with static
|
||||
Microsoft* runtime libraries, and are only available in commercial
|
||||
releases.
|
||||
- Extended flow graph documentation with more code samples.
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Added a Python* module for multi-processing computations in numeric
|
||||
Python* libraries.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed constructors of concurrent_hash_map to be exception-safe.
|
||||
- Fixed auto-initialization in the main thread to be cleaned up at
|
||||
shutdown.
|
||||
- Fixed a crash when tbbmalloc_proxy is used together with dbghelp.
|
||||
- Fixed static_partitioner to assign tasks properly in case of nested
|
||||
parallelism.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2018 Update 1
|
||||
TBB_INTERFACE_VERSION == 10001
|
||||
|
||||
Changes (w.r.t. Intel TBB 2018):
|
||||
|
||||
- Added lambda-friendly overloads for parallel_scan.
|
||||
- Added support of static and simple partitioners in
|
||||
parallel_deterministic_reduce.
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Added initial support for Flow Graph Analyzer to parallel_for.
|
||||
- Added reservation support in overwrite_node and write_once_node.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed a potential deadlock scenario in the flow graph that affected
|
||||
Intel TBB 2018.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2018
|
||||
TBB_INTERFACE_VERSION == 10000
|
||||
|
||||
Changes (w.r.t. Intel TBB 2017 Update 7):
|
||||
|
||||
- Introduced Parallel STL, an implementation of the C++ standard
|
||||
library algorithms with support for execution policies. For more
|
||||
information, see Getting Started with Parallel STL
|
||||
(https://software.intel.com/en-us/get-started-with-pstl).
|
||||
- this_task_arena::isolate() function is now a fully supported feature.
|
||||
- this_task_arena::isolate() function and task_arena::execute() method
|
||||
were extended to pass on the value returned by the executed functor
|
||||
(requires C++11).
|
||||
- task_arena::enqueue() and task_group::run() methods extended to accept
|
||||
move-only functors.
|
||||
- A flow graph now spawns all tasks into the same task arena,
|
||||
and waiting for graph completion also happens in that arena.
|
||||
- Improved support for Flow Graph Analyzer in async_node, opencl_node,
|
||||
and composite_node.
|
||||
- Added support for Android* NDK r15, r15b.
|
||||
- Added support for Universal Windows Platform.
|
||||
- Increased minimally supported version of macOS*
|
||||
(MACOSX_DEPLOYMENT_TARGET) to 10.11.
|
||||
|
||||
Changes affecting backward compatibility:
|
||||
|
||||
- Internal layout changes in some flow graph classes;
|
||||
- Several undocumented methods are removed from class graph,
|
||||
including set_active() and is_active().
|
||||
- Due to incompatible changes, the namespace version is updated
|
||||
for the flow graph; recompilation is recommended for all
|
||||
binaries that use the flow graph classes.
|
||||
|
||||
Preview Features:
|
||||
|
||||
- opencl_node can be used with any graph object; class opencl_graph
|
||||
is removed.
|
||||
- graph::wait_for_all() now automatically waits for all not yet consumed
|
||||
async_msg objects.
|
||||
- Improved concurrent_lru_cache::handle_object to support C++11 move
|
||||
semantics, default construction, and conversion to bool.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed a bug preventing use of streaming_node and opencl_node with
|
||||
Clang; inspired by a contribution from Francisco Facioni.
|
||||
- Fixed this_task_arena::isolate() function to work correctly with
|
||||
parallel_invoke and parallel_do algorithms.
|
||||
- Fixed a memory leak in composite_node.
|
||||
- Fixed an assertion failure in debug tbbmalloc binaries when
|
||||
TBBMALLOC_CLEAN_ALL_BUFFERS is used.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2017 Update 8
|
||||
TBB_INTERFACE_VERSION == 9108
|
||||
|
||||
Changes (w.r.t. Intel TBB 2017 Update 7):
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed an assertion failure in debug tbbmalloc binaries when
|
||||
TBBMALLOC_CLEAN_ALL_BUFFERS is used.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2017 Update 7
|
||||
TBB_INTERFACE_VERSION == 9107
|
||||
|
||||
Changes (w.r.t. Intel TBB 2017 Update 6):
|
||||
|
||||
- In the huge pages mode, the memory allocator now is also able to use
|
||||
transparent huge pages.
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Added support for Intel TBB integration into CMake-aware
|
||||
projects, with valuable guidance and feedback provided by Brad King
|
||||
(Kitware).
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed scalable_allocation_command(TBBMALLOC_CLEAN_ALL_BUFFERS, 0)
|
||||
to process memory left after exited threads.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2017 Update 6
|
||||
TBB_INTERFACE_VERSION == 9106
|
||||
|
||||
Changes (w.r.t. Intel TBB 2017 Update 5):
|
||||
|
||||
- Added support for Android* NDK r14.
|
||||
|
||||
Preview Features:
|
||||
|
||||
- Added a blocking terminate extension to the task_scheduler_init class
|
||||
that allows an object to wait for termination of worker threads.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Fixed compilation and testing issues with MinGW (GCC 6).
|
||||
- Fixed compilation with /std:c++latest option of VS 2017
|
||||
(https://github.com/01org/tbb/issues/13).
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel TBB 2017 Update 5
|
||||
TBB_INTERFACE_VERSION == 9105
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -50,13 +50,11 @@ rml: mkdir
|
||||
$(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.rml cfg=debug
|
||||
$(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: mkdir
|
||||
$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbb cfg=release
|
||||
bash -c ". $(work_dir)_release$(SLASH)tbbvars.sh && $(MAKE) -rC '$(full_tbb_root)/python' CXX=$(compiler) install test-install"
|
||||
python: tbb
|
||||
$(MAKE) -C "$(work_dir)_release" -rf $(tbb_root)/python/Makefile install
|
||||
|
||||
.PHONY: clean clean_examples mkdir info
|
||||
|
||||
|
||||
@@ -1,25 +1,27 @@
|
||||
# Intel(R) Threading Building Blocks 2017 Update 5
|
||||
[](https://github.com/01org/tbb/releases/tag/2017_U5)
|
||||
# Threading Building Blocks 2018 Update 6
|
||||
[](https://github.com/01org/tbb/releases/tag/2018_U6)
|
||||
[](LICENSE)
|
||||
|
||||
Intel(R) Threading Building Blocks (Intel(R) TBB) lets you easily write parallel C++ programs that take
|
||||
Threading Building Blocks (TBB) lets you easily write parallel C++ programs that take
|
||||
full advantage of multicore performance, that are portable, composable and have future-proof scalability.
|
||||
|
||||
## 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.
|
||||
|
||||
## Documentation
|
||||
* Intel(R) TBB [tutorial](https://software.intel.com/en-us/tbb-tutorial)
|
||||
* Intel(R) TBB general documentation: [stable](https://software.intel.com/en-us/tbb-documentation)
|
||||
* TBB [tutorial](https://software.intel.com/en-us/tbb-tutorial)
|
||||
* TBB general documentation: [stable](https://software.intel.com/en-us/tbb-documentation)
|
||||
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
|
||||
[Intel(R) TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/).
|
||||
[TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/).
|
||||
|
||||
## How to Contribute
|
||||
Please, read the instructions on the official [Intel(R) TBB open source site](https://www.threadingbuildingblocks.org/submit-contribution).
|
||||
Please, read the instructions on the official [TBB open source site](https://www.threadingbuildingblocks.org/submit-contribution).
|
||||
|
||||
## Engineering team contacts
|
||||
* [E-mail us.](mailto:inteltbbdevelopers@intel.com)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -83,7 +83,7 @@ $(MALLOC.DLL): tbbmalloc.def
|
||||
endif
|
||||
|
||||
$(MALLOC.DLL) $(MALLOCPROXY.DLL): CPLUS_FLAGS += $(SDL_FLAGS)
|
||||
$(MALLOC.DLL) $(MALLOCPROXY.DLL): M_CPLUS_FLAGS += $(SLD_FLAGS)
|
||||
$(MALLOC.DLL) $(MALLOCPROXY.DLL): M_CPLUS_FLAGS += $(SDL_FLAGS)
|
||||
$(MALLOC.DLL): BUILDING_LIBRARY = $(MALLOC.DLL)
|
||||
$(MALLOC.DLL): $(MALLOC.OBJ) $(MALLOC.RES) $(MALLOC_NO_VERSION.DLL)
|
||||
$(subst $(CPLUS),$(CONLY),$(LIB_LINK_CMD)) $(LIB_OUTPUT_KEY)$(MALLOC.DLL) $(MALLOC.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(MALLOC_LINK_FLAGS)
|
||||
@@ -147,6 +147,12 @@ endif
|
||||
# -----------------------------------------------------
|
||||
|
||||
# ------------ Set test specific variables ------------
|
||||
# TODO: implement accurate warning suppression for tests to unify with Makefile.test.
|
||||
$(MALLOC_TESTS): CPLUS_FLAGS += $(TEST_WARNING_KEY) $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1)
|
||||
$(MALLOC_TESTS): M_CPLUS_FLAGS += $(TEST_WARNING_KEY) $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1)
|
||||
$(MALLOC_TESTS): INCLUDES += $(INCLUDE_TEST_HEADERS)
|
||||
$(MALLOC_TESTS): M_INCLUDES += $(INCLUDE_TEST_HEADERS)
|
||||
|
||||
ifeq (windows.gcc,$(tbb_os).$(compiler))
|
||||
test_malloc_overload.$(TEST_EXT): LIBS += $(MALLOCPROXY.LIB)
|
||||
endif
|
||||
@@ -159,8 +165,6 @@ MALLOC_LINK_PROXY_TESTS = test_malloc_overload_proxy.$(TEST_EXT)
|
||||
MALLOC_ADD_DLL_TESTS = test_malloc_lib_unload.$(TEST_EXT) test_malloc_used_by_lib.$(TEST_EXT) \
|
||||
test_malloc_atexit.$(TEST_EXT)
|
||||
|
||||
# TODO: implement accurate warning suppression for tests to unify with Makefile.test.
|
||||
|
||||
$(MALLOC_M_CPLUS_TESTS): CPLUS_FLAGS=$(M_CPLUS_FLAGS)
|
||||
$(MALLOC_M_CPLUS_TESTS): INCLUDES=$(M_INCLUDES)
|
||||
$(MALLOC_NO_LIB_TESTS): LINK_MALLOC.LIB=
|
||||
@@ -171,6 +175,12 @@ $(MALLOC_ADD_DLL_TESTS): %.$(TEST_EXT): %_dll.$(DLL)
|
||||
$(MALLOC_ADD_DLL_TESTS): TEST_LIBS+=$(@:.$(TEST_EXT)=_dll.$(LIBEXT))
|
||||
endif
|
||||
|
||||
# test_malloc_pure_c is intended to be compiled by CONLY
|
||||
# compiler. Hence cannot include any C++-compiler options.
|
||||
# TODO: separate C and C++ compiler options (i.e. C_FLAGS and CPLUS_FLAGS).
|
||||
test_malloc_pure_c.$(TEST_EXT): CPLUS_FLAGS := $(subst -Woverloaded-virtual,,$(CPLUS_FLAGS))
|
||||
test_malloc_pure_c.$(TEST_EXT): CPLUS_FLAGS := $(subst -Wnon-virtual-dtor,,$(CPLUS_FLAGS))
|
||||
|
||||
test_malloc_over%.$(TEST_EXT): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
|
||||
test_malloc_over%.$(TEST_EXT): INCLUDES=$(M_INCLUDES)
|
||||
test_malloc_overload_proxy.$(TEST_EXT): LINK_FLAGS+=$(LIBDL)
|
||||
@@ -198,8 +208,8 @@ test_malloc_whitebox.$(TEST_EXT): LINK_FILES+=$(MALLOC_ASM.OBJ)
|
||||
|
||||
# Some _dll targets need to restore variables since they are changed by parent
|
||||
# target-specific rule of its .exe targets
|
||||
test_malloc_lib_unload_dll.$(DLL): CPLUS_FLAGS=$(ORIG_CPLUS_FLAGS)
|
||||
test_malloc_lib_unload_dll.$(DLL): INCLUDES=$(ORIG_INCLUDES)
|
||||
test_malloc_lib_unload_dll.$(DLL): CPLUS_FLAGS=$(ORIG_CPLUS_FLAGS) $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1)
|
||||
test_malloc_lib_unload_dll.$(DLL): INCLUDES=$(ORIG_INCLUDES) $(INCLUDE_TEST_HEADERS)
|
||||
|
||||
test_malloc_used_by_lib_dll.$(DLL): CPLUS_FLAGS=$(subst /MT,/LD,$(M_CPLUS_FLAGS))
|
||||
test_malloc_used_by_lib_dll.$(DLL): LINK_FILES+=$(ORIG_LINK_MALLOC.LIB)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -35,7 +35,9 @@ DEBUG_SUFFIX=$(findstring _debug,$(call cross_cfg,_$(cfg)))
|
||||
#------------------------------------------------------------
|
||||
|
||||
VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/rml/client $(tbb_root)/src/old $(tbb_root)/src/test $(tbb_root)/src/perf
|
||||
CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1) $(if $(LINK_TBB.LIB),$(DEFINE_KEY)TEST_USES_TBB=1)
|
||||
CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1) \
|
||||
$(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1) \
|
||||
$(if $(LINK_TBB.LIB),$(DEFINE_KEY)TEST_USES_TBB=1)
|
||||
|
||||
TEST_PREREQUISITE+=$(TBB.LIB)
|
||||
LINK_FILES+=$(LINK_TBB.LIB)
|
||||
@@ -63,14 +65,15 @@ SCHEDULER_DEPENDENCIES = $(TBB_ASM.OBJ) tbb_misc.$(OBJ)
|
||||
|
||||
# These executables don't depend on the TBB library, but include core .cpp files directly
|
||||
SCHEDULER_DIRECTLY_INCLUDED = test_task_leaks.$(TEST_EXT) \
|
||||
test_task_assertions.$(TEST_EXT) \
|
||||
test_fast_random.$(TEST_EXT) \
|
||||
test_global_control_whitebox.$(TEST_EXT) \
|
||||
test_concurrent_queue_whitebox.$(TEST_EXT)
|
||||
test_task_assertions.$(TEST_EXT) \
|
||||
test_fast_random.$(TEST_EXT) \
|
||||
test_global_control_whitebox.$(TEST_EXT) \
|
||||
test_concurrent_queue_whitebox.$(TEST_EXT)
|
||||
|
||||
# Necessary to locate version_string.ver referenced from directly included tbb_misc.cpp
|
||||
INCLUDES += $(INCLUDE_KEY). $(INCLUDE_TEST_HEADERS)
|
||||
|
||||
$(SCHEDULER_DIRECTLY_INCLUDED): CPLUS_FLAGS += $(DSE_KEY)
|
||||
$(SCHEDULER_DIRECTLY_INCLUDED): WARNING_KEY += $(WARNING_SUPPRESS)
|
||||
$(SCHEDULER_DIRECTLY_INCLUDED): LIBS += $(LIBDL)
|
||||
#tbb.lib must not be linked to scheduler white box tests in order to not violate ODR
|
||||
@@ -103,10 +106,12 @@ test_dynamic_link.$(TEST_EXT): LIBS += $(LIBDL)
|
||||
# Resolving issue with the number of sections that an object file can contain
|
||||
ifneq (,$(BIGOBJ_KEY))
|
||||
TEST_BIGOBJ = test_opencl_node.$(TEST_EXT) \
|
||||
test_join_node.$(TEST_EXT) \
|
||||
test_atomic.$(TEST_EXT) \
|
||||
test_concurrent_unordered_set.$(TEST_EXT) \
|
||||
test_concurrent_unordered_map.$(TEST_EXT)
|
||||
test_concurrent_unordered_map.$(TEST_EXT) \
|
||||
test_join_node_key_matching.$(TEST_EXT) \
|
||||
test_join_node_msg_key_matching.$(TEST_EXT) \
|
||||
test_join_node.$(TEST_EXT)
|
||||
$(TEST_BIGOBJ): override CXXFLAGS += $(BIGOBJ_KEY)
|
||||
endif
|
||||
|
||||
@@ -123,6 +128,7 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \
|
||||
test_blocked_range.$(TEST_EXT) \
|
||||
test_blocked_range2d.$(TEST_EXT) \
|
||||
test_blocked_range3d.$(TEST_EXT) \
|
||||
test_blocked_rangeNd.$(TEST_EXT) \
|
||||
test_concurrent_queue.$(TEST_EXT) \
|
||||
test_concurrent_vector.$(TEST_EXT) \
|
||||
test_concurrent_unordered_set.$(TEST_EXT) \
|
||||
@@ -185,6 +191,8 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \
|
||||
test_function_node.$(TEST_EXT) \
|
||||
test_limiter_node.$(TEST_EXT) \
|
||||
test_join_node.$(TEST_EXT) \
|
||||
test_join_node_key_matching.$(TEST_EXT) \
|
||||
test_join_node_msg_key_matching.$(TEST_EXT) \
|
||||
test_buffer_node.$(TEST_EXT) \
|
||||
test_queue_node.$(TEST_EXT) \
|
||||
test_priority_queue_node.$(TEST_EXT) \
|
||||
@@ -209,6 +217,12 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \
|
||||
test_async_msg.$(TEST_EXT) \
|
||||
test_tbb_version.$(TEST_EXT) # insert new files right above
|
||||
|
||||
# These tests depend on other technologies
|
||||
TEST_TBB_SPECIAL.EXE = test_openmp.$(TEST_EXT) \
|
||||
test_cilk_interop.$(TEST_EXT) \
|
||||
test_gfx_factory.$(TEST_EXT) \
|
||||
test_opencl_node.$(TEST_EXT)
|
||||
|
||||
# skip mode_plugin for now
|
||||
skip_tests += test_model_plugin
|
||||
|
||||
@@ -238,7 +252,7 @@ endif
|
||||
|
||||
test_opencl_node.$(TEST_EXT): LIBS += $(OPENCL.LIB)
|
||||
|
||||
$(TEST_TBB_PLAIN.EXE): WARNING_KEY += $(TEST_WARNING_KEY)
|
||||
$(TEST_TBB_PLAIN.EXE) $(TEST_TBB_SPECIAL.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)
|
||||
TESTS_TO_RUN := $(filter-out $(addsuffix .$(TEST_EXT),$(skip_tests)),$(TEST_TBB_PLAIN.EXE) $(SCHEDULER_DIRECTLY_INCLUDED))
|
||||
@@ -258,7 +272,7 @@ test_tbb_plain: $(TEST_PREREQUISITE) $(TESTS_TO_RUN)
|
||||
|
||||
|
||||
# For deprecated files, we don't mind warnings etc., thus compilation rules are most relaxed
|
||||
CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)TBB_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
|
||||
CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
|
||||
TEST_TBB_OLD.OBJ = test_concurrent_vector_v2.$(OBJ) test_concurrent_queue_v2.$(OBJ) test_mutex_v2.$(OBJ) test_task_scheduler_observer_v3.$(OBJ)
|
||||
|
||||
$(TEST_TBB_OLD.OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -68,10 +68,22 @@ ifeq (0, $(dynamic_load))
|
||||
endif
|
||||
|
||||
# Paths to the NDK prebuilt tools and libraries
|
||||
CPLUS_FLAGS += --sysroot=$(SYSROOT)
|
||||
ifneq (,$(findstring $(ndk_version),r16 r16b))
|
||||
# Since Android* NDK r16 another sysroot and isystem paths have to be specified
|
||||
CPLUS_FLAGS += --sysroot=$(NDK_ROOT)/sysroot -isystem $(NDK_ROOT)/sysroot/usr/include/$(TRIPLE)
|
||||
# Android* version flag required since r16
|
||||
CPLUS_FLAGS += -D__ANDROID_API__=$(API_LEVEL)
|
||||
else
|
||||
CPLUS_FLAGS += --sysroot=$(SYSROOT)
|
||||
endif
|
||||
|
||||
# Library sysroot flag
|
||||
LIB_LINK_FLAGS += --sysroot=$(SYSROOT)
|
||||
# Flag for test executables
|
||||
LINK_FLAGS += --sysroot=$(SYSROOT)
|
||||
|
||||
LIBS = -L$(CPLUS_LIB_PATH) -lc++_shared
|
||||
ifneq (,$(findstring $(ndk_version),r12 r12b r13 r13b))
|
||||
ifeq (,$(findstring $(ndk_version),$(foreach v, 7 8 9 10 11,r$(v) r$(v)b r$(v)c r$(v)d r$(v)e)))
|
||||
LIBS += -lc++abi
|
||||
ifeq (arm,$(arch))
|
||||
LIBS += -lunwind
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -30,8 +30,6 @@ ifeq (64,$(findstring 64,$(arch)))
|
||||
endif
|
||||
|
||||
ifdef ndk_version
|
||||
ndk_version:= $(firstword $(subst /, ,$(ndk_version)))
|
||||
ndk_version:= $(firstword $(subst \, ,$(ndk_version)))
|
||||
$(warning "NDK version $(ndk_version)")
|
||||
else
|
||||
$(warning "NDK version not set in environment, using \'unknown\' instead.")
|
||||
@@ -75,3 +73,6 @@ DLL = so
|
||||
|
||||
TEST_LAUNCHER=
|
||||
run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs)
|
||||
export UNIXMODE = 1
|
||||
# Clang for Android* uses the INCLUDE variable (instead of CPATH)
|
||||
export USE_INCLUDE_ENV = 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (c) 2017-2018 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
# Provides unified tool for preparing TBB for packaging
|
||||
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import shutil
|
||||
import platform
|
||||
import argparse
|
||||
from glob import glob
|
||||
from collections import OrderedDict
|
||||
|
||||
jp = os.path.join
|
||||
is_win = (platform.system() == 'Windows')
|
||||
is_lin = (platform.system() == 'Linux')
|
||||
is_mac = (platform.system() == 'Darwin')
|
||||
|
||||
default_prefix = os.getenv('PREFIX', 'install_prefix')
|
||||
if is_win:
|
||||
default_prefix = jp(default_prefix, 'Library') # conda-specific by default on Windows
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--tbbroot', default='.', help='Take Intel TBB from here')
|
||||
parser.add_argument('--prefix', default=default_prefix, help='Prefix')
|
||||
parser.add_argument('--prebuilt', default=[], action='append', help='Directories to find prebuilt files')
|
||||
parser.add_argument('--no-rebuild', default=False, action='store_true', help='do not rebuild')
|
||||
parser.add_argument('--install', default=False, action='store_true', help='install all')
|
||||
parser.add_argument('--install-libs', default=False, action='store_true', help='install libs')
|
||||
parser.add_argument('--install-devel', default=False, action='store_true', help='install devel')
|
||||
parser.add_argument('--install-docs', default=False, action='store_true', help='install docs')
|
||||
parser.add_argument('--install-python',default=False, action='store_true', help='install python module')
|
||||
parser.add_argument('--make-tool', default='make', help='Use different make command instead')
|
||||
parser.add_argument('--copy-tool', default=None, help='Use this command for copying ($ tool file dest-dir)')
|
||||
parser.add_argument('--build-args', default="", help='specify extra build args')
|
||||
parser.add_argument('--build-prefix', default='local', help='build dir prefix')
|
||||
if is_win:
|
||||
parser.add_argument('--msbuild', default=False, action='store_true', help='Use msbuild')
|
||||
parser.add_argument('--vs', default="2012", help='select VS version for build')
|
||||
parser.add_argument('--vs-platform', default="x64", help='select VS platform for build')
|
||||
parser.add_argument('ignore', nargs='?', help="workaround conda-build issue #2512")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.install:
|
||||
args.install_libs = True
|
||||
args.install_devel = True
|
||||
args.install_docs = True
|
||||
args.install_python= True
|
||||
|
||||
def custom_cp(src, dst):
|
||||
assert os.system(' '.join([args.copy_tool, src, dst])) == 0
|
||||
|
||||
if args.copy_tool:
|
||||
install_cp = custom_cp # e.g. to use install -p -D -m 755 on Linux
|
||||
else:
|
||||
install_cp = shutil.copy
|
||||
|
||||
bin_dir = jp(args.prefix, "bin")
|
||||
lib_dir = jp(args.prefix, "lib")
|
||||
inc_dir = jp(args.prefix, 'include')
|
||||
doc_dir = jp(args.prefix, 'share', 'doc', 'tbb')
|
||||
if is_win:
|
||||
os.environ["OS"] = "Windows_NT" # make sure TBB will interpret it corretly
|
||||
libext = '.dll'
|
||||
libpref = ''
|
||||
dll_dir = bin_dir
|
||||
else:
|
||||
libext = '.dylib' if is_mac else '.so.2'
|
||||
libpref = 'lib'
|
||||
dll_dir = lib_dir
|
||||
|
||||
tbb_names = ["tbb", "tbbmalloc", "tbbmalloc_proxy"]
|
||||
|
||||
##############################################################
|
||||
|
||||
def run_make(arg):
|
||||
if os.system('%s -j %s'% (args.make_tool, arg)) != 0:
|
||||
print("\nBummer. Running serial build in order to recover the log and have a chance to fix the build")
|
||||
assert os.system('%s %s'% (args.make_tool, arg)) == 0
|
||||
|
||||
os.chdir(args.tbbroot)
|
||||
if args.prebuilt:
|
||||
release_dirs = sum([glob(d) for d in args.prebuilt], [])
|
||||
print("Using pre-built files from ", release_dirs)
|
||||
else:
|
||||
if is_win and args.msbuild:
|
||||
preview_release_dir = release_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Release')
|
||||
if not args.no_rebuild or not os.path.isdir(release_dir):
|
||||
assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Release %s build/vs%s/makefile.sln'% \
|
||||
(args.vs_platform, args.build_args, args.vs)) == 0
|
||||
preview_debug_dir = debug_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Debug')
|
||||
if not args.no_rebuild or not os.path.isdir(debug_dir):
|
||||
assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Debug %s build/vs%s/makefile.sln'% \
|
||||
(args.vs_platform, args.build_args, args.vs)) == 0
|
||||
else:
|
||||
release_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release')
|
||||
debug_dir = jp(args.tbbroot, 'build', args.build_prefix+'_debug')
|
||||
if not args.no_rebuild or not (os.path.isdir(release_dir) and os.path.isdir(debug_dir)):
|
||||
run_make('tbb_build_prefix=%s %s'% (args.build_prefix, args.build_args))
|
||||
preview_release_dir = jp(args.tbbroot, 'build', args.build_prefix+'_preview_release')
|
||||
preview_debug_dir = jp(args.tbbroot, 'build', args.build_prefix+'_preview_debug')
|
||||
if not args.no_rebuild or not (os.path.isdir(preview_release_dir) and os.path.isdir(preview_debug_dir)):
|
||||
run_make('tbb_build_prefix=%s_preview %s tbb_cpf=1 tbb'% (args.build_prefix, args.build_args))
|
||||
release_dirs = [release_dir, debug_dir, preview_release_dir, preview_debug_dir]
|
||||
|
||||
filemap = OrderedDict()
|
||||
def append_files(names, dst, paths=release_dirs):
|
||||
global filemap
|
||||
files = sum([glob(jp(d, f)) for d in paths for f in names], [])
|
||||
filemap.update(dict(zip(files, [dst]*len(files))))
|
||||
|
||||
|
||||
if args.install_libs:
|
||||
append_files([libpref+f+libext for f in tbb_names], dll_dir)
|
||||
|
||||
if args.install_devel:
|
||||
dll_files = [libpref+f+'_debug'+libext for f in tbb_names] # adding debug libraries
|
||||
if not is_win or not args.msbuild:
|
||||
dll_files += [libpref+"tbb_preview"+libext, libpref+"tbb_preview_debug"+libext]
|
||||
if is_win:
|
||||
dll_files += ['tbb*.pdb'] # copying debug info
|
||||
if is_lin:
|
||||
dll_files += ['libtbb*.so'] # copying linker scripts
|
||||
# symlinks .so -> .so.2 should not be created instead
|
||||
# since linking with -ltbb when using links can result in
|
||||
# incorrect dependence upon unversioned .so files
|
||||
append_files(dll_files, dll_dir)
|
||||
if is_win:
|
||||
append_files(['*.lib', '*.def'], lib_dir) # copying linker libs and defs
|
||||
for rootdir, dirnames, filenames in os.walk(jp(args.tbbroot,'include')):
|
||||
files = [f for f in filenames if not '.html' in f]
|
||||
append_files(files, jp(inc_dir, rootdir.split('include')[1][1:]), paths=(rootdir,))
|
||||
|
||||
if args.install_python: # RML part
|
||||
irml_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release')
|
||||
run_make('-C src tbb_build_prefix=%s %s python_rml'% (args.build_prefix, args.build_args))
|
||||
if is_lin:
|
||||
append_files(['libirml.so.1'], dll_dir, paths=[irml_dir])
|
||||
|
||||
if args.install_docs:
|
||||
files = [
|
||||
'CHANGES',
|
||||
'LICENSE',
|
||||
'README',
|
||||
'README.md',
|
||||
'Release_Notes.txt',
|
||||
]
|
||||
append_files(files, doc_dir, paths=release_dirs+[jp(args.tbbroot, d) for d in ('.', 'doc')])
|
||||
|
||||
for f in filemap.keys():
|
||||
assert os.path.exists(f)
|
||||
assert os.path.isfile(f)
|
||||
|
||||
if filemap:
|
||||
print("Copying to prefix =", args.prefix)
|
||||
for f, dest in filemap.items():
|
||||
if not os.path.isdir(dest):
|
||||
os.makedirs(dest)
|
||||
print("+ %s to $prefix%s"%(f,dest.replace(args.prefix, '')))
|
||||
install_cp(f, dest)
|
||||
|
||||
if args.install_python: # Python part
|
||||
paths = [os.path.abspath(d) for d in (args.prefix, irml_dir, lib_dir, inc_dir)]
|
||||
os.environ["TBBROOT"] = paths[0]
|
||||
# all the paths must be relative to python/ directory or be absolute
|
||||
assert os.system('python python/setup.py build -b%s build_ext -L%s:%s -I%s install -f'% \
|
||||
(paths[1], paths[2], paths[1], paths[3])) == 0 # add install location? windows needs pythnon/Library location separation
|
||||
|
||||
print("done")
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -39,10 +39,15 @@ ifndef tbb_os
|
||||
|
||||
endif # !tbb_os
|
||||
|
||||
ifeq ($(tbb_cpf),1)
|
||||
ifeq (1,$(tbb_cpf))
|
||||
export CPF_SUFFIX ?=_preview
|
||||
endif
|
||||
|
||||
ifeq (0,$(exceptions))
|
||||
# Inverse the value, for simplicity of use
|
||||
export no_exceptions=1
|
||||
endif
|
||||
|
||||
ifdef cpp0x
|
||||
$(warning "Warning: deprecated cpp0x=$(cpp0x) is used, stdver must be used instead. Building in stdver=c++0x mode.")
|
||||
export stdver?=c++0x
|
||||
@@ -53,8 +58,7 @@ ifneq (,$(stdver))
|
||||
ifeq (,$(findstring ++, $(stdver)))
|
||||
$(warning "Warning: unexpected stdver=$(stdver) is used.")
|
||||
endif
|
||||
|
||||
CXX_STD_FLAGS=-std=$(stdver) -D_TBB_CPP0X
|
||||
CXX_STD_FLAGS=-std=$(stdver)
|
||||
endif
|
||||
|
||||
# The requested option is added unconditionally.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -46,9 +46,12 @@ endif
|
||||
INCLUDES += $(INCLUDE_KEY)$(tbb_root)/src $(INCLUDE_KEY)$(tbb_root)/src/rml/include $(INCLUDE_KEY)$(tbb_root)/include
|
||||
|
||||
CPLUS_FLAGS += $(WARNING_KEY) $(CXXFLAGS)
|
||||
ifeq ($(tbb_cpf),1)
|
||||
ifeq (1,$(tbb_cpf))
|
||||
CPLUS_FLAGS += $(DEFINE_KEY)__TBB_CPF_BUILD=1
|
||||
endif
|
||||
ifeq (0,$(exceptions))
|
||||
CPLUS_FLAGS += $(DEFINE_KEY)TBB_USE_EXCEPTIONS=0
|
||||
endif
|
||||
LINK_FLAGS += $(LDFLAGS)
|
||||
LIB_LINK_FLAGS += $(LDFLAGS)
|
||||
|
||||
@@ -60,7 +63,14 @@ ifeq ($(origin LIB_LINK_LIBS), undefined)
|
||||
LIB_LINK_LIBS = $(LIBDL) $(LIBS)
|
||||
endif
|
||||
|
||||
# Define C & C++ compilers according to platform defaults or CXX & CC environment variables
|
||||
ifneq (,$(findstring environment, $(origin CXX)))
|
||||
CPLUS = $(CXX)
|
||||
endif
|
||||
CONLY ?= $(CPLUS)
|
||||
ifneq (,$(findstring environment, $(origin CC)))
|
||||
CONLY = $(CC)
|
||||
endif
|
||||
|
||||
# The most generic rules
|
||||
#$(1) - is the target pattern
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2005-2017 Intel Corporation
|
||||
// Copyright (c) 2005-2018 Intel Corporation
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
@@ -123,7 +123,10 @@ function doWork() {
|
||||
} else if (mapContext.match(vc120)) {
|
||||
WScript.Echo("vc12");
|
||||
} else if (mapContext.match(vc140)) {
|
||||
WScript.Echo("vc14");
|
||||
if (WshShell.ExpandEnvironmentStrings("%VisualStudioVersion%") == "15.0")
|
||||
WScript.Echo("vc14.1");
|
||||
else
|
||||
WScript.Echo("vc14");
|
||||
} else {
|
||||
WScript.Echo("unknown");
|
||||
}
|
||||
@@ -132,6 +135,7 @@ function doWork() {
|
||||
|
||||
if (WScript.Arguments(0) == "/minversion") {
|
||||
var compilerVersion;
|
||||
var compilerUpdate;
|
||||
if (WScript.Arguments(1) == "cl") {
|
||||
compilerVersion = clVersion.match(/Compiler Version ([0-9.]+)\s/mi)[1];
|
||||
// compilerVersion is in xx.xx.xxxxx.xx format, i.e. a string.
|
||||
@@ -143,13 +147,20 @@ function doWork() {
|
||||
var defs = readAllFromFile("detect.map");
|
||||
// In #define __INTEL_COMPILER XXYY, XX is the major ICL version, YY is minor
|
||||
compilerVersion = defs.match(/__INTEL_COMPILER[ \t]*([0-9]+).*$/mi)[1] / 100;
|
||||
compilerUpdate = defs.match(/__INTEL_COMPILER_UPDATE[ \t]*([0-9]+).*$/mi)[1];
|
||||
// compiler version is a number; it compares well with another major.minor
|
||||
// version number, where major has one, two, and perhaps more digits (9.1, 11, etc).
|
||||
}
|
||||
if (compilerVersion >= WScript.Arguments(2)) {
|
||||
WScript.Echo("ok");
|
||||
} else {
|
||||
var requestedVersion = WScript.Arguments(2);
|
||||
var requestedUpdate = 0;
|
||||
if (WScript.Arguments.Count() > 3)
|
||||
requestedUpdate = WScript.Arguments(3);
|
||||
if (compilerVersion < requestedVersion) {
|
||||
WScript.Echo("fail");
|
||||
} else if (compilerVersion == requestedVersion && compilerUpdate < requestedUpdate) {
|
||||
WScript.Echo("fail");
|
||||
} else {
|
||||
WScript.Echo("ok");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
REM
|
||||
REM Copyright (c) 2005-2017 Intel Corporation
|
||||
REM Copyright (c) 2005-2018 Intel Corporation
|
||||
REM
|
||||
REM Licensed under the Apache License, Version 2.0 (the "License");
|
||||
REM you may not use this file except in compliance with the License.
|
||||
@@ -25,6 +25,7 @@ set bin_dir=%CD%
|
||||
set fslash_bin_dir=%bin_dir:\=/%
|
||||
set _INCLUDE=INCLUDE& set _LIB=LIB
|
||||
if not x%UNIXMODE%==x set _INCLUDE=CPATH& set _LIB=LIBRARY_PATH
|
||||
if not x%USE_INCLUDE_ENV%==x set _INCLUDE=INCLUDE
|
||||
|
||||
echo Generating local tbbvars.bat
|
||||
echo @echo off>tbbvars.bat
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -41,7 +41,7 @@ To port Intel TBB to a new platform, operating system or architecture, see the <
|
||||
<H3>Software prerequisites:</H3>
|
||||
<OL>
|
||||
<LI>C++ compiler for the platform, operating system and architecture of interest.
|
||||
Either the native compiler for your system, or, optionally, the appropriate Intel® C++ compiler, may be used.
|
||||
Either the native compiler for your system, or, optionally, the appropriate Intel® C++ Compiler, may be used.
|
||||
<LI>GNU make utility. On Windows OS, if a UNIX* emulator is used to run GNU make,
|
||||
it should be able to run Windows OS utilities and commands. On Linux OS, macOS, etc.,
|
||||
shell commands issued by GNU make should execute in a Bourne or BASH compatible shell.
|
||||
@@ -57,7 +57,7 @@ On systems that support both 64-bit and 32-bit libraries, these steps build the
|
||||
</P>
|
||||
<OL>
|
||||
<LI>Change to the <A HREF="../index.html">top-level directory</A> of the installed software.
|
||||
<LI>If using the Intel® C++ compiler, make sure the appropriate compiler is available in your PATH
|
||||
<LI>If using the Intel® C++ Compiler, make sure the appropriate compiler is available in your PATH
|
||||
(e.g., by sourcing the appropriate iccvars script for the compiler to be used).
|
||||
<LI>Invoke GNU make using no arguments, for example, <TT>make</TT>.
|
||||
</OL>
|
||||
@@ -68,7 +68,7 @@ or related systems that support both 64-bit and 32-bit libraries), perform the f
|
||||
</P>
|
||||
<OL>
|
||||
<LI>Change to the <A HREF="../index.html">top-level directory</A> of the installed software.
|
||||
<LI>If using the Intel® C++ compiler, make sure the appropriate compiler is available in your PATH
|
||||
<LI>If using the Intel® C++ Compiler, make sure the appropriate compiler is available in your PATH
|
||||
(e.g., by sourcing the appropriate iccvars script for the compiler to be used).
|
||||
<LI>Explicitly specify the architecture when invoking GNU make, e.g. <TT>make arch=ia32</TT>.
|
||||
</OL>
|
||||
@@ -98,7 +98,7 @@ To perform different build and/or test operations, use the following steps.
|
||||
</P>
|
||||
<OL>
|
||||
<LI>Change to the <A HREF="../index.html">top-level directory</A> of the installed software.
|
||||
<LI>If using the Intel® C++ compiler, make sure the appropriate compiler is available in your PATH
|
||||
<LI>If using the Intel® C++ Compiler, make sure the appropriate compiler is available in your PATH
|
||||
(e.g., by sourcing the appropriate iccvars script for the compiler to be used).
|
||||
<LI>Invoke GNU make by using one or more of the following commands.
|
||||
<DL>
|
||||
@@ -134,9 +134,9 @@ To perform different build and/or test operations, use the following steps.
|
||||
<DD>Build and run as above, but additionally specify the version of the C++ standard or dialect to be used by
|
||||
the compiler. The specified value of <TT>stdver</TT> will be used as a parameter to the appropriate
|
||||
compiler option (such as <TT>-std</TT>); the behavior in case of unsupported value is compiler-specific.
|
||||
<DT><TT>make target_ui=win8ui [target_ui_mode=production] <B>[</B>(above options or targets)<B>]</B></TT>
|
||||
<DD>Build and run as above, but use API that is compliant with Windows Store* applications.
|
||||
<TT>target_ui_mode=production</TT> is used to produce binaries that are compliant with Windows Store* application container. In later case they won't with Intel TBB unit tests but work only with Windows Store* applications.
|
||||
<DT><TT>make target_app=<B>{</B>win8ui, uwp, uwd<B>}</B> [target_mode=store] <B>[</B>(above options or targets)<B>]</B></TT>
|
||||
<DD>Build and run as above, but use API that is compliant with Universal Windows* applications. Use <TT>win8ui</TT> option, if you want to use Intel TBB in Windows* 8 Universal application, <TT>uwp</TT> in case of Windows* 10 Universal Windows application and <TT>uwd</TT> for the usage inside Universal Windows* driver.
|
||||
<TT>target_mode=store</TT> is used to produce binaries that are compliant with Windows Store* application container. In later case they won't work with Intel TBB unit tests but work only with Windows Store* applications.
|
||||
<DT><TT>ndk-build target=android <B>[</B>(above options or targets)<B>]</B></TT>
|
||||
<DD>Build and run as above, but build libraries for Android* OS by Android NDK that should be installed. Makefiles were tested with revision 8.
|
||||
<DT><TT>make arch=<B>{</B>ia32, intel64, ia64<B>}</B> <B>[</B>(above options or targets)<B>]</B></TT>
|
||||
@@ -233,7 +233,7 @@ See the Makefile infrastructure files for examples.
|
||||
<HR>
|
||||
<A HREF="../index.html">Up to parent directory</A>
|
||||
<P></P>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<P></P>
|
||||
Intel, the Intel logo and Itanium are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
|
||||
<p></p>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -81,7 +81,7 @@ endif
|
||||
|
||||
ifneq (,$(codecov))
|
||||
# no tool support for code coverage, need profile data generation
|
||||
ITT_NOTIFY = -prof-genx
|
||||
ITT_NOTIFY = -prof-gen=srcpos
|
||||
endif
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -44,7 +44,7 @@ else
|
||||
CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
|
||||
endif
|
||||
|
||||
CPLUS_FLAGS += -DUSE_PTHREAD
|
||||
CPLUS_FLAGS += -DUSE_PTHREAD $(ITT_NOTIFY)
|
||||
|
||||
# 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>" | clang -E -M - 2>&1 | grep immintrin.h` 2>/dev/null))
|
||||
@@ -57,12 +57,14 @@ ifneq (,$(stdlib))
|
||||
endif
|
||||
|
||||
ifeq (intel64,$(arch))
|
||||
ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
CPLUS_FLAGS += -m64 $(RTM_KEY)
|
||||
LINK_FLAGS += -m64
|
||||
LIB_LINK_FLAGS += -m64
|
||||
endif
|
||||
|
||||
ifeq (ia32,$(arch))
|
||||
ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
CPLUS_FLAGS += -m32 $(RTM_KEY)
|
||||
LINK_FLAGS += -m32
|
||||
LIB_LINK_FLAGS += -m32
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -38,21 +38,41 @@ LINK_FLAGS =
|
||||
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 gcc -dumpversion | egrep "^(4\.[8-9]|[5-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 gcc -dumpversion | egrep "^([5-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 gcc -dumpversion | egrep "^([6-9])"))
|
||||
# keep pre-contruction stores for zero initialization
|
||||
DSE_KEY = -flifetime-dse=1
|
||||
endif
|
||||
|
||||
ifeq ($(cfg), release)
|
||||
CPLUS_FLAGS = -g -O2
|
||||
else
|
||||
CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
|
||||
endif
|
||||
|
||||
CPLUS_FLAGS += -DUSE_PTHREAD
|
||||
CPLUS_FLAGS += -DUSE_PTHREAD $(ITT_NOTIFY)
|
||||
|
||||
ifeq (intel64,$(arch))
|
||||
ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
CPLUS_FLAGS += -m64
|
||||
LINK_FLAGS += -m64
|
||||
LIB_LINK_FLAGS += -m64
|
||||
endif
|
||||
|
||||
ifeq (ia32,$(arch))
|
||||
ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
CPLUS_FLAGS += -m32
|
||||
LINK_FLAGS += -m32
|
||||
LIB_LINK_FLAGS += -m32
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -58,19 +58,19 @@ else
|
||||
CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
|
||||
endif
|
||||
|
||||
CPLUS_FLAGS += -DUSE_PTHREAD
|
||||
ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
CPLUS_FLAGS += -DUSE_PTHREAD $(ITT_NOTIFY)
|
||||
|
||||
ifneq (,$(codecov))
|
||||
CPLUS_FLAGS += -prof-genx
|
||||
CPLUS_FLAGS += -prof-gen=srcpos
|
||||
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
|
||||
MACOSX_DEPLOYMENT_TARGET ?= 10.11
|
||||
ifneq (,$(shell icc -dumpversion | egrep "^1[4-9]\."))
|
||||
ifneq (,$(stdlib))
|
||||
CPLUS_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=10.8
|
||||
LIB_LINK_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=10.8
|
||||
CPLUS_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
|
||||
LIB_LINK_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -41,7 +41,7 @@ else
|
||||
endif
|
||||
|
||||
ifneq (,$(codecov))
|
||||
CPLUS_FLAGS += -prof-genx
|
||||
CPLUS_FLAGS += -prof-gen=srcpos
|
||||
endif
|
||||
|
||||
ifneq (,$(shell icc -dumpversion | egrep "^1[6-9]\."))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
REM
|
||||
REM Copyright (c) 2005-2017 Intel Corporation
|
||||
REM Copyright (c) 2005-2018 Intel Corporation
|
||||
REM
|
||||
REM Licensed under the Apache License, Version 2.0 (the "License");
|
||||
REM you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2005-2017 Intel Corporation
|
||||
// Copyright (c) 2005-2018 Intel Corporation
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<BODY>
|
||||
|
||||
<H2>Overview</H2>
|
||||
This directory contains the Visual Studio* 2012 solution to build Intel® Threading Building Blocks.
|
||||
This directory contains the Visual Studio* 2013 solution to build Intel® Threading Building Blocks.
|
||||
|
||||
|
||||
<H2>Files</H2>
|
||||
@@ -20,10 +20,10 @@ This directory contains the Visual Studio* 2012 solution to build Intel® Thr
|
||||
<HR>
|
||||
<A HREF="../index.html">Up to parent directory</A>
|
||||
<P></P>
|
||||
Copyright © 2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2018 Intel Corporation. All Rights Reserved.
|
||||
<P></P>
|
||||
Intel is a registered trademark or trademark of Intel Corporation
|
||||
or its subsidiaries in the United States and other countries.
|
||||
Intel and the Intel logo are trademarks of Intel Corporation
|
||||
or its subsidiaries in the U.S. and/or other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
</BODY>
|
||||
@@ -1,5 +1,7 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.40629.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8898CE0B-0BFB-45AE-AA71-83735ED2510D}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
index.html = index.html
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug-MT|Win32">
|
||||
<Configuration>Debug-MT</Configuration>
|
||||
@@ -44,45 +44,45 @@
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -599,6 +599,7 @@
|
||||
<ClInclude Include="..\..\include\tbb\blocked_range.h" />
|
||||
<ClInclude Include="..\..\include\tbb\blocked_range2d.h" />
|
||||
<ClInclude Include="..\..\include\tbb\blocked_range3d.h" />
|
||||
<ClInclude Include="..\..\include\tbb\blocked_rangeNd.h" />
|
||||
<ClInclude Include="..\..\include\tbb\cache_aligned_allocator.h" />
|
||||
<ClInclude Include="..\..\include\tbb\combinable.h" />
|
||||
<ClInclude Include="..\..\include\tbb\concurrent_hash_map.h" />
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug-MT|Win32">
|
||||
<Configuration>Debug-MT</Configuration>
|
||||
@@ -44,45 +44,45 @@
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -482,6 +482,7 @@
|
||||
<ClInclude Include="..\..\include\tbb\blocked_range.h" />
|
||||
<ClInclude Include="..\..\include\tbb\blocked_range2d.h" />
|
||||
<ClInclude Include="..\..\include\tbb\blocked_range3d.h" />
|
||||
<ClInclude Include="..\..\include\tbb\blocked_rangeNd.h" />
|
||||
<ClInclude Include="..\..\include\tbb\cache_aligned_allocator.h" />
|
||||
<ClInclude Include="..\..\include\tbb\combinable.h" />
|
||||
<ClInclude Include="..\..\include\tbb\concurrent_hash_map.h" />
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug-MT|Win32">
|
||||
<Configuration>Debug-MT</Configuration>
|
||||
@@ -44,45 +44,45 @@
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -29,7 +29,7 @@ LINK_FLAGS = /link /nologo
|
||||
LIB_LINK_FLAGS=/link /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DYNAMICBASE /NXCOMPAT
|
||||
|
||||
ifneq (,$(stdver))
|
||||
CXX_STD_FLAGS = /std:$(stdver) /D_TBB_CPP0X
|
||||
CXX_STD_FLAGS = /std:$(stdver)
|
||||
endif
|
||||
|
||||
ifeq ($(arch), ia32)
|
||||
@@ -41,7 +41,12 @@ ifeq ($(runtime), vc_mt)
|
||||
else
|
||||
MS_CRT_KEY = /MD$(if $(findstring debug,$(cfg)),d)
|
||||
endif
|
||||
EH_FLAGS = /EHsc /GR
|
||||
EH_FLAGS = $(if $(no_exceptions),/EHs-,/EHsc /GR)
|
||||
|
||||
# UWD binaries have to use static CRT linkage
|
||||
ifeq ($(target_app), uwd)
|
||||
MS_CRT_KEY = /MT$(if $(findstring debug,$(cfg)),d)
|
||||
endif
|
||||
|
||||
ifeq ($(cfg), release)
|
||||
CPLUS_FLAGS = $(MS_CRT_KEY) /O2 /Zi $(EH_FLAGS) /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=$(TBB.LIB)
|
||||
@@ -52,15 +57,25 @@ ifeq ($(cfg), debug)
|
||||
ASM_FLAGS = /DUSE_FRAME_POINTER
|
||||
endif
|
||||
|
||||
ifeq ($(target_ui), win8ui)
|
||||
CPLUS_FLAGS += /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP"
|
||||
_WIN32_WINNT=0x0602
|
||||
ifeq ($(target_ui_mode), production)
|
||||
LIB_LINK_FLAGS += /APPCONTAINER
|
||||
ZW_KEY = /ZW:nostdlib
|
||||
|
||||
# These flags are general for Windows* universal applications
|
||||
ifneq (,$(target_app))
|
||||
CPLUS_FLAGS += $(ZW_KEY) /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP"
|
||||
endif
|
||||
|
||||
ifeq ($(target_app), win8ui)
|
||||
_WIN32_WINNT = 0x0602
|
||||
else ifneq (,$(filter $(target_app),uwp uwd))
|
||||
_WIN32_WINNT = 0x0A00
|
||||
LIB_LINK_FLAGS += /NODEFAULTLIB:kernel32.lib OneCore.lib
|
||||
else
|
||||
CPLUS_FLAGS += /DDO_ITT_NOTIFY
|
||||
endif
|
||||
ifeq ($(target_mode), store)
|
||||
# it is necessary to source vcvars with 'store' argument in production
|
||||
LIB_LINK_FLAGS += /APPCONTAINER
|
||||
endif
|
||||
|
||||
CPLUS_FLAGS += /GS
|
||||
|
||||
@@ -71,6 +86,7 @@ DEFINE_KEY = /D
|
||||
OUTPUT_KEY = /Fe
|
||||
OUTPUTOBJ_KEY = /Fo
|
||||
WARNING_AS_ERROR_KEY = /WX
|
||||
WARNING_SUPPRESS = $(if $(no_exceptions),/wd4530 /wd4577)
|
||||
BIGOBJ_KEY = /bigobj
|
||||
|
||||
ifeq ($(runtime),vc7.1)
|
||||
@@ -85,6 +101,8 @@ EXPORT_KEY = /DEF:
|
||||
NODEFAULTLIB_KEY = /Zl
|
||||
NOINTRINSIC_KEY = /Oi-
|
||||
|
||||
INCLUDE_TEST_HEADERS = /FI$(tbb_root)/src/test/harness_preload.h
|
||||
|
||||
ifeq ($(runtime),vc8)
|
||||
WARNING_KEY += /Wp64
|
||||
CPLUS_FLAGS += /D_USE_RTM_VERSION
|
||||
@@ -104,7 +122,7 @@ endif
|
||||
|
||||
CPLUS_FLAGS += /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE \
|
||||
/D_WIN32_WINNT=$(_WIN32_WINNT)
|
||||
C_FLAGS = $(subst $(EH_FLAGS),,$(CPLUS_FLAGS))
|
||||
C_FLAGS = $(subst $(ZW_KEY),,$(subst $(EH_FLAGS),,$(CPLUS_FLAGS)))
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# End of setting compiler flags.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -38,11 +38,11 @@ LINK_FLAGS = /link /nologo
|
||||
LIB_LINK_FLAGS= /link /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DYNAMICBASE /NXCOMPAT
|
||||
|
||||
ifeq ($(arch), ia32)
|
||||
LIB_LINK_FLAGS += /SAFESEH
|
||||
LIB_LINK_FLAGS += /SAFESEH
|
||||
endif
|
||||
|
||||
ifneq (,$(stdver))
|
||||
CXX_STD_FLAGS = /Qstd=$(stdver) /D_TBB_CPP0X
|
||||
CXX_STD_FLAGS = /Qstd=$(stdver)
|
||||
endif
|
||||
|
||||
# ICC 12.0 and higher provide Intel(R) Cilk(TM) Plus
|
||||
@@ -50,12 +50,17 @@ ifeq (ok,$(call detect_js,/minversion icl 12))
|
||||
CILK_AVAILABLE = yes
|
||||
endif
|
||||
|
||||
# ICC 17.0.4 and higher provide support for VS2017
|
||||
ifeq (ok,$(call detect_js,/minversion icl 17 4))
|
||||
VS2017_SUPPORT = yes
|
||||
endif
|
||||
|
||||
ifeq ($(runtime), vc_mt)
|
||||
MS_CRT_KEY = /MT$(if $(findstring debug,$(cfg)),d)
|
||||
else
|
||||
MS_CRT_KEY = /MD$(if $(findstring debug,$(cfg)),d)
|
||||
endif
|
||||
EH_FLAGS = /EHsc /GR
|
||||
EH_FLAGS = $(if $(no_exceptions),/EHs-,/EHsc /GR)
|
||||
|
||||
ifeq ($(cfg), release)
|
||||
CPLUS_FLAGS = $(MS_CRT_KEY) /O2 /Zi $(EH_FLAGS) /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=$(TBB.LIB)
|
||||
@@ -77,11 +82,13 @@ OUTPUT_KEY = /Fe
|
||||
OUTPUTOBJ_KEY = /Fo
|
||||
WARNING_AS_ERROR_KEY = /WX
|
||||
WARNING_KEY = /W3
|
||||
WARNING_SUPPRESS = $(if $(no_exceptions),/wd583)
|
||||
DYLIB_KEY = /DLL
|
||||
EXPORT_KEY = /DEF:
|
||||
NODEFAULTLIB_KEY = /Zl
|
||||
NOINTRINSIC_KEY = /Oi-
|
||||
BIGOBJ_KEY = /bigobj
|
||||
INCLUDE_TEST_HEADERS = /FI$(tbb_root)/src/test/harness_preload.h
|
||||
|
||||
|
||||
ifneq (,$(codecov))
|
||||
@@ -122,7 +129,12 @@ ifeq ($(VCCOMPAT_FLAG),)
|
||||
VCCOMPAT_FLAG := $(if $(findstring vc12, $(VCVERSION)),/Qvc12)
|
||||
endif
|
||||
ifeq ($(VCCOMPAT_FLAG),)
|
||||
VCCOMPAT_FLAG := $(if $(findstring vc14, $(VCVERSION)),/Qvc14)
|
||||
VCCOMPAT_FLAG := $(if $(findstring vc14, $(VCVERSION)),/Qvc14)
|
||||
ifeq ($(VS2017_SUPPORT),yes)
|
||||
ifneq (,$(findstring vc14.1, $(VCVERSION)))
|
||||
VCCOMPAT_FLAG := /Qvc14.1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifeq ($(VCCOMPAT_FLAG),)
|
||||
$(error VC version not detected correctly: $(VCVERSION) )
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2005-2017 Intel Corporation
|
||||
# Copyright (c) 2005-2018 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
.. contents::
|
||||
|
||||
Introduction
|
||||
------------
|
||||
Many developers use CMake to manage their development projects, so the Intel(R) Threading Building Blocks (Intel(R) TBB)
|
||||
team created the set of CMake modules to simplify integration of the Intel TBB library into a CMake project.
|
||||
The modules are available starting from Intel TBB 2017 U7 in `<tbb_root>/cmake <https://github.com/01org/tbb/tree/tbb_2017/cmake>`_.
|
||||
|
||||
About Intel TBB
|
||||
^^^^^^^^^^^^^^^
|
||||
Intel TBB is a library that supports scalable parallel programming using standard ISO C++ code. It does not require special languages or compilers. It is designed to promote scalable data parallel programming. Additionally, it fully supports nested parallelism, so you can build larger parallel components from smaller parallel components. To use the library, you specify tasks, not threads, and let the library map tasks onto threads in an efficient manner.
|
||||
|
||||
Many of the library interfaces employ generic programming, in which interfaces are defined by requirements on types and not specific types. The C++ Standard Template Library (STL) is an example of generic programming. Generic programming enables Intel TBB to be flexible yet efficient. The generic interfaces enable you to customize components to your specific needs.
|
||||
|
||||
The net result is that Intel TBB enables you to specify parallelism far more conveniently than using raw threads, and at the same time can improve performance.
|
||||
|
||||
References
|
||||
^^^^^^^^^^
|
||||
* `Official Intel TBB open source site <https://www.threadingbuildingblocks.org/>`_
|
||||
* `Official GitHub repository <https://github.com/01org/tbb>`_
|
||||
|
||||
Engineering team contacts
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
The Intel TBB team is very interested in convenient integration of the Intel TBB library into customer projects. These CMake modules were created to provide such a possibility for CMake projects using a simple but powerful interface. We hope you will try these modules and we are looking forward to receiving your feedback!
|
||||
|
||||
E-mail us: `inteltbbdevelopers@intel.com <mailto:inteltbbdevelopers@intel.com>`_.
|
||||
|
||||
Visit our `forum <https://software.intel.com/en-us/forums/intel-threading-building-blocks/>`_.
|
||||
|
||||
Release Notes
|
||||
-------------
|
||||
* Minimum supported CMake version: ``3.0.0``.
|
||||
* Intel TBB versioning via `find_package <https://cmake.org/cmake/help/latest/command/find_package.html>`_ has restricted functionality: compatibility of update numbers (as well as interface versions) is not checked. Supported versioning: ``find_package(TBB <major>.<minor> ...)``. Intel TBB interface version can be obtained in the customer project via the ``TBB_INTERFACE_VERSION`` variable.
|
||||
|
||||
Use cases of Intel TBB integration into CMake-aware projects
|
||||
------------------------------------------------------------
|
||||
There are two types of Intel TBB packages:
|
||||
* Binary packages with pre-built binaries for Windows* OS, Linux* OS and macOS*. They are available on the releases page of the Github repository: https://github.com/01org/tbb/releases. The main purpose of the binary package integration is the ability to build Intel TBB header files and binaries into your CMake-aware project.
|
||||
* A source package is also available to download from the release page via the "Source code" link. In addition, it can be cloned from the repository by ``git clone https://github.com/01org/tbb.git``. The main purpose of the source package integration is to allow you to do a custom build of the Intel TBB library from the source files and then build that into your CMake-aware project.
|
||||
|
||||
There are four types of CMake modules that can be used to integrate Intel TBB: `TBBConfig`, `TBBGet`, `TBBMakeConfig` and `TBBBuild`. See `Technical documentation for CMake modules`_ section for additional details.
|
||||
|
||||
Binary package integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The following use case is valid for packages starting from Intel TBB 2017 U7:
|
||||
|
||||
* Download package manually and make integration.
|
||||
|
||||
Pre-condition: Location of TBBConfig.cmake is available via ``TBB_DIR`` or ``CMAKE_PREFIX_PATH`` contains path to Intel TBB root.
|
||||
|
||||
CMake code for integration:
|
||||
|
||||
.. code:: cmake
|
||||
|
||||
find_package(TBB <options>)
|
||||
|
||||
The following use case is valid for all Intel TBB 2017 packages.
|
||||
|
||||
* Download package using TBBGet_ and make integration.
|
||||
|
||||
Pre-condition: Intel TBB CMake modules are available via <path-to-tbb-cmake-modules>.
|
||||
|
||||
CMake code for integration:
|
||||
.. code:: cmake
|
||||
|
||||
include(<path-to-tbb-cmake-modules>/TBBGet.cmake)
|
||||
tbb_get(TBB_ROOT tbb_root CONFIG_DIR TBB_DIR)
|
||||
find_package(TBB <options>)
|
||||
|
||||
Source package integration
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
* Build Intel TBB from existing source files using TBBBuild_ and make integration.
|
||||
|
||||
Pre-condition: Intel TBB source code is available via <tbb_root> and Intel TBB CMake modules are available via <path-to-tbb-cmake-modules>.
|
||||
|
||||
CMake code for integration:
|
||||
.. code:: cmake
|
||||
|
||||
include(<path-to-tbb-cmake-modules>/TBBBuild.cmake)
|
||||
tbb_build(TBB_ROOT <tbb_root> CONFIG_DIR TBB_DIR)
|
||||
find_package(TBB <options>)
|
||||
|
||||
* Download Intel TBB source files using TBBGet_, build it using TBBBuild_ and make integration.
|
||||
|
||||
Pre-condition: Intel TBB CMake modules are available via <path-to-tbb-cmake-modules>.
|
||||
|
||||
CMake code for integration:
|
||||
.. code:: cmake
|
||||
|
||||
include(<path-to-tbb-cmake-modules>/TBBGet.cmake)
|
||||
include(<path-to-tbb-cmake-modules>/TBBBuild.cmake)
|
||||
tbb_get(TBB_ROOT tbb_root SOURCE_CODE)
|
||||
tbb_build(TBB_ROOT ${tbb_root} CONFIG_DIR TBB_DIR)
|
||||
find_package(TBB <options>)
|
||||
|
||||
Tutorials: Intel TBB integration using CMake
|
||||
--------------------------------------------
|
||||
Binary Intel TBB integration to the sub_string_finder sample (Windows* OS)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
In this example, we will integrate binary Intel TBB package into the sub_string_finder sample on Windows* OS (Microsoft* Visual Studio).
|
||||
This example is also applicable for other platforms with slight changes.
|
||||
Place holders <version> and <date> should be replaced with the actual values for the Intel TBB package being used. The example is written for `CMake 3.7.1`.
|
||||
|
||||
Precondition:
|
||||
* `Microsoft* Visual Studio 11` or higher.
|
||||
* `CMake 3.0.0` or higher.
|
||||
|
||||
#. Download the latest binary package for Windows from `this page <https://github.com/01org/tbb/releases/latest>`_ and unpack it to the directory ``C:\demo_tbb_cmake``.
|
||||
#. In the directory ``C:\demo_tbb_cmake\tbb<version>_<date>oss\examples\GettingStarted\sub_string_finder`` create ``CMakeLists.txt`` file with the following content:
|
||||
.. code:: cmake
|
||||
|
||||
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
|
||||
|
||||
project(sub_string_finder CXX)
|
||||
add_executable(sub_string_finder sub_string_finder.cpp)
|
||||
|
||||
# find_package will search for available TBBConfig using variables CMAKE_PREFIX_PATH and TBB_DIR.
|
||||
find_package(TBB REQUIRED tbb)
|
||||
|
||||
# Link Intel TBB imported targets to the executable;
|
||||
# "TBB::tbb" can be used instead of "${TBB_IMPORTED_TARGETS}".
|
||||
target_link_libraries(sub_string_finder ${TBB_IMPORTED_TARGETS})
|
||||
#. Run CMake GUI and:
|
||||
* Fill the following fields (you can use the buttons ``Browse Source...`` and ``Browse Build...`` accordingly)
|
||||
|
||||
* Where is the source code: ``C:/demo_tbb_cmake/tbb<version>_<date>oss/examples/GettingStarted/sub_string_finder``
|
||||
* Where to build the binaries: ``C:/demo_tbb_cmake/tbb<version>_<date>oss/examples/GettingStarted/sub_string_finder/build``
|
||||
|
||||
* Add new cache entry using button ``Add Entry`` to let CMake know where to search for TBBConfig:
|
||||
|
||||
* Name: ``CMAKE_PREFIX_PATH``
|
||||
* Type: ``PATH``
|
||||
* Value: ``C:/demo_tbb_cmake/tbb<version>_<date>oss``
|
||||
|
||||
* Push the button ``Generate`` and choose a proper generator for your Microsoft* Visual Studio version.
|
||||
#. Now you can open the generated solution ``C:/demo_tbb_cmake/tbb<version>_<date>oss/examples/GettingStarted/sub_string_finder/build/sub_string_finder.sln`` in your Microsoft* Visual Studio and build it.
|
||||
|
||||
Source code integration of Intel TBB to the sub_string_finder sample (Linux* OS)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
In this example, we will build Intel TBB from source code with enabled Community Preview Features and link the sub_string_finder sample with the built library.
|
||||
This example is also applicable for other platforms with slight changes.
|
||||
|
||||
Precondition:
|
||||
* `CMake 3.0.0` or higher.
|
||||
* `Git` (to clone the Intel TBB repository from GitHub)
|
||||
|
||||
#. Create the directory ``~/demo_tbb_cmake``, go to the created directory and clone the Intel TBB repository there:
|
||||
``mkdir ~/demo_tbb_cmake ; cd ~/demo_tbb_cmake ; git clone https://github.com/01org/tbb.git``
|
||||
#. In the directory ``~/demo_tbb_cmake/tbb/examples/GettingStarted/sub_string_finder`` create ``CMakeLists.txt`` file with following content:
|
||||
.. code:: cmake
|
||||
|
||||
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
|
||||
|
||||
project(sub_string_finder CXX)
|
||||
add_executable(sub_string_finder sub_string_finder.cpp)
|
||||
|
||||
include(${TBB_ROOT}/cmake/TBBBuild.cmake)
|
||||
|
||||
# Build Intel TBB with enabled Community Preview Features (CPF).
|
||||
tbb_build(TBB_ROOT ${TBB_ROOT} CONFIG_DIR TBB_DIR MAKE_ARGS tbb_cpf=1)
|
||||
|
||||
find_package(TBB REQUIRED tbb_preview)
|
||||
|
||||
# Link Intel TBB imported targets to the executable;
|
||||
# "TBB::tbb_preview" can be used instead of "${TBB_IMPORTED_TARGETS}".
|
||||
target_link_libraries(sub_string_finder ${TBB_IMPORTED_TARGETS})
|
||||
#. Create a build directory for the sub_string_finder sample to perform build out of source, go to the created directory
|
||||
``mkdir ~/demo_tbb_cmake/tbb/examples/GettingStarted/sub_string_finder/build ; cd ~/demo_tbb_cmake/tbb/examples/GettingStarted/sub_string_finder/build``
|
||||
#. Run CMake to prepare Makefile for the sub_string_finder sample and provide Intel TBB location (root) where to perform build:
|
||||
``cmake -DTBB_ROOT=${HOME}/demo_tbb_cmake/tbb ..``
|
||||
#. Make an executable and run it:
|
||||
``make ; ./sub_string_finder``
|
||||
|
||||
Technical documentation for CMake modules
|
||||
-----------------------------------------
|
||||
TBBConfig
|
||||
^^^^^^^^^
|
||||
|
||||
Configuration module for ``Intel(R) Threading Building Blocks (Intel(R) TBB)`` library.
|
||||
|
||||
How to use this module in your CMake project:
|
||||
#. Add location of Intel TBB (root) to `CMAKE_PREFIX_PATH <https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html>`_
|
||||
or specify location of TBBConfig.cmake in ``TBB_DIR``.
|
||||
#. Use `find_package <https://cmake.org/cmake/help/latest/command/find_package.html>`_ to configure Intel TBB.
|
||||
#. Use provided variables and/or imported targets (described below) to work with Intel TBB.
|
||||
|
||||
Intel TBB components can be passed to `find_package <https://cmake.org/cmake/help/latest/command/find_package.html>`_
|
||||
after keyword ``COMPONENTS`` or ``REQUIRED``.
|
||||
Use basic names of components (``tbb``, ``tbbmalloc``, ``tbb_preview``, etc.).
|
||||
|
||||
If components are not specified then default are used: ``tbb``, ``tbbmalloc`` and ``tbbmalloc_proxy``.
|
||||
|
||||
If ``tbbmalloc_proxy`` is requested, ``tbbmalloc`` component will also be added and set as dependency for ``tbbmalloc_proxy``.
|
||||
|
||||
TBBConfig creates `imported targets <https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#imported-targets>`_ as
|
||||
shared libraries using the following format: ``TBB::<component>`` (for example, ``TBB::tbb``, ``TBB::tbbmalloc``).
|
||||
|
||||
Variables set during Intel TBB configuration:
|
||||
|
||||
========================= ================================================
|
||||
Variable Description
|
||||
========================= ================================================
|
||||
``TBB_FOUND`` Intel TBB library is found
|
||||
``TBB_<component>_FOUND`` specific Intel TBB component is found
|
||||
``TBB_IMPORTED_TARGETS`` all created Intel TBB imported targets
|
||||
``TBB_VERSION`` Intel TBB version (format: ``<major>.<minor>``)
|
||||
``TBB_INTERFACE_VERSION`` Intel TBB interface version
|
||||
========================= ================================================
|
||||
|
||||
TBBGet
|
||||
^^^^^^
|
||||
|
||||
Module for getting ``Intel(R) Threading Building Blocks (Intel(R) TBB)`` library from `GitHub <https://github.com/01org/tbb>`_.
|
||||
|
||||
Provides the following functions:
|
||||
``tbb_get(TBB_ROOT <variable> [RELEASE_TAG <release_tag>|LATEST] [SAVE_TO <path>] [SYSTEM_NAME Linux|Windows|Darwin] [CONFIG_DIR <variable> | SOURCE_CODE])``
|
||||
downloads Intel TBB from GitHub and creates TBBConfig for the downloaded binary package if there is no TBBConfig.
|
||||
|
||||
==================================== ====================================
|
||||
Parameter Description
|
||||
==================================== ====================================
|
||||
``TBB_ROOT <variable>`` a variable to save Intel TBB root in, ``<variable>-NOTFOUND`` will be provided in case ``tbb_get`` is unsuccessful
|
||||
``RELEASE_TAG <release_tag>|LATEST`` Intel TBB release tag to be downloaded (for example, ``2017_U6``), ``LATEST`` is used by default
|
||||
``SAVE_TO <path>`` path to location at which to unpack downloaded Intel TBB, ``${CMAKE_CURRENT_BINARY_DIR}/tbb_downloaded`` is used by default
|
||||
``SYSTEM_NAME Linux|Windows|Darwin`` operating system name to download a binary package for,
|
||||
value of `CMAKE_SYSTEM_NAME <https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_NAME.html>`_ is used by default
|
||||
``CONFIG_DIR <variable>`` a variable to save location of TBBConfig.cmake and TBBConfigVersion.cmake. Ignored if ``SOURCE_CODE`` specified
|
||||
``SOURCE_CODE`` flag to get Intel TBB source code (instead of binary package)
|
||||
==================================== ====================================
|
||||
|
||||
TBBMakeConfig
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
Module for making TBBConfig in ``Intel(R) Threading Building Blocks (Intel(R) TBB)`` binary package.
|
||||
|
||||
This module is to be used for packages that do not have TBBConfig.
|
||||
|
||||
Provides the following functions:
|
||||
``tbb_make_config(TBB_ROOT <path> CONFIG_DIR <variable> [SYSTEM_NAME Linux|Windows|Darwin])``
|
||||
creates CMake configuration files (TBBConfig.cmake and TBBConfigVersion.cmake) for Intel TBB binary package.
|
||||
|
||||
==================================== ====================================
|
||||
Parameter Description
|
||||
==================================== ====================================
|
||||
``TBB_ROOT <variable>`` path to Intel TBB root
|
||||
``CONFIG_DIR <variable>`` a variable to store location of the created configuration files
|
||||
``SYSTEM_NAME Linux|Windows|Darwin`` operating system name of the binary Intel TBB package,
|
||||
value of `CMAKE_SYSTEM_NAME <https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_NAME.html>`_ is used by default
|
||||
==================================== ====================================
|
||||
|
||||
TBBBuild
|
||||
^^^^^^^^
|
||||
|
||||
Module for building ``Intel(R) Threading Building Blocks (Intel(R) TBB)`` library from the source code.
|
||||
|
||||
Provides the following functions:
|
||||
``tbb_build(TBB_ROOT <tbb_root> CONFIG_DIR <variable> [MAKE_ARGS <custom_make_arguments>])``
|
||||
builds Intel TBB from source code using the ``Makefile``, creates and provides the location of the CMake configuration files (TBBConfig.cmake and TBBConfigVersion.cmake) .
|
||||
|
||||
===================================== ====================================
|
||||
Parameter Description
|
||||
===================================== ====================================
|
||||
``TBB_ROOT <variable>`` path to Intel TBB root
|
||||
``CONFIG_DIR <variable>`` a variable to store location of the created configuration files,
|
||||
``<variable>-NOTFOUND`` will be provided in case ``tbb_build`` is unsuccessful
|
||||
``MAKE_ARGS <custom_make_arguments>`` custom arguments to be passed to ``make`` tool.
|
||||
|
||||
The following arguments are always passed with automatically detected values to
|
||||
``make`` tool if they are not redefined in ``<custom_make_arguments>``:
|
||||
|
||||
- ``compiler=<compiler>``
|
||||
- ``tbb_build_dir=<tbb_build_dir>``
|
||||
- ``tbb_build_prefix=<tbb_build_prefix>``
|
||||
- ``-j<n>``
|
||||
===================================== ====================================
|
||||
|
||||
|
||||
------------
|
||||
|
||||
Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
|
||||
|
||||
``*`` Other names and brands may be claimed as the property of others.
|
||||
@@ -0,0 +1,197 @@
|
||||
# Copyright (c) 2017-2018 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Usage:
|
||||
# include(TBBBuild.cmake)
|
||||
# tbb_build(ROOT <tbb_root> MAKE_ARGS <arg1> [... <argN>])
|
||||
# find_package(TBB <options>)
|
||||
#
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# Save the location of Intel TBB CMake modules here, as it will not be possible to do inside functions,
|
||||
# see for details: https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_LIST_DIR.html
|
||||
set(_tbb_cmake_module_path ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
##
|
||||
# Builds Intel TBB.
|
||||
#
|
||||
# Parameters:
|
||||
# TBB_ROOT <directory> - path to Intel TBB root directory (with sources);
|
||||
# MAKE_ARGS <list> - user-defined arguments to be passed to make-tool;
|
||||
# CONFIG_DIR <variable> - store location of the created TBBConfig if the build was ok, store <variable>-NOTFOUND otherwise.
|
||||
#
|
||||
function(tbb_build)
|
||||
# NOTE: internal function are used to hide them from user.
|
||||
|
||||
##
|
||||
# Provides arguments for make-command to build Intel TBB.
|
||||
#
|
||||
# Following arguments are provided automatically if they are not defined by user:
|
||||
# compiler=<value>
|
||||
# tbb_build_dir=<value>
|
||||
# tbb_build_prefix=<value>
|
||||
# -j<n>
|
||||
#
|
||||
# Parameters:
|
||||
# USER_DEFINED_ARGS <list> - list of user-defined arguments;
|
||||
# RESULT <variable> - resulting list of 'make' arguments.
|
||||
#
|
||||
function(tbb_get_make_args)
|
||||
set(oneValueArgs RESULT)
|
||||
set(multiValueArgs USER_DEFINED_ARGS)
|
||||
cmake_parse_arguments(tbb_GMA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
set(result ${tbb_GMA_USER_DEFINED_ARGS})
|
||||
|
||||
if (NOT tbb_GMA_USER_DEFINED_ARGS MATCHES "compiler=")
|
||||
# TODO: add other supported compilers.
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
set(compiler gcc)
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
set(compiler icc)
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
set(compiler icl)
|
||||
endif()
|
||||
elseif (MSVC)
|
||||
set(compiler cl)
|
||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(compiler clang)
|
||||
endif()
|
||||
|
||||
set(result "compiler=${compiler}" ${result})
|
||||
endif()
|
||||
|
||||
if (NOT tbb_GMA_USER_DEFINED_ARGS MATCHES "tbb_build_dir=")
|
||||
set(result "tbb_build_dir=${CMAKE_CURRENT_BINARY_DIR}/tbb_cmake_build" ${result})
|
||||
endif()
|
||||
|
||||
if (NOT tbb_GMA_USER_DEFINED_ARGS MATCHES "tbb_build_prefix=")
|
||||
set(result "tbb_build_prefix=tbb_cmake_build_subdir" ${result})
|
||||
endif()
|
||||
|
||||
if (NOT tbb_GMA_USER_DEFINED_ARGS MATCHES "(;|^) *\\-j[0-9]* *(;|$)")
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(num_of_cores)
|
||||
if (NOT num_of_cores EQUAL 0)
|
||||
set(result "-j${num_of_cores}" ${result})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
set(result target=android ${result})
|
||||
endif()
|
||||
|
||||
set(${tbb_GMA_RESULT} ${result} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
##
|
||||
# Provides release and debug directories basing on 'make' arguments.
|
||||
#
|
||||
# Following 'make' arguments are parsed: tbb_build_dir, tbb_build_prefix
|
||||
#
|
||||
# Parameters:
|
||||
# MAKE_ARGS <list> - 'make' arguments (tbb_build_dir and tbb_build_prefix are required)
|
||||
# RELEASE_DIR <variable> - store normalized (CMake) path to release directory
|
||||
# DEBUG_DIR <variable> - store normalized (CMake) path to debug directory
|
||||
#
|
||||
function(tbb_get_build_paths_from_make_args)
|
||||
set(oneValueArgs RELEASE_DIR DEBUG_DIR)
|
||||
set(multiValueArgs MAKE_ARGS)
|
||||
cmake_parse_arguments(tbb_GBPFMA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
foreach(arg ${tbb_GBPFMA_MAKE_ARGS})
|
||||
if (arg MATCHES "tbb_build_dir=")
|
||||
string(REPLACE "tbb_build_dir=" "" tbb_build_dir "${arg}")
|
||||
elseif (arg MATCHES "tbb_build_prefix=")
|
||||
string(REPLACE "tbb_build_prefix=" "" tbb_build_prefix "${arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(tbb_release_dir "${tbb_build_dir}/${tbb_build_prefix}_release")
|
||||
set(tbb_debug_dir "${tbb_build_dir}/${tbb_build_prefix}_debug")
|
||||
|
||||
file(TO_CMAKE_PATH "${tbb_release_dir}" tbb_release_dir)
|
||||
file(TO_CMAKE_PATH "${tbb_debug_dir}" tbb_debug_dir)
|
||||
|
||||
set(${tbb_GBPFMA_RELEASE_DIR} ${tbb_release_dir} PARENT_SCOPE)
|
||||
set(${tbb_GBPFMA_DEBUG_DIR} ${tbb_debug_dir} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# -------------------- #
|
||||
# Function entry point #
|
||||
# -------------------- #
|
||||
set(oneValueArgs TBB_ROOT CONFIG_DIR)
|
||||
set(multiValueArgs MAKE_ARGS)
|
||||
cmake_parse_arguments(tbb_build "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if (NOT EXISTS "${tbb_build_TBB_ROOT}/Makefile" OR NOT EXISTS "${tbb_build_TBB_ROOT}/src")
|
||||
message(STATUS "Intel TBB can not be built: Makefile or src directory was not found in ${tbb_build_TBB_ROOT}")
|
||||
set(${tbb_build_CONFIG_DIR} ${tbb_build_CONFIG_DIR}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(make_tool_name make)
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
set(make_tool_name gmake)
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
set(make_tool_name ndk-build)
|
||||
endif()
|
||||
|
||||
find_program(TBB_MAKE_TOOL ${make_tool_name} DOC "Make-tool to build Intel TBB.")
|
||||
mark_as_advanced(TBB_MAKE_TOOL)
|
||||
|
||||
if (NOT TBB_MAKE_TOOL)
|
||||
message(STATUS "Intel TBB can not be built: required make-tool (${make_tool_name}) was not found")
|
||||
set(${tbb_build_CONFIG_DIR} ${tbb_build_CONFIG_DIR}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
tbb_get_make_args(USER_DEFINED_ARGS ${tbb_build_MAKE_ARGS} RESULT tbb_make_args)
|
||||
|
||||
set(tbb_build_cmd ${TBB_MAKE_TOOL} ${tbb_make_args})
|
||||
|
||||
string(REPLACE ";" " " tbb_build_cmd_str "${tbb_build_cmd}")
|
||||
message(STATUS "Building Intel TBB: ${tbb_build_cmd_str}")
|
||||
execute_process(COMMAND ${tbb_build_cmd}
|
||||
WORKING_DIRECTORY ${tbb_build_TBB_ROOT}
|
||||
RESULT_VARIABLE tbb_build_result
|
||||
ERROR_VARIABLE tbb_build_error_output
|
||||
OUTPUT_QUIET)
|
||||
|
||||
if (NOT tbb_build_result EQUAL 0)
|
||||
message(STATUS "Building is unsuccessful (${tbb_build_result}): ${tbb_build_error_output}")
|
||||
set(${tbb_build_CONFIG_DIR} ${tbb_build_CONFIG_DIR}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
tbb_get_build_paths_from_make_args(MAKE_ARGS ${tbb_make_args}
|
||||
RELEASE_DIR tbb_release_dir
|
||||
DEBUG_DIR tbb_debug_dir)
|
||||
|
||||
include(${_tbb_cmake_module_path}/TBBMakeConfig.cmake)
|
||||
tbb_make_config(TBB_ROOT ${tbb_build_TBB_ROOT}
|
||||
SYSTEM_NAME ${CMAKE_SYSTEM_NAME}
|
||||
CONFIG_DIR tbb_config_dir
|
||||
CONFIG_FOR_SOURCE
|
||||
TBB_RELEASE_DIR ${tbb_release_dir}
|
||||
TBB_DEBUG_DIR ${tbb_debug_dir})
|
||||
|
||||
set(${tbb_build_CONFIG_DIR} ${tbb_config_dir} PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -0,0 +1,298 @@
|
||||
# Copyright (c) 2017-2018 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# Save the location of Intel TBB CMake modules here, as it will not be possible to do inside functions,
|
||||
# see for details: https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_LIST_DIR.html
|
||||
set(_tbb_cmake_module_path ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
##
|
||||
# Downloads file.
|
||||
#
|
||||
# Parameters:
|
||||
# URL <url> - URL to download data from;
|
||||
# SAVE_AS <filename> - filename there to save downloaded data;
|
||||
# INFO <string> - text description of content to be downloaded;
|
||||
# will be printed as message in format is "Downloading <INFO>: <URL>;
|
||||
# FORCE - option to delete local file from SAVE_AS if it exists;
|
||||
#
|
||||
function(_tbb_download_file)
|
||||
set(options FORCE)
|
||||
set(oneValueArgs URL RELEASE SAVE_AS INFO)
|
||||
cmake_parse_arguments(tbb_df "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if (tbb_df_FORCE AND EXISTS "${tbb_df_SAVE_AS}")
|
||||
file(REMOVE ${tbb_df_SAVE_AS})
|
||||
endif()
|
||||
|
||||
if (NOT EXISTS "${tbb_df_SAVE_AS}")
|
||||
set(_show_progress)
|
||||
if (TBB_DOWNLOADING_PROGRESS)
|
||||
set(_show_progress SHOW_PROGRESS)
|
||||
endif()
|
||||
|
||||
message(STATUS "Downloading ${tbb_df_INFO}: ${tbb_df_URL}")
|
||||
file(DOWNLOAD ${tbb_df_URL} ${tbb_df_SAVE_AS} ${_show_progress} STATUS download_status)
|
||||
|
||||
list(GET download_status 0 download_status_num)
|
||||
if (NOT download_status_num EQUAL 0)
|
||||
message(STATUS "Unsuccessful downloading: ${download_status}")
|
||||
file(REMOVE ${tbb_df_SAVE_AS})
|
||||
return()
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Needed file was found locally ${tbb_df_SAVE_AS}. Remove it if you still want to download a new one")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
##
|
||||
# Checks if specified Intel TBB release is available on GitHub.
|
||||
#
|
||||
# tbb_check_git_release(<release> <result>)
|
||||
# Parameters:
|
||||
# <release_tag> - release to be checked;
|
||||
# <result> - store result (TRUE/FALSE).
|
||||
#
|
||||
function(_tbb_check_git_release_tag _tbb_release_tag _tbb_release_tag_avail)
|
||||
if (_tbb_release_tag STREQUAL LATEST)
|
||||
set(${_tbb_release_tag_avail} TRUE PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(tbb_releases_file "${CMAKE_CURRENT_BINARY_DIR}/tbb_releases.json")
|
||||
|
||||
_tbb_download_file(URL "${tbb_github_api}/releases"
|
||||
SAVE_AS ${tbb_releases_file}
|
||||
INFO "information from GitHub about Intel TBB releases"
|
||||
FORCE)
|
||||
|
||||
if (NOT EXISTS "${tbb_releases_file}")
|
||||
set(${_tbb_release_tag_avail} FALSE PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(READ ${tbb_releases_file} tbb_releases)
|
||||
|
||||
string(REPLACE "\"" "" tbb_releases ${tbb_releases})
|
||||
string(REGEX MATCHALL "tag_name: *([A-Za-z0-9_\\.]+)" tbb_releases ${tbb_releases})
|
||||
|
||||
set(_release_available FALSE)
|
||||
foreach(tbb_rel ${tbb_releases})
|
||||
string(REGEX REPLACE "tag_name: *" "" tbb_rel_cut ${tbb_rel})
|
||||
list(REMOVE_ITEM tbb_releases ${tbb_rel})
|
||||
list(APPEND tbb_releases ${tbb_rel_cut})
|
||||
if (_tbb_release_tag STREQUAL tbb_rel_cut)
|
||||
set(_release_available TRUE)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT _release_available)
|
||||
string(REPLACE ";" ", " tbb_releases_str "${tbb_releases}")
|
||||
message(STATUS "Requested release tag ${_tbb_release_tag} is not available. Available Intel TBB release tags: ${tbb_releases_str}")
|
||||
endif()
|
||||
|
||||
set(${_tbb_release_tag_avail} ${_release_available} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
##
|
||||
# Compares two Intel TBB releases and provides result
|
||||
# TRUE if the first release is less than the second, FALSE otherwise.
|
||||
#
|
||||
# tbb_is_release_less(<rel1> <rel2> <result>)
|
||||
#
|
||||
function(_tbb_is_release_less rel1 rel2 result)
|
||||
# Convert release to numeric representation to compare it using "if" with VERSION_LESS.
|
||||
string(REGEX REPLACE "[A-Za-z]" "" rel1 "${rel1}")
|
||||
string(REPLACE "_" "." rel1 "${rel1}")
|
||||
string(REGEX REPLACE "[A-Za-z]" "" rel2 "${rel2}")
|
||||
string(REPLACE "_" "." rel2 "${rel2}")
|
||||
|
||||
if (${rel1} VERSION_LESS ${rel2})
|
||||
set(${result} TRUE PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(${result} FALSE PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
##
|
||||
# Finds exact URL to download Intel TBB basing on provided parameters.
|
||||
#
|
||||
# Usage:
|
||||
# _tbb_get_url(URL <var_to_save_url> RELEASE_TAG <release_tag|LATEST> OS <os> [SOURCE_CODE])
|
||||
#
|
||||
function(_tbb_get_url)
|
||||
set(oneValueArgs URL RELEASE_TAG OS)
|
||||
set(options SOURCE_CODE)
|
||||
cmake_parse_arguments(tbb_get_url "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
set(tbb_github_api "https://api.github.com/repos/01org/tbb")
|
||||
|
||||
_tbb_check_git_release_tag(${tbb_get_url_RELEASE_TAG} tbb_release_available)
|
||||
if (NOT tbb_release_available)
|
||||
set(${tbb_download_FULL_PATH} ${tbb_download_FULL_PATH}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (tbb_get_url_RELEASE_TAG STREQUAL LATEST)
|
||||
set(tbb_rel_info_api_url "${tbb_github_api}/releases/latest")
|
||||
else()
|
||||
set(tbb_rel_info_api_url "${tbb_github_api}/releases/tags/${tbb_get_url_RELEASE_TAG}")
|
||||
endif()
|
||||
|
||||
set(tbb_release_info_file "${CMAKE_CURRENT_BINARY_DIR}/tbb_${tbb_get_url_RELEASE_TAG}_info.json")
|
||||
|
||||
_tbb_download_file(URL ${tbb_rel_info_api_url}
|
||||
SAVE_AS ${tbb_release_info_file}
|
||||
INFO "information from GitHub about packages for Intel TBB ${tbb_get_url_RELEASE_TAG}"
|
||||
FORCE)
|
||||
|
||||
if (NOT EXISTS "${tbb_release_info_file}")
|
||||
set(${tbb_get_url_URL} ${tbb_get_url_URL}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(STRINGS ${tbb_release_info_file} tbb_release_info)
|
||||
|
||||
if (tbb_get_url_SOURCE_CODE)
|
||||
# Find name of the latest release to get link to source archive.
|
||||
if (tbb_get_url_RELEASE_TAG STREQUAL LATEST)
|
||||
string(REPLACE "\"" "" tbb_release_info ${tbb_release_info})
|
||||
string(REGEX REPLACE ".*tag_name: *([A-Za-z0-9_\\.]+).*" "\\1" tbb_get_url_RELEASE_TAG "${tbb_release_info}")
|
||||
endif()
|
||||
|
||||
set(${tbb_get_url_URL} "https://github.com/01org/tbb/archive/${tbb_get_url_RELEASE_TAG}.tar.gz" PARENT_SCOPE)
|
||||
else()
|
||||
if (tbb_get_url_OS MATCHES "Linux")
|
||||
set(tbb_lib_archive_suffix lin.tgz)
|
||||
elseif (tbb_get_url_OS MATCHES "Windows")
|
||||
set(tbb_lib_archive_suffix win.zip)
|
||||
elseif (tbb_get_url_OS MATCHES "Darwin")
|
||||
set(tbb_lib_archive_suffix mac.tgz)
|
||||
|
||||
# Since 2017_U4 release archive for Apple has suffix "mac.tgz" instead of "osx.tgz".
|
||||
if (NOT tbb_get_url_RELEASE_TAG STREQUAL "LATEST")
|
||||
_tbb_is_release_less(${tbb_get_url_RELEASE_TAG} 2017_U4 release_less)
|
||||
if (release_less)
|
||||
set(tbb_lib_archive_suffix osx.tgz)
|
||||
endif()
|
||||
endif()
|
||||
elseif (tbb_get_url_OS MATCHES "Android")
|
||||
set(tbb_lib_archive_suffix and.tgz)
|
||||
else()
|
||||
message(STATUS "Currently prebuilt Intel TBB is not available for your OS (${tbb_get_url_OS})")
|
||||
set(${tbb_get_url_URL} ${tbb_get_url_URL}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
string(REGEX REPLACE ".*(https.*oss_${tbb_lib_archive_suffix}).*" "\\1" tbb_bin_url "${tbb_release_info}")
|
||||
|
||||
set(${tbb_get_url_URL} ${tbb_bin_url} PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(tbb_get)
|
||||
set(oneValueArgs RELEASE_TAG SYSTEM_NAME SAVE_TO TBB_ROOT CONFIG_DIR)
|
||||
set(options SOURCE_CODE)
|
||||
cmake_parse_arguments(tbb_get "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
set(tbb_os ${CMAKE_SYSTEM_NAME})
|
||||
if (tbb_get_SYSTEM_NAME)
|
||||
set(tbb_os ${tbb_get_SYSTEM_NAME})
|
||||
endif()
|
||||
|
||||
set(tbb_release_tag LATEST)
|
||||
if (tbb_get_RELEASE_TAG)
|
||||
set(tbb_release_tag ${tbb_get_RELEASE_TAG})
|
||||
endif()
|
||||
|
||||
set(tbb_save_to ${CMAKE_CURRENT_BINARY_DIR}/tbb_downloaded)
|
||||
if (tbb_get_SAVE_TO)
|
||||
set(tbb_save_to ${tbb_get_SAVE_TO})
|
||||
endif()
|
||||
|
||||
if (tbb_get_SOURCE_CODE)
|
||||
_tbb_get_url(URL tbb_url RELEASE_TAG ${tbb_release_tag} OS ${tbb_os} SOURCE_CODE)
|
||||
else()
|
||||
_tbb_get_url(URL tbb_url RELEASE_TAG ${tbb_release_tag} OS ${tbb_os})
|
||||
endif()
|
||||
|
||||
if (NOT tbb_url)
|
||||
message(STATUS "URL to download Intel TBB has not been found")
|
||||
set(${tbb_get_TBB_ROOT} ${tbb_get_TBB_ROOT}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_filename_component(filename ${tbb_url} NAME)
|
||||
set(local_file "${CMAKE_CURRENT_BINARY_DIR}/${filename}")
|
||||
|
||||
_tbb_download_file(URL ${tbb_url}
|
||||
SAVE_AS ${local_file}
|
||||
INFO "Intel TBB library")
|
||||
|
||||
if (NOT EXISTS "${local_file}")
|
||||
set(${tbb_get_TBB_ROOT} ${tbb_get_TBB_ROOT}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_filename_component(subdir_name ${filename} NAME_WE)
|
||||
file(MAKE_DIRECTORY ${tbb_save_to}/${subdir_name})
|
||||
if (NOT EXISTS "${tbb_save_to}/${subdir_name}")
|
||||
message(STATUS "${tbb_save_to}/${subdir_name} can not be created")
|
||||
set(${tbb_get_TBB_ROOT} ${tbb_get_TBB_ROOT}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
message(STATUS "Unpacking ${local_file} to ${tbb_save_to}/${subdir_name}")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${local_file}
|
||||
WORKING_DIRECTORY ${tbb_save_to}/${subdir_name}
|
||||
RESULT_VARIABLE unpacking_result)
|
||||
|
||||
if (NOT unpacking_result EQUAL 0)
|
||||
message(STATUS "Unsuccessful unpacking: ${unpacking_result}")
|
||||
set(${tbb_get_TBB_ROOT} ${tbb_get_TBB_ROOT}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(GLOB_RECURSE tbb_h ${tbb_save_to}/${subdir_name}/*/include/tbb/tbb.h)
|
||||
list(GET tbb_h 0 tbb_h)
|
||||
|
||||
if (NOT EXISTS "${tbb_h}")
|
||||
message(STATUS "tbb/tbb.h has not been found in the downloaded package")
|
||||
set(${tbb_get_TBB_ROOT} ${tbb_get_TBB_ROOT}-NOTFOUND PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_filename_component(tbb_root "${tbb_h}" PATH)
|
||||
get_filename_component(tbb_root "${tbb_root}" PATH)
|
||||
get_filename_component(tbb_root "${tbb_root}" PATH)
|
||||
|
||||
if (NOT tbb_get_SOURCE_CODE)
|
||||
set(tbb_config_dir ${tbb_root}/cmake)
|
||||
|
||||
if (NOT EXISTS "${tbb_config_dir}")
|
||||
tbb_make_config(TBB_ROOT ${tbb_root} CONFIG_DIR tbb_config_dir)
|
||||
endif()
|
||||
|
||||
set(${tbb_get_CONFIG_DIR} ${tbb_config_dir} PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
set(${tbb_get_TBB_ROOT} ${tbb_root} PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -0,0 +1,169 @@
|
||||
# Copyright (c) 2017-2018 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Usage:
|
||||
# include(TBBMakeConfig.cmake)
|
||||
# tbb_make_config(TBB_ROOT <tbb_root> SYSTEM_NAME <system_name> CONFIG_DIR <var_to_store_config_dir> [SAVE_TO] [CONFIG_FOR_SOURCE TBB_RELEASE_DIR <tbb_release_dir> TBB_DEBUG_DIR <tbb_debug_dir>])
|
||||
#
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# Save the location of Intel TBB CMake modules here, as it will not be possible to do inside functions,
|
||||
# see for details: https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_LIST_DIR.html
|
||||
set(_tbb_cmake_module_path ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
function(tbb_make_config)
|
||||
set(oneValueArgs TBB_ROOT SYSTEM_NAME CONFIG_DIR SAVE_TO TBB_RELEASE_DIR TBB_DEBUG_DIR)
|
||||
set(options CONFIG_FOR_SOURCE)
|
||||
cmake_parse_arguments(tbb_MK "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
set(tbb_system_name ${CMAKE_SYSTEM_NAME})
|
||||
if (tbb_MK_SYSTEM_NAME)
|
||||
set(tbb_system_name ${tbb_MK_SYSTEM_NAME})
|
||||
endif()
|
||||
|
||||
set(tbb_config_dir ${tbb_MK_TBB_ROOT}/cmake)
|
||||
if (tbb_MK_SAVE_TO)
|
||||
set(tbb_config_dir ${tbb_MK_SAVE_TO})
|
||||
endif()
|
||||
|
||||
file(MAKE_DIRECTORY ${tbb_config_dir})
|
||||
|
||||
set(TBB_DEFAULT_COMPONENTS tbb tbbmalloc tbbmalloc_proxy)
|
||||
|
||||
if (tbb_MK_CONFIG_FOR_SOURCE)
|
||||
set(TBB_RELEASE_DIR ${tbb_MK_TBB_RELEASE_DIR})
|
||||
set(TBB_DEBUG_DIR ${tbb_MK_TBB_DEBUG_DIR})
|
||||
endif()
|
||||
|
||||
if (tbb_system_name STREQUAL "Linux")
|
||||
set(TBB_SHARED_LIB_DIR "lib")
|
||||
set(TBB_X32_SUBDIR "ia32")
|
||||
set(TBB_X64_SUBDIR "intel64")
|
||||
set(TBB_LIB_PREFIX "lib")
|
||||
set(TBB_LIB_EXT "so.2")
|
||||
|
||||
# Note: multiline variable
|
||||
set(TBB_CHOOSE_COMPILER_SUBDIR "if (CMAKE_CXX_COMPILER_LOADED)
|
||||
set(_tbb_compiler_id \${CMAKE_CXX_COMPILER_ID})
|
||||
set(_tbb_compiler_ver \${CMAKE_CXX_COMPILER_VERSION})
|
||||
elseif (CMAKE_C_COMPILER_LOADED)
|
||||
set(_tbb_compiler_id \${CMAKE_C_COMPILER_ID})
|
||||
set(_tbb_compiler_ver \${CMAKE_C_COMPILER_VERSION})
|
||||
endif()
|
||||
|
||||
# For non-GCC compilers try to find version of system GCC to choose right compiler subdirectory.
|
||||
if (NOT _tbb_compiler_id STREQUAL \"GNU\")
|
||||
execute_process(COMMAND gcc --version OUTPUT_VARIABLE _tbb_gcc_ver_output ERROR_QUIET)
|
||||
string(REGEX REPLACE \".*gcc.*([0-9]+\\\\.[0-9]+)\\\\.[0-9]+.*\" \"\\\\1\" _tbb_compiler_ver \"\${_tbb_gcc_ver_output}\")
|
||||
if (NOT _tbb_compiler_ver)
|
||||
message(FATAL_ERROR \"This Intel TBB package is intended to be used only environment with available 'gcc'\")
|
||||
endif()
|
||||
unset(_tbb_gcc_ver_output)
|
||||
endif()
|
||||
|
||||
set(_tbb_compiler_subdir gcc4.1)
|
||||
foreach (_tbb_gcc_version 4.1 4.4 4.7)
|
||||
if (NOT _tbb_compiler_ver VERSION_LESS \${_tbb_gcc_version})
|
||||
set(_tbb_compiler_subdir gcc\${_tbb_gcc_version})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
unset(_tbb_compiler_id)
|
||||
unset(_tbb_compiler_ver)")
|
||||
|
||||
elseif (tbb_system_name STREQUAL "Windows")
|
||||
set(TBB_SHARED_LIB_DIR "bin")
|
||||
set(TBB_X32_SUBDIR "ia32")
|
||||
set(TBB_X64_SUBDIR "intel64")
|
||||
set(TBB_LIB_PREFIX "")
|
||||
set(TBB_LIB_EXT "dll")
|
||||
|
||||
# Note: multiline variable
|
||||
set(TBB_CHOOSE_COMPILER_SUBDIR "if (NOT MSVC)
|
||||
message(FATAL_ERROR \"This Intel TBB package is intended to be used only in the project with MSVC\")
|
||||
endif()
|
||||
|
||||
# Detect the most relevant MSVC subdirectory
|
||||
set(_tbb_msvc_1700_subdir vc11)
|
||||
set(_tbb_msvc_1800_subdir vc12)
|
||||
set(_tbb_msvc_1900_subdir vc14)
|
||||
set(_tbb_msvc_ver \${MSVC_VERSION})
|
||||
if (MSVC_VERSION VERSION_LESS 1700)
|
||||
message(FATAL_ERROR \"This Intel TBB package is intended to be used only in the project with MSVC version 1700 (vc11) or higher\")
|
||||
elseif (MSVC_VERSION VERSION_GREATER 1900)
|
||||
set(_tbb_msvc_ver 1900)
|
||||
endif()
|
||||
set(_tbb_compiler_subdir \${_tbb_msvc_\${_tbb_msvc_ver}_subdir})
|
||||
unset(_tbb_msvc_1700_subdir)
|
||||
unset(_tbb_msvc_1800_subdir)
|
||||
unset(_tbb_msvc_1900_subdir)
|
||||
|
||||
if (WINDOWS_STORE)
|
||||
set(_tbb_compiler_subdir \${_tbb_compiler_subdir}_ui)
|
||||
endif()")
|
||||
|
||||
if (tbb_MK_CONFIG_FOR_SOURCE)
|
||||
set(TBB_IMPLIB_RELEASE "\nIMPORTED_IMPLIB_RELEASE \"${tbb_MK_TBB_RELEASE_DIR}/\${_tbb_component}.lib\"")
|
||||
set(TBB_IMPLIB_DEBUG "\nIMPORTED_IMPLIB_DEBUG \"${tbb_MK_TBB_DEBUG_DIR}/\${_tbb_component}_debug.lib\"")
|
||||
else()
|
||||
# Note: multiline variable
|
||||
set(TBB_IMPLIB "
|
||||
IMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}.lib\"
|
||||
IMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}_debug.lib\"")
|
||||
endif()
|
||||
|
||||
# Note: multiline variable
|
||||
# tbb/internal/_tbb_windef.h (included via tbb/tbb_stddef.h) does implicit linkage of some .lib files, use a special define to avoid it
|
||||
set(TBB_COMPILE_DEFINITIONS "
|
||||
INTERFACE_COMPILE_DEFINITIONS \"__TBB_NO_IMPLICIT_LINKAGE=1\"")
|
||||
elseif (tbb_system_name STREQUAL "Darwin")
|
||||
set(TBB_SHARED_LIB_DIR "lib")
|
||||
set(TBB_X32_SUBDIR ".")
|
||||
set(TBB_X64_SUBDIR ".")
|
||||
set(TBB_LIB_PREFIX "lib")
|
||||
set(TBB_LIB_EXT "dylib")
|
||||
set(TBB_CHOOSE_COMPILER_SUBDIR "set(_tbb_compiler_subdir .)")
|
||||
elseif (tbb_system_name STREQUAL "Android")
|
||||
set(TBB_SHARED_LIB_DIR "lib")
|
||||
set(TBB_X32_SUBDIR ".")
|
||||
set(TBB_X64_SUBDIR "x86_64")
|
||||
set(TBB_LIB_PREFIX "lib")
|
||||
set(TBB_LIB_EXT "so")
|
||||
set(TBB_CHOOSE_COMPILER_SUBDIR "set(_tbb_compiler_subdir .)")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported OS name: ${tbb_system_name}")
|
||||
endif()
|
||||
|
||||
file(READ "${tbb_MK_TBB_ROOT}/include/tbb/tbb_stddef.h" _tbb_stddef)
|
||||
string(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _tbb_ver_major "${_tbb_stddef}")
|
||||
string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _tbb_ver_minor "${_tbb_stddef}")
|
||||
string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_tbb_stddef}")
|
||||
set(TBB_VERSION "${_tbb_ver_major}.${_tbb_ver_minor}")
|
||||
|
||||
if (tbb_MK_CONFIG_FOR_SOURCE)
|
||||
set(_tbb_config_template TBBConfigForSource.cmake.in)
|
||||
else()
|
||||
set(_tbb_config_template TBBConfig.cmake.in)
|
||||
endif()
|
||||
configure_file(${_tbb_cmake_module_path}/templates/${_tbb_config_template} ${tbb_config_dir}/TBBConfig.cmake @ONLY)
|
||||
configure_file(${_tbb_cmake_module_path}/templates/TBBConfigVersion.cmake.in ${tbb_config_dir}/TBBConfigVersion.cmake @ONLY)
|
||||
|
||||
set(${tbb_MK_CONFIG_DIR} ${tbb_config_dir} PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -0,0 +1,45 @@
|
||||
# Copyright (c) 2017-2018 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
function(tbb_conf_gen_print_help)
|
||||
message("Usage: cmake -DTBB_ROOT=<tbb_root> -DTBB_OS=Linux|Windows|Darwin [-DSAVE_TO=<path>] -P tbb_config_generator.cmake")
|
||||
endfunction()
|
||||
|
||||
if (NOT DEFINED TBB_ROOT)
|
||||
tbb_conf_gen_print_help()
|
||||
message(FATAL_ERROR "Required parameter TBB_ROOT is not defined")
|
||||
endif()
|
||||
|
||||
if (NOT EXISTS "${TBB_ROOT}")
|
||||
tbb_conf_gen_print_help()
|
||||
message(FATAL_ERROR "TBB_ROOT=${TBB_ROOT} does not exist")
|
||||
endif()
|
||||
|
||||
if (NOT DEFINED TBB_OS)
|
||||
tbb_conf_gen_print_help()
|
||||
message(FATAL_ERROR "Required parameter TBB_OS is not defined")
|
||||
endif()
|
||||
|
||||
if (DEFINED SAVE_TO)
|
||||
set(tbb_conf_gen_save_to_param SAVE_TO ${SAVE_TO})
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/TBBMakeConfig.cmake)
|
||||
tbb_make_config(TBB_ROOT ${TBB_ROOT} CONFIG_DIR tbb_config_dir SYSTEM_NAME ${TBB_OS} ${tbb_conf_gen_save_to_param})
|
||||
|
||||
message(STATUS "TBBConfig files were created in ${tbb_config_dir}")
|
||||
@@ -0,0 +1,89 @@
|
||||
# Copyright (c) 2017-2018 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_FOUND should not be set explicitly. It is defined automatically by CMake.
|
||||
# Handling of TBB_VERSION is in TBBConfigVersion.cmake.
|
||||
|
||||
if (NOT TBB_FIND_COMPONENTS)
|
||||
set(TBB_FIND_COMPONENTS "@TBB_DEFAULT_COMPONENTS@")
|
||||
foreach (_tbb_component ${TBB_FIND_COMPONENTS})
|
||||
set(TBB_FIND_REQUIRED_${_tbb_component} 1)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Add components with internal dependencies: tbbmalloc_proxy -> tbbmalloc
|
||||
list(FIND TBB_FIND_COMPONENTS tbbmalloc_proxy _tbbmalloc_proxy_ix)
|
||||
if (NOT _tbbmalloc_proxy_ix EQUAL -1)
|
||||
list(FIND TBB_FIND_COMPONENTS tbbmalloc _tbbmalloc_ix)
|
||||
if (_tbbmalloc_ix EQUAL -1)
|
||||
list(APPEND TBB_FIND_COMPONENTS tbbmalloc)
|
||||
set(TBB_FIND_REQUIRED_tbbmalloc ${TBB_FIND_REQUIRED_tbbmalloc_proxy})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(TBB_INTERFACE_VERSION @TBB_INTERFACE_VERSION@)
|
||||
|
||||
get_filename_component(_tbb_root "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
get_filename_component(_tbb_root "${_tbb_root}" PATH)
|
||||
|
||||
set(_tbb_x32_subdir @TBB_X32_SUBDIR@)
|
||||
set(_tbb_x64_subdir @TBB_X64_SUBDIR@)
|
||||
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_tbb_arch_subdir ${_tbb_x64_subdir})
|
||||
else()
|
||||
set(_tbb_arch_subdir ${_tbb_x32_subdir})
|
||||
endif()
|
||||
|
||||
@TBB_CHOOSE_COMPILER_SUBDIR@
|
||||
|
||||
get_filename_component(_tbb_lib_path "${_tbb_root}/@TBB_SHARED_LIB_DIR@/${_tbb_arch_subdir}/${_tbb_compiler_subdir}" ABSOLUTE)
|
||||
|
||||
foreach (_tbb_component ${TBB_FIND_COMPONENTS})
|
||||
set(_tbb_release_lib "${_tbb_lib_path}/@TBB_LIB_PREFIX@${_tbb_component}.@TBB_LIB_EXT@")
|
||||
set(_tbb_debug_lib "${_tbb_lib_path}/@TBB_LIB_PREFIX@${_tbb_component}_debug.@TBB_LIB_EXT@")
|
||||
|
||||
if (EXISTS "${_tbb_release_lib}" AND EXISTS "${_tbb_debug_lib}")
|
||||
add_library(TBB::${_tbb_component} SHARED IMPORTED)
|
||||
set_target_properties(TBB::${_tbb_component} PROPERTIES
|
||||
IMPORTED_CONFIGURATIONS "RELEASE;DEBUG"
|
||||
IMPORTED_LOCATION_RELEASE "${_tbb_release_lib}"
|
||||
IMPORTED_LOCATION_DEBUG "${_tbb_debug_lib}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${_tbb_root}/include"@TBB_IMPLIB@@TBB_COMPILE_DEFINITIONS@)
|
||||
|
||||
# Add internal dependencies for imported targets: TBB::tbbmalloc_proxy -> TBB::tbbmalloc
|
||||
if (_tbb_component STREQUAL tbbmalloc_proxy)
|
||||
set_target_properties(TBB::tbbmalloc_proxy PROPERTIES INTERFACE_LINK_LIBRARIES TBB::tbbmalloc)
|
||||
endif()
|
||||
|
||||
list(APPEND TBB_IMPORTED_TARGETS TBB::${_tbb_component})
|
||||
set(TBB_${_tbb_component}_FOUND 1)
|
||||
elseif (TBB_FIND_REQUIRED AND TBB_FIND_REQUIRED_${_tbb_component})
|
||||
message(FATAL_ERROR "Missed required Intel TBB component: ${_tbb_component}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
unset(_tbb_x32_subdir)
|
||||
unset(_tbb_x64_subdir)
|
||||
unset(_tbb_arch_subdir)
|
||||
unset(_tbb_compiler_subdir)
|
||||
unset(_tbbmalloc_proxy_ix)
|
||||
unset(_tbbmalloc_ix)
|
||||
unset(_tbb_lib_path)
|
||||
unset(_tbb_release_lib)
|
||||
unset(_tbb_debug_lib)
|
||||
@@ -0,0 +1,82 @@
|
||||
# Copyright (c) 2017-2018 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_FOUND should not be set explicitly. It is defined automatically by CMake.
|
||||
# Handling of TBB_VERSION is in TBBConfigVersion.cmake.
|
||||
|
||||
if (NOT TBB_FIND_COMPONENTS)
|
||||
set(TBB_FIND_COMPONENTS "@TBB_DEFAULT_COMPONENTS@")
|
||||
foreach (_tbb_component ${TBB_FIND_COMPONENTS})
|
||||
set(TBB_FIND_REQUIRED_${_tbb_component} 1)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Add components with internal dependencies: tbbmalloc_proxy -> tbbmalloc
|
||||
list(FIND TBB_FIND_COMPONENTS tbbmalloc_proxy _tbbmalloc_proxy_ix)
|
||||
if (NOT _tbbmalloc_proxy_ix EQUAL -1)
|
||||
list(FIND TBB_FIND_COMPONENTS tbbmalloc _tbbmalloc_ix)
|
||||
if (_tbbmalloc_ix EQUAL -1)
|
||||
list(APPEND TBB_FIND_COMPONENTS tbbmalloc)
|
||||
set(TBB_FIND_REQUIRED_tbbmalloc ${TBB_FIND_REQUIRED_tbbmalloc_proxy})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(TBB_INTERFACE_VERSION @TBB_INTERFACE_VERSION@)
|
||||
|
||||
get_filename_component(_tbb_root "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
get_filename_component(_tbb_root "${_tbb_root}" PATH)
|
||||
|
||||
foreach (_tbb_component ${TBB_FIND_COMPONENTS})
|
||||
set(_tbb_release_lib "@TBB_RELEASE_DIR@/@TBB_LIB_PREFIX@${_tbb_component}.@TBB_LIB_EXT@")
|
||||
set(_tbb_debug_lib "@TBB_DEBUG_DIR@/@TBB_LIB_PREFIX@${_tbb_component}_debug.@TBB_LIB_EXT@")
|
||||
|
||||
if (EXISTS "${_tbb_release_lib}" OR EXISTS "${_tbb_debug_lib}")
|
||||
add_library(TBB::${_tbb_component} SHARED IMPORTED)
|
||||
set_target_properties(TBB::${_tbb_component} PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${_tbb_root}/include"@TBB_COMPILE_DEFINITIONS@)
|
||||
|
||||
|
||||
if (EXISTS "${_tbb_release_lib}")
|
||||
set_target_properties(TBB::${_tbb_component} PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${_tbb_release_lib}"@TBB_IMPLIB_RELEASE@)
|
||||
set_property(TARGET TBB::${_tbb_component} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
endif()
|
||||
|
||||
if (EXISTS "${_tbb_debug_lib}")
|
||||
set_target_properties(TBB::${_tbb_component} PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${_tbb_debug_lib}"@TBB_IMPLIB_DEBUG@)
|
||||
set_property(TARGET TBB::${_tbb_component} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
endif()
|
||||
|
||||
# Add internal dependencies for imported targets: TBB::tbbmalloc_proxy -> TBB::tbbmalloc
|
||||
if (_tbb_component STREQUAL tbbmalloc_proxy)
|
||||
set_target_properties(TBB::tbbmalloc_proxy PROPERTIES INTERFACE_LINK_LIBRARIES TBB::tbbmalloc)
|
||||
endif()
|
||||
|
||||
list(APPEND TBB_IMPORTED_TARGETS TBB::${_tbb_component})
|
||||
set(TBB_${_tbb_component}_FOUND 1)
|
||||
elseif (TBB_FIND_REQUIRED AND TBB_FIND_REQUIRED_${_tbb_component})
|
||||
message(FATAL_ERROR "Missed required Intel TBB component: ${_tbb_component}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
unset(_tbbmalloc_proxy_ix)
|
||||
unset(_tbbmalloc_ix)
|
||||
unset(_tbb_lib_path)
|
||||
unset(_tbb_release_lib)
|
||||
unset(_tbb_debug_lib)
|
||||
@@ -0,0 +1,28 @@
|
||||
# Copyright (c) 2017-2018 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.
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
set(PACKAGE_VERSION @TBB_VERSION@)
|
||||
|
||||
if ("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_EXACT TRUE)
|
||||
endif()
|
||||
endif()
|
||||
@@ -1,6 +1,6 @@
|
||||
------------------------------------------------------------------------
|
||||
Intel(R) Threading Building Blocks - Release Notes
|
||||
Version 2017
|
||||
Version 2018
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -23,21 +23,21 @@ and compilers listed here.
|
||||
Hardware - Recommended
|
||||
|
||||
Microsoft* Windows* Systems
|
||||
Intel(R) Core(TM) processor family or higher
|
||||
Intel(R) Xeon(R) processor family or higher
|
||||
Intel(R) Core(TM) processor family
|
||||
Intel(R) Xeon(R) processor family
|
||||
Intel(R) Xeon Phi(TM) processor family
|
||||
Linux* Systems
|
||||
Intel(R) Core(TM) processor family or higher
|
||||
Intel(R) Xeon(R) processor family or higher
|
||||
Intel(R) Core(TM) processor family
|
||||
Intel(R) Xeon(R) processor family
|
||||
Intel(R) Xeon Phi(TM) processor family
|
||||
macOS* Systems
|
||||
Intel(R) Core(TM) processor family or higher
|
||||
Intel(R) Core(TM) processor family
|
||||
Android* Systems
|
||||
Intel(R) Atom(TM) processor family
|
||||
|
||||
Hardware - Supported
|
||||
|
||||
Intel(R) Pentium(R) 4 processor family and higher
|
||||
Intel(R) Pentium(R) 4 processor family
|
||||
Intel(R) Xeon Phi(TM) coprocessor
|
||||
Intel(R) Atom(TM) processor family
|
||||
Non Intel(R) processors compatible with the above processors
|
||||
@@ -49,56 +49,59 @@ Software - Minimum Requirements
|
||||
|
||||
Software - Recommended
|
||||
|
||||
Intel(R) Parallel Studio XE 2016 and higher
|
||||
Intel(R) System Studio 2016 and higher
|
||||
Intel(R) Parallel Studio XE 2017, 2018
|
||||
Intel(R) System Studio 2017, 2018
|
||||
|
||||
Software - Supported Operating Systems
|
||||
|
||||
Systems with Microsoft* Windows* operating systems
|
||||
Microsoft* Windows* 10
|
||||
Microsoft* Windows* 8, 8.1
|
||||
Microsoft* Windows* 8.1
|
||||
Microsoft* Windows* 7 SP1
|
||||
Microsoft* Windows* Server 2016
|
||||
Microsoft* Windows* Server 2012 R2
|
||||
Microsoft* Windows* Server 2012
|
||||
Microsoft* Windows* Server 2008 R2 SP1
|
||||
Microsoft* Windows* HPC Server 2008
|
||||
Windows Embedded 8.x, 10
|
||||
Windows* Embedded 10
|
||||
Windows* Embedded 8.1
|
||||
Systems with Linux* operating systems
|
||||
CentOS 6.5, 7.1
|
||||
Debian* 7, 8
|
||||
Fedora* 20, 21, 22, 23
|
||||
CentOS 7.1
|
||||
Debian* 8, 9
|
||||
Fedora* 24, 25, 26
|
||||
Intel(R) Cluster Ready
|
||||
Red Hat* Enterprise Linux* 6, 7
|
||||
SuSE* Linux* Enterprise Server 11, 12
|
||||
Ubuntu* 12.04 LTS, 14.04 LTS, 15.04, 16.04 LTS
|
||||
WindRiver* Linux 7
|
||||
Yocto 1.7, 1.9 (2.0), 2.1
|
||||
Ubuntu* 14.04 LTS, 16.04 LTS, 17.04
|
||||
WindRiver* Linux 8, 9
|
||||
Yocto 2.2, 2.3
|
||||
Systems with OS X* or macOS* operating systems
|
||||
OS X* 10.10 and higher
|
||||
macOS* 10.12 and higher
|
||||
OS X* 10.10, 10.11
|
||||
macOS* 10.12, 10.13
|
||||
Systems with Android* operating systems
|
||||
Android* 5.x, 6.x
|
||||
Android* 5.x, 6.x, 7.x, 8.x
|
||||
|
||||
Software - Supported Compilers
|
||||
|
||||
Intel(R) C++ Compiler 15.0 and higher
|
||||
Microsoft* Visual C++ 11.0 (Microsoft* Visual Studio* 2012,
|
||||
Windows* OS only) and higher
|
||||
Microsoft* Windows* Software Development Kit for Windows* 8
|
||||
and higher
|
||||
Intel(R) C++ Compiler 16, 17 and 18 version
|
||||
Microsoft* Visual C++ 12.0 (Microsoft* Visual Studio* 2013,
|
||||
Windows* OS only)
|
||||
Microsoft* Visual C++ 14.0 (Microsoft* Visual Studio* 2015,
|
||||
Windows* OS only)
|
||||
Microsoft* Visual C++ 14.1 (Microsoft* Visual Studio* 2017,
|
||||
Windows* OS only)
|
||||
Microsoft* Windows* Software Development Kit for Windows* 8.1
|
||||
Microsoft* Windows* Software Development Kit for Windows* 10
|
||||
For each supported Linux* operating system, the standard gcc
|
||||
version provided with that operating system is supported,
|
||||
starting from
|
||||
GNU Compilers (gcc) 4.1 and higher
|
||||
GNU C Library (glibc) version 2.4 and higher
|
||||
Xcode* 6.3 and higher
|
||||
Android* NDK r10e and higher
|
||||
version provided with that operating system is supported
|
||||
GNU Compilers (gcc) 4.1 - 7.1
|
||||
GNU C Library (glibc) version 2.4 - 2.19
|
||||
Xcode* 6.3 - 9.1
|
||||
Android* NDK r10e - r16
|
||||
|
||||
Software - Supported Performance Analysis Tools
|
||||
|
||||
Intel(R) VTune(TM) Amplifier XE 2016 and higher.
|
||||
Intel(R) Inspector XE 2016 and higher.
|
||||
Intel(R) Advisor XE 2016 and higher.
|
||||
Intel(R) VTune(TM) Amplifier XE 2017, 2018.
|
||||
Intel(R) Inspector XE 2017, 2018.
|
||||
Intel(R) Advisor XE 2017, 2018.
|
||||
|
||||
Known Issues
|
||||
------------
|
||||
@@ -120,7 +123,7 @@ Library Issues
|
||||
with each other directly.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
(C) 2017 Intel Corporation
|
||||
(C) 2018 Intel Corporation
|
||||
|
||||
Intel, the Intel logo, Intel Core, Intel Atom, Xeon, Intel Xeon Phi and
|
||||
Pentium are trademarks of Intel Corporation in the U.S. and/or other
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>Requirements on range concept</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="index.html">Main Page</a></li><li class="navelem"><a class="el" href="a00007.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Requirements on range concept </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>Class <code>R</code> implementing the concept of range must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line">R::R( <span class="keyword">const</span> R& ); </div>
|
||||
</div><!-- fragment --> Copy constructor</li>
|
||||
<li><div class="fragment"><div class="line">R::~R(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">bool</span> R::is_divisible() <span class="keyword">const</span>; </div>
|
||||
</div><!-- fragment --> True if range can be partitioned into two subranges</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">bool</span> R::empty() <span class="keyword">const</span>; </div>
|
||||
</div><!-- fragment --> True if range is empty</li>
|
||||
<li><div class="fragment"><div class="line">R::R( R& r, split ); </div>
|
||||
</div><!-- fragment --> Split range <code>r</code> into two subranges. </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>Requirements on parallel_for body</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>Requirements on range concept</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -26,27 +26,31 @@
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="index.html">Main Page</a></li><li class="navelem"><a class="el" href="a00007.html">TBB concepts</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00015.html">Main Page</a></li><li class="navelem"><a class="el" href="a00014.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Requirements on parallel_for body </div> </div>
|
||||
<div class="title">Requirements on range concept </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>Class <code>Body</code> implementing the concept of parallel_for body must define:</p>
|
||||
<div class="textblock"><p>Class <code>R</code> implementing the concept of range must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line">Body::Body( <span class="keyword">const</span> Body& ); </div>
|
||||
<li><div class="fragment"><div class="line">R::R( <span class="keyword">const</span> R& ); </div>
|
||||
</div><!-- fragment --> Copy constructor</li>
|
||||
<li><div class="fragment"><div class="line">Body::~Body(); </div>
|
||||
<li><div class="fragment"><div class="line">R::~R(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( Range& r ) <span class="keyword">const</span>; </div>
|
||||
</div><!-- fragment --> Function call operator applying the body to range <code>r</code>. </li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">bool</span> R::is_divisible() <span class="keyword">const</span>; </div>
|
||||
</div><!-- fragment --> True if range can be partitioned into two subranges</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">bool</span> R::empty() <span class="keyword">const</span>; </div>
|
||||
</div><!-- fragment --> True if range is empty</li>
|
||||
<li><div class="fragment"><div class="line">R::R( R& r, split ); </div>
|
||||
</div><!-- fragment --> Split range <code>r</code> into two subranges. </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>Requirements on parallel_reduce body</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="index.html">Main Page</a></li><li class="navelem"><a class="el" href="a00007.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Requirements on parallel_reduce body </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>Class <code>Body</code> implementing the concept of parallel_reduce body must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line">Body::Body( Body&, split ); </div>
|
||||
</div><!-- fragment --> Splitting constructor. Must be able to run concurrently with operator() and method <code>join</code> </li>
|
||||
<li><div class="fragment"><div class="line">Body::~Body(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( Range& r ); </div>
|
||||
</div><!-- fragment --> Function call operator applying body to range <code>r</code> and accumulating the result</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::join( Body& b ); </div>
|
||||
</div><!-- fragment --> Join results. The result in <code>b</code> should be merged into the result of <code>this</code> </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>Requirements on parallel_reduce anonymous function objects (lambda functions)</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>Requirements on parallel_for body</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -24,17 +24,29 @@
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00015.html">Main Page</a></li><li class="navelem"><a class="el" href="a00014.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Requirements on parallel_reduce anonymous function objects (lambda functions) </div> </div>
|
||||
<div class="title">Requirements on parallel_for body </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>TO BE DOCUMENTED </p>
|
||||
<div class="textblock"><p>Class <code>Body</code> implementing the concept of parallel_for body must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line">Body::Body( <span class="keyword">const</span> Body& ); </div>
|
||||
</div><!-- fragment --> Copy constructor</li>
|
||||
<li><div class="fragment"><div class="line">Body::~Body(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( Range& r ) <span class="keyword">const</span>; </div>
|
||||
</div><!-- fragment --> Function call operator applying the body to range <code>r</code>. </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>Requirements on parallel_scan body</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="index.html">Main Page</a></li><li class="navelem"><a class="el" href="a00007.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Requirements on parallel_scan body </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>Class <code>Body</code> implementing the concept of parallel_scan body must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line">Body::Body( Body&, split ); </div>
|
||||
</div><!-- fragment --> Splitting constructor. Split <code>b</code> so that <code>this</code> and <code>b</code> can accumulate separately</li>
|
||||
<li><div class="fragment"><div class="line">Body::~Body(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, pre_scan_tag ); </div>
|
||||
</div><!-- fragment --> Preprocess iterations for range <code>r</code> </li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, final_scan_tag ); </div>
|
||||
</div><!-- fragment --> Do final processing for iterations of range <code>r</code> </li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::reverse_join( Body& a ); </div>
|
||||
</div><!-- fragment --> Merge preprocessing state of <code>a</code> into <code>this</code>, where <code>a</code> was created earlier from <code>b</code> by b's splitting constructor </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>Requirements on iterators for parallel_sort</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>Requirements on parallel_reduce body</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -26,25 +26,29 @@
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="index.html">Main Page</a></li><li class="navelem"><a class="el" href="a00007.html">TBB concepts</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00015.html">Main Page</a></li><li class="navelem"><a class="el" href="a00014.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Requirements on iterators for parallel_sort </div> </div>
|
||||
<div class="title">Requirements on parallel_reduce body </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>Requirements on the iterator type <code>It</code> and its value type <code>T</code> for <code>parallel_sort:</code> </p>
|
||||
<div class="textblock"><p>Class <code>Body</code> implementing the concept of parallel_reduce body must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> iter_swap( It a, It b ) </div>
|
||||
</div><!-- fragment --> Swaps the values of the elements the given iterators <code>a</code> and <code>b</code> are pointing to. <code>It</code> should be a random access iterator.</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">bool</span> Compare::operator()( <span class="keyword">const</span> T& x, <span class="keyword">const</span> T& y ) </div>
|
||||
</div><!-- fragment --> True if x comes before y; </li>
|
||||
<li><div class="fragment"><div class="line">Body::Body( Body&, split ); </div>
|
||||
</div><!-- fragment --> Splitting constructor. Must be able to run concurrently with operator() and method <code>join</code> </li>
|
||||
<li><div class="fragment"><div class="line">Body::~Body(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( Range& r ); </div>
|
||||
</div><!-- fragment --> Function call operator applying body to range <code>r</code> and accumulating the result</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::join( Body& b ); </div>
|
||||
</div><!-- fragment --> Join results. The result in <code>b</code> should be merged into the result of <code>this</code> </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>TBB concepts</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="index.html">Main Page</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">TBB concepts </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>A concept is a set of requirements to a type, which are necessary and sufficient for the type to model a particular behavior or a set of behaviors. Some concepts are specific to a particular algorithm (e.g. algorithm body), while other ones are common to several algorithms (e.g. range concept).</p>
|
||||
<p>All TBB algorithms make use of different classes implementing various concepts. Implementation classes are supplied by the user as type arguments of template parameters and/or as objects passed as function call arguments. The library provides predefined implementations of some concepts (e.g. several kinds of <a class="el" href="a00001.html">ranges</a>), while other ones must always be implemented by the user.</p>
|
||||
<p>TBB defines a set of minimal requirements each concept must conform to. Here is the list of different concepts hyperlinked to the corresponding requirements specifications:</p>
|
||||
<ul>
|
||||
<li><a class="el" href="a00001.html">Requirements on range concept</a></li>
|
||||
<li>parallel_do_body_req</li>
|
||||
<li><a class="el" href="a00002.html">Requirements on parallel_for body</a></li>
|
||||
<li><a class="el" href="a00003.html">Requirements on parallel_reduce body</a></li>
|
||||
<li><a class="el" href="a00005.html">Requirements on parallel_scan body</a></li>
|
||||
<li><a class="el" href="a00006.html">Requirements on iterators for parallel_sort</a> </li>
|
||||
</ul>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>__TBB_malloc_proxy_caller Struct Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>Requirements on parallel_reduce anonymous function objects (lambda functions)</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,39 +13,28 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="a00260.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">__TBB_malloc_proxy_caller Struct Reference</div> </div>
|
||||
<div class="title">Requirements on parallel_reduce anonymous function objects (lambda functions) </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li>tbbmalloc_proxy.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<div class="textblock"><p>TO BE DOCUMENTED </p>
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -1,144 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00036.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00009.html">accessor</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-types">Public Types</a> |
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00357.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Allows write access to elements and combines data access, locking, and garbage collection.
|
||||
<a href="a00009.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <concurrent_hash_map.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00009.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map" alt=""/>
|
||||
<map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map">
|
||||
<area href="a00047.html" title="Combines data access, locking, and garbage collection. " alt="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor" shape="rect" coords="0,56,488,80"/>
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
|
||||
Public Types</h2></td></tr>
|
||||
<tr class="memitem:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a850178bbdcdbc4cf5955cab37eb8c42c"></a>
|
||||
typedef <br class="typebreak"/>
|
||||
concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a850178bbdcdbc4cf5955cab37eb8c42c">value_type</a></td></tr>
|
||||
<tr class="memdesc:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
|
||||
<tr class="separator:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_types_a00047"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00047')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ca5aef4ee14b7eddb64767b8cd5fda"></a>
|
||||
typedef const <br class="typebreak"/>
|
||||
concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a></td></tr>
|
||||
<tr class="memdesc:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
|
||||
<tr class="separator:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a4e03905a33fbdafdb99113cc68d2bd4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e03905a33fbdafdb99113cc68d2bd4b"></a>
|
||||
reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a4e03905a33fbdafdb99113cc68d2bd4b">operator*</a> () const </td></tr>
|
||||
<tr class="memdesc:a4e03905a33fbdafdb99113cc68d2bd4b"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:a4e03905a33fbdafdb99113cc68d2bd4b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab04f73bd4a4ca7df0dc91a7b4d66f987"></a>
|
||||
pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">operator-></a> () const </td></tr>
|
||||
<tr class="memdesc:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_methods_a00047"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00047')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6299b523d2ae8e2613f1bc160ca99b85"></a>
|
||||
bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a> () const </td></tr>
|
||||
<tr class="memdesc:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br/></td></tr>
|
||||
<tr class="separator:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18390cb369369d72bdf7c867755b5190"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">release</a> ()</td></tr>
|
||||
<tr class="memdesc:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br/></td></tr>
|
||||
<tr class="separator:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8adf04e33e7c8c876ba849f26807713a"></a>
|
||||
const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a> () const </td></tr>
|
||||
<tr class="memdesc:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28fa9b9e6c35d7e80217e69a7afe1ee5"></a>
|
||||
const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a> () const </td></tr>
|
||||
<tr class="memdesc:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b26d22d228cf0d8678c9b346c63752c"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a> ()</td></tr>
|
||||
<tr class="memdesc:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br/></td></tr>
|
||||
<tr class="separator:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc0c85a146c912b9a0f94a7695957c7"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a> ()</td></tr>
|
||||
<tr class="memdesc:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br/></td></tr>
|
||||
<tr class="separator:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
|
||||
Additional Inherited Members</h2></td></tr>
|
||||
<tr class="inherit_header pro_methods_a00047"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00047')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b74d408d8cd7773f7b5edfef97da1b"></a>
|
||||
bool </td><td class="memItemRight" valign="bottom"><b>is_writer</b> ()</td></tr>
|
||||
<tr class="separator:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pro_attribs_a00047"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00047')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b96f45483ddbff95a95e8e666a8f28"></a>
|
||||
<a class="el" href="a00083.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>my_node</b></td></tr>
|
||||
<tr class="separator:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5034084f595666b47734f99a6eaefa9f"></a>
|
||||
hashcode_t </td><td class="memItemRight" valign="bottom"><b>my_hash</b></td></tr>
|
||||
<tr class="separator:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00047"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
|
||||
class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</h3>
|
||||
|
||||
<p>Allows write access to elements and combines data access, locking, and garbage collection. </p>
|
||||
</div><hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>concurrent_hash_map.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>Requirements on parallel_scan body</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,51 +13,44 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00036.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00010.html">accessor_not_used</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00015.html">Main Page</a></li><li class="navelem"><a class="el" href="a00014.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00358.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference</div> </div>
|
||||
<div class="title">Requirements on parallel_scan body </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a28b496c90f07e4557a6dfa5a8dd3f4e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28b496c90f07e4557a6dfa5a8dd3f4e1"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
|
||||
<tr class="separator:a28b496c90f07e4557a6dfa5a8dd3f4e1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li>concurrent_hash_map.h</li>
|
||||
<div class="textblock"><p>Class <code>Body</code> implementing the concept of parallel_scan body must define:</p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line">Body::Body( Body&, split ); </div>
|
||||
</div><!-- fragment --> Splitting constructor. Split <code>b</code> so that <code>this</code> and <code>b</code> can accumulate separately</li>
|
||||
<li><div class="fragment"><div class="line">Body::~Body(); </div>
|
||||
</div><!-- fragment --> Destructor</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, pre_scan_tag ); </div>
|
||||
</div><!-- fragment --> Preprocess iterations for range <code>r</code> </li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::operator()( <span class="keyword">const</span> Range& r, final_scan_tag ); </div>
|
||||
</div><!-- fragment --> Do final processing for iterations of range <code>r</code> </li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> Body::reverse_join( Body& a ); </div>
|
||||
</div><!-- fragment --> Merge preprocessing state of <code>a</code> into <code>this</code>, where <code>a</code> was created earlier from <code>b</code> by b's splitting constructor </li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface6::aggregator Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00011.html">aggregator</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00378.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface6::aggregator Class Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Basic aggregator interface.
|
||||
<a href="a00011.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <aggregator.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface6::aggregator:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00011.png" usemap="#tbb::interface6::aggregator_map" alt=""/>
|
||||
<map id="tbb::interface6::aggregator_map" name="tbb::interface6::aggregator_map">
|
||||
<area href="a00012.html" alt="tbb::interface6::aggregator_ext< internal::basic_handler >" shape="rect" coords="0,0,335,24"/>
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplParams" colspan="2">template<typename Body > </td></tr>
|
||||
<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00011.html#aa7cc924b6f0d17578d61fd9002f59f84">execute</a> (const Body &b)</td></tr>
|
||||
<tr class="memdesc:aa7cc924b6f0d17578d61fd9002f59f84"><td class="mdescLeft"> </td><td class="mdescRight">BASIC INTERFACE: Enter a function for exclusive execution by the aggregator. <a href="#aa7cc924b6f0d17578d61fd9002f59f84">More...</a><br/></td></tr>
|
||||
<tr class="separator:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
|
||||
Additional Inherited Members</h2></td></tr>
|
||||
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/> Private Member Functions inherited from <a class="el" href="a00012.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td></tr>
|
||||
<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const <a class="el" href="a00019.html">internal::basic_handler</a> &h)</td></tr>
|
||||
<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4 inherit pub_methods_a00012"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00013.html">aggregator_operation</a> *op)</td></tr>
|
||||
<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00012"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
|
||||
<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad376e5c31d10e885f33964592aa629d4 inherit pro_methods_a00012"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00013.html">aggregator_operation</a> &op)</td></tr>
|
||||
<tr class="separator:ad376e5c31d10e885f33964592aa629d4 inherit pro_methods_a00012"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Basic aggregator interface. </p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a class="anchor" id="aa7cc924b6f0d17578d61fd9002f59f84"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename Body > </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void tbb::interface6::aggregator::execute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const Body & </td>
|
||||
<td class="paramname"><em>b</em>)</td><td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>BASIC INTERFACE: Enter a function for exclusive execution by the aggregator. </p>
|
||||
<p>The calling thread stores the function object in a basic_operation and places the operation in the aggregator's mailbox </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>aggregator.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface6::aggregator_ext< handler_type > Class Template Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>Requirements on iterators for parallel_sort</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,136 +13,38 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00012.html">aggregator_ext</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00015.html">Main Page</a></li><li class="navelem"><a class="el" href="a00014.html">TBB concepts</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pro-methods">Protected Member Functions</a> |
|
||||
<a href="a00377.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface6::aggregator_ext< handler_type > Class Template Reference</div> </div>
|
||||
<div class="title">Requirements on iterators for parallel_sort </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Aggregator base class and expert interface.
|
||||
<a href="a00012.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <aggregator.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface6::aggregator_ext< handler_type >:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00012.png" usemap="#tbb::interface6::aggregator_ext< handler_type >_map" alt=""/>
|
||||
<map id="tbb::interface6::aggregator_ext< handler_type >_map" name="tbb::interface6::aggregator_ext< handler_type >_map">
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const handler_type &h)</td></tr>
|
||||
<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00013.html">aggregator_operation</a> *op)</td></tr>
|
||||
<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
|
||||
<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
|
||||
Protected Member Functions</h2></td></tr>
|
||||
<tr class="memitem:ad376e5c31d10e885f33964592aa629d4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00013.html">aggregator_operation</a> &op)</td></tr>
|
||||
<tr class="separator:ad376e5c31d10e885f33964592aa629d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><h3>template<typename handler_type><br/>
|
||||
class tbb::interface6::aggregator_ext< handler_type ></h3>
|
||||
|
||||
<p>Aggregator base class and expert interface. </p>
|
||||
<p>An aggregator for collecting operations coming from multiple sources and executing them serially on a single thread. </p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a class="anchor" id="ad376e5c31d10e885f33964592aa629d4"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename handler_type> </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="a00012.html">tbb::interface6::aggregator_ext</a>< handler_type >::execute_impl </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="a00013.html">aggregator_operation</a> & </td>
|
||||
<td class="paramname"><em>op</em>)</td><td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Place operation in mailbox, then either handle mailbox or wait for the operation to be completed by a different thread. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ae55b16ec6af204aa00d6a716fccec9f7"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename handler_type> </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="a00012.html">tbb::interface6::aggregator_ext</a>< handler_type >::process </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="a00013.html">aggregator_operation</a> * </td>
|
||||
<td class="paramname"><em>op</em>)</td><td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. </p>
|
||||
<p>Details of user-made operations must be handled by user-provided handler </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>aggregator.h</li>
|
||||
<div class="textblock"><p>Requirements on the iterator type <code>It</code> and its value type <code>T</code> for <code>parallel_sort:</code> </p>
|
||||
<ul>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">void</span> iter_swap( It a, It b ) </div>
|
||||
</div><!-- fragment --> Swaps the values of the elements the given iterators <code>a</code> and <code>b</code> are pointing to. <code>It</code> should be a random access iterator.</li>
|
||||
<li><div class="fragment"><div class="line"><span class="keywordtype">bool</span> Compare::operator()( <span class="keyword">const</span> T& x, <span class="keyword">const</span> T& y ) </div>
|
||||
</div><!-- fragment --> True if x comes before y; </li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
|
Before Width: | Height: | Size: 843 B |
@@ -1,129 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface6::aggregator_operation Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00013.html">aggregator_operation</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-types">Public Types</a> |
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#friends">Friends</a> |
|
||||
<a href="a00376.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface6::aggregator_operation Class Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface6::aggregator_operation:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00013.png" usemap="#tbb::interface6::aggregator_operation_map" alt=""/>
|
||||
<map id="tbb::interface6::aggregator_operation_map" name="tbb::interface6::aggregator_operation_map">
|
||||
<area href="a00021.html" alt="tbb::interface6::internal::basic_operation_base" shape="rect" coords="0,56,289,80"/>
|
||||
<area href="a00020.html" alt="tbb::interface6::internal::basic_operation< Body >" shape="rect" coords="0,112,289,136"/>
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
|
||||
Public Types</h2></td></tr>
|
||||
<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0,
|
||||
<b>agg_finished</b>
|
||||
}</td></tr>
|
||||
<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:adc0e032aa604f1da85ffc7ec269b157f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc0e032aa604f1da85ffc7ec269b157f"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">start</a> ()</td></tr>
|
||||
<tr class="memdesc:adc0e032aa604f1da85ffc7ec269b157f"><td class="mdescLeft"> </td><td class="mdescRight">Call start before handling this operation. <br/></td></tr>
|
||||
<tr class="separator:adc0e032aa604f1da85ffc7ec269b157f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac7edadfe74f475783f3b429904e7010a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">finish</a> ()</td></tr>
|
||||
<tr class="memdesc:ac7edadfe74f475783f3b429904e7010a"><td class="mdescLeft"> </td><td class="mdescRight">Call finish when done handling this operation. <a href="#ac7edadfe74f475783f3b429904e7010a">More...</a><br/></td></tr>
|
||||
<tr class="separator:ac7edadfe74f475783f3b429904e7010a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:acbce3d13545770501b54df153bf1e690"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbce3d13545770501b54df153bf1e690"></a>
|
||||
<a class="el" href="a00013.html">aggregator_operation</a> * </td><td class="memItemRight" valign="bottom"><b>next</b> ()</td></tr>
|
||||
<tr class="separator:acbce3d13545770501b54df153bf1e690"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a03cf9fad0ca21da61b83325a50e17d0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cf9fad0ca21da61b83325a50e17d0b"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><b>set_next</b> (<a class="el" href="a00013.html">aggregator_operation</a> *n)</td></tr>
|
||||
<tr class="separator:a03cf9fad0ca21da61b83325a50e17d0b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
|
||||
Friends</h2></td></tr>
|
||||
<tr class="memitem:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7f6e7d315f893b1b66d06ffdad12038e"></a>
|
||||
template<typename handler_type > </td></tr>
|
||||
<tr class="memitem:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>aggregator_ext</b></td></tr>
|
||||
<tr class="separator:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a class="anchor" id="ac7edadfe74f475783f3b429904e7010a"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void tbb::interface6::aggregator_operation::finish </td>
|
||||
<td>(</td>
|
||||
<td class="paramname">)</td><td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Call finish when done handling this operation. </p>
|
||||
<p>The operation will be released to its originating thread, and possibly deleted. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>aggregator.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
<p></p>
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::aligned_space< T, N > Class Template Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>TBB concepts</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,67 +13,42 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><a class="el" href="a00014.html">aligned_space</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00015.html">Main Page</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00262.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::aligned_space< T, N > Class Template Reference<div class="ingroups"><a class="el" href="a00255.html">Memory Allocation</a></div></div> </div>
|
||||
<div class="title">TBB concepts </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Block of space aligned sufficiently to construct an array T with N elements.
|
||||
<a href="a00014.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <aligned_space.h></code></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a3525dbbac0d4eaedfe18bc57b7760857"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3525dbbac0d4eaedfe18bc57b7760857"></a>
|
||||
T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">begin</a> ()</td></tr>
|
||||
<tr class="memdesc:a3525dbbac0d4eaedfe18bc57b7760857"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to beginning of array. <br/></td></tr>
|
||||
<tr class="separator:a3525dbbac0d4eaedfe18bc57b7760857"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae95620e1159984a2670bd418ed4748d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae95620e1159984a2670bd418ed4748d0"></a>
|
||||
T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#ae95620e1159984a2670bd418ed4748d0">end</a> ()</td></tr>
|
||||
<tr class="memdesc:ae95620e1159984a2670bd418ed4748d0"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to one past last element in array. <br/></td></tr>
|
||||
<tr class="separator:ae95620e1159984a2670bd418ed4748d0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><h3>template<typename T, size_t N = 1><br/>
|
||||
class tbb::aligned_space< T, N ></h3>
|
||||
|
||||
<p>Block of space aligned sufficiently to construct an array T with N elements. </p>
|
||||
<p>The elements are not constructed or destroyed by this class. </p>
|
||||
</div><hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>aligned_space.h</li>
|
||||
<div class="textblock"><p>A concept is a set of requirements to a type, which are necessary and sufficient for the type to model a particular behavior or a set of behaviors. Some concepts are specific to a particular algorithm (e.g. algorithm body), while other ones are common to several algorithms (e.g. range concept).</p>
|
||||
<p>All TBB algorithms make use of different classes implementing various concepts. Implementation classes are supplied by the user as type arguments of template parameters and/or as objects passed as function call arguments. The library provides predefined implementations of some concepts (e.g. several kinds of <a class="el" href="a00002.html">ranges</a>), while other ones must always be implemented by the user.</p>
|
||||
<p>TBB defines a set of minimal requirements each concept must conform to. Here is the list of different concepts hyperlinked to the corresponding requirements specifications:</p>
|
||||
<ul>
|
||||
<li><a class="el" href="a00002.html">Requirements on range concept</a></li>
|
||||
<li>parallel_do_body_req</li>
|
||||
<li><a class="el" href="a00004.html">Requirements on parallel_for body</a></li>
|
||||
<li><a class="el" href="a00006.html">Requirements on parallel_reduce body</a></li>
|
||||
<li><a class="el" href="a00010.html">Requirements on parallel_scan body</a></li>
|
||||
<li><a class="el" href="a00012.html">Requirements on iterators for parallel_sort</a> </li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div></div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::atomic< void * > Struct Template Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>__TBB_malloc_proxy_caller Struct Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -31,57 +31,21 @@
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><a class="el" href="a00016.html">atomic< void * ></a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00264.html">List of all members</a> </div>
|
||||
<a href="a00278.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::atomic< void * > Struct Template Reference</div> </div>
|
||||
<div class="title">__TBB_malloc_proxy_caller Struct Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->.
|
||||
<a href="a00016.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <atomic.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::atomic< void * >:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00016.png" usemap="#tbb::atomic< void * >_map" alt=""/>
|
||||
<map id="tbb::atomic< void * >_map" name="tbb::atomic< void * >_map">
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a744970055554db56a922b83dd1125dcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a744970055554db56a922b83dd1125dcf"></a>
|
||||
constexpr </td><td class="memItemRight" valign="bottom"><b>atomic</b> (void *arg)</td></tr>
|
||||
<tr class="separator:a744970055554db56a922b83dd1125dcf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3da2906b224154d9961054f07b2e310b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3da2906b224154d9961054f07b2e310b"></a>
|
||||
void * </td><td class="memItemRight" valign="bottom"><b>operator=</b> (void *rhs)</td></tr>
|
||||
<tr class="separator:a3da2906b224154d9961054f07b2e310b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8cb22d05fe655337f6129dc8f3ab6783"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cb22d05fe655337f6129dc8f3ab6783"></a>
|
||||
<a class="el" href="a00015.html">atomic</a>< void * > & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00015.html">atomic</a>< void * > &rhs)</td></tr>
|
||||
<tr class="separator:a8cb22d05fe655337f6129dc8f3ab6783"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><h3>template<><br/>
|
||||
struct tbb::atomic< void * ></h3>
|
||||
|
||||
<p>Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->. </p>
|
||||
</div><hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li>atomic.h</li>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li>tbbmalloc_proxy.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface7::task_arena::attach Struct Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -33,28 +33,109 @@
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00144.html">task_arena</a></li><li class="navelem"><a class="el" href="a00017.html">attach</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00249.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00050.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00017.html">accessor</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-types">Public Types</a> |
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00377.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface7::task_arena::attach Struct Reference</div> </div>
|
||||
<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Tag class used to indicate the "attaching" constructor.
|
||||
<p>Allows write access to elements and combines data access, locking, and garbage collection.
|
||||
<a href="a00017.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <task_arena.h></code></p>
|
||||
<p><code>#include <concurrent_hash_map.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00017.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map" alt=""/>
|
||||
<map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map">
|
||||
<area href="a00061.html" title="Combines data access, locking, and garbage collection. " alt="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor" shape="rect" coords="0,56,488,80"/>
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
|
||||
Public Types</h2></td></tr>
|
||||
<tr class="memitem:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a850178bbdcdbc4cf5955cab37eb8c42c"></a>
|
||||
typedef <br class="typebreak"/>
|
||||
concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a850178bbdcdbc4cf5955cab37eb8c42c">value_type</a></td></tr>
|
||||
<tr class="memdesc:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
|
||||
<tr class="separator:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_types_a00061"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00061')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00061.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ca5aef4ee14b7eddb64767b8cd5fda"></a>
|
||||
typedef const <br class="typebreak"/>
|
||||
concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a></td></tr>
|
||||
<tr class="memdesc:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00061"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
|
||||
<tr class="separator:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a4e03905a33fbdafdb99113cc68d2bd4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e03905a33fbdafdb99113cc68d2bd4b"></a>
|
||||
reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a4e03905a33fbdafdb99113cc68d2bd4b">operator*</a> () const </td></tr>
|
||||
<tr class="memdesc:a4e03905a33fbdafdb99113cc68d2bd4b"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:a4e03905a33fbdafdb99113cc68d2bd4b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab04f73bd4a4ca7df0dc91a7b4d66f987"></a>
|
||||
pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">operator-></a> () const </td></tr>
|
||||
<tr class="memdesc:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_methods_a00061"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00061')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00061.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6299b523d2ae8e2613f1bc160ca99b85"></a>
|
||||
bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a> () const </td></tr>
|
||||
<tr class="memdesc:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00061"><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br/></td></tr>
|
||||
<tr class="separator:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18390cb369369d72bdf7c867755b5190"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a18390cb369369d72bdf7c867755b5190">release</a> ()</td></tr>
|
||||
<tr class="memdesc:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00061"><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br/></td></tr>
|
||||
<tr class="separator:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8adf04e33e7c8c876ba849f26807713a"></a>
|
||||
const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a> () const </td></tr>
|
||||
<tr class="memdesc:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00061"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28fa9b9e6c35d7e80217e69a7afe1ee5"></a>
|
||||
const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a> () const </td></tr>
|
||||
<tr class="memdesc:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00061"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
|
||||
<tr class="separator:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b26d22d228cf0d8678c9b346c63752c"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a> ()</td></tr>
|
||||
<tr class="memdesc:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00061"><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br/></td></tr>
|
||||
<tr class="separator:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc0c85a146c912b9a0f94a7695957c7"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a> ()</td></tr>
|
||||
<tr class="memdesc:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00061"><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br/></td></tr>
|
||||
<tr class="separator:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
|
||||
Additional Inherited Members</h2></td></tr>
|
||||
<tr class="inherit_header pro_methods_a00061"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00061')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00061.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b74d408d8cd7773f7b5edfef97da1b"></a>
|
||||
bool </td><td class="memItemRight" valign="bottom"><b>is_writer</b> ()</td></tr>
|
||||
<tr class="separator:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pro_attribs_a00061"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00061')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00061.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
|
||||
<tr class="memitem:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b96f45483ddbff95a95e8e666a8f28"></a>
|
||||
<a class="el" href="a00098.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>my_node</b></td></tr>
|
||||
<tr class="separator:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5034084f595666b47734f99a6eaefa9f"></a>
|
||||
hashcode_t </td><td class="memItemRight" valign="bottom"><b>my_hash</b></td></tr>
|
||||
<tr class="separator:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00061"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Tag class used to indicate the "attaching" constructor. </p>
|
||||
</div><hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li>task_arena.h</li>
|
||||
<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
|
||||
class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</h3>
|
||||
|
||||
<p>Allows write access to elements and combines data access, locking, and garbage collection. </p>
|
||||
</div><hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>concurrent_hash_map.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::bad_last_alloc Class Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -33,46 +33,31 @@
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><a class="el" href="a00018.html">bad_last_alloc</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00249.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00050.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00018.html">accessor_not_used</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00314.html">List of all members</a> </div>
|
||||
<a href="a00378.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::bad_last_alloc Class Reference</div> </div>
|
||||
<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Exception for concurrent containers.
|
||||
<a href="a00018.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <tbb_exception.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::bad_last_alloc:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00018.png" usemap="#tbb::bad_last_alloc_map" alt=""/>
|
||||
<map id="tbb::bad_last_alloc_map" name="tbb::bad_last_alloc_map">
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:ad26fe8a6bd71e097ab339f3d3895d07c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad26fe8a6bd71e097ab339f3d3895d07c"></a>
|
||||
const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const __TBB_override throw ()</td></tr>
|
||||
<tr class="separator:ad26fe8a6bd71e097ab339f3d3895d07c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a28b496c90f07e4557a6dfa5a8dd3f4e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28b496c90f07e4557a6dfa5a8dd3f4e1"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
|
||||
<tr class="separator:a28b496c90f07e4557a6dfa5a8dd3f4e1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Exception for concurrent containers. </p>
|
||||
</div><hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>tbb_exception.h</li>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li>concurrent_hash_map.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
|
Before Width: | Height: | Size: 490 B |
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface6::internal::basic_handler Class Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>tbb::interface6::aggregator Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -33,31 +33,78 @@
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00019.html">basic_handler</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00249.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00019.html">aggregator</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00394.html">List of all members</a> </div>
|
||||
<a href="a00397.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface6::internal::basic_handler Class Reference</div> </div>
|
||||
<div class="title">tbb::interface6::aggregator Class Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Basic aggregator interface.
|
||||
<a href="a00019.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <aggregator.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface6::aggregator:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00019.png" usemap="#tbb::interface6::aggregator_map" alt=""/>
|
||||
<map id="tbb::interface6::aggregator_map" name="tbb::interface6::aggregator_map">
|
||||
<area href="a00020.html" alt="tbb::interface6::aggregator_ext< internal::basic_handler >" shape="rect" coords="0,0,335,24"/>
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:afb0dec67968e9abdabb5a0e3ec8064a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb0dec67968e9abdabb5a0e3ec8064a4"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><b>operator()</b> (<a class="el" href="a00013.html">aggregator_operation</a> *op_list) const </td></tr>
|
||||
<tr class="separator:afb0dec67968e9abdabb5a0e3ec8064a4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplParams" colspan="2">template<typename Body > </td></tr>
|
||||
<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00019.html#aa7cc924b6f0d17578d61fd9002f59f84">execute</a> (const Body &b)</td></tr>
|
||||
<tr class="memdesc:aa7cc924b6f0d17578d61fd9002f59f84"><td class="mdescLeft"> </td><td class="mdescRight">BASIC INTERFACE: Enter a function for exclusive execution by the aggregator. <a href="#aa7cc924b6f0d17578d61fd9002f59f84">More...</a><br/></td></tr>
|
||||
<tr class="separator:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Basic aggregator interface. </p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a class="anchor" id="aa7cc924b6f0d17578d61fd9002f59f84"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename Body > </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void tbb::interface6::aggregator::execute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const Body & </td>
|
||||
<td class="paramname"><em>b</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>BASIC INTERFACE: Enter a function for exclusive execution by the aggregator. </p>
|
||||
<p>The calling thread stores the function object in a basic_operation and places the operation in the aggregator's mailbox </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>aggregator.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.4"/>
|
||||
<title>tbb::interface6::internal::basic_operation< Body > Class Template Reference</title>
|
||||
<meta name="generator" content="Doxygen 1.8.5"/>
|
||||
<title>tbb::interface6::aggregator_ext< handler_type > Class Template Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
@@ -13,7 +13,7 @@
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.4 -->
|
||||
<!-- Generated by Doxygen 1.8.5 -->
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
@@ -33,49 +33,116 @@
|
||||
</div>
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="a00234.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00020.html">basic_operation</a></li> </ul>
|
||||
<li class="navelem"><a class="el" href="a00249.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00020.html">aggregator_ext</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="a00393.html">List of all members</a> </div>
|
||||
<a href="#pro-methods">Protected Member Functions</a> |
|
||||
<a href="a00396.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">tbb::interface6::internal::basic_operation< Body > Class Template Reference</div> </div>
|
||||
<div class="title">tbb::interface6::aggregator_ext< handler_type > Class Template Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Aggregator base class and expert interface.
|
||||
<a href="a00020.html#details">More...</a></p>
|
||||
|
||||
<p><code>#include <aggregator.h></code></p>
|
||||
<div class="dynheader">
|
||||
Inheritance diagram for tbb::interface6::internal::basic_operation< Body >:</div>
|
||||
Inheritance diagram for tbb::interface6::aggregator_ext< handler_type >:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center">
|
||||
<img src="a00020.png" usemap="#tbb::interface6::internal::basic_operation< Body >_map" alt=""/>
|
||||
<map id="tbb::interface6::internal::basic_operation< Body >_map" name="tbb::interface6::internal::basic_operation< Body >_map">
|
||||
<area href="a00021.html" alt="tbb::interface6::internal::basic_operation_base" shape="rect" coords="0,56,289,80"/>
|
||||
<area href="a00013.html" alt="tbb::interface6::aggregator_operation" shape="rect" coords="0,0,289,24"/>
|
||||
<img src="a00020.png" usemap="#tbb::interface6::aggregator_ext< handler_type >_map" alt=""/>
|
||||
<map id="tbb::interface6::aggregator_ext< handler_type >_map" name="tbb::interface6::aggregator_ext< handler_type >_map">
|
||||
</map>
|
||||
</div></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:adf48b2339f7de2f002c24c8951a03057"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf48b2339f7de2f002c24c8951a03057"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><b>basic_operation</b> (const Body &b)</td></tr>
|
||||
<tr class="separator:adf48b2339f7de2f002c24c8951a03057"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const handler_type &h)</td></tr>
|
||||
<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00021.html">aggregator_operation</a> *op)</td></tr>
|
||||
<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
|
||||
<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
|
||||
Additional Inherited Members</h2></td></tr>
|
||||
<tr class="inherit_header pub_types_a00013"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00013')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td></tr>
|
||||
<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00013"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0,
|
||||
<b>agg_finished</b>
|
||||
}</td></tr>
|
||||
<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00013"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
|
||||
Protected Member Functions</h2></td></tr>
|
||||
<tr class="memitem:ad376e5c31d10e885f33964592aa629d4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00021.html">aggregator_operation</a> &op)</td></tr>
|
||||
<tr class="separator:ad376e5c31d10e885f33964592aa629d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><h3>template<typename handler_type><br/>
|
||||
class tbb::interface6::aggregator_ext< handler_type ></h3>
|
||||
|
||||
<p>Aggregator base class and expert interface. </p>
|
||||
<p>An aggregator for collecting operations coming from multiple sources and executing them serially on a single thread. </p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a class="anchor" id="ad376e5c31d10e885f33964592aa629d4"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename handler_type> </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="a00020.html">tbb::interface6::aggregator_ext</a>< handler_type >::execute_impl </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="a00021.html">aggregator_operation</a> & </td>
|
||||
<td class="paramname"><em>op</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Place operation in mailbox, then either handle mailbox or wait for the operation to be completed by a different thread. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="ae55b16ec6af204aa00d6a716fccec9f7"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename handler_type> </div>
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void <a class="el" href="a00020.html">tbb::interface6::aggregator_ext</a>< handler_type >::process </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="a00021.html">aggregator_operation</a> * </td>
|
||||
<td class="paramname"><em>op</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. </p>
|
||||
<p>Details of user-made operations must be handled by user-provided handler </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>aggregator.h</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<hr>
|
||||
<p></p>
|
||||
Copyright © 2005-2017 Intel Corporation. All Rights Reserved.
|
||||
Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
|
||||
<p></p>
|
||||
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
|
||||
registered trademarks or trademarks of Intel Corporation or its
|
||||
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 843 B |