forked from jckarter/tbb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
1264 lines (966 loc) · 50.8 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
TBB 4.0 Update 5
Changes (w.r.t. TBB 4.0 Update 4):
- Parallel pipeline optimization (directly storing small objects in the
interstage data buffers) limited to trivially-copyable types for
C++11 and a short list of types for earlier compilers.
- _VARIADIC_MAX switch is honored for TBB tuple implementation
and flow::graph nodes based on tuple.
- Support of Cocoa framework was added to the GUI examples on Mac OS* X
systems
Bugs fixed:
- Fixed a tv_nsec overflow bug in condition_variable::wait_for.
- Fixed execution order of enqueued tasks with different priorities.
- Fixed a bug with task priority changes causing lack of progress
for fire-and-forget tasks when TBB was initialized to use 1 thread.
- Fixed duplicate symbol problem when linking multiple compilation
units that include flow_graph.h on VC 10.
------------------------------------------------------------------------
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):
- 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: 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 become an official feature of TBB,
not community preview as before.
- Atomics API extended, and implementation refactored.
- Added task::set_parent() method.
- Added concurrent_unordered_set container.
Open-source contributions integrated:
- PowerPC support by Raf Schietekat.
- Fix of potential task pool overrun and other improvements
in the task scheduler by Raf Schietekat.
- Fix in parallel_for_each to work with std::set in Visual* C++ 2010.
Community Preview Features:
- Graph community preview feature was renamed to flow graph.
Multiple improvements in the implementation.
Binpack example was added for the feature.
- A number of improvements to concurrent_priority_queue.
Shortpath example was added for the feature.
- 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.
------------------------------------------------------------------------
TBB 3.0 Update 7 commercial-aligned release
Changes (w.r.t. TBB 3.0 Update 6 commercial-aligned release):
- Added implementation of the platform isolation layer based on
GCC atomic built-ins; it is supposed to work on any platform
where GCC has these built-ins.
Community Preview Features:
- Graph's dining_philosophers example added.
- A number of improvements to graph and concurrent_priority_queue.
------------------------------------------------------------------------
TBB 3.0 Update 6 commercial-aligned release
Changes (w.r.t. TBB 3.0 Update 5 commercial-aligned release):
- Added Community Preview feature: task and task group priority, and
Fractal example demonstrating it.
- parallel_pipeline optimized for data items of small and large sizes.
- Graph's join_node is now parametrized with a tuple of up to 10 types.
- Improved performance of concurrent_priority_queue.
Open-source contributions integrated:
- Initial NetBSD support by Aleksej Saushev.
Bugs fixed:
- 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.
- Stack corruption caused by PIC version of 64-bit CAS compiled by Intel
compiler on Linux.
- Inconsistency of exception propagation mode possible when application
built with Microsoft* Visual Studio* 2008 or earlier uses TBB built
with Microsoft* Visual Studio* 2010.
- Affinitizing master thread to a subset of available CPUs after TBB
scheduler was initialized tied all worker threads to the same CPUs.
- Method is_stolen_task() always returned 'false' for affinitized tasks.
- write_once_node and overwrite_node did not immediately send buffered
items to successors
------------------------------------------------------------------------
TBB 3.0 Update 5 commercial-aligned release
Changes (w.r.t. TBB 3.0 Update 4 commercial-aligned release):
- Added Community Preview feature: graph.
- Added automatic propagation of master thread FPU settings to
TBB worker threads.
- Added a public function to perform a sequentially consistent full
memory fence: tbb::atomic_fence() in tbb/atomic.h.
Bugs fixed:
- Data race that could result in scheduler data structures corruption
when using fire-and-forget tasks.
- Potential referencing of destroyed concurrent_hash_map element after
using erase(accessor&A) method with A acquired as const_accessor.
- Fixed a correctness bug in the convex hull example.
Open-source contributions integrated:
- Patch for calls to internal::atomic_do_once() by Andrey Semashev.
------------------------------------------------------------------------
TBB 3.0 Update 4 commercial-aligned release
Changes (w.r.t. TBB 3.0 Update 3 commercial-aligned release):
- Added Community Preview feature: concurrent_priority_queue.
- Fixed library loading to avoid possibility for remote code execution,
see http://www.microsoft.com/technet/security/advisory/2269637.mspx.
- Added support of more than 64 cores for appropriate Microsoft*
Windows* versions. For more details, see
http://msdn.microsoft.com/en-us/library/dd405503.aspx.
- Default number of worker threads is adjusted in accordance with
process affinity mask.
Bugs fixed:
- Calls of scalable_* functions from inside the allocator library
caused issues if the functions were overridden by another module.
- A crash occurred if methods run() and wait() were called concurrently
for an empty tbb::task_group (1736).
- The tachyon example exhibited build problems associated with
bug 554339 on Microsoft* Visual Studio* 2010. Project files were
modified as a partial workaround to overcome the problem. See
http://connect.microsoft.com/VisualStudio/feedback/details/554339.
------------------------------------------------------------------------
TBB 3.0 Update 3 commercial-aligned release
Changes (w.r.t. TBB 3.0 Update 2 commercial-aligned release):
- cache_aligned_allocator class reworked to use scalable_aligned_malloc.
- Improved performance of count() and equal_range() methods
in concurrent_unordered_map.
- Improved implementation of 64-bit atomic loads and stores on 32-bit
platforms, including compilation with VC 7.1.
- Added implementation of atomic operations on top of OSAtomic API
provided by Mac OS* X.
- Removed gratuitous try/catch blocks surrounding thread function calls
in tbb_thread.
- Xcode* projects were added for sudoku and game_of_life examples.
- Xcode* projects were updated to work without TBB framework.
Bugs fixed:
- Fixed a data race in task scheduler destruction that on rare occasion
could result in memory corruption.
- Fixed idle spinning in thread bound filters in tbb::pipeline (1670).
Open-source contributions integrated:
- MinGW-64 basic support by brsomoza (partially).
- Patch for atomic.h by Andrey Semashev.
- Support for AIX & GCC on PowerPC by Giannis Papadopoulos.
- Various improvements by Raf Schietekat.
------------------------------------------------------------------------
TBB 3.0 Update 2 commercial-aligned release
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.
- 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.
Bugs fixed:
- Improved interoperability with other Intel software tools on Linux in
case of dynamic replacement of memory allocator (1700)
- Fixed install issues that prevented installation on
Mac OS* X 10.6.4 (1711).
------------------------------------------------------------------------
TBB 3.0 Update 1 commercial-aligned release
Changes (w.r.t. TBB 3.0 commercial-aligned release):
- Decreased memory fragmentation by allocations bigger than 8K.
- Lazily allocate worker threads, to avoid creating unnecessary stacks.
Bugs fixed:
- TBB allocator used much more memory than malloc (1703) - see above.
- Deadlocks happened in some specific initialization scenarios
of the TBB allocator (1701, 1704).
- Regression in enumerable_thread_specific: excessive requirements
for object constructors.
- A bug in construction of parallel_pipeline filters when body instance
was a temporary object.
- Incorrect usage of memory fences on PowerPC and XBOX360 platforms.
- A subtle issue in task group context binding that could result
in cancelation signal being missed by nested task groups.
- Incorrect construction of concurrent_unordered_map if specified
number of buckets is not power of two.
- Broken count() and equal_range() of concurrent_unordered_map.
- Return type of postfix form of operator++ for hash map's iterators.
------------------------------------------------------------------------
TBB 3.0 commercial-aligned release
Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
- All open-source-release changes down to TBB 2.2 U3 below
were incorporated into this release.
------------------------------------------------------------------------
20100406 open-source release
Changes (w.r.t. 20100310 open-source release):
- Added support for Microsoft* Visual Studio* 2010, including binaries.
- Added a PDF file with recommended Design Patterns for TBB.
- Added parallel_pipeline function and companion classes and functions
that provide a strongly typed lambda-friendly pipeline interface.
- Reworked enumerable_thread_specific to use a custom implementation of
hash map that is more efficient for ETS usage models.
- Added example for class task_group; see examples/task_group/sudoku.
- Removed two examples, as they were long outdated and superceded:
pipeline/text_filter (use pipeline/square);
parallel_while/parallel_preorder (use parallel_do/parallel_preorder).
- PDF documentation updated.
- Other fixes and changes in code, tests, and examples.
Bugs fixed:
- Eliminated build errors with MinGW32.
- Fixed post-build step and other issues in VS projects for examples.
- Fixed discrepancy between scalable_realloc and scalable_msize that
caused crashes with malloc replacement on Windows.
------------------------------------------------------------------------
20100310 open-source release
Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
- Version macros changed in anticipation of a future release.
- Directory structure aligned with Intel(R) C++ Compiler;
now TBB binaries reside in <arch>/<os_key>/[bin|lib]
(in TBB 2.x, it was [bin|lib]/<arch>/<os_key>).
- Visual Studio projects changed for examples: instead of separate set
of files for each VS version, now there is single 'msvs' directory
that contains workspaces for MS C++ compiler (<example>_cl.sln) and
Intel C++ compiler (<example>_icl.sln). Works with VS 2005 and above.
- The name versioning scheme for backward compatibility was improved;
now compatibility-breaking changes are done in a separate namespace.
- Added concurrent_unordered_map implementation based on a prototype
developed in Microsoft for a future version of PPL.
- Added PPL-compatible writer-preference RW lock (reader_writer_lock).
- Added TBB_IMPLEMENT_CPP0X macro to control injection of C++0x names
implemented in TBB into namespace std.
- Added almost-C++0x-compatible std::condition_variable, plus a bunch
of other C++0x classes required by condition_variable.
- With TBB_IMPLEMENT_CPP0X, tbb_thread can be also used as std::thread.
- task.cpp was split into several translation units to structure
TBB scheduler sources layout. Static data layout and library
initialization logic were also updated.
- TBB scheduler reworked to prevent master threads from stealing
work belonging to other masters.
- Class task was extended with enqueue() method, and slightly changed
semantics of methods spawn() and destroy(). For exact semantics,
refer to TBB Reference manual.
- task_group_context now allows for destruction by non-owner threads.
- Added TBB_USE_EXCEPTIONS macro to control use of exceptions in TBB
headers. It turns off (i.e. sets to 0) automatically if specified
compiler options disable exception handling.
- TBB is enabled to run on top of Microsoft's Concurrency Runtime
on Windows* 7 (via our worker dispatcher known as RML).
- Removed old unused busy-waiting code in concurrent_queue.
- Described the advanced build & test options in src/index.html.
- Warning level for GCC raised with -Wextra and a few other options.
- Multiple fixes and improvements in code, tests, examples, and docs.
Open-source contributions integrated:
- Xbox support by Roman Lut (Deep Shadows), though further changes are
required to make it working; e.g. post-2.1 entry points are missing.
- "Eventcount" by Dmitry Vyukov evolved into concurrent_monitor,
an internal class used in the implementation of concurrent_queue.
------------------------------------------------------------------------
TBB 2.2 Update 3 commercial-aligned release
Changes (w.r.t. TBB 2.2 Update 2 commercial-aligned release):
- PDF documentation updated.
Bugs fixed:
- concurrent_hash_map compatibility issue exposed on Linux in case
two versions of the container were used by different modules.
- enforce 16 byte stack alignment for consistence with GCC; required
to work correctly with 128-bit variables processed by SSE.
- construct() methods of allocator classes now use global operator new.
------------------------------------------------------------------------
TBB 2.2 Update 2 commercial-aligned release
Changes (w.r.t. TBB 2.2 Update 1 commercial-aligned release):
- parallel_invoke and parallel_for_each now take function objects
by const reference, not by value.
- Building TBB with /MT is supported, to avoid dependency on particular
versions of Visual C++* runtime DLLs. TBB DLLs built with /MT
are located in vc_mt directory.
- Class critical_section introduced.
- Improvements in exception support: new exception classes introduced,
all exceptions are thrown via an out-of-line internal method.
- Improvements and fixes in the TBB allocator and malloc replacement,
including robust memory identification, and more reliable dynamic
function substitution on Windows*.
- Method swap() added to class tbb_thread.
- Methods rehash() and bucket_count() added to concurrent_hash_map.
- Added support for Visual Studio* 2010 Beta2. No special binaries
provided, but CRT-independent DLLs (vc_mt) should work.
- Other fixes and improvements in code, tests, examples, and docs.
Open-source contributions integrated:
- The fix to build 32-bit TBB on Mac OS* X 10.6.
- GCC-based port for SPARC Solaris by Michailo Matijkiw, with use of
earlier work by Raf Schietekat.
Bugs fixed:
- 159 - TBB build for PowerPC* running Mac OS* X.
- 160 - IBM* Java segfault if used with TBB allocator.
- crash in concurrent_queue<char> (1616).
------------------------------------------------------------------------
TBB 2.2 Update 1 commercial-aligned release
Changes (w.r.t. TBB 2.2 commercial-aligned release):
- Incorporates all changes from open-source releases below.
- Documentation was updated.
- TBB scheduler auto-initialization now covers all possible use cases.
- concurrent_queue: made argument types of sizeof used in paddings
consistent with those actually used.
- Memory allocator was improved: supported corner case of user's malloc
calling scalable_malloc (non-Windows), corrected processing of
memory allocation requests during tbb memory allocator startup
(Linux).
- Windows malloc replacement has got better support for static objects.
- In pipeline setups that do not allow actual parallelism, execution
by a single thread is guaranteed, idle spinning eliminated, and
performance improved.
- RML refactoring and clean-up.
- New constructor for concurrent_hash_map allows reserving space for
a number of items.
- Operator delete() added to the TBB exception classes.
- Lambda support was improved in parallel_reduce.
- gcc 4.3 warnings were fixed for concurrent_queue.
- Fixed possible initialization deadlock in modules using TBB entities
during construction of global static objects.
- Copy constructor in concurrent_hash_map was fixed.
- Fixed a couple of rare crashes in the scheduler possible before
in very specific use cases.
- Fixed a rare crash in the TBB allocator running out of memory.
- New tests were implemented, including test_lambda.cpp that checks
support for lambda expressions.
- A few other small changes in code, tests, and documentation.
------------------------------------------------------------------------
20090809 open-source release
Changes (w.r.t. TBB 2.2 commercial-aligned release):
- Fixed known exception safety issues in concurrent_vector.
- Better concurrency of simultaneous grow requests in concurrent_vector.
- TBB allocator further improves performance of large object allocation.
- Problem with source of text relocations was fixed on Linux
- Fixed bugs related to malloc replacement under Windows
- A few other small changes in code and documentation.
------------------------------------------------------------------------
TBB 2.2 commercial-aligned release
Changes (w.r.t. TBB 2.1 U4 commercial-aligned release):
- Incorporates all changes from open-source releases below.
- Architecture folders renamed from em64t to intel64 and from itanium
to ia64.
- Major Interface version changed from 3 to 4. Deprecated interfaces
might be removed in future releases.
- Parallel algorithms that use partitioners have switched to use
the auto_partitioner by default.
- Improved memory allocator performance for allocations bigger than 8K.
- Added new thread-bound filters functionality for pipeline.
- New implementation of concurrent_hash_map that improves performance
significantly.
- A few other small changes in code and documentation.
------------------------------------------------------------------------
20090511 open-source release
Changes (w.r.t. previous open-source release):
- Basic support for MinGW32 development kit.
- Added tbb::zero_allocator class that initializes memory with zeros.
It can be used as an adaptor to any STL-compatible allocator class.
- Added tbb::parallel_for_each template function as alias to parallel_do.
- Added more overloads for tbb::parallel_for.
- Added support for exact exception propagation (can only be used with
compilers that support C++0x std::exception_ptr).
- tbb::atomic template class can be used with enumerations.
- mutex, recursive_mutex, spin_mutex, spin_rw_mutex classes extended
with explicit lock/unlock methods.
- Fixed size() and grow_to_at_least() methods of tbb::concurrent_vector
to provide space allocation guarantees. More methods added for
compatibility with std::vector, including some from C++0x.
- Preview of a lambda-friendly interface for low-level use of tasks.
- scalable_msize function added to the scalable allocator (Windows only).
- Rationalized internal auxiliary functions for spin-waiting and backoff.
- Several tests undergo decent refactoring.
Changes affecting backward compatibility:
- Improvements in concurrent_queue, including limited API changes.
The previous version is deprecated; its functionality is accessible
via methods of the new tbb::concurrent_bounded_queue class.
- grow* and push_back methods of concurrent_vector changed to return
iterators; old semantics is deprecated.
------------------------------------------------------------------------
TBB 2.1 Update 4 commercial-aligned release
Changes (w.r.t. TBB 2.1 U3 commercial-aligned release):
- Added tests for aligned memory allocations and malloc replacement.
- Several improvements for better bundling with Intel(R) C++ Compiler.
- A few other small changes in code and documentaion.
Bugs fixed:
- 150 - request to build TBB examples with debug info in release mode.
- backward compatibility issue with concurrent_queue on Windows.
- dependency on VS 2005 SP1 runtime libraries removed.
- compilation of GUI examples under Xcode* 3.1 (1577).
- On Windows, TBB allocator classes can be instantiated with const types
for compatibility with MS implementation of STL containers (1566).
------------------------------------------------------------------------
20090313 open-source release
Changes (w.r.t. 20081109 open-source release):
- Includes all changes introduced in TBB 2.1 Update 2 & Update 3
commercial-aligned releases (see below for details).
- Added tbb::parallel_invoke template function. It runs up to 10
user-defined functions in parallel and waits for them to complete.
- Added a special library providing ability to replace the standard
memory allocation routines in Microsoft* C/C++ RTL (malloc/free,
global new/delete, etc.) with the TBB memory allocator.
Usage details are described in include/tbb/tbbmalloc_proxy.h file.
- Task scheduler switched to use new implementation of its core
functionality (deque based task pool, new structure of arena slots).
- Preview of Microsoft* Visual Studio* 2005 project files for
building the library is available in build/vsproject folder.
- Added tests for aligned memory allocations and malloc replacement.
- Added parallel_for/game_of_life.net example (for Windows only)
showing TBB usage in a .NET application.
- A number of other fixes and improvements to code, tests, makefiles,
examples and documents.
Bugs fixed:
- The same list as in TBB 2.1 Update 4 right above.
------------------------------------------------------------------------
TBB 2.1 Update 3 commercial-aligned release
Changes (w.r.t. TBB 2.1 U2 commercial-aligned release):
- Added support for aligned allocations to the TBB memory allocator.
- Added a special library to use with LD_PRELOAD on Linux* in order to
replace the standard memory allocation routines in C/C++ with the
TBB memory allocator.
- Added null_mutex and null_rw_mutex: no-op classes interface-compliant
to other TBB mutexes.
- Improved performance of parallel_sort, to close most of the serial gap
with std::sort, and beat it on 2 and more cores.
- A few other small changes.
Bugs fixed:
- the problem where parallel_for hanged after exception throw
if affinity_partitioner was used (1556).
- get rid of VS warnings about mbstowcs deprecation (1560),
as well as some other warnings.
- operator== for concurrent_vector::iterator fixed to work correctly
with different vector instances.
------------------------------------------------------------------------
TBB 2.1 Update 2 commercial-aligned release
Changes (w.r.t. TBB 2.1 U1 commercial-aligned release):
- Incorporates all open-source-release changes down to TBB 2.1 U1,
except for:
- 20081019 addition of enumerable_thread_specific;
- Warning level for Microsoft* Visual C++* compiler raised to /W4 /Wp64;
warnings found on this level were cleaned or suppressed.
- Added TBB_runtime_interface_version API function.
- Added new example: pipeline/square.
- Added exception handling and cancellation support
for parallel_do and pipeline.
- Added copy constructor and [begin,end) constructor to concurrent_queue.
- Added some support for beta version of Intel(R) Parallel Amplifier.
- Added scripts to set environment for cross-compilation of 32-bit
applications on 64-bit Linux with Intel(R) C++ Compiler.
- Fixed semantics of concurrent_vector::clear() to not deallocate
internal arrays. Fixed compact() to perform such deallocation later.
- Fixed the issue with atomic<T*> when T is incomplete type.
- Improved support for PowerPC* Macintosh*, including the fix
for a bug in masked compare-and-swap reported by a customer.
- As usual, a number of other improvements everywhere.
------------------------------------------------------------------------
20081109 open-source release
Changes (w.r.t. previous open-source release):
- Added new serial out of order filter for tbb::pipeline.
- Fixed the issue with atomic<T*>::operator= reported at the forum.
- Fixed the issue with using tbb::task::self() in task destructor
reported at the forum.
- A number of other improvements to code, tests, makefiles, examples
and documents.
Open-source contributions integrated:
- Changes in the memory allocator were partially integrated.
------------------------------------------------------------------------
20081019 open-source release
Changes (w.r.t. previous open-source release):
- Introduced enumerable_thread_specific<T>. This new class provides a
wrapper around native thread local storage as well as iterators and
ranges for accessing the thread local copies (1533).
- Improved support for Intel(R) Threading Analysis Tools
on Intel(R) 64 architecture.
- Dependency from Microsoft* CRT was integrated to the libraries using
manifests, to avoid issues if called from code that uses different
version of Visual C++* runtime than the library.
- Introduced new defines TBB_USE_ASSERT, TBB_USE_DEBUG,
TBB_USE_PERFORMANCE_WARNINGS, TBB_USE_THREADING_TOOLS.
- A number of other improvements to code, tests, makefiles, examples
and documents.
Open-source contributions integrated:
- linker optimization: /incremental:no .
------------------------------------------------------------------------
20080925 open-source release
Changes (w.r.t. previous open-source release):
- Same fix for a memory leak in the memory allocator as in TBB 2.1 U1.
- Improved support for lambda functions.
- Fixed more concurrent_queue issues reported at the forum.
- A number of other improvements to code, tests, makefiles, examples
and documents.
------------------------------------------------------------------------
TBB 2.1 Update 1 commercial-aligned release
Changes (w.r.t. TBB 2.1 commercial-aligned release):
- Fixed small memory leak in the memory allocator.
- Incorporates all open-source-release changes since TBB 2.1, except for:
- 20080825 changes for parallel_do;
------------------------------------------------------------------------
20080825 open-source release
Changes (w.r.t. previous open-source release):
- Added exception handling and cancellation support for parallel_do.
- Added default HashCompare template argument for concurrent_hash_map.
- Fixed concurrent_queue.clear() issues due to incorrect assumption
about clear() being private method.
- Added the possibility to use TBB in applications that change
default calling conventions (Windows* only).
- Many improvements to code, tests, examples, makefiles and documents.
Bugs fixed:
- 120, 130 - memset declaration missed in concurrent_hash_map.h
------------------------------------------------------------------------
20080724 open-source release
Changes (w.r.t. previous open-source release):
- Inline assembly for atomic operations improved for gcc 4.3
- A few more improvements to the code.
------------------------------------------------------------------------
20080709 open-source release
Changes (w.r.t. previous open-source release):
- operator=() was added to the tbb_thread class according to
the current working draft for std::thread.
- Recognizing SPARC* in makefiles for Linux* and Sun Solaris*.
Bugs fixed:
- 127 - concurrent_hash_map::range fixed to split correctly.
Open-source contributions integrated:
- fix_set_midpoint.diff by jyasskin
- SPARC* support in makefiles by Raf Schietekat
------------------------------------------------------------------------
20080622 open-source release
Changes (w.r.t. previous open-source release):
- Fixed a hang that rarely happened on Linux
during deinitialization of the TBB scheduler.
- Improved support for Intel(R) Thread Checker.
- A few more improvements to the code.
------------------------------------------------------------------------
TBB 2.1 commercial-aligned release
Changes (w.r.t. TBB 2.0 U3 commercial-aligned release):
- All open-source-release changes down to, and including, TBB 2.0 below,
were incorporated into this release.
------------------------------------------------------------------------
20080605 open-source release
Changes (w.r.t. previous open-source release):
- Explicit control of exported symbols by version scripts added on Linux.
- Interfaces polished for exception handling & algorithm cancellation.
- Cache behavior improvements in the scalable allocator.
- Improvements in text_filter, polygon_overlay, and other examples.
- A lot of other stability improvements in code, tests, and makefiles.
- First release where binary packages include headers/docs/examples, so
binary packages are now self-sufficient for using TBB.
Open-source contributions integrated:
- atomics patch (partially).
- tick_count warning patch.
Bugs fixed:
- 118 - fix for boost compatibility.
- 123 - fix for tbb_machine.h.
------------------------------------------------------------------------
20080512 open-source release
Changes (w.r.t. previous open-source release):
- Fixed a problem with backward binary compatibility
of debug Linux builds.
- Sun* Studio* support added.
- soname support added on Linux via linker script. To restore backward
binary compatibility, *.so -> *.so.2 softlinks should be created.
- concurrent_hash_map improvements - added few new forms of insert()
method and fixed precondition and guarantees of erase() methods.
Added runtime warning reporting about bad hash function used for
the container. Various improvements for performance and concurrency.
- Cancellation mechanism reworked so that it does not hurt scalability.
- Algorithm parallel_do reworked. Requirement for Body::argument_type
definition removed, and work item argument type can be arbitrarily
cv-qualified.
- polygon_overlay example added.
- A few more improvements to code, tests, examples and Makefiles.
Open-source contributions integrated:
- Soname support patch for Bugzilla #112.
Bugs fixed:
- 112 - fix for soname support.
------------------------------------------------------------------------
TBB 2.0 U3 commercial-aligned release (package 017, April 20, 2008)
Corresponds to commercial 019 (for Linux*, 020; for Mac OS* X, 018)
packages.
Changes (w.r.t. TBB 2.0 U2 commercial-aligned release):
- Does not contain open-source-release changes below; this release is
only a minor update of TBB 2.0 U2.
- Removed spin-waiting in pipeline and concurrent_queue.
- A few more small bug fixes from open-source releases below.
------------------------------------------------------------------------
20080408 open-source release
Changes (w.r.t. previous open-source release):
- count_strings example reworked: new word generator implemented, hash
function replaced, and tbb_allocator is used with std::string class.
- Static methods of spin_rw_mutex were replaced by normal member
functions, and the class name was versioned.
- tacheon example was renamed to tachyon.
- Improved support for Intel(R) Thread Checker.
- A few more minor improvements.
Open-source contributions integrated:
- Two sets of Sun patches for IA Solaris support.
------------------------------------------------------------------------
20080402 open-source release
Changes (w.r.t. previous open-source release):
- Exception handling and cancellation support for tasks and algorithms
fully enabled.
- Exception safety guaranties defined and fixed for all concurrent
containers.
- User-defined memory allocator support added to all concurrent
containers.
- Performance improvement of concurrent_hash_map, spin_rw_mutex.
- Critical fix for a rare race condition during scheduler
initialization/de-initialization.
- New methods added for concurrent containers to be closer to STL,
as well as automatic filters removal from pipeline
and __TBB_AtomicAND function.
- The volatile keyword dropped from where it is not really needed.
- A few more minor improvements.
------------------------------------------------------------------------
20080319 open-source release
Changes (w.r.t. previous open-source release):
- Support for gcc version 4.3 was added.
- tbb_thread class, near compatible with std::thread expected in C++0x,
was added.
Bugs fixed:
- 116 - fix for compilation issues with gcc version 4.2.1.
- 120 - fix for compilation issues with gcc version 4.3.
------------------------------------------------------------------------
20080311 open-source release
Changes (w.r.t. previous open-source release):
- An enumerator added for pipeline filter types (serial vs. parallel).
- New task_scheduler_observer class introduced, to observe when
threads start and finish interacting with the TBB task scheduler.
- task_scheduler_init reverted to not use internal versioned class;
binary compatibility guaranteed with stable releases only.
- Various improvements to code, tests, examples and Makefiles.
------------------------------------------------------------------------
20080304 open-source release
Changes (w.r.t. previous open-source release):
- Task-to-thread affinity support, previously kept under a macro,
now fully legalized.
- Work-in-progress on cache_aligned_allocator improvements.
- Pipeline really supports parallel input stage; it's no more serialized.
- Various improvements to code, tests, examples and Makefiles.
Bugs fixed:
- 119 - fix for scalable_malloc sometimes failing to return a big block.
- TR575 - fixed a deadlock occurring on Windows in startup/shutdown
under some conditions.
------------------------------------------------------------------------
20080226 open-source release
Changes (w.r.t. previous open-source release):
- Introduced tbb_allocator to select between standard allocator and
tbb::scalable_allocator when available.
- Removed spin-waiting in pipeline and concurrent_queue.
- Improved performance of concurrent_hash_map by using tbb_allocator.
- Improved support for Intel(R) Thread Checker.
- Various improvements to code, tests, examples and Makefiles.
------------------------------------------------------------------------
TBB 2.0 U2 commercial-aligned release (package 017, February 14, 2008)
Corresponds to commercial 017 (for Linux*, 018; for Mac OS* X, 016)
packages.
Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
- Does not contain open-source-release changes below; this release is
only a minor update of TBB 2.0 U1.
- Add support for Microsoft* Visual Studio* 2008, including binary
libraries and VS2008 projects for examples.
- Use SwitchToThread() not Sleep() to yield threads on Windows*.
- Enhancements to Doxygen-readable comments in source code.
- A few more small bug fixes from open-source releases below.
Bugs fixed:
- TR569 - Memory leak in concurrent_queue.
------------------------------------------------------------------------
20080207 open-source release
Changes (w.r.t. previous open-source release):
- Improvements and minor fixes in VS2008 projects for examples.
- Improvements in code for gating worker threads that wait for work,
previously consolidated under #if IMPROVED_GATING, now legalized.
- Cosmetic changes in code, examples, tests.
Bugs fixed:
- 113 - Iterators and ranges should be convertible to their const
counterparts.
- TR569 - Memory leak in concurrent_queue.
------------------------------------------------------------------------
20080122 open-source release
Changes (w.r.t. previous open-source release):
- Updated examples/parallel_for/seismic to improve the visuals and to
use the affinity_partitioner (20071127 and forward) for better
performance.
- Minor improvements to unittests and performance tests.
------------------------------------------------------------------------
20080115 open-source release