-
Notifications
You must be signed in to change notification settings - Fork 1k
/
CHANGES
2838 lines (2159 loc) · 110 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
------------------------------------------------------------------------
The list of most significant changes made over time in
Intel(R) Threading Building Blocks (Intel(R) TBB).
Intel TBB 2019 Update 9
TBB_INTERFACE_VERSION == 11009
Changes (w.r.t. Intel TBB 2019 Update 8):
- Multiple APIs are deprecated. For details, please see
Deprecated Features appendix in the TBB reference manual.
- Added C++17 deduction guides for flow graph nodes.
Preview Features:
- Added isolated_task_group class that allows multiple threads to add
and execute tasks sharing the same isolation.
- Extended the flow graph API to simplify connecting nodes.
- Added erase() by heterogeneous keys for concurrent ordered containers.
- Added a possibility to suspend task execution at a specific point
and resume it later.
Bugs fixed:
- Fixed the emplace() method of concurrent unordered containers to
destroy a temporary element that was not inserted.
- Fixed a bug in the merge() method of concurrent unordered
containers.
- Fixed behavior of a continue_node that follows buffering nodes.
Open-source contributions integrated:
- Added support for move-only types to tbb::parallel_pipeline
(https://github.com/intel/tbb/pull/159) by Raf Schietekat.
- Fixed detection of clang version when CUDA toolkit is installed
(https://github.com/intel/tbb/pull/150) by Guilherme Amadio.
------------------------------------------------------------------------
Intel TBB 2019 Update 8
TBB_INTERFACE_VERSION == 11008
Changes (w.r.t. Intel TBB 2019 Update 7):
Bugs fixed:
- Fixed a bug in TBB 2019 Update 7 that could lead to incorrect memory
reallocation on Linux (https://github.com/intel/tbb/issues/148).
- Fixed enqueuing tbb::task into tbb::task_arena not to fail on threads
with no task scheduler initialized
(https://github.com/intel/tbb/issues/116).
------------------------------------------------------------------------
Intel TBB 2019 Update 7
TBB_INTERFACE_VERSION == 11007
Changes (w.r.t. Intel TBB 2019 Update 6):
- Added TBBMALLOC_SET_HUGE_SIZE_THRESHOLD parameter to set the lower
bound for allocations that are not released back to OS unless
a cleanup is explicitly requested.
- Added zip_iterator::base() method to get the tuple of underlying
iterators.
- Improved async_node to never block a thread that sends a message
through its gateway.
- Extended decrement port of the tbb::flow::limiter_node to accept
messages of integral types.
- Added support of Windows* to the CMake module TBBInstallConfig.
- Added packaging of CMake configuration files to TBB packages built
using build/build.py script
(https://github.com/intel/tbb/issues/141).
Changes affecting backward compatibility:
- Removed the number_of_decrement_predecessors parameter from the
constructor of flow::limiter_node. To allow its usage, set
TBB_DEPRECATED_LIMITER_NODE_CONSTRUCTOR macro to 1.
Preview Features:
- Added ordered associative containers:
concurrent_{map,multimap,set,multiset} (requires C++11).
Open-source contributions integrated:
- Fixed makefiles to properly obtain the GCC version for GCC 7
and later (https://github.com/intel/tbb/pull/147) by Timmmm.
------------------------------------------------------------------------
Intel TBB 2019 Update 6
TBB_INTERFACE_VERSION == 11006
Changes (w.r.t. Intel TBB 2019 Update 5):
- Added support for Microsoft* Visual Studio* 2019.
- Added support for enqueuing tbb::task into tbb::task_arena
(https://github.com/01org/tbb/issues/116).
- Improved support for allocator propagation on concurrent_hash_map
assigning and swapping.
- Improved scalable_allocation_command cleanup operations to release
more memory buffered by the calling thread.
- Separated allocation of small and large objects into distinct memory
regions, which helps to reduce excessive memory caching inside the
TBB allocator.
Preview Features:
- Removed template class gfx_factory from the flow graph API.
------------------------------------------------------------------------
Intel TBB 2019 Update 5
TBB_INTERFACE_VERSION == 11005
Changes (w.r.t. Intel TBB 2019 Update 4):
- Associating a task_scheduler_observer with an implicit or explicit
task arena is now a fully supported feature.
- Added a CMake module TBBInstallConfig that allows to generate and
install CMake configuration files for TBB packages.
Inspired by Hans Johnson (https://github.com/01org/tbb/pull/119).
- Added node handles, methods merge() and unsafe_extract() to concurrent
unordered containers.
- Added constructors with Compare argument to concurrent_priority_queue
(https://github.com/01org/tbb/issues/109).
- Controlling the stack size of worker threads is now supported for
Universal Windows Platform.
- Improved tbb::zip_iterator to work with algorithms that swap values
via iterators.
- Improved support for user-specified allocators in concurrent_hash_map,
including construction of allocator-aware data types.
- For ReaderWriterMutex types, upgrades and downgrades now succeed if
the mutex is already in the requested state.
Inspired by Niadb (https://github.com/01org/tbb/pull/122).
Preview Features:
- The task_scheduler_observer::may_sleep() method has been removed.
Bugs fixed:
- Fixed the issue with a pipeline parallel filter executing serially if
it follows a thread-bound filter.
- Fixed a performance regression observed when multiple parallel
algorithms start simultaneously.
------------------------------------------------------------------------
Intel TBB 2019 Update 4
TBB_INTERFACE_VERSION == 11004
Changes (w.r.t. Intel TBB 2019 Update 3):
- global_control class is now a fully supported feature.
- Added deduction guides for tbb containers: concurrent_hash_map,
concurrent_unordered_map, concurrent_unordered_set.
- Added tbb::scalable_memory_resource function returning
std::pmr::memory_resource interface to the TBB memory allocator.
- Added tbb::cache_aligned_resource class that implements
std::pmr::memory_resource with cache alignment and no false sharing.
- Added rml::pool_msize function returning the usable size of a memory
block allocated from a given memory pool.
- Added default and copy constructors for tbb::counting_iterator
and tbb::zip_iterator.
- Added TBB_malloc_replacement_log function to obtain the status of
dynamic memory allocation replacement (Windows* only).
- CMake configuration file now supports release-only and debug-only
configurations (https://github.com/01org/tbb/issues/113).
- TBBBuild CMake module takes the C++ version from CMAKE_CXX_STANDARD.
Bugs fixed:
- Fixed compilation for tbb::concurrent_vector when used with
std::pmr::polymorphic_allocator.
Open-source contributions integrated:
- TBB_INTERFACE_VERSION is included into TBB version in CMake
configuration (https://github.com/01org/tbb/pull/100)
by Hans Johnson.
- Fixed detection of C++17 deduction guides for Visual C++*
(https://github.com/01org/tbb/pull/112) by Marian Klymov.
------------------------------------------------------------------------
Intel TBB 2019 Update 3
TBB_INTERFACE_VERSION == 11003
Changes (w.r.t. Intel TBB 2019 Update 2):
- Added tbb::transform_iterator.
- Added new Makefile target 'profile' to flow graph examples enabling
additional support for Intel(R) Parallel Studio XE tools.
- Added TBB_MALLOC_DISABLE_REPLACEMENT environment variable to switch off
dynamic memory allocation replacement on Windows*. Inspired by
a contribution from Edward Lam.
Preview Features:
- Extended flow graph API to support relative priorities for functional
nodes, specified as an optional parameter to the node constructors.
Open-source contributions integrated:
- Enabled using process-local futex operations
(https://github.com/01org/tbb/pull/58) by Andrey Semashev.
------------------------------------------------------------------------
Intel TBB 2019 Update 2
TBB_INTERFACE_VERSION == 11002
Changes (w.r.t. Intel TBB 2019 Update 1):
- Added overloads for parallel_reduce with default partitioner and
user-supplied context.
- Added deduction guides for tbb containers: concurrent_vector,
concurrent_queue, concurrent_bounded_queue,
concurrent_priority_queue.
- Reallocation of memory objects >1MB now copies and frees memory if
the size is decreased twice or more, trading performance off for
reduced memory usage.
- After a period of sleep, TBB worker threads now prefer returning to
their last used task arena.
Bugs fixed:
- Fixed compilation of task_group.h when targeting macOS* 10.11 or
earlier (https://github.com/conda-forge/tbb-feedstock/issues/42).
Open-source contributions integrated:
- Added constructors with HashCompare argument to concurrent_hash_map
(https://github.com/01org/tbb/pull/63) by arewedancer.
------------------------------------------------------------------------
Intel TBB 2019 Update 1
TBB_INTERFACE_VERSION == 11001
Changes (w.r.t. Intel TBB 2019):
- Doxygen documentation could be built with 'make doxygen' command now.
Changes affecting backward compatibility:
- Enforced 8 byte alignment for tbb::atomic<long long> and
tbb::atomic<double>. On IA-32 architecture it may cause layout
changes in structures that use these types.
Bugs fixed:
- Fixed an issue with dynamic memory allocation replacement on Windows*
occurred for some versions of ucrtbase.dll.
- Fixed possible deadlock in tbbmalloc cleanup procedure during process
shutdown. Inspired by a contribution from Edward Lam.
- Fixed usage of std::uncaught_exception() deprecated in C++17
(https://github.com/01org/tbb/issues/67).
- Fixed a crash when a local observer is activated after an arena
observer.
- Fixed compilation of task_group.h by Visual C++* 15.7 with
/permissive- option (https://github.com/01org/tbb/issues/53).
- Fixed tbb4py to avoid dependency on Intel(R) C++ Compiler shared
libraries.
- Fixed compilation for Anaconda environment with GCC 7.3 and higher.
Open-source contributions integrated:
- Fix various warnings when building with Visual C++
(https://github.com/01org/tbb/pull/70) by Edward Lam.
------------------------------------------------------------------------
Intel TBB 2019
TBB_INTERFACE_VERSION == 11000
Changes (w.r.t. Intel TBB 2018 Update 5):
- Lightweight policy for functional nodes in the flow graph is now
a fully supported feature.
- Reservation support in flow::write_once_node and flow::overwrite_node
is now a fully supported feature.
- Support for Flow Graph Analyzer and improvements for
Intel(R) VTune(TM) Amplifier become a regular feature enabled by
TBB_USE_THREADING_TOOLS macro.
- Added support for std::new_handler in the replacement functions for
global operator new.
- Added C++14 constructors to concurrent unordered containers.
- Added tbb::counting_iterator and tbb::zip_iterator.
- Fixed multiple -Wextra warnings in TBB source files.
Preview Features:
- Extracting nodes from a flow graph is deprecated and disabled by
default. To enable, use TBB_DEPRECATED_FLOW_NODE_EXTRACTION macro.
Changes affecting backward compatibility:
- Due to internal changes in the flow graph classes, recompilation is
recommended for all binaries that use the flow graph.
Open-source contributions integrated:
- Added support for OpenBSD by Anthony J. Bentley.
------------------------------------------------------------------------
Intel TBB 2018 Update 6
TBB_INTERFACE_VERSION == 10006
Changes (w.r.t. Intel TBB 2018 Update 5):
Bugs fixed:
- Fixed an issue with dynamic memory allocation replacement on Windows*
occurred for some versions of ucrtbase.dll.
------------------------------------------------------------------------
Intel TBB 2018 Update 5
TBB_INTERFACE_VERSION == 10005
Changes (w.r.t. Intel TBB 2018 Update 4):
Preview Features:
- Added user event tracing API for Intel(R) VTune(TM) Amplifier and
Flow Graph Analyzer.
Bugs fixed:
- Fixed the memory allocator to properly support transparent huge pages.
- Removed dynamic exception specifications in tbbmalloc_proxy for C++11
and later (https://github.com/01org/tbb/issues/41).
- Added -flifetime-dse=1 option when building with GCC on macOS*
(https://github.com/01org/tbb/issues/60).
Open-source contributions integrated:
- Added ARMv8 support by Siddhesh Poyarekar.
- Avoid GCC warnings for clearing an object of non-trivial type
(https://github.com/01org/tbb/issues/54) by Daniel Arndt.
------------------------------------------------------------------------
Intel TBB 2018 Update 4
TBB_INTERFACE_VERSION == 10004
Changes (w.r.t. Intel TBB 2018 Update 3):
Preview Features:
- Improved support for Flow Graph Analyzer and Intel(R) VTune(TM)
Amplifier in the task scheduler and generic parallel algorithms.
- Default device set for opencl_node now includes all the devices from
the first available OpenCL* platform.
- Added lightweight policy for functional nodes in the flow graph. It
indicates that the node body has little work and should, if possible,
be executed immediately upon receiving a message, avoiding task
scheduling overhead.
------------------------------------------------------------------------
Intel TBB 2018 Update 3
TBB_INTERFACE_VERSION == 10003
Changes (w.r.t. Intel TBB 2018 Update 2):
Preview Features:
- Added template class blocked_rangeNd for a generic multi-dimensional
range (requires C++11). Inspired by a contribution from Jeff Hammond.
Bugs fixed:
- Fixed a crash with dynamic memory allocation replacement on
Windows* for applications using system() function.
- Fixed parallel_deterministic_reduce to split range correctly when used
with static_partitioner.
- Fixed a synchronization issue in task_group::run_and_wait() which
caused a simultaneous call to task_group::wait() to return
prematurely.
------------------------------------------------------------------------
Intel TBB 2018 Update 2
TBB_INTERFACE_VERSION == 10002
Changes (w.r.t. Intel TBB 2018 Update 1):
- Added support for Android* NDK r16, macOS* 10.13, Fedora* 26.
- Binaries for Universal Windows Driver (vc14_uwd) now link with static
Microsoft* runtime libraries, and are only available in commercial
releases.
- Extended flow graph documentation with more code samples.
Preview Features:
- Added a Python* module for multi-processing computations in numeric
Python* libraries.
Bugs fixed:
- Fixed constructors of concurrent_hash_map to be exception-safe.
- Fixed auto-initialization in the main thread to be cleaned up at
shutdown.
- Fixed a crash when tbbmalloc_proxy is used together with dbghelp.
- Fixed static_partitioner to assign tasks properly in case of nested
parallelism.
------------------------------------------------------------------------
Intel TBB 2018 Update 1
TBB_INTERFACE_VERSION == 10001
Changes (w.r.t. Intel TBB 2018):
- Added lambda-friendly overloads for parallel_scan.
- Added support of static and simple partitioners in
parallel_deterministic_reduce.
Preview Features:
- Added initial support for Flow Graph Analyzer to parallel_for.
- Added reservation support in overwrite_node and write_once_node.
Bugs fixed:
- Fixed a potential deadlock scenario in the flow graph that affected
Intel TBB 2018.
------------------------------------------------------------------------
Intel TBB 2018
TBB_INTERFACE_VERSION == 10000
Changes (w.r.t. Intel TBB 2017 Update 7):
- Introduced Parallel STL, an implementation of the C++ standard
library algorithms with support for execution policies. For more
information, see Getting Started with Parallel STL
(https://software.intel.com/en-us/get-started-with-pstl).
- this_task_arena::isolate() function is now a fully supported feature.
- this_task_arena::isolate() function and task_arena::execute() method
were extended to pass on the value returned by the executed functor
(requires C++11).
- task_arena::enqueue() and task_group::run() methods extended to accept
move-only functors.
- A flow graph now spawns all tasks into the same task arena,
and waiting for graph completion also happens in that arena.
- Improved support for Flow Graph Analyzer in async_node, opencl_node,
and composite_node.
- Added support for Android* NDK r15, r15b.
- Added support for Universal Windows Platform.
- Increased minimally supported version of macOS*
(MACOSX_DEPLOYMENT_TARGET) to 10.11.
Changes affecting backward compatibility:
- Internal layout changes in some flow graph classes;
- Several undocumented methods are removed from class graph,
including set_active() and is_active().
- Due to incompatible changes, the namespace version is updated
for the flow graph; recompilation is recommended for all
binaries that use the flow graph classes.
Preview Features:
- opencl_node can be used with any graph object; class opencl_graph
is removed.
- graph::wait_for_all() now automatically waits for all not yet consumed
async_msg objects.
- Improved concurrent_lru_cache::handle_object to support C++11 move
semantics, default construction, and conversion to bool.
Bugs fixed:
- Fixed a bug preventing use of streaming_node and opencl_node with
Clang; inspired by a contribution from Francisco Facioni.
- Fixed this_task_arena::isolate() function to work correctly with
parallel_invoke and parallel_do algorithms.
- Fixed a memory leak in composite_node.
- Fixed an assertion failure in debug tbbmalloc binaries when
TBBMALLOC_CLEAN_ALL_BUFFERS is used.
------------------------------------------------------------------------
Intel TBB 2017 Update 8
TBB_INTERFACE_VERSION == 9108
Changes (w.r.t. Intel TBB 2017 Update 7):
Bugs fixed:
- Fixed an assertion failure in debug tbbmalloc binaries when
TBBMALLOC_CLEAN_ALL_BUFFERS is used.
------------------------------------------------------------------------
Intel TBB 2017 Update 7
TBB_INTERFACE_VERSION == 9107
Changes (w.r.t. Intel TBB 2017 Update 6):
- In the huge pages mode, the memory allocator now is also able to use
transparent huge pages.
Preview Features:
- Added support for Intel TBB integration into CMake-aware
projects, with valuable guidance and feedback provided by Brad King
(Kitware).
Bugs fixed:
- Fixed scalable_allocation_command(TBBMALLOC_CLEAN_ALL_BUFFERS, 0)
to process memory left after exited threads.
------------------------------------------------------------------------
Intel TBB 2017 Update 6
TBB_INTERFACE_VERSION == 9106
Changes (w.r.t. Intel TBB 2017 Update 5):
- Added support for Android* NDK r14.
Preview Features:
- Added a blocking terminate extension to the task_scheduler_init class
that allows an object to wait for termination of worker threads.
Bugs fixed:
- Fixed compilation and testing issues with MinGW (GCC 6).
- Fixed compilation with /std:c++latest option of VS 2017
(https://github.com/01org/tbb/issues/13).
------------------------------------------------------------------------
Intel TBB 2017 Update 5
TBB_INTERFACE_VERSION == 9105
Changes (w.r.t. Intel TBB 2017 Update 4):
- Added support for Microsoft* Visual Studio* 2017.
- Added graph/matmult example to demonstrate support for compute offload
to Intel(R) Graphics Technology in the flow graph API.
- The "compiler" build option now allows to specify a full path to the
compiler.
Changes affecting backward compatibility:
- Constructors for many classes, including graph nodes, concurrent
containers, thread-local containers, etc., are declared explicit and
cannot be used for implicit conversions anymore.
Bugs fixed:
- Added a workaround for bug 16657 in the GNU C Library (glibc)
affecting the debug version of tbb::mutex.
- Fixed a crash in pool_identify() called for an object allocated in
another thread.
------------------------------------------------------------------------
Intel TBB 2017 Update 4
TBB_INTERFACE_VERSION == 9104
Changes (w.r.t. Intel TBB 2017 Update 3):
- Added support for C++11 move semantics in parallel_do.
- Added support for FreeBSD* 11.
Changes affecting backward compatibility:
- Minimal compiler versions required for support of C++11 move semantics
raised to GCC 4.5, VS 2012, and Intel(R) C++ Compiler 14.0.
Bugs fixed:
- The workaround for crashes in the library compiled with GCC 6
(-flifetime-dse=1) was extended to Windows*.
------------------------------------------------------------------------
Intel TBB 2017 Update 3
TBB_INTERFACE_VERSION == 9103
Changes (w.r.t. Intel TBB 2017 Update 2):
- Added support for Android* 7.0 and Android* NDK r13, r13b.
Preview Features:
- Added template class gfx_factory to the flow graph API. It implements
the Factory concept for streaming_node to offload computations to
Intel(R) processor graphics.
Bugs fixed:
- Fixed a possible deadlock caused by missed wakeup signals in
task_arena::execute().
Open-source contributions integrated:
- A build fix for Linux* s390x platform by Jerry J.
------------------------------------------------------------------------
Intel TBB 2017 Update 2
TBB_INTERFACE_VERSION == 9102
Changes (w.r.t. Intel TBB 2017 Update 1):
- Removed the long-outdated support for Xbox* consoles.
Bugs fixed:
- Fixed the issue with task_arena::execute() not being processed when
the calling thread cannot join the arena.
- Fixed dynamic memory allocation replacement failure on macOS* 10.12.
------------------------------------------------------------------------
Intel TBB 2017 Update 1
TBB_INTERFACE_VERSION == 9101
Changes (w.r.t. Intel TBB 2017):
Bugs fixed:
- Fixed dynamic memory allocation replacement failures on Windows* 10
Anniversary Update.
- Fixed emplace() method of concurrent unordered containers to not
require a copy constructor.
------------------------------------------------------------------------
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 demonstrate 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.
------------------------------------------------------------------------
Intel TBB 4.4 Update 6
TBB_INTERFACE_VERSION == 9006
Changes (w.r.t. Intel TBB 4.4 Update 5):
- For 64-bit platforms, quadrupled the worst-case limit on the amount
of memory the Intel TBB allocator can handle.
Bugs fixed:
- 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.
- Fixed parallel_scan to provide correct result if the initial value
of an accumulator is not the operation identity value.
- As a workaround for crashes in the Intel TBB library compiled with
GCC 6, added -flifetime-dse=1 to compilation options on Linux* OS.
------------------------------------------------------------------------
Intel TBB 4.4 Update 5
TBB_INTERFACE_VERSION == 9005
Changes (w.r.t. Intel TBB 4.4 Update 4):
- Modified graph/fgbzip2 example to remove unnecessary data queuing.
Preview Features:
- Added a Python* module which is able to replace Python's thread pool
class with the implementation based on Intel TBB task scheduler.
Bugs fixed:
- Fixed the implementation of 64-bit tbb::atomic for IA-32 architecture
to work correctly with GCC 5.2 in C++11/14 mode.
- Fixed a possible crash when tasks with affinity (e.g. specified via
affinity_partitioner) are used simultaneously with task priority
changes.
------------------------------------------------------------------------
Intel TBB 4.4 Update 4
TBB_INTERFACE_VERSION == 9004
Changes (w.r.t. Intel TBB 4.4 Update 3):
- Removed a few cases of excessive user data copying in the flow graph.
- Improved robustness of concurrent_bounded_queue::abort() in case of
simultaneous push and pop operations.
Preview Features:
- Added tbb::flow::async_msg, a special message type to support
communications between the flow graph and external asynchronous
activities.
- async_node modified to support use with C++03 compilers.
Bugs fixed:
- Fixed a bug in dynamic memory allocation replacement for Windows* OS.
- Fixed excessive memory consumption on Linux* OS caused by enabling
zero-copy realloc.
- Fixed performance regression on Intel(R) Xeon Phi(tm) coprocessor with
auto_partitioner.
------------------------------------------------------------------------
Intel TBB 4.4 Update 3
TBB_INTERFACE_VERSION == 9003
Changes (w.r.t. Intel TBB 4.4 Update 2):
- Modified parallel_sort to not require a default constructor for values
and to use iter_swap() for value swapping.
- Added support for creating or initializing a task_arena instance that
is connected to the arena currently used by the thread.
- graph/binpack example modified to use multifunction_node.
- For performance analysis, use Intel(R) VTune(TM) Amplifier XE 2015
and higher; older versions are no longer supported.
- Improved support for compilation with disabled RTTI, by omitting its use
in auxiliary code, such as assertions. However some functionality,
particularly the flow graph, does not work if RTTI is disabled.
- The tachyon example for Android* can be built using Android Studio 1.5
and higher with experimental Gradle plugin 0.4.0.
Preview Features:
- Added class opencl_subbufer that allows using OpenCL* sub-buffer
objects with opencl_node.
- Class global_control supports the value of 1 for
max_allowed_parallelism.
Bugs fixed:
- Fixed a race causing "TBB Warning: setaffinity syscall failed" message.
- Fixed a compilation issue on OS X* with Intel(R) C++ Compiler 15.0.
- Fixed a bug in queuing_rw_mutex::downgrade() that could temporarily
block new readers.
- Fixed speculative_spin_rw_mutex to stop using the lazy subscription
technique due to its known flaws.
- Fixed memory leaks in the tool support code.
------------------------------------------------------------------------
Intel TBB 4.4 Update 2
TBB_INTERFACE_VERSION == 9002
Changes (w.r.t. Intel TBB 4.4 Update 1):
- Improved interoperability with Intel(R) OpenMP RTL (libiomp) on Linux:
OpenMP affinity settings do not affect the default number of threads
used in the task scheduler. Intel(R) C++ Compiler 16.0 Update 1
or later is required.
- Added a new flow graph example with different implementations of the
Cholesky Factorization algorithm.
Preview Features:
- Added template class opencl_node to the flow graph API. It allows a
flow graph to offload computations to OpenCL* devices.
- Extended join_node to use type-specified message keys. It simplifies
the API of the node by obtaining message keys via functions
associated with the message type (instead of node ports).
- Added static_partitioner that minimizes overhead of parallel_for and
parallel_reduce for well-balanced workloads.
- Improved template class async_node in the flow graph API to support
user settable concurrency limits.
Bugs fixed:
- Fixed a possible crash in the GUI layer for library examples on Linux.
------------------------------------------------------------------------
Intel TBB 4.4 Update 1
TBB_INTERFACE_VERSION == 9001
Changes (w.r.t. Intel TBB 4.4):
- Added support for Microsoft* Visual Studio* 2015.
- Intel TBB no longer performs dynamic replacement of memory allocation
functions for Microsoft Visual Studio 2005 and earlier versions.
- For GCC 4.7 and higher, the intrinsics-based platform isolation layer
uses __atomic_* built-ins instead of the legacy __sync_* ones.
This change is inspired by a contribution from Mathieu Malaterre.
- Improvements in task_arena:
Several application threads may join a task_arena and execute tasks
simultaneously. The amount of concurrency reserved for application
threads at task_arena construction can be set to any value between
0 and the arena concurrency limit.
- The fractal example was modified to demonstrate class task_arena
and moved to examples/task_arena/fractal.
Bugs fixed:
- Fixed a deadlock during destruction of task_scheduler_init objects
when one of destructors is set to wait for worker threads.
- Added a workaround for a possible crash on OS X* when dynamic memory
allocator replacement (libtbbmalloc_proxy) is used and memory is
released during application startup.
- Usage of mutable functors with task_group::run_and_wait() and
task_arena::enqueue() is disabled. An attempt to pass a functor
which operator()() is not const will produce compilation errors.
- Makefiles and environment scripts now properly recognize GCC 5.0 and
higher.
Open-source contributions integrated:
- Improved performance of parallel_for_each for inputs allowing random
access, by Raf Schietekat.
------------------------------------------------------------------------
Intel TBB 4.4
TBB_INTERFACE_VERSION == 9000
Changes (w.r.t. Intel TBB 4.3 Update 6):
- The following features are now fully supported:
tbb::flow::composite_node;
additional policies of tbb::flow::graph_node::reset().
- Platform abstraction layer for Windows* OS updated to use compiler
intrinsics for most atomic operations.
- The tbb/compat/thread header updated to automatically include
C++11 <thread> where available.
- Fixes and refactoring in the task scheduler and class task_arena.
- Added key_matching policy to tbb::flow::join_node, which removes
the restriction on the type that can be compared-against.
- For tag_matching join_node, tag_value is redefined to be 64 bits
wide on all architectures.
- Expanded the documentation for the flow graph with details about
node semantics and behavior.
- Added dynamic replacement of C11 standard function aligned_alloc()
under Linux* OS.
- Added C++11 move constructors and assignment operators to
tbb::enumerable_thread_specific container.
- Added hashing support for tbb::tbb_thread::id.
- On OS X*, binaries that depend on libstdc++ are not provided anymore.
In the makefiles, libc++ is now used by default; for building with
libstdc++, specify stdlib=libstdc++ in the make command line.
Preview Features:
- Added a new example, graph/fgbzip2, that shows usage of
tbb::flow::async_node.
- Modification to the low-level API for memory pools:
added a function for finding a memory pool by an object allocated
from that pool.
- tbb::memory_pool now does not request memory till the first allocation
from the pool.
Changes affecting backward compatibility:
- Internal layout of flow graph nodes has changed; recompilation is
recommended for all binaries that use the flow graph.
- Resetting a tbb::flow::source_node will immediately activate it,
unless it was created in inactive state.
Bugs fixed:
- Failure at creation of a memory pool will not cause process
termination anymore.
Open-source contributions integrated:
- Supported building TBB with Clang on AArch64 with use of built-in
intrinsics by David A.
------------------------------------------------------------------------
Intel TBB 4.3 Update 6
TBB_INTERFACE_VERSION == 8006
Changes (w.r.t. Intel TBB 4.3 Update 5):
- Supported zero-copy realloc for objects >1MB under Linux* via
mremap system call.
- C++11 move-aware insert and emplace methods have been added to
concurrent_hash_map container.
- install_name is set to @rpath/<library name> on OS X*.
Preview Features:
- Added template class async_node to the flow graph API. It allows a
flow graph to communicate with an external activity managed by
the user or another runtime.
- Improved speed of flow::graph::reset() clearing graph edges.
rf_extract flag has been renamed rf_clear_edges.
- extract() method of graph nodes now takes no arguments.
Bugs fixed:
- concurrent_unordered_{set,map} behaves correctly for degenerate
hashes.
- Fixed a race condition in the memory allocator that may lead to
excessive memory consumption under high multithreading load.
------------------------------------------------------------------------
Intel TBB 4.3 Update 5
TBB_INTERFACE_VERSION == 8005
Changes (w.r.t. Intel TBB 4.3 Update 4):
- Added add_ref_count() method of class tbb::task.
Preview Features:
- Added class global_control for application-wide control of allowed
parallelism and thread stack size.
- memory_pool_allocator now throws the std::bad_alloc exception on
allocation failure.
- Exceptions thrown for by memory pool constructors changed from
std::bad_alloc to std::invalid_argument and std::runtime_error.
Bugs fixed:
- scalable_allocator now throws the std::bad_alloc exception on
allocation failure.
- Fixed a race condition in the memory allocator that may lead to
excessive memory consumption under high multithreading load.
- A new scheduler created right after destruction of the previous one
might be unable to modify the number of worker threads.
Open-source contributions integrated:
- (Added but not enabled) push_front() method of class tbb::task_list
by Raf Schietekat.
------------------------------------------------------------------------
Intel TBB 4.3 Update 4
TBB_INTERFACE_VERSION == 8004
Changes (w.r.t. Intel TBB 4.3 Update 3):
- Added a C++11 variadic constructor for enumerable_thread_specific.
The arguments from this constructor are used to construct
thread-local values.
- Improved exception safety for enumerable_thread_specific.
- Added documentation for tbb::flow::tagged_msg class and
tbb::flow::output_port function.
- Fixed build errors for systems that do not support dynamic linking.
- C++11 move-aware insert and emplace methods have been added to
concurrent unordered containers.
Preview Features:
- Interface-breaking change: typedefs changed for node predecessor and
successor lists, affecting copy_predecessors and copy_successors
methods.
- Added template class composite_node to the flow graph API. It packages
a subgraph to represent it as a first-class flow graph node.
- make_edge and remove_edge now accept multiport nodes as arguments,
automatically using the node port with index 0 for an edge.