mirror of
https://github.com/wjakob/tbb.git
synced 2026-08-31 01:20:42 +08:00
e32d75f876
The new release TBB is now under a new more
open license.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
The list of most significant changes made over time in
Intel(R) Threading Building Blocks (Intel(R) TBB).
Intel TBB 2017
TBB_INTERFACE_VERSION == 9100
Changes (w.r.t. Intel TBB 4.4 Update 5):
- static_partitioner class is now a fully supported feature.
- async_node class is now a fully supported feature.
- Improved dynamic memory allocation replacement on Windows* OS to skip
DLLs for which replacement cannot be done, instead of aborting.
- Intel TBB no longer performs dynamic memory allocation replacement
for Microsoft* Visual Studio* 2008.
- For 64-bit platforms, quadrupled the worst-case limit on the amount
of memory the Intel TBB allocator can handle.
- Added TBB_USE_GLIBCXX_VERSION macro to specify the version of GNU
libstdc++ when it cannot be properly recognized, e.g. when used
with Clang on Linux* OS. Inspired by a contribution from David A.
- Added graph/stereo example to demostrate tbb::flow::async_msg.
- Removed a few cases of excessive user data copying in the flow graph.
- Reworked split_node to eliminate unnecessary overheads.
- Added support for C++11 move semantics to the argument of
tbb::parallel_do_feeder::add() method.
- Added C++11 move constructor and assignment operator to
tbb::combinable template class.
- Added tbb::this_task_arena::max_concurrency() function and
max_concurrency() method of class task_arena returning the maximal
number of threads that can work inside an arena.
- Deprecated tbb::task_arena::current_thread_index() static method;
use tbb::this_task_arena::current_thread_index() function instead.
- All examples for commercial version of library moved online:
https://software.intel.com/en-us/product-code-samples. Examples are
available as a standalone package or as a part of Intel(R) Parallel
Studio XE or Intel(R) System Studio Online Samples packages.
Changes affecting backward compatibility:
- Renamed following methods and types in async_node class:
Old New
async_gateway_type => gateway_type
async_gateway() => gateway()
async_try_put() => try_put()
async_reserve() => reserve_wait()
async_commit() => release_wait()
- Internal layout of some flow graph nodes has changed; recompilation
is recommended for all binaries that use the flow graph.
Preview Features:
- Added template class streaming_node to the flow graph API. It allows
a flow graph to offload computations to other devices through
streaming or offloading APIs.
- Template class opencl_node reimplemented as a specialization of
streaming_node that works with OpenCL*.
- Added tbb::this_task_arena::isolate() function to isolate execution
of a group of tasks or an algorithm from other tasks submitted
to the scheduler.
Bugs fixed:
- Added a workaround for GCC bug #62258 in std::rethrow_exception()
to prevent possible problems in case of exception propagation.
- Fixed parallel_scan to provide correct result if the initial value
of an accumulator is not the operation identity value.
- Fixed a memory corruption in the memory allocator when it meets
internal limits.
- Fixed the memory allocator on 64-bit platforms to align memory
to 16 bytes by default for all allocations bigger than 8 bytes.
- As a workaround for crashes in the Intel TBB library compiled with
GCC 6, added -flifetime-dse=1 to compilation options on Linux* OS.
- Fixed a race in the flow graph implementation.
Open-source contributions integrated:
- Enabling use of C++11 'override' keyword by Raf Schietekat.
------------------------------------------------------------------------
446 lines
13 KiB
HTML
446 lines
13 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<style>
|
|
::selection {
|
|
background: #b7ffb7;
|
|
}
|
|
::-moz-selection {
|
|
background: #b7ffb7;
|
|
}
|
|
|
|
body {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-size: 16px;
|
|
width: 800px;
|
|
margin: 0 auto;
|
|
}
|
|
#banner {
|
|
/* Div for banner */
|
|
float:left;
|
|
margin: 0px;
|
|
margin-bottom: 10px;
|
|
width: 100%;
|
|
background-color: #0071C5;
|
|
z-index: 0;
|
|
}
|
|
#banner .logo {
|
|
/* Apply to logo in banner. Add as class to image tag. */
|
|
float: left;
|
|
margin-right: 20px;
|
|
margin-left: 20px;
|
|
margin-top: 15px;
|
|
padding-bottom: 5px;
|
|
}
|
|
h1 {
|
|
text-align: center;
|
|
font-size: 36px;
|
|
}
|
|
h1.title {
|
|
/* Add as class to H1 in banner */
|
|
font-family: "Intel Clear", Verdana, Arial, sans-serif;
|
|
font-weight:normal;
|
|
color: #FFFFFF;
|
|
font-size: 170%;
|
|
margin-right: 40px;
|
|
margin-left: 40px;
|
|
padding-right: 20px;
|
|
text-indent: 20px;
|
|
}
|
|
.h3-alike {
|
|
display:inline;
|
|
font-size: 1.17em;
|
|
font-weight: bold;
|
|
color: #0071C5;
|
|
}
|
|
h3 {
|
|
font-size: 1.17em;
|
|
font-weight: bold;
|
|
color: #0071C5;
|
|
}
|
|
.h4-alike {
|
|
display:inline;
|
|
font-size: 1.05em;
|
|
font-weight: bold;
|
|
}
|
|
pre {
|
|
font-family: "Consolas", Monaco, monospace;
|
|
font-size:small;
|
|
background: #fafafa;
|
|
margin: 0;
|
|
padding-left:20px;
|
|
}
|
|
#footer {
|
|
font-size: small;
|
|
}
|
|
code {
|
|
font-family: "Consolas", Monaco, monospace;
|
|
}
|
|
.code-block
|
|
{
|
|
padding-left:20px;
|
|
}
|
|
.changes {
|
|
margin: 1em 0;
|
|
}
|
|
.changes input:active {
|
|
position: relative;
|
|
top: 1px;
|
|
}
|
|
.changes input:hover:after {
|
|
padding-left: 16px;
|
|
font-size: 10px;
|
|
content: 'More';
|
|
}
|
|
.changes input:checked:hover:after {
|
|
content: 'Less';
|
|
}
|
|
.changes input + .show-hide {
|
|
display: none;
|
|
}
|
|
.changes input:checked + .show-hide {
|
|
display: block;
|
|
}
|
|
|
|
ul {
|
|
margin: 0;
|
|
padding: 0.5em 0 0.5em 2.5em;
|
|
}
|
|
ul li {
|
|
margin-bottom: 3px;
|
|
}
|
|
ul li:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.disc {
|
|
list-style-type:disc
|
|
}
|
|
.circ {
|
|
list-style-type:circle
|
|
}
|
|
|
|
.single {
|
|
padding: 0 0.5em;
|
|
}
|
|
|
|
/* ------------------------------------------------- */
|
|
/* Table styles */
|
|
table{
|
|
margin-bottom:5pt;
|
|
border-collapse:collapse;
|
|
margin-left:0px;
|
|
margin-top:0.3em;
|
|
font-size:10pt;
|
|
}
|
|
tr{
|
|
vertical-align:top;
|
|
}
|
|
th,
|
|
th h3{
|
|
padding:4px;
|
|
text-align:left;
|
|
background-color:#0071C5;
|
|
font-weight:bold;
|
|
margin-top:1px;
|
|
margin-bottom:0;
|
|
color:#FFFFFF;
|
|
font-size:10pt;
|
|
vertical-align:middle;
|
|
}
|
|
th{
|
|
border:1px #dddddd solid;
|
|
padding-top:2px;
|
|
padding-bottom:0px;
|
|
padding-right:3px;
|
|
padding-left:3px;
|
|
}
|
|
td{
|
|
border:1px #dddddd solid;
|
|
vertical-align:top;
|
|
font-size:100%;
|
|
text-align:left;
|
|
margin-bottom:0;
|
|
}
|
|
td,
|
|
td p{
|
|
margin-top:0;
|
|
margin-left:0;
|
|
text-align:left;
|
|
font-size:inherit;
|
|
line-height:120%;
|
|
}
|
|
td p{
|
|
margin-bottom:0;
|
|
padding-top:5px;
|
|
padding-bottom:5px;
|
|
padding-right:5px;
|
|
padding-left:1px;
|
|
}
|
|
.noborder{
|
|
border:0px none;
|
|
}
|
|
.noborder1stcol{
|
|
border:0px none;
|
|
padding-left:0pt;
|
|
}
|
|
td ol{
|
|
font-size:inherit;
|
|
margin-left:28px;
|
|
}
|
|
td ul{
|
|
font-size:inherit;
|
|
margin-left:24px;
|
|
}
|
|
.DefListTbl{
|
|
width:90%;
|
|
margin-left:-3pt;
|
|
}
|
|
.syntaxdiagramtbl{
|
|
margin-left:-3pt;
|
|
}
|
|
.sdtbl{
|
|
}
|
|
.sdrow{
|
|
}
|
|
.sdtblp{
|
|
border:0px none;
|
|
font-size:inherit;
|
|
line-height:120%;
|
|
margin-bottom:0;
|
|
padding-bottom:0px;
|
|
padding-top:5px;
|
|
padding-left:0px;
|
|
padding-right:5px;
|
|
vertical-align:top;
|
|
}
|
|
.idepara, .ide_para{
|
|
border:0px none;
|
|
font-size:inherit;
|
|
line-height:120%;
|
|
margin-bottom:0;
|
|
padding-bottom:0px;
|
|
padding-top:5px;
|
|
padding-left:0px;
|
|
padding-right:5px;
|
|
vertical-align:top;
|
|
}
|
|
|
|
.specs {
|
|
border-collapse:collapse;
|
|
}
|
|
.specs td, .specs th {
|
|
font-size: 14px;
|
|
}
|
|
.specs td {
|
|
border: 1px solid black;
|
|
}
|
|
.specs td td, .specs td th {
|
|
border: none;
|
|
}
|
|
.specs td, .specs td td, .specs td th {
|
|
padding: 0 0.2em 0.2em;
|
|
text-align: center;
|
|
}
|
|
.specs td tr:last-child td,
|
|
.specs td tr:last-child th {
|
|
padding: 0 0.2em;
|
|
}
|
|
.serial-time {
|
|
}
|
|
.modified-time {
|
|
width: 6.5em;
|
|
}
|
|
.compiler {
|
|
}
|
|
.comp-opt {
|
|
}
|
|
.sys-specs {
|
|
width: 18em;
|
|
}
|
|
.note {
|
|
font-size:small;
|
|
font-style: italic;
|
|
}
|
|
</style>
|
|
<title>Intel® Threading Building Blocks. Stereo sample</title>
|
|
</head>
|
|
<body>
|
|
|
|
<div id="banner">
|
|
<img class="logo" src="data:image/png;base64,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
|
|
9Or1LzUmVVz+HJXDAAAAAElFTkSuQmCC">
|
|
<h1 class="title">Intel® Threading Building Blocks.<br>Stereo sample</h1>
|
|
</div>
|
|
|
|
<p>
|
|
The Stereo example is an implementation of the algorithm that applies stereoscopic 3D effect on two input images and achieved by means of encoding each eye's image using filters of different colors: red and blue -
|
|
<a href="http://en.wikipedia.org/wiki/Anaglyph_3D"><i>Anaglyph effect</i></a>.
|
|
<br><br>
|
|
The example uses the flow graph interface and can be executed both on CPU and GPU for image processing.
|
|
The output of this application is a PNG image with the anaglyph effect applied.
|
|
<br><br>
|
|
<i>
|
|
This example includes software developed by Lode Vandevenne. See
|
|
<a href="#copyright">here</a> for copyright information.
|
|
</i>
|
|
<br>
|
|
It exemplifies the opencl_node usage in the flow graph interface in context of creating a stereo image from two input images.
|
|
<br><br>
|
|
This example uses C++11 lambda expressions. Specifying a compiler option such as -std=c++11 or similar might be necessary in order to build the example.
|
|
For more information please refer to the documentation for the compiler you use.
|
|
</p>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">System Requirements</div>
|
|
<input type="checkbox">
|
|
<div class="show-hide">
|
|
<p>
|
|
For the most up to date system requirements, see the <a href="http://software.intel.com/en-us/articles/intel-threading-building-blocks-release-notes">release notes.</a>
|
|
</p>
|
|
<p>
|
|
Additionally, you have to install OpenCL™ version 1.2 or higher in order to run this example. See the <a href="https://software.intel.com/en-us/articles/opencl-drivers">OpenCL™ Drivers and Runtimes for Intel® Architecture</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Files</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<dl>
|
|
<dt><a href="stereo.cpp">stereo.cpp</a>
|
|
<dd>The implementation of stereo image creation algorithm based on the flow graph interface.
|
|
<dt><a href="lodepng.cpp">lodepng.cpp</a>
|
|
<dd>Library for reading and writing png images.
|
|
<dt><a href="lodepng.h">lodepng.h</a>
|
|
<dd>Public header file for the lodepng library.
|
|
<dt><a href="utils.h">utils.h</a>
|
|
<dd>Support functions for this example.
|
|
<dt><a href="imageEffects.cl">imageEffects.cl</a>
|
|
<dd>OpenCL kernel file with image effects algorithms.
|
|
<dt><a href="Makefile">Makefile</a>
|
|
<dd>Makefile for building the example.
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Directories</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<dl>
|
|
<dt><a href="msvs/">msvs</a>
|
|
<dd>Contains Microsoft* Visual Studio* workspace for building and running the example (Windows* systems only).
|
|
<dt><a href="xcode/">xcode</a>
|
|
<dd>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
|
|
</dl>
|
|
<p>For information about the minimum supported version of IDE, see <a href="http://software.intel.com/en-us/articles/intel-threading-building-blocks-release-notes">release notes.</a></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Build instructions</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<p>General build directions can be found <a href="../../index.html">here</a>.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Usage</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<dl>
|
|
<dt><tt>stereo <i>-h</i></tt>
|
|
<dd>Prints the help for command line options
|
|
<dt><tt>stereo [<i>-v</i>] [<i>-alg</i>=value] [<i>first_filename</i>] [<i>second_filename</i>]</tt>
|
|
<dd><i>-v</i> print diagnostic output to screen<br>
|
|
<i>-alg</i> name of the used pipeline realization - can be host, target (default) or host_target<br>
|
|
<i>first_filename</i> first input file name<br>
|
|
<i>second_filename</i> second input file name<br>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<br>
|
|
<a href="../index.html">Up to parent directory</a>
|
|
<hr>
|
|
<a name="copyright"></a>
|
|
<div class="changes">
|
|
<div class="h3-alike">Legal Information</div>
|
|
<input type="checkbox">
|
|
<div class="show-hide">
|
|
<p>
|
|
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
|
|
<br>* Other names and brands may be claimed as the property of others.
|
|
<br>© 2016, Intel Corporation
|
|
</p>
|
|
|
|
<p>
|
|
LodePNG version 20160409
|
|
Copyright (c) 2005-2016 Lode Vandevenne
|
|
</p>
|
|
<p>
|
|
This software is provided 'as-is', without any express or implied
|
|
warranty. In no event will the authors be held liable for any damages
|
|
arising from the use of this software.
|
|
<br>
|
|
Permission is granted to anyone to use this software for any purpose,
|
|
including commercial applications, and to alter it and redistribute it
|
|
freely, subject to the following restrictions:
|
|
<ol>
|
|
<li>The origin of this software must not be misrepresented; you must not
|
|
claim that you wrote the original software. If you use this software
|
|
in a product, an acknowledgment in the product documentation would be
|
|
appreciated but is not required.
|
|
<li>Altered source versions must be plainly marked as such, and must not be
|
|
misrepresented as being the original software.
|
|
<li>This notice may not be removed or altered from any source
|
|
distribution.
|
|
</ol>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|