1217
oneAPI Specification Release 0.8 Intel May 29, 2020

oneAPI Specification · 10.5.1.5.2 Data format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 10.5.1.5.3 Feature info

  • 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