parent
89710d5275
commit
657e0b6918
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,3 +6,4 @@ Getting_Started.pdf
|
||||
/Design_Patterns.pdf
|
||||
tbb*/
|
||||
/tbb40_20110809oss_src.tgz
|
||||
/tbb40_20120408oss_src.tgz
|
||||
|
168
CHANGES.txt
168
CHANGES.txt
@ -1,26 +1,143 @@
|
||||
TBB 4.0 Update 4
|
||||
|
||||
Changes (w.r.t. TBB 4.0 Update 3):
|
||||
|
||||
- The TBB memory allocator transparently supports large pages on Linux.
|
||||
- A new flow_graph example, logic_sim, was added.
|
||||
- Support for DirectX* 9 was added to GUI examples.
|
||||
|
||||
Community Preview Features:
|
||||
|
||||
- Added: aggregator, a new concurrency control mechanism.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- The abort operation on concurrent_bounded_queue now leaves the queue
|
||||
in a reusable state. If a bad_alloc or bad_last_alloc exception is
|
||||
thrown while the queue is recovering from an abort, that exception
|
||||
will be reported instead of user_abort on the thread on which it
|
||||
occurred, and the queue will not be reusable.
|
||||
- Steal limiting heuristic fixed to avoid premature stealing disabling
|
||||
when large amount of __thread data is allocated on thread stack.
|
||||
- Fixed a low-probability leak of arenas in the task scheduler.
|
||||
- In STL-compatible allocator classes, the method construct() was fixed
|
||||
to comply with C++11 requirements.
|
||||
- Fixed a bug that prevented creation of fixed-size memory pools
|
||||
smaller than 2M.
|
||||
- Significantly reduced the amount of warnings from various compilers.
|
||||
|
||||
Open-source contributions integrated:
|
||||
|
||||
- Multiple improvements by Raf Schietekat.
|
||||
- Basic support for Clang on Mac OS X* by Blas Rodriguez Somoza.
|
||||
- Fixes for warnings and corner-case bugs by Blas Rodriguez Somoza
|
||||
and Edward Lam.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
TBB 4.0 Update 3
|
||||
|
||||
Changes (w.r.t. TBB 4.0 Update 2):
|
||||
|
||||
- Modifications to the low-level API for memory pools:
|
||||
added support for aligned allocations;
|
||||
pool policies reworked to allow backward-compatible extensions;
|
||||
added a policy to not return memory space till destruction;
|
||||
pool_reset() does not return memory space anymore.
|
||||
- Class tbb::flow::graph_iterator added to iterate over all nodes
|
||||
registered with a graph instance.
|
||||
- multioutput_function_node has been renamed multifunction_node.
|
||||
multifunction_node and split_node are now fully-supported features.
|
||||
- For the tagged join node, the policy for try_put of an item with
|
||||
already existing tag has been defined: the item will be rejected.
|
||||
- Matching the behavior on Windows, on other platforms the optional
|
||||
shared libraries (libtbbmalloc, libirml) now are also searched
|
||||
only in the directory where libtbb is located.
|
||||
- The platform isolation layer based on GCC built-ins is extended.
|
||||
|
||||
Backward-incompatible API changes:
|
||||
|
||||
- a graph reference parameter is now required to be passed to the
|
||||
constructors of the following flow graph nodes: overwrite_node,
|
||||
write_once_node, broadcast_node, and the CPF or_node.
|
||||
- the following tbb::flow node methods and typedefs have been renamed:
|
||||
Old New
|
||||
join_node and or_node:
|
||||
inputs() -> input_ports()
|
||||
input_ports_tuple_type -> input_ports_type
|
||||
multifunction_node and split_node:
|
||||
ports_type -> output_ports_type
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Not all logical processors were utilized on systems with more than
|
||||
64 cores split by Windows into several processor groups.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
TBB 4.0 Update 2 commercial-aligned release
|
||||
|
||||
Changes (w.r.t. TBB 4.0 Update 1 commercial-aligned release):
|
||||
|
||||
- concurrent_bounded_queue now has an abort() operation that releases
|
||||
threads involved in pending push or pop operations. The released
|
||||
threads will receive a tbb::user_abort exception.
|
||||
- Added Community Preview Feature: concurrent_lru_cache container,
|
||||
a concurrent implementation of LRU (least-recently-used) cache.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- fixed a race condition in the TBB scalable allocator.
|
||||
- concurrent_queue counter wraparound bug was fixed, which occurred when
|
||||
the number of push and pop operations exceeded ~>4 billion on IA32.
|
||||
- fixed races in the TBB scheduler that could put workers asleep too
|
||||
early, especially in presense of affinitized tasks.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
TBB 4.0 Update 1 commercial-aligned release
|
||||
|
||||
Changes (w.r.t. TBB 4.0 commercial-aligned release):
|
||||
|
||||
- Memory leaks fixed in binpack example.
|
||||
- Improvements and fixes in the TBB allocator.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
TBB 4.0 commercial-aligned release
|
||||
|
||||
Changes (w.r.t. TBB 3.0 Update 8 commercial-aligned release):
|
||||
|
||||
Improvements:
|
||||
- concurrent_priority_queue is now a supported feature. Capacity control methods were removed.
|
||||
- Flow graph is now a supported feature of TBB, rather than being a community preview feature.
|
||||
- A new memory backend has been implemented in the TBB allocator. It can return small memory blocks to the OS and thus later reuse that memory for large object allocation.
|
||||
- Improved partitioning algorithms for parallel_for and parallel_reduce to better handle load imbalance.
|
||||
- The convex_hull example has been refactored to produce reproducible performance results.
|
||||
- The Major Interface version has changed from 5 to 6. Deprecated interfaces might be removed in future releases.
|
||||
- concurrent_priority_queue is now a fully supported feature.
|
||||
Capacity control methods were removed.
|
||||
- Flow graph is now a fully supported feature.
|
||||
- A new memory backend has been implemented in the TBB allocator.
|
||||
It can reuse freed memory for both small and large objects, and
|
||||
returns unused memory blocks to the OS more actively.
|
||||
- Improved partitioning algorithms for parallel_for and parallel_reduce
|
||||
to better handle load imbalance.
|
||||
- The convex_hull example has been refactored for reproducible
|
||||
performance results.
|
||||
- The major interface version has changed from 5 to 6.
|
||||
Deprecated interfaces might be removed in future releases.
|
||||
|
||||
Community Preview Features:
|
||||
- Added Community Preview Feature: serial subset of TBB for modeling a sequential execution of a parallel algorithm. This release introduces serial parallel_for.
|
||||
- Added Community Preview Feature: or_node (accepts multiple inputs, forwarding each input separately to successors), split_node (accepts tuples, and forwards each element to a corresponding successor), and multioutput_function_node (accepts one input, and passes the input and a tuple of output ports to the function body to support outputs to multiple successors).
|
||||
- Added Community Preview Feature: Scalable Memory Pools (more control on memory source, grouping, collective deallocatation).
|
||||
|
||||
- Added: serial subset, i.e. sequential implementations of TBB generic
|
||||
algorithms (currently, only provided for parallel_for).
|
||||
- Preview of new flow graph nodes:
|
||||
or_node (accepts multiple inputs, forwards each input separately
|
||||
to all successors),
|
||||
split_node (accepts tuples, and forwards each element of a tuple
|
||||
to a corresponding successor), and
|
||||
multioutput_function_node (accepts one input, and passes the input
|
||||
and a tuple of output ports to the function body to support outputs
|
||||
to multiple successors).
|
||||
- Added: memory pools for more control on memory source, grouping,
|
||||
and collective deallocation.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
TBB 3.0 Update 8 commercial-aligned release
|
||||
|
||||
Changes (w.r.t. TBB 3.0 Update 7 commercial-aligned release):
|
||||
|
||||
- Task priorities has become an official feature of TBB,
|
||||
- Task priorities become an official feature of TBB,
|
||||
not community preview as before.
|
||||
- Atomics API extended, and implementation refactored.
|
||||
- Added task::set_parent() method.
|
||||
@ -37,12 +154,12 @@ Community Preview Features:
|
||||
|
||||
- Graph community preview feature was renamed to flow graph.
|
||||
Multiple improvements in the implementation.
|
||||
Binpack example of the feature was added.
|
||||
Binpack example was added for the feature.
|
||||
- A number of improvements to concurrent_priority_queue.
|
||||
Shortpath example was added for the feature.
|
||||
- TBB runtime loader functionality was added (Windows*-only).
|
||||
This allows set exact versions of TBB library to be used in run-time,
|
||||
while setting directories for the library search.
|
||||
- TBB runtime loaded functionality was added (Windows*-only).
|
||||
It allows to specify which versions of TBB should be used,
|
||||
as well as to set directories for the library search.
|
||||
- parallel_deterministic_reduce template function was added.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
@ -56,8 +173,8 @@ Changes (w.r.t. TBB 3.0 Update 6 commercial-aligned release):
|
||||
|
||||
Community Preview Features:
|
||||
|
||||
- Graph's dining_philosophers example added
|
||||
- A number of improvements to graph and concurrent_priority_queue
|
||||
- Graph's dining_philosophers example added.
|
||||
- A number of improvements to graph and concurrent_priority_queue.
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
@ -77,11 +194,11 @@ Open-source contributions integrated:
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Failure to locate Cilk runtime library to enable Cilk/TBB interop.
|
||||
- Failure to enable interoperability with Intel(R) Cilk(tm) Plus runtime
|
||||
library, and a crash caused by invoking the interoperability layer
|
||||
after one of the libraries was unloaded.
|
||||
- Data race that could result in concurrent_unordered_map structure
|
||||
corruption after call to clear() method.
|
||||
- Crash caused by invoking Cilk/TBB interop after one of the libraries
|
||||
is unloaded.
|
||||
- Stack corruption caused by PIC version of 64-bit CAS compiled by Intel
|
||||
compiler on Linux.
|
||||
- Inconsistency of exception propagation mode possible when application
|
||||
@ -178,8 +295,8 @@ Changes (w.r.t. TBB 3.0 Update 1 commercial-aligned release):
|
||||
|
||||
- Destructor of tbb::task_group class throws missing_wait exception
|
||||
if there are tasks running when it is invoked.
|
||||
- Cilk-TBB interop layer added to protect TBB TLS in case of
|
||||
"Cilk-TBB-Cilk nesting" usage model.
|
||||
- Interoperability layer with Intel Cilk Plus runtime library added
|
||||
to protect TBB TLS in case of nested usage with Intel Cilk Plus.
|
||||
- Compilation fix for dependent template names in concurrent_queue.
|
||||
- Memory allocator code refactored to ease development and maintenance.
|
||||
|
||||
@ -1087,8 +1204,8 @@ Features / APIs:
|
||||
- Timers.
|
||||
|
||||
Tools Support:
|
||||
- Thread Checker 3.0.
|
||||
- Thread Profiler 3.0.
|
||||
- Intel(R) Thread Checker 3.0.
|
||||
- Intel(R) Thread Profiler 3.0.
|
||||
|
||||
Documentation:
|
||||
- First Use Documents: README.txt, INSTALL.txt, Release_Notes.txt,
|
||||
@ -1119,4 +1236,7 @@ Packaging:
|
||||
are provided separately on Intel(R) Premier.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Intel and Cilk are registered trademarks or trademarks of Intel Corporation or its
|
||||
subsidiaries in the United States and other countries.
|
||||
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
|
8
sources
8
sources
@ -1,5 +1,5 @@
|
||||
c3c66663c10261ff03d1b071ab74e659 tbb40_20110809oss_src.tgz
|
||||
683109a2b732ecd56185d9019667718f Design_Patterns.pdf
|
||||
907eed2e81e0d29a93848a26e0fbfa5d Getting_Started.pdf
|
||||
131f0f2ae4311794dfa37b7a9172c54e Reference.pdf
|
||||
74fca4778a2c624631c157b07beab7ec Tutorial.pdf
|
||||
6c2a2838cdaf55f7af57788d97b43b8b Getting_Started.pdf
|
||||
56f3f5407481402e7653e57525f2c79b Reference.pdf
|
||||
08d5cbf5d6ba946784aa578b03586c5e Tutorial.pdf
|
||||
734b356da7fe0ed308741f3e6018251e tbb40_20120408oss_src.tgz
|
||||
|
@ -5,7 +5,7 @@ diff -up tbb30_20110419oss/build/linux.gcc.inc\~ tbb30_20110419oss/build/linux.g
|
||||
|
||||
ITT_NOTIFY = -DDO_ITT_NOTIFY
|
||||
ifeq ($(cfg), release)
|
||||
- CPLUS_FLAGS = $(ITT_NOTIFY) -O2 -DUSE_PTHREAD
|
||||
- CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
|
||||
+ CPLUS_FLAGS = $(CXXFLAGS) $(ITT_NOTIFY) -O2 -DUSE_PTHREAD
|
||||
endif
|
||||
ifeq ($(cfg), debug)
|
||||
@ -13,6 +13,6 @@ diff -up tbb30_20110419oss/build/linux.gcc.inc\~ tbb30_20110419oss/build/linux.g
|
||||
+ CPLUS_FLAGS = $(CXXFLAGS) -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
|
||||
endif
|
||||
|
||||
ifneq (0,$(cpp0x))
|
||||
ifneq (00,$(lambdas)$(cpp0x))
|
||||
|
||||
Diff finished. Tue Jul 26 14:02:54 2011
|
||||
|
5
tbb.pc
Normal file
5
tbb.pc
Normal file
@ -0,0 +1,5 @@
|
||||
Name: Threading Building Blocks
|
||||
Description: The Threading Building Blocks library abstracts low-level threading details
|
||||
URL: http://www.threadingbuildingblocks.org/
|
||||
Version: _FEDORA_VERSION
|
||||
Libs: -ltbb
|
32
tbb.spec
32
tbb.spec
@ -1,18 +1,20 @@
|
||||
%define releasedate 20110809
|
||||
%define releasedate 20120408
|
||||
%define major 4
|
||||
%define minor 0
|
||||
%define update 4
|
||||
%define dotver %{major}.%{minor}
|
||||
%define sourcebasename tbb%{major}%{minor}_%{releasedate}oss
|
||||
|
||||
%define sourcefilename %{sourcebasename}_src.tgz
|
||||
|
||||
Summary: The Threading Building Blocks library abstracts low-level threading details
|
||||
Name: tbb
|
||||
Version: %{dotver}
|
||||
Release: 3.%{releasedate}%{?dist}
|
||||
Release: 4.%{releasedate}%{?dist}
|
||||
License: GPLv2 with exceptions
|
||||
Group: Development/Tools
|
||||
URL: http://threadingbuildingblocks.org/
|
||||
Source0: http://threadingbuildingblocks.org/uploads/77/175/4.0/tbb40_20110809oss_src.tgz
|
||||
Source0: http://threadingbuildingblocks.org/uploads/77/185/4.0%%20update%%204/tbb40_20120408oss_src.tgz
|
||||
|
||||
# Upstream regularly replaces the "Latest" documentation with what's
|
||||
# actually Latest at that point. These sources may no longer match
|
||||
@ -29,6 +31,11 @@ Source3: %{docurl}/%{source_3}
|
||||
Source4: %{docurl}/%{source_4}
|
||||
Source5: %{docurl}/%{source_5}
|
||||
|
||||
# These two are downstream sources.
|
||||
Source6: tbb.pc
|
||||
Source7: tbbmalloc.pc
|
||||
Source8: tbbmalloc_proxy.pc
|
||||
|
||||
Patch1: tbb-3.0-cxxflags.patch
|
||||
Patch2: tbb-4.0-mfence.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -75,7 +82,10 @@ C++ library.
|
||||
|
||||
%build
|
||||
make %{?_smp_mflags} CXXFLAGS="$RPM_OPT_FLAGS" tbb_build_prefix=obj
|
||||
|
||||
for file in %{SOURCE6} %{SOURCE7} %{SOURCE8}; do
|
||||
sed 's/_FEDORA_VERSION/%{major}.%{minor}.%{update}/' ${file} \
|
||||
> $(basename ${file})
|
||||
done
|
||||
cp -p "%{SOURCE1}" "%{SOURCE2}" "%{SOURCE3}" "%{SOURCE4}" "%{SOURCE5}" .
|
||||
|
||||
%install
|
||||
@ -84,7 +94,7 @@ mkdir -p $RPM_BUILD_ROOT/%{_libdir}
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_includedir}
|
||||
|
||||
pushd build/obj_release
|
||||
for file in libtbb{,malloc}; do
|
||||
for file in libtbb{,malloc{,_proxy}}; do
|
||||
install -p -D -m 755 ${file}.so.2 $RPM_BUILD_ROOT/%{_libdir}
|
||||
ln -s $file.so.2 $RPM_BUILD_ROOT/%{_libdir}/$file.so
|
||||
done
|
||||
@ -96,6 +106,11 @@ pushd include
|
||||
\;
|
||||
popd
|
||||
|
||||
for file in %{SOURCE6} %{SOURCE7} %{SOURCE8}; do
|
||||
install -p -D -m 644 $(basename ${file}) \
|
||||
$RPM_BUILD_ROOT/%{_libdir}/pkgconfig/$(basename ${file})
|
||||
done
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
@ -113,6 +128,7 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%doc %{source_1}
|
||||
%{_includedir}/tbb
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
|
||||
%files doc
|
||||
%defattr(-,root,root,-)
|
||||
@ -122,6 +138,12 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%doc %{source_5}
|
||||
|
||||
%changelog
|
||||
* Thu Jun 7 2012 Petr Machata <pmachata@redhat.com> - 4.0-4.20120408
|
||||
- Rebase to 4.0 update 4
|
||||
- Refresh Getting_Started.pdf, Reference.pdf, Tutorial.pdf
|
||||
- Provide pkg-config files
|
||||
- Resolves: #825402
|
||||
|
||||
* Thu Apr 05 2012 Karsten Hopp <karsten@redhat.com> 4.0-3.20110809
|
||||
- tbb builds now on PPC(64)
|
||||
|
||||
|
5
tbbmalloc.pc
Normal file
5
tbbmalloc.pc
Normal file
@ -0,0 +1,5 @@
|
||||
Name: Threading Building Blocks Scalable Allocator
|
||||
Description: Implementation of Scalable Memory Allocator of Threading Building Blocks
|
||||
URL: http://www.threadingbuildingblocks.org/
|
||||
Version: _FEDORA_VERSION
|
||||
Libs: -ltbbmalloc
|
5
tbbmalloc_proxy.pc
Normal file
5
tbbmalloc_proxy.pc
Normal file
@ -0,0 +1,5 @@
|
||||
Name: Threading Building Blocks Scallable Malloc Proxy
|
||||
Description: Implementation of proxy that redirects memory allocation calls to TBB Scalable Memory Allocator
|
||||
URL: http://www.threadingbuildingblocks.org/
|
||||
Version: _FEDORA_VERSION
|
||||
Libs: -ltbbmalloc_proxy
|
Loading…
Reference in New Issue
Block a user