Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
oneAPI SpecificationRelease 0.8
Intel
May 29, 2020
CONTENTS
1 Introduction 11.1 Target Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Goals of the Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Contribution Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4.1 Sign your work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Software Architecture 32.1 oneAPI Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 API Programming Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Direct Programming Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Library Interoperability 73.1 Queueing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 API Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.3 Asynchronous APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.4 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 oneAPI Elements 9
5 DPC++ 105.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.2 Detailed API and Language Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.3 Open Source Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6 oneDPL 136.1 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.2 Supported C++ Standard Library APIs and Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2.1 Extensions to Parallel STL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.2.1.1 DPC++ Execution Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.2.1.2 Wrappers for SYCL Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.2.2 Specific API of oneDPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7 oneDNN 187.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.1.1 General API notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207.1.2 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2 Execution Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217.2.1 Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217.2.2 Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
i
7.3 Data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247.3.1 Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.3.1.1 Bfloat16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257.3.1.1.1 Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257.3.1.1.2 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.3.1.2 Int8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267.3.1.2.1 Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.3.1.2.1.1 Quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267.3.1.2.1.2 Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267.3.1.2.1.3 Quantization Factor . . . . . . . . . . . . . . . . . . . . . . . . . 267.3.1.2.1.4 Quantization Example . . . . . . . . . . . . . . . . . . . . . . . . 27
7.3.1.2.2 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277.3.1.2.2.1 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.3.2 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.3.2.1 Memory Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.3.2.1.1 Plain Memory Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.3.2.1.2 Format Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.3.2.1.3 Optimized Format ‘any’ . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.3.2.1.3.1 Memory Format Propagation . . . . . . . . . . . . . . . . . . . . 317.3.2.2 Memory Descriptors and Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.3.2.2.1 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.3.2.2.2 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.4 Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.4.1 Common definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.4.2 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.4.2.1 Scratchpad Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.4.2.2 Quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4.2.2.1 Quantization Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.4.2.2.2 Example: Convolution Quantization Workflow . . . . . . . . . . . . . . . 597.4.2.2.3 Per-Channel Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607.4.2.2.4 Output Scaling Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.4.2.2.4.1 Example 1: weights quantization with per-output-channel-and-group scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.4.2.2.4.2 Example 2: convolution with groups, with per-output-channelquantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.4.2.2.4.3 Interplay of Output Scales with Post-ops . . . . . . . . . . . . . . 637.4.2.3 Post-ops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.4.2.3.1 Supported Post-ops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.4.2.3.1.1 Eltwise Post-op . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.4.2.3.1.2 Sum Post-op . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.4.2.3.1.3 Examples of Chained Post-ops . . . . . . . . . . . . . . . . . . . 647.4.2.3.1.4 Sum -> ReLU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.4.2.4 Attribute Related Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . 667.4.3 Convolution and Deconvolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.4.4 Inner Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887.4.5 RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947.4.6 Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.4.6.1 Batch normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237.4.6.2 Layer normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.4.7 Concat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337.4.8 Binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347.4.9 Element-wise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1367.4.10 Local Response Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.4.11 LogSoftmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
ii
7.4.12 Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.4.13 Resampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.4.14 Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547.4.15 Shuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1577.4.16 Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597.4.17 Reorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1617.4.18 Matrix Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.5 Open Source Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1657.6 Implementation Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1657.7 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
8 oneCCL 1668.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1668.2 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
8.2.1 oneCCL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1668.2.1.1 oneCCL Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1678.2.1.2 oneCCL Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1678.2.1.3 oneCCL Communicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
8.2.1.3.1 oneCCL Communicator Attributes . . . . . . . . . . . . . . . . . . . . . 1688.2.2 oneCCL Collective Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.2.1 Collective Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1698.2.2.1.1 Allgatherv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1698.2.2.1.2 Allreduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1708.2.2.1.3 Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1718.2.2.1.4 Alltoall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1728.2.2.1.5 Barrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1728.2.2.1.6 Broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
8.2.2.2 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1738.2.2.3 Collective Call Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1748.2.2.4 Track Communication Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
8.2.2.4.1 Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1758.2.2.4.2 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1758.2.2.4.3 Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
8.2.3 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1768.3 Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
8.3.1 Generic Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1778.3.2 GPU support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
8.3.2.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1778.3.3 CPU support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
8.3.3.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
9 Level Zero 1819.1 Detailed API Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
10 oneDAL 18210.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18210.2 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10.2.1 Machine learning terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18410.2.2 oneDAL terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18510.2.3 Common oneAPI terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
10.3 Mathematical Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18710.4 Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
10.4.1 Basic usage scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18710.4.2 Memory objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
iii
10.4.3 Algorithm Anatomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18910.4.3.1 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
10.4.3.1.1 Floating-point Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19110.4.3.1.2 Computational Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
10.4.3.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19110.4.3.2.1 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19110.4.3.2.2 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
10.4.4 Managing execution context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19110.4.5 Computational modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
10.4.5.1 Batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19110.4.5.2 Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19210.4.5.3 Distributed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
10.5 Common Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19210.5.1 Header files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19210.5.2 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19310.5.3 Managing object lifetimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19310.5.4 Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
10.5.4.1 Exception classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19310.6 Data management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.6.1 Key concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19610.6.1.1 Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19610.6.1.2 Data source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19710.6.1.3 Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19710.6.1.4 Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.6.1.5 Table builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.6.1.6 Accessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.6.1.7 Use-case example for table, accessor and table builder . . . . . . . . . . . . . . . . 199
10.6.2 Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20110.6.2.1 Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20110.6.2.2 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.6.2.2.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20110.6.2.2.2 Table Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20210.6.2.2.3 Table API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.6.2.2.3.1 Homogeneous table . . . . . . . . . . . . . . . . . . . . . . . . . 20310.6.2.2.3.2 Structure-of-arrays table . . . . . . . . . . . . . . . . . . . . . . 20510.6.2.2.3.3 Arrays-of-structure table . . . . . . . . . . . . . . . . . . . . . . 20510.6.2.2.3.4 Compressed-sparse-row table . . . . . . . . . . . . . . . . . . . . 205
10.6.2.2.4 Metadata API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20510.6.2.2.4.1 Data layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20610.6.2.2.4.2 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20610.6.2.2.4.3 Feature info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20710.6.2.2.4.4 Data type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20710.6.2.2.4.5 Feature type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
10.6.2.3 Table Builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20810.6.2.3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20810.6.2.3.2 Table Builder Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20810.6.2.3.3 Simple Homogeneous Table Builder . . . . . . . . . . . . . . . . . . . . 20810.6.2.3.4 Simple SOA Table Builder . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.6.2.4 Accessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20810.6.2.4.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20910.6.2.4.2 Accessor Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.6.2.4.2.1 Row accessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20910.6.2.4.2.2 Column accessor . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.7 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
iv
10.7.1 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21010.7.1.1 K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.7.1.1.1 Lloyd’s method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21010.7.1.1.2 Usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21110.7.1.1.3 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.7.1.1.3.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21110.7.1.1.3.2 Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21210.7.1.1.3.3 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21310.7.1.1.3.4 Training onedal::train... . . . . . . . . . . . . . . . . . . 21310.7.1.1.3.5 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21310.7.1.1.3.6 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21410.7.1.1.3.7 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 21510.7.1.1.3.8 Inference onedal::infer... . . . . . . . . . . . . . . . . . 21510.7.1.1.3.9 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21510.7.1.1.3.10 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21610.7.1.1.3.11 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 217
10.7.2 Nearest Neighbors (kNN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21710.7.2.1 k-Nearest Neighbors Classification (k-NN) . . . . . . . . . . . . . . . . . . . . . . 217
10.7.2.1.1 Mathematical formulation . . . . . . . . . . . . . . . . . . . . . . . . . . 21710.7.2.1.1.1 Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21710.7.2.1.1.2 Training method: brute-force . . . . . . . . . . . . . . . . . . . . 21710.7.2.1.1.3 Training method: k-d tree . . . . . . . . . . . . . . . . . . . . . . 21810.7.2.1.1.4 Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21810.7.2.1.1.5 Inference method: brute-force . . . . . . . . . . . . . . . . . . . 21810.7.2.1.1.6 Inference method: k-d tree . . . . . . . . . . . . . . . . . . . . . 218
10.7.2.1.2 Programming Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 21810.7.2.1.2.1 Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21810.7.2.1.2.2 Computational methods . . . . . . . . . . . . . . . . . . . . . . . 21910.7.2.1.2.3 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22010.7.2.1.2.4 Training train... . . . . . . . . . . . . . . . . . . . . . . . . 22010.7.2.1.2.5 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22010.7.2.1.2.6 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22110.7.2.1.2.7 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22110.7.2.1.2.8 Inference infer... . . . . . . . . . . . . . . . . . . . . . . . . 22210.7.2.1.2.9 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22210.7.2.1.2.10 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22210.7.2.1.2.11 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
10.7.3 Decomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22310.7.3.1 Principal Components Analysis (PCA) . . . . . . . . . . . . . . . . . . . . . . . . 223
10.7.3.1.1 Covariance-based method . . . . . . . . . . . . . . . . . . . . . . . . . . 22410.7.3.1.2 SVD-based method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22410.7.3.1.3 Sign-flip technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22410.7.3.1.4 Usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22410.7.3.1.5 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
10.7.3.1.5.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22510.7.3.1.5.2 Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22510.7.3.1.5.3 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22610.7.3.1.5.4 Training onedal::train... . . . . . . . . . . . . . . . . . . 22710.7.3.1.5.5 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22710.7.3.1.5.6 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22710.7.3.1.5.7 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 22810.7.3.1.5.8 Inference onedal::infer... . . . . . . . . . . . . . . . . . 22810.7.3.1.5.9 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22810.7.3.1.5.10 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
v
10.7.3.1.5.11 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 23010.8 Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
10.8.1 k-d Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23010.8.1.1 Related terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
10.9 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
11 oneTBB 23111.1 General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23111.1.2 Notational Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23111.1.3 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
11.1.3.1 Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23311.1.3.2 Reserved Identifier Prefixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
11.1.4 Named Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23311.1.4.1 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
11.1.4.1.1 Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23411.1.4.1.2 Splittable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23511.1.4.1.3 ParallelForBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.1.4.1.4 ParallelReduceBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.1.4.1.5 ParallelReduceFunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.1.4.1.6 ParallelReduceReduction . . . . . . . . . . . . . . . . . . . . . . . . . . 23711.1.4.1.7 ParallelForEachBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
11.1.4.1.7.1 ItemType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.1.4.1.8 ContainerBasedSequence . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.1.4.1.9 ParallelScanBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.1.4.1.10 ParallelScanCombine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23911.1.4.1.11 ParallelScanFunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23911.1.4.1.12 BlockedRangeValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23911.1.4.1.13 FilterBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
11.1.4.2 Mutexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.1.4.2.1 Mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.1.4.2.2 ReaderWriterMutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
11.1.4.3 Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24411.1.4.3.1 HashCompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24411.1.4.3.2 ContainerRange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
11.1.4.4 Task scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24511.1.4.4.1 SuspendFunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
11.1.4.5 Flow Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24611.1.4.5.1 AsyncNodeBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24611.1.4.5.2 ContinueNodeBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24611.1.4.5.3 GatewayType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24711.1.4.5.4 FunctionNodeBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24711.1.4.5.5 JoinNodeFunctionObject . . . . . . . . . . . . . . . . . . . . . . . . . . 24711.1.4.5.6 InputNodeBody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24811.1.4.5.7 MultifunctionNodeBody . . . . . . . . . . . . . . . . . . . . . . . . . . 24811.1.4.5.8 Sequencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
11.1.5 Thread Safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24911.2 oneTBB Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
11.2.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24911.2.1.1 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
11.2.1.1.1 tbb Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25011.2.1.1.2 tbb::flow Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
11.2.1.2 Version Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25011.2.1.2.1 TBB_runtime_interface_version Function . . . . . . . . . . . . . . . . . 251
vi
11.2.1.2.2 TBB_runtime_version Function . . . . . . . . . . . . . . . . . . . . . . 25111.2.1.2.3 TBB_VERSION Environment Variable . . . . . . . . . . . . . . . . . . 251
11.2.1.3 Enabling Debugging Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25111.2.1.3.1 TBB_USE_ASSERT Macro . . . . . . . . . . . . . . . . . . . . . . . . 25211.2.1.3.2 TBB_USE_PROFILING_TOOLS Macro . . . . . . . . . . . . . . . . . 252
11.2.1.4 Feature Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25211.2.1.4.1 TBB_USE_EXCEPTIONS macro . . . . . . . . . . . . . . . . . . . . . 25211.2.1.4.2 TBB_USE_GLIBCXX_VERSION macro . . . . . . . . . . . . . . . . . 252
11.2.2 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25211.2.2.1 Parallel Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
11.2.2.1.1 parallel_for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25311.2.2.1.2 parallel_reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
11.2.2.1.2.1 Example (Imperative Form) . . . . . . . . . . . . . . . . . . . . . 25611.2.2.1.2.2 Example with Lambda Expressions . . . . . . . . . . . . . . . . . 257
11.2.2.1.3 parallel_deterministic_reduce . . . . . . . . . . . . . . . . . . . . . . . . 25711.2.2.1.4 parallel_scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
11.2.2.1.4.1 pre_scan and final_scan Classes . . . . . . . . . . . . . . . . . . 26011.2.2.1.4.2 pre_scan_tag and final_scan_tag . . . . . . . . . . . . . . . . . . 26011.2.2.1.4.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 26011.2.2.1.4.4 Example (Imperative Form) . . . . . . . . . . . . . . . . . . . . . 26111.2.2.1.4.5 Example with Lambda Expressions . . . . . . . . . . . . . . . . . 262
11.2.2.1.5 parallel_for_each . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.2.2.1.5.1 feeder Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26311.2.2.1.5.2 feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26311.2.2.1.5.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 26311.2.2.1.5.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
11.2.2.1.6 parallel_invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26411.2.2.1.6.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
11.2.2.1.7 parallel_pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26511.2.2.1.7.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.2.1.7.2 filter Class Template . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.2.1.7.3 filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.2.1.7.4 filter_mode Enumeration . . . . . . . . . . . . . . . . . . . . . . 26711.2.2.1.7.5 filter_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26711.2.2.1.7.6 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 26811.2.2.1.7.7 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 26811.2.2.1.7.8 Deduction Guides . . . . . . . . . . . . . . . . . . . . . . . . . . 26811.2.2.1.7.9 flow_control Class . . . . . . . . . . . . . . . . . . . . . . . . . 26811.2.2.1.7.10 flow_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26811.2.2.1.7.11 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.2.2.1.8 parallel_sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26911.2.2.2 Blocked Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
11.2.2.2.1 blocked_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27011.2.2.2.1.1 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 271
11.2.2.2.2 blocked_range2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27211.2.2.2.2.1 Member types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27311.2.2.2.2.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 273
11.2.2.2.3 blocked_range3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27511.2.2.2.3.1 Member types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27511.2.2.2.3.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 276
11.2.2.3 Partitioners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27711.2.2.3.1 auto_partitioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27711.2.2.3.2 affinity_partitioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27811.2.2.3.3 static_partitioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
vii
11.2.2.3.4 simple_partitioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27911.2.2.4 Split Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
11.2.2.4.1 proportional split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28011.2.2.4.1.1 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 281
11.2.2.4.2 split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28111.2.3 Flow Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
11.2.3.1 Graph Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.1.1 graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
11.2.3.1.1.1 reset_flags enumeration . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.1.1.2 reset_flags Enumeration . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.1.1.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 283
11.2.3.2 Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28311.2.3.2.1 Abstract Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
11.2.3.2.1.1 graph_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28411.2.3.2.1.2 sender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28411.2.3.2.1.3 receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
11.2.3.2.2 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.2.2.1 Forwarding and Buffering . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.2.2.2 Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.2.2.3 Buffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
11.2.3.2.3 Functional Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28611.2.3.2.3.1 continue_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28611.2.3.2.3.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 28711.2.3.2.3.3 Deduction Guides . . . . . . . . . . . . . . . . . . . . . . . . . . 28911.2.3.2.3.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28911.2.3.2.3.5 function_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28911.2.3.2.3.6 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 29011.2.3.2.3.7 Deduction Guides . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.2.3.8 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.2.3.9 input_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.2.3.10 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 29211.2.3.2.3.11 Deduction Guides . . . . . . . . . . . . . . . . . . . . . . . . . . 29311.2.3.2.3.12 multifunction_node . . . . . . . . . . . . . . . . . . . . . . . . . 29311.2.3.2.3.13 Member types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.2.3.2.3.14 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.2.3.2.3.15 async_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29511.2.3.2.3.16 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 29611.2.3.2.3.17 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 29611.2.3.2.3.18 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.2.3.2.3.19 Function Nodes Policies . . . . . . . . . . . . . . . . . . . . . . 29811.2.3.2.3.20 Queueing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29911.2.3.2.3.21 Rejecting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29911.2.3.2.3.22 Lightweight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29911.2.3.2.3.23 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29911.2.3.2.3.24 Nodes Priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . 30011.2.3.2.3.25 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30011.2.3.2.3.26 Predefined Concurrency Limits . . . . . . . . . . . . . . . . . . . 30211.2.3.2.3.27 copy_body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
11.2.3.2.4 Buffering Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30311.2.3.2.4.1 overwrite_node . . . . . . . . . . . . . . . . . . . . . . . . . . . 30311.2.3.2.4.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.2.4.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.2.4.4 write_once_node . . . . . . . . . . . . . . . . . . . . . . . . . . 30511.2.3.2.4.5 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 306
viii
11.2.3.2.4.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30711.2.3.2.4.7 buffer_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30811.2.3.2.4.8 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 30811.2.3.2.4.9 queue_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30911.2.3.2.4.10 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 30911.2.3.2.4.11 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.2.4.12 priority_queue_node . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.2.4.13 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.2.4.14 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31111.2.3.2.4.15 sequencer_node . . . . . . . . . . . . . . . . . . . . . . . . . . . 31111.2.3.2.4.16 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.2.4.17 Deduction Guides . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.2.4.18 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
11.2.3.2.5 Service Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31311.2.3.2.5.1 limiter_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31311.2.3.2.5.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 31411.2.3.2.5.3 broadcast_node . . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.2.5.4 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.2.5.5 join_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31611.2.3.2.5.6 join_node Policies . . . . . . . . . . . . . . . . . . . . . . . . . . 31711.2.3.2.5.7 Member types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31811.2.3.2.5.8 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 31811.2.3.2.5.9 Non-Member Types . . . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.2.5.10 Deduction Guides . . . . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.2.5.11 split_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.2.5.12 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.2.5.13 indexer_node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32111.2.3.2.5.14 Member types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32211.2.3.2.5.15 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 32211.2.3.2.5.16 composite_node . . . . . . . . . . . . . . . . . . . . . . . . . . . 32211.2.3.2.5.17 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.2.3.3 Ports and Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32511.2.3.3.1 input_port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32511.2.3.3.2 output_port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32511.2.3.3.3 make_edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32611.2.3.3.4 remove_edge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
11.2.3.4 Special Messages Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32711.2.3.4.1 continue_msg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32711.2.3.4.2 tagged_msg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
11.2.3.4.2.1 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 32811.2.3.4.2.2 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.3.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32911.2.3.5.1 Dependency Flow Graph Example . . . . . . . . . . . . . . . . . . . . . 32911.2.3.5.2 Message Flow Graph Example . . . . . . . . . . . . . . . . . . . . . . . 332
11.2.4 Task Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33311.2.4.1 Scheduling controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
11.2.4.1.1 task_group_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33411.2.4.1.1.1 Member types and constants . . . . . . . . . . . . . . . . . . . . 33411.2.4.1.1.2 Member funcitons . . . . . . . . . . . . . . . . . . . . . . . . . . 335
11.2.4.1.2 global_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33511.2.4.1.2.1 Member types and constants . . . . . . . . . . . . . . . . . . . . 33611.2.4.1.2.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 336
11.2.4.1.3 Resumable tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33711.2.4.1.3.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
ix
11.2.4.2 Task Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.2.1 task_group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
11.2.4.2.1.1 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.2.1.2 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 339
11.2.4.2.2 task_group_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33911.2.4.2.2.1 Member constants . . . . . . . . . . . . . . . . . . . . . . . . . . 339
11.2.4.3 Task Arena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33911.2.4.3.1 task_arena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
11.2.4.3.1.1 Member types and constants . . . . . . . . . . . . . . . . . . . . 34011.2.4.3.1.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 341
11.2.4.3.2 this_task_arena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34211.2.4.3.3 task_scheduler_observer . . . . . . . . . . . . . . . . . . . . . . . . . . 343
11.2.4.3.3.1 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 34411.2.4.3.3.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
11.2.5 Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34511.2.5.1 Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
11.2.5.1.1 concurrent_vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34511.2.5.1.1.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 34611.2.5.1.1.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34811.2.5.1.1.3 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34911.2.5.1.1.4 Exception Safety . . . . . . . . . . . . . . . . . . . . . . . . . . 34911.2.5.1.1.5 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 34911.2.5.1.1.6 Construction, destruction, copying . . . . . . . . . . . . . . . . . 34911.2.5.1.1.7 Empty container constructors . . . . . . . . . . . . . . . . . . . . 34911.2.5.1.1.8 Constructors from the sequence of elements . . . . . . . . . . . . 35011.2.5.1.1.9 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 35011.2.5.1.1.10 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 35111.2.5.1.1.11 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35111.2.5.1.1.12 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 35111.2.5.1.1.13 assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35211.2.5.1.1.14 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35211.2.5.1.1.15 Concurrent growth . . . . . . . . . . . . . . . . . . . . . . . . . 35211.2.5.1.1.16 grow_by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35311.2.5.1.1.17 grow_to_at_least . . . . . . . . . . . . . . . . . . . . . . . . . . 35311.2.5.1.1.18 push_back . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35411.2.5.1.1.19 emplace_back . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35411.2.5.1.1.20 Element access . . . . . . . . . . . . . . . . . . . . . . . . . . . 35411.2.5.1.1.21 Access by index . . . . . . . . . . . . . . . . . . . . . . . . . . . 35511.2.5.1.1.22 Access the first and the last element . . . . . . . . . . . . . . . . 35511.2.5.1.1.23 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35511.2.5.1.1.24 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 35511.2.5.1.1.25 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.1.1.26 rbegin and crbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.1.1.27 rend and crend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.1.1.28 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.1.1.29 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.1.1.30 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.1.1.31 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.1.1.32 capacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.1.1.33 Concurrently unsafe operations . . . . . . . . . . . . . . . . . . . 35711.2.5.1.1.34 Reserving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.1.1.35 Resizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.1.1.36 shrink_to_fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.1.1.37 clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
x
11.2.5.1.1.38 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35811.2.5.1.1.39 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 35811.2.5.1.1.40 range member function . . . . . . . . . . . . . . . . . . . . . . . 35811.2.5.1.1.41 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 35811.2.5.1.1.42 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 35911.2.5.1.1.43 Non-member lexicographical comparisons . . . . . . . . . . . . . 36011.2.5.1.1.44 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 36011.2.5.1.1.45 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36011.2.5.1.1.46 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 360
11.2.5.2 Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36111.2.5.2.1 concurrent_queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
11.2.5.2.1.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 36111.2.5.2.1.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 36211.2.5.2.1.3 Construction, destruction, copying . . . . . . . . . . . . . . . . . 36211.2.5.2.1.4 Empty container constructors . . . . . . . . . . . . . . . . . . . . 36211.2.5.2.1.5 Constructor from the sequence of elements . . . . . . . . . . . . . 36311.2.5.2.1.6 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 36311.2.5.2.1.7 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 36311.2.5.2.1.8 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36411.2.5.2.1.9 Concurrently safe member functions . . . . . . . . . . . . . . . . 36411.2.5.2.1.10 Pushing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 36411.2.5.2.1.11 Popping elements . . . . . . . . . . . . . . . . . . . . . . . . . . 36411.2.5.2.1.12 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36511.2.5.2.1.13 Concurrently unsafe member functions . . . . . . . . . . . . . . . 36511.2.5.2.1.14 The number of elements . . . . . . . . . . . . . . . . . . . . . . . 36511.2.5.2.1.15 clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36511.2.5.2.1.16 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36511.2.5.2.1.17 unsafe_begin and unsafe_cbegin . . . . . . . . . . . . . . . . . . 36511.2.5.2.1.18 unsafe_end and unsafe_cend . . . . . . . . . . . . . . . . . . . . 36611.2.5.2.1.19 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36611.2.5.2.1.20 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 366
11.2.5.2.2 concurrent_bounded_queue . . . . . . . . . . . . . . . . . . . . . . . . . 36711.2.5.2.2.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 36711.2.5.2.2.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 36811.2.5.2.2.3 Construction, destruction, copying . . . . . . . . . . . . . . . . . 36811.2.5.2.2.4 Empty container constructors . . . . . . . . . . . . . . . . . . . . 36811.2.5.2.2.5 Constructor from the sequence of elements . . . . . . . . . . . . . 36911.2.5.2.2.6 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 36911.2.5.2.2.7 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 36911.2.5.2.2.8 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36911.2.5.2.2.9 Concurrently safe member functions . . . . . . . . . . . . . . . . 37011.2.5.2.2.10 Pushing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 37011.2.5.2.2.11 Popping elements . . . . . . . . . . . . . . . . . . . . . . . . . . 37111.2.5.2.2.12 abort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37111.2.5.2.2.13 Capacity of the queue . . . . . . . . . . . . . . . . . . . . . . . . 37111.2.5.2.2.14 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37211.2.5.2.2.15 Concurrently unsafe member functions . . . . . . . . . . . . . . . 37211.2.5.2.2.16 The number of elements . . . . . . . . . . . . . . . . . . . . . . . 37211.2.5.2.2.17 clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37211.2.5.2.2.18 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37211.2.5.2.2.19 unsafe_begin and unsafe_cbegin . . . . . . . . . . . . . . . . . . 37211.2.5.2.2.20 unsafe_end and unsafe_cend . . . . . . . . . . . . . . . . . . . . 37311.2.5.2.2.21 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37311.2.5.2.2.22 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 373
xi
11.2.5.2.3 concurrent_priority_queue . . . . . . . . . . . . . . . . . . . . . . . . . 37411.2.5.2.3.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 37411.2.5.2.3.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 37611.2.5.2.3.3 Construction, destruction, copying . . . . . . . . . . . . . . . . . 37611.2.5.2.3.4 Empty container constructors . . . . . . . . . . . . . . . . . . . . 37611.2.5.2.3.5 Constructors from the sequence of elements . . . . . . . . . . . . 37611.2.5.2.3.6 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 37711.2.5.2.3.7 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 37711.2.5.2.3.8 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37711.2.5.2.3.9 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 37711.2.5.2.3.10 assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37811.2.5.2.3.11 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 37811.2.5.2.3.12 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37811.2.5.2.3.13 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37911.2.5.2.3.14 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 37911.2.5.2.3.15 Pushing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 37911.2.5.2.3.16 Popping elements . . . . . . . . . . . . . . . . . . . . . . . . . . 37911.2.5.2.3.17 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 38011.2.5.2.3.18 clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38011.2.5.2.3.19 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38011.2.5.2.3.20 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 38011.2.5.2.3.21 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 38111.2.5.2.3.22 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 38111.2.5.2.3.23 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38111.2.5.2.3.24 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 381
11.2.5.3 Unordered associative containers . . . . . . . . . . . . . . . . . . . . . . . . . . . 38211.2.5.3.1 concurrent_hash_map . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
11.2.5.3.1.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 38311.2.5.3.1.2 Member classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 38611.2.5.3.1.3 accessor and const_accessor . . . . . . . . . . . . . . . . . . . . 38611.2.5.3.1.4 accessor member class . . . . . . . . . . . . . . . . . . . . . 38611.2.5.3.1.5 const_accessor member class . . . . . . . . . . . . . . . . . 38611.2.5.3.1.6 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 38711.2.5.3.1.7 Construction and destruction . . . . . . . . . . . . . . . . . . . . 38711.2.5.3.1.8 Emptiness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38711.2.5.3.1.9 Key-value pair access . . . . . . . . . . . . . . . . . . . . . . . . 38711.2.5.3.1.10 Releasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38811.2.5.3.1.11 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 38811.2.5.3.1.12 Construction, destruction, copying . . . . . . . . . . . . . . . . . 38811.2.5.3.1.13 Empty container constructors . . . . . . . . . . . . . . . . . . . . 38811.2.5.3.1.14 Constructors from the sequence of elements . . . . . . . . . . . . 38811.2.5.3.1.15 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 38911.2.5.3.1.16 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 38911.2.5.3.1.17 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39011.2.5.3.1.18 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 39011.2.5.3.1.19 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39011.2.5.3.1.20 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.21 clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.22 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.23 Hash policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.24 Rehashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.25 bucket_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.26 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 39111.2.5.3.1.27 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
xii
11.2.5.3.1.28 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39211.2.5.3.1.29 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39211.2.5.3.1.30 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39211.2.5.3.1.31 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39211.2.5.3.1.32 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39211.2.5.3.1.33 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 39211.2.5.3.1.34 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 39311.2.5.3.1.35 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 39411.2.5.3.1.36 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 39411.2.5.3.1.37 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 39511.2.5.3.1.38 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39511.2.5.3.1.39 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 39511.2.5.3.1.40 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39611.2.5.3.1.41 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39611.2.5.3.1.42 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 39611.2.5.3.1.43 range member function . . . . . . . . . . . . . . . . . . . . . . . 39611.2.5.3.1.44 Non member functions . . . . . . . . . . . . . . . . . . . . . . . 39611.2.5.3.1.45 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 39711.2.5.3.1.46 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 39711.2.5.3.1.47 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39711.2.5.3.1.48 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 397
11.2.5.3.2 concurrent_unordered_map . . . . . . . . . . . . . . . . . . . . . . . . . 39911.2.5.3.2.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 39911.2.5.3.2.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40411.2.5.3.2.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 40411.2.5.3.2.4 Construction, destruction, copying . . . . . . . . . . . . . . . . . 40411.2.5.3.2.5 Empty container constructors . . . . . . . . . . . . . . . . . . . . 40411.2.5.3.2.6 Constructors from the sequence of elements . . . . . . . . . . . . 40511.2.5.3.2.7 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 40611.2.5.3.2.8 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 40611.2.5.3.2.9 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40711.2.5.3.2.10 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 40711.2.5.3.2.11 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40811.2.5.3.2.12 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 40811.2.5.3.2.13 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40811.2.5.3.2.14 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 40811.2.5.3.2.15 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40811.2.5.3.2.16 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40811.2.5.3.2.17 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40911.2.5.3.2.18 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 40911.2.5.3.2.19 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 40911.2.5.3.2.20 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 40911.2.5.3.2.21 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 41111.2.5.3.2.22 Inserting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 41111.2.5.3.2.23 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 41211.2.5.3.2.24 Clearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.3.2.25 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.3.2.26 Erasing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 41311.2.5.3.2.27 Extracting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 41311.2.5.3.2.28 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41411.2.5.3.2.29 Element access . . . . . . . . . . . . . . . . . . . . . . . . . . . 41411.2.5.3.2.30 at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41411.2.5.3.2.31 operator[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41511.2.5.3.2.32 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
xiii
11.2.5.3.2.33 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41511.2.5.3.2.34 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41611.2.5.3.2.35 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41611.2.5.3.2.36 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41611.2.5.3.2.37 Bucket interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 41711.2.5.3.2.38 Bucket begin and bucket end . . . . . . . . . . . . . . . . . . . . 41711.2.5.3.2.39 The number of buckets . . . . . . . . . . . . . . . . . . . . . . . 41711.2.5.3.2.40 Size of the bucket . . . . . . . . . . . . . . . . . . . . . . . . . . 41811.2.5.3.2.41 Bucket number . . . . . . . . . . . . . . . . . . . . . . . . . . . 41811.2.5.3.2.42 Hash policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41811.2.5.3.2.43 Load factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41811.2.5.3.2.44 Manual rehashing . . . . . . . . . . . . . . . . . . . . . . . . . . 41811.2.5.3.2.45 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.46 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.47 hash_function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.48 key_eq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.49 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.50 range member function . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.51 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.3.2.52 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 42011.2.5.3.2.53 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 42011.2.5.3.2.54 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42111.2.5.3.2.55 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 421
11.2.5.3.3 concurrent_unordered_multimap . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.3.3.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.3.3.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42811.2.5.3.3.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 42811.2.5.3.3.4 Construction, destruction, copying . . . . . . . . . . . . . . . . . 42811.2.5.3.3.5 Empty container constructors . . . . . . . . . . . . . . . . . . . . 42811.2.5.3.3.6 Constructors from the sequence of elements . . . . . . . . . . . . 42911.2.5.3.3.7 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 43011.2.5.3.3.8 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 43011.2.5.3.3.9 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43011.2.5.3.3.10 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 43111.2.5.3.3.11 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43111.2.5.3.3.12 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.5.3.3.13 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.5.3.3.14 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.5.3.3.15 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.5.3.3.16 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.5.3.3.17 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.5.3.3.18 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 43311.2.5.3.3.19 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 43311.2.5.3.3.20 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.2.5.3.3.21 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 43411.2.5.3.3.22 Inserting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 43411.2.5.3.3.23 Merging containers . . . . . . . . . . . . . . . . . . . . . . . . . 43511.2.5.3.3.24 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 43511.2.5.3.3.25 Clearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.2.5.3.3.26 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.2.5.3.3.27 Erasing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.2.5.3.3.28 Extracting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 43711.2.5.3.3.29 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43811.2.5.3.3.30 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
xiv
11.2.5.3.3.31 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43811.2.5.3.3.32 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43811.2.5.3.3.33 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43911.2.5.3.3.34 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43911.2.5.3.3.35 Bucket interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 44011.2.5.3.3.36 Bucket begin and bucket end . . . . . . . . . . . . . . . . . . . . 44011.2.5.3.3.37 The number of buckets . . . . . . . . . . . . . . . . . . . . . . . 44011.2.5.3.3.38 Size of the bucket . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.5.3.3.39 Bucket number . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.5.3.3.40 Hash policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.5.3.3.41 Load factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.5.3.3.42 Manual rehashing . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.5.3.3.43 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.44 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.45 hash_function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.46 key_eq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.47 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.48 range member function . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.49 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 44211.2.5.3.3.50 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 44311.2.5.3.3.51 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 44311.2.5.3.3.52 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44411.2.5.3.3.53 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 444
11.2.5.3.4 concurrent_unordered_set . . . . . . . . . . . . . . . . . . . . . . . . . . 44611.2.5.3.4.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 44611.2.5.3.4.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.2.5.3.4.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.2.5.3.4.4 Construction, destruction, copying . . . . . . . . . . . . . . . . . 45111.2.5.3.4.5 Empty container constructors . . . . . . . . . . . . . . . . . . . . 45111.2.5.3.4.6 Constructors from the sequence of elements . . . . . . . . . . . . 45211.2.5.3.4.7 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 45311.2.5.3.4.8 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 45311.2.5.3.4.9 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45311.2.5.3.4.10 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 45311.2.5.3.4.11 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45411.2.5.3.4.12 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 45411.2.5.3.4.13 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.14 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.15 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.16 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.17 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.18 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.19 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.2.5.3.4.20 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 45611.2.5.3.4.21 Inserting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 45711.2.5.3.4.22 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 45711.2.5.3.4.23 Merging containers . . . . . . . . . . . . . . . . . . . . . . . . . 45811.2.5.3.4.24 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 45811.2.5.3.4.25 Clearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45811.2.5.3.4.26 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 45811.2.5.3.4.27 Erasing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 45911.2.5.3.4.28 Extracting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 45911.2.5.3.4.29 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46011.2.5.3.4.30 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
xv
11.2.5.3.4.31 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46111.2.5.3.4.32 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46111.2.5.3.4.33 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46111.2.5.3.4.34 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.2.5.3.4.35 Bucket interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.2.5.3.4.36 Bucket begin and bucket end . . . . . . . . . . . . . . . . . . . . 46211.2.5.3.4.37 The number of buckets . . . . . . . . . . . . . . . . . . . . . . . 46311.2.5.3.4.38 Size of the bucket . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.2.5.3.4.39 Bucket number . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.2.5.3.4.40 Hash policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.2.5.3.4.41 Load factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.2.5.3.4.42 Manual rehashing . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.2.5.3.4.43 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.2.5.3.4.44 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.2.5.3.4.45 hash_function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.2.5.3.4.46 key_eq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.2.5.3.4.47 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.2.5.3.4.48 range member function . . . . . . . . . . . . . . . . . . . . . . . 46511.2.5.3.4.49 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 46511.2.5.3.4.50 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 46511.2.5.3.4.51 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 46611.2.5.3.4.52 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.2.5.3.4.53 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 466
11.2.5.3.5 concurrent_unordered_multiset . . . . . . . . . . . . . . . . . . . . . . . 46811.2.5.3.5.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 46811.2.5.3.5.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47311.2.5.3.5.3 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 47311.2.5.3.5.4 Construction, destruction, copying . . . . . . . . . . . . . . . . . 47311.2.5.3.5.5 Empty container constructors . . . . . . . . . . . . . . . . . . . . 47311.2.5.3.5.6 Constructors from the sequence of elements . . . . . . . . . . . . 47411.2.5.3.5.7 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 47511.2.5.3.5.8 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 47511.2.5.3.5.9 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47511.2.5.3.5.10 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 47511.2.5.3.5.11 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47611.2.5.3.5.12 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 47611.2.5.3.5.13 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.14 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.15 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.16 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.17 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.18 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.19 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 47711.2.5.3.5.20 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 47811.2.5.3.5.21 Inserting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 47811.2.5.3.5.22 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 47911.2.5.3.5.23 Merging containers . . . . . . . . . . . . . . . . . . . . . . . . . 47911.2.5.3.5.24 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 48011.2.5.3.5.25 Clearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48011.2.5.3.5.26 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 48011.2.5.3.5.27 Erasing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 48111.2.5.3.5.28 Extracting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 48111.2.5.3.5.29 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48211.2.5.3.5.30 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
xvi
11.2.5.3.5.31 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48211.2.5.3.5.32 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48311.2.5.3.5.33 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48311.2.5.3.5.34 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48411.2.5.3.5.35 Bucket interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 48411.2.5.3.5.36 Bucket begin and bucket end . . . . . . . . . . . . . . . . . . . . 48411.2.5.3.5.37 The number of buckets . . . . . . . . . . . . . . . . . . . . . . . 48511.2.5.3.5.38 Size of the bucket . . . . . . . . . . . . . . . . . . . . . . . . . . 48511.2.5.3.5.39 Bucket number . . . . . . . . . . . . . . . . . . . . . . . . . . . 48511.2.5.3.5.40 Hash policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48511.2.5.3.5.41 Load factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48511.2.5.3.5.42 Manual rehashing . . . . . . . . . . . . . . . . . . . . . . . . . . 48611.2.5.3.5.43 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48611.2.5.3.5.44 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48611.2.5.3.5.45 hash_function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48611.2.5.3.5.46 key_eq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48611.2.5.3.5.47 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 48611.2.5.3.5.48 range member function . . . . . . . . . . . . . . . . . . . . . . . 48711.2.5.3.5.49 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 48711.2.5.3.5.50 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 48711.2.5.3.5.51 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 48811.2.5.3.5.52 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48811.2.5.3.5.53 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 488
11.2.5.4 Ordered associative containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49011.2.5.4.1 concurrent_map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
11.2.5.4.1.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 49011.2.5.4.1.2 Member classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 49411.2.5.4.1.3 value_compare . . . . . . . . . . . . . . . . . . . . . . . . . . . 49411.2.5.4.1.4 Class Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . 49411.2.5.4.1.5 Member objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 49511.2.5.4.1.6 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 49511.2.5.4.1.7 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 49511.2.5.4.1.8 Construction, destruction, copying . . . . . . . . . . . . . . . . . 49511.2.5.4.1.9 Empty container constructors . . . . . . . . . . . . . . . . . . . . 49511.2.5.4.1.10 Constructors from the sequence of elements . . . . . . . . . . . . 49611.2.5.4.1.11 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 49611.2.5.4.1.12 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 49711.2.5.4.1.13 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49711.2.5.4.1.14 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 49711.2.5.4.1.15 Element access . . . . . . . . . . . . . . . . . . . . . . . . . . . 49811.2.5.4.1.16 at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49811.2.5.4.1.17 operator[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49811.2.5.4.1.18 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49911.2.5.4.1.19 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 49911.2.5.4.1.20 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49911.2.5.4.1.21 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 49911.2.5.4.1.22 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49911.2.5.4.1.23 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49911.2.5.4.1.24 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50011.2.5.4.1.25 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 50011.2.5.4.1.26 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 50011.2.5.4.1.27 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 50111.2.5.4.1.28 Inserting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 50111.2.5.4.1.29 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 502
xvii
11.2.5.4.1.30 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 50311.2.5.4.1.31 Clearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50311.2.5.4.1.32 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 50311.2.5.4.1.33 Erasing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 50411.2.5.4.1.34 Extracting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 50411.2.5.4.1.35 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50511.2.5.4.1.36 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50511.2.5.4.1.37 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50511.2.5.4.1.38 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50611.2.5.4.1.39 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50611.2.5.4.1.40 lower_bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50611.2.5.4.1.41 upper_bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50711.2.5.4.1.42 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50711.2.5.4.1.43 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.44 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.45 key_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.46 value_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.47 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.48 range member function . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.49 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 50811.2.5.4.1.50 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 50911.2.5.4.1.51 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 50911.2.5.4.1.52 Non-member lexicographical comparisons . . . . . . . . . . . . . 51011.2.5.4.1.53 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51011.2.5.4.1.54 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 510
11.2.5.4.2 concurrent_multimap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51211.2.5.4.2.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 51211.2.5.4.2.2 Member classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 51611.2.5.4.2.3 value_compare . . . . . . . . . . . . . . . . . . . . . . . . . . . 51611.2.5.4.2.4 Class Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . 51611.2.5.4.2.5 Member objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 51611.2.5.4.2.6 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 51611.2.5.4.2.7 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 51711.2.5.4.2.8 Construction, destruction, copying . . . . . . . . . . . . . . . . . 51711.2.5.4.2.9 Empty container constructors . . . . . . . . . . . . . . . . . . . . 51711.2.5.4.2.10 Constructors from the sequence of elements . . . . . . . . . . . . 51711.2.5.4.2.11 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 51811.2.5.4.2.12 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 51811.2.5.4.2.13 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51811.2.5.4.2.14 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 51811.2.5.4.2.15 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51911.2.5.4.2.16 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 51911.2.5.4.2.17 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51911.2.5.4.2.18 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 52011.2.5.4.2.19 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52011.2.5.4.2.20 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52011.2.5.4.2.21 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52011.2.5.4.2.22 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 52011.2.5.4.2.23 Emplacing elements . . . . . . . . . . . . . . . . . . . . . . . . . 52011.2.5.4.2.24 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 52111.2.5.4.2.25 Inserting sequences of elements . . . . . . . . . . . . . . . . . . . 52211.2.5.4.2.26 Inserting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 52211.2.5.4.2.27 Merging containers . . . . . . . . . . . . . . . . . . . . . . . . . 52311.2.5.4.2.28 Concurrently unsafe modifiers . . . . . . . . . . . . . . . . . . . 523
xviii
11.2.5.4.2.29 Clearing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52311.2.5.4.2.30 Erasing elements . . . . . . . . . . . . . . . . . . . . . . . . . . 52311.2.5.4.2.31 Erasing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 52411.2.5.4.2.32 Extracting nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 52411.2.5.4.2.33 swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52511.2.5.4.2.34 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52611.2.5.4.2.35 count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52611.2.5.4.2.36 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52611.2.5.4.2.37 contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52711.2.5.4.2.38 lower_bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52711.2.5.4.2.39 upper_bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52711.2.5.4.2.40 equal_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52811.2.5.4.2.41 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52811.2.5.4.2.42 get_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52811.2.5.4.2.43 key_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52811.2.5.4.2.44 value_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52911.2.5.4.2.45 Parallel iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 52911.2.5.4.2.46 range member function . . . . . . . . . . . . . . . . . . . . . . . 52911.2.5.4.2.47 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . 52911.2.5.4.2.48 Non-member swap . . . . . . . . . . . . . . . . . . . . . . . . . 53011.2.5.4.2.49 Non-member binary comparisons . . . . . . . . . . . . . . . . . . 53011.2.5.4.2.50 Non-member lexicographical comparisons . . . . . . . . . . . . . 53011.2.5.4.2.51 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53111.2.5.4.2.52 Deduction guides . . . . . . . . . . . . . . . . . . . . . . . . . . 531
11.2.5.4.3 concurrent_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53211.2.5.4.3.1 Class Template Synopsis . . . . . . . . . . . . . . . . . . . . . . 53211.2.5.4.3.2 Member functions . . . . . . . . . . . . . . . . . . . . . . . . . . 53611.2.5.4.3.3 Construction, destruction, copying . . . . . . . . . . . . . . . . . 53611.2.5.4.3.4 Empty container constructors . . . . . . . . . . . . . . . . . . . . 53611.2.5.4.3.5 Constructors from the sequence of elements . . . . . . . . . . . . 53611.2.5.4.3.6 Copying constructors . . . . . . . . . . . . . . . . . . . . . . . . 53711.2.5.4.3.7 Moving constructors . . . . . . . . . . . . . . . . . . . . . . . . 53711.2.5.4.3.8 Destructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53811.2.5.4.3.9 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . 53811.2.5.4.3.10 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53811.2.5.4.3.11 begin and cbegin . . . . . . . . . . . . . . . . . . . . . . . . . . 53911.2.5.4.3.12 end and cend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53911.2.5.4.3.13 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 53911.2.5.4.3.14 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53911.2.5.4.3.15 size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53911.2.5.4.3.16 max_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53911.2.5.4.3.17 Concurrently safe modifiers . . . . . . . . . . . . . . . . . . . . . 54011.2.5.4.3.18 Inserting values . . . . . . . . . . . . . . . . . . . . . . . . . . . 54011.2.5.4.3.19 Inserting sequences of element