Rebase to 4.0 update 4; add .pc files

- Resolves: #825402
This commit is contained in:
Petr Machata 2012-06-07 21:51:18 +02:00
parent 89710d5275
commit 657e0b6918
8 changed files with 1291 additions and 1133 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ Getting_Started.pdf
/Design_Patterns.pdf
tbb*/
/tbb40_20110809oss_src.tgz
/tbb40_20120408oss_src.tgz

View File

@ -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.

View File

@ -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

View File

@ -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
View 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

View File

@ -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
View 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
View 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