oneAPI Specification - spec.oneapi.com · 7.2.4.1 Common. . . . . . . . . . . . . . . . . . . . . ....

1050
oneAPI Specification Release 0.7 Intel Apr 01, 2020

Transcript of oneAPI Specification - spec.oneapi.com · 7.2.4.1 Common. . . . . . . . . . . . . . . . . . . . . ....

  • oneAPI SpecificationRelease 0.7

    Intel

    Apr 01, 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++ 0.7 105.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.2 Detailed API and Language Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.3 Open Source Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    6 oneDPL 0.7 136.1 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.2 Supported C++ Standard Library APIs and Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . 136.3 Extensions to Parallel STL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    6.3.1 DPC++ Execution Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.3.2 Wrappers for SYCL Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    6.4 Specific API of oneDPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    7 oneDNN 0.7 187.1 Open Source Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197.2 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    7.2.1 Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197.2.2 Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217.2.3 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227.2.4 Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    i

  • 7.2.4.1 Common . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327.2.4.1.1 Base class for primitives . . . . . . . . . . . . . . . . . . . . . . . . . . 327.2.4.1.2 Normalization primitives flags . . . . . . . . . . . . . . . . . . . . . . . 347.2.4.1.3 Execution argument indices . . . . . . . . . . . . . . . . . . . . . . . . . 34

    7.2.4.2 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377.2.4.2.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    7.2.4.3 Convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467.2.4.3.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    7.2.4.4 Deconvolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.2.4.4.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7.2.4.5 Inner Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.2.4.5.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    7.2.4.6 RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.2.4.6.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    7.2.4.7 Batch Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947.2.4.7.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    7.2.4.8 Binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987.2.4.8.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    7.2.4.9 Concat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007.2.4.9.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    7.2.4.10 Element-wise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027.2.4.10.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    7.2.4.11 Layer Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.2.4.11.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    7.2.4.12 Local Response Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107.2.4.12.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    7.2.4.13 LogSoftmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.2.4.13.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

    7.2.4.14 Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177.2.4.14.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

    7.2.4.15 Resampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217.2.4.15.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    7.2.4.16 Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257.2.4.16.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    7.2.4.17 Shuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287.2.4.17.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

    7.2.4.18 Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317.2.4.18.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    7.2.4.19 Reorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.2.4.19.1 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

    7.2.5 Utility Types and Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357.3 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    8 oneCCL 0.7 1408.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408.2 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    8.2.1 oneCCL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408.2.1.1 oneCCL Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1418.2.1.2 oneCCL Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1418.2.1.3 oneCCL Communicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

    8.2.1.3.1 oneCCL Communicator Attributes . . . . . . . . . . . . . . . . . . . . . 1428.2.2 oneCCL Collective Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    8.2.2.1 Collective Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1438.2.2.1.1 Allgatherv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    ii

  • 8.2.2.1.2 Allreduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1448.2.2.1.3 Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1458.2.2.1.4 Alltoall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1468.2.2.1.5 Barrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1468.2.2.1.6 Broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    8.2.2.2 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1478.2.2.3 Collective Call Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1488.2.2.4 Track Communication Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

    8.2.2.4.1 Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1498.2.2.4.2 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1498.2.2.4.3 Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

    8.2.3 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508.3 Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    8.3.1 Generic Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518.3.2 GPU support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    8.3.2.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518.3.3 CPU support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    8.3.3.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    9 Level Zero 0.91 1559.1 Detailed API Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

    10 oneDAL 0.7 15610.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15610.2 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15810.3 Programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

    10.3.1 Basic usage scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15810.3.2 Memory objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16010.3.3 Algorithm anatomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    10.3.3.1 Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16010.3.3.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    10.3.3.2.1 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16010.3.3.2.2 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    10.3.4 Managing execution context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16010.3.5 Computational modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    10.3.5.1 Batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16010.3.5.2 Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.3.5.3 Distributed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    10.4 Common Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.4.1 Header files and namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.4.2 Managing object lifetimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.4.3 Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    10.5 Data management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.5.1 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    10.5.1.1 Table types in oneDAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.5.1.2 Requirements on table objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16210.5.1.3 Entities and their dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16210.5.1.4 Table API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    10.5.1.4.1 Homogeneous table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16410.5.1.4.2 Structure-of-arrays table . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.5.1.4.3 Arrays-of-structure table . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.5.1.4.4 Compressed-sparse-row table . . . . . . . . . . . . . . . . . . . . . . . . 165

    10.5.1.5 Metadata API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.5.1.5.1 Data layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

    iii

  • 10.5.1.5.2 Data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16710.5.1.5.3 Feature info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16710.5.1.5.4 Data type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16710.5.1.5.5 Feature type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    10.5.2 Accessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16810.5.3 Builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    10.6 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16810.6.1 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    10.6.1.1 K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16810.6.1.1.1 Lloyd’s method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16910.6.1.1.2 Usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16910.6.1.1.3 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    10.6.1.1.3.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17010.6.1.1.3.2 Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17010.6.1.1.3.3 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17110.6.1.1.3.4 Training onedal::train... . . . . . . . . . . . . . . . . . . 17210.6.1.1.3.5 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17210.6.1.1.3.6 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17210.6.1.1.3.7 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 17310.6.1.1.3.8 Inference onedal::infer... . . . . . . . . . . . . . . . . . 17410.6.1.1.3.9 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17410.6.1.1.3.10 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17410.6.1.1.3.11 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 175

    10.6.2 Nearest Neighbors (kNN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17510.6.2.1 kNN classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    10.6.3 Decomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17510.6.3.1 Principal Components Analysis (PCA) . . . . . . . . . . . . . . . . . . . . . . . . 175

    10.6.3.1.1 Covariance-based method . . . . . . . . . . . . . . . . . . . . . . . . . . 17610.6.3.1.2 SVD-based method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17610.6.3.1.3 Sign-flip technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17610.6.3.1.4 Usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17610.6.3.1.5 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

    10.6.3.1.5.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17710.6.3.1.5.2 Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17710.6.3.1.5.3 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17810.6.3.1.5.4 Training onedal::train... . . . . . . . . . . . . . . . . . . 17910.6.3.1.5.5 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17910.6.3.1.5.6 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17910.6.3.1.5.7 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 18010.6.3.1.5.8 Inference onedal::infer... . . . . . . . . . . . . . . . . . 18010.6.3.1.5.9 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18010.6.3.1.5.10 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18110.6.3.1.5.11 Operation semantics . . . . . . . . . . . . . . . . . . . . . . . . . 182

    10.7 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

    11 oneTBB 0.7 18311.1 General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

    11.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18311.1.2 General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

    11.1.2.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18411.1.2.1.1 Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18411.1.2.1.2 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18411.1.2.1.3 CopyConstructible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    11.1.2.2 Notational Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

    iv

  • 11.1.2.3 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18611.1.2.3.1 Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18611.1.2.3.2 Reserved Identifier Prefixes . . . . . . . . . . . . . . . . . . . . . . . . . 186

    11.1.2.4 Thread Safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18611.2 oneTBB Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    11.2.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18711.2.1.1 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    11.2.1.1.1 tbb Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18711.2.1.1.2 tbb::flow Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18711.2.1.1.3 tbb::interfacex Namespace . . . . . . . . . . . . . . . . . . . . . . . . . 18711.2.1.1.4 tbb::internal Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 18711.2.1.1.5 tbb::deprecated Namespace . . . . . . . . . . . . . . . . . . . . . . . . . 18711.2.1.1.6 tbb::strict_ppl Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . 188

    11.2.1.2 Version Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18811.2.1.2.1 Version Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18811.2.1.2.2 TBB_VERSION Environment Variable . . . . . . . . . . . . . . . . . . 18811.2.1.2.3 TBB_runtime_interface_version Function . . . . . . . . . . . . . . . . . 18911.2.1.2.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18911.2.1.2.5 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18911.2.1.2.6 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    11.2.1.3 Enabling Debugging Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18911.2.1.3.1 TBB_USE_ASSERT Macro . . . . . . . . . . . . . . . . . . . . . . . . 19011.2.1.3.2 TBB_USE_THREADING_TOOLS Macro . . . . . . . . . . . . . . . . . 19011.2.1.3.3 TBB_USE_PERFORMANCE_WARNINGS Macro . . . . . . . . . . . . 190

    11.2.1.4 Feature Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19011.2.1.4.1 TBB_DEPRECATED_* macros . . . . . . . . . . . . . . . . . . . . . . 19011.2.1.4.2 TBB_USE_EXCEPTIONS macro . . . . . . . . . . . . . . . . . . . . . 19011.2.1.4.3 C++11 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    11.2.2 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19111.2.2.1 Splittable Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    11.2.2.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19111.2.2.1.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19111.2.2.1.3 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19211.2.2.1.4 Model Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    11.2.2.1.4.1 split Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19211.2.2.1.4.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19211.2.2.1.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19211.2.2.1.4.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.5 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.7 proportional split Class . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.9 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.10 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.11 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19311.2.2.1.4.12 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

    11.2.2.2 Range Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19411.2.2.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19411.2.2.2.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19411.2.2.2.3 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19511.2.2.2.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19511.2.2.2.5 Model Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    11.2.2.2.5.1 blocked_range Template Class . . . . . . . . . . . . . . . . . . . 19711.2.2.2.5.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    v

  • 11.2.2.2.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19711.2.2.2.5.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19711.2.2.2.5.5 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19711.2.2.2.5.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19811.2.2.2.5.7 blocked_range2d Template Class . . . . . . . . . . . . . . . . . . 20011.2.2.2.5.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20011.2.2.2.5.9 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20011.2.2.2.5.10 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20011.2.2.2.5.11 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20011.2.2.2.5.12 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20011.2.2.2.5.13 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20111.2.2.2.5.14 blocked_range3d Template Class . . . . . . . . . . . . . . . . . . 20311.2.2.2.5.15 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20311.2.2.2.5.16 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20411.2.2.2.5.17 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20411.2.2.2.5.18 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20411.2.2.2.5.19 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20411.2.2.2.5.20 blocked_rangeNd Template Class . . . . . . . . . . . . . . . . . . 20511.2.2.2.5.21 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.2.2.2.5.22 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.2.2.2.5.23 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.2.2.2.5.24 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.2.2.2.5.25 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.2.2.2.5.26 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

    11.2.2.3 Partitioners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20911.2.2.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20911.2.2.3.2 Partitioner Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    11.2.2.3.2.1 auto_partitioner Class . . . . . . . . . . . . . . . . . . . . . . . . 21011.2.2.3.2.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21011.2.2.3.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21011.2.2.3.2.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21011.2.2.3.2.5 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21011.2.2.3.2.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21011.2.2.3.2.7 affinity_partitioner Class . . . . . . . . . . . . . . . . . . . . . . 21111.2.2.3.2.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21111.2.2.3.2.9 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21111.2.2.3.2.10 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21111.2.2.3.2.11 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21111.2.2.3.2.12 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21111.2.2.3.2.13 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21211.2.2.3.2.14 static_partitioner Class . . . . . . . . . . . . . . . . . . . . . . . 21311.2.2.3.2.15 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21311.2.2.3.2.16 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21311.2.2.3.2.17 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21311.2.2.3.2.18 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21311.2.2.3.2.19 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21411.2.2.3.2.20 simple_partitioner Class . . . . . . . . . . . . . . . . . . . . . . 21411.2.2.3.2.21 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21411.2.2.3.2.22 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21411.2.2.3.2.23 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21411.2.2.3.2.24 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21511.2.2.3.2.25 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

    11.2.2.4 parallel_for Template Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21511.2.2.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

    vi

  • 11.2.2.4.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21511.2.2.4.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21511.2.2.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21611.2.2.4.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21711.2.2.4.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    11.2.2.5 parallel_reduce Template Function . . . . . . . . . . . . . . . . . . . . . . . . . . 21911.2.2.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21911.2.2.5.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21911.2.2.5.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21911.2.2.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21911.2.2.5.5 Example (Imperative Form) . . . . . . . . . . . . . . . . . . . . . . . . . 22111.2.2.5.6 Example with Lambda Expressions . . . . . . . . . . . . . . . . . . . . . 222

    11.2.2.6 parallel_deterministic_reduce Template Function . . . . . . . . . . . . . . . . . . . 22311.2.2.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22311.2.2.6.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22311.2.2.6.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22311.2.2.6.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22311.2.2.6.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    11.2.2.7 parallel_scan Template Function . . . . . . . . . . . . . . . . . . . . . . . . . . . 22511.2.2.7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22511.2.2.7.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22511.2.2.7.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22511.2.2.7.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22511.2.2.7.5 Example (Imperative Form) . . . . . . . . . . . . . . . . . . . . . . . . . 22811.2.2.7.6 Example with Lambda Expressions . . . . . . . . . . . . . . . . . . . . . 229

    11.2.2.7.6.1 pre_scan_tag and final_scan_tag Classes . . . . . . . . . . . . . . 22911.2.2.7.6.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22911.2.2.7.6.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22911.2.2.7.6.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22911.2.2.7.6.5 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23011.2.2.7.6.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    11.2.2.8 parallel_do Template Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23011.2.2.8.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23011.2.2.8.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23011.2.2.8.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23011.2.2.8.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23111.2.2.8.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

    11.2.2.8.5.1 parallel_do_feeder class . . . . . . . . . . . . . . . . . . . . . . . 23211.2.2.8.5.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23211.2.2.8.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23211.2.2.8.5.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23211.2.2.8.5.5 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23211.2.2.8.5.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    11.2.2.9 parallel_for_each Template Function . . . . . . . . . . . . . . . . . . . . . . . . . 23311.2.2.9.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23311.2.2.9.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23311.2.2.9.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23311.2.2.9.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

    11.2.2.10 parallel_invoke Template Function . . . . . . . . . . . . . . . . . . . . . . . . . . 23411.2.2.10.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23411.2.2.10.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23411.2.2.10.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23411.2.2.10.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23511.2.2.10.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

    vii

  • 11.2.2.10.6 Example with Lambda Expressions . . . . . . . . . . . . . . . . . . . . . 23511.2.2.11 parallel_invoke Variadic Template Function . . . . . . . . . . . . . . . . . . . . . 236

    11.2.2.11.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.11.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.11.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.11.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

    11.2.2.12 parallel_pipeline Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.12.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.12.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.12.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23611.2.2.12.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23711.2.2.12.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

    11.2.2.12.5.1 filter_t Template Class . . . . . . . . . . . . . . . . . . . . . . . 23811.2.2.12.5.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.2.2.12.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.2.2.12.5.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.2.2.12.5.5 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.2.2.12.5.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23811.2.2.12.5.7 flow_control Class . . . . . . . . . . . . . . . . . . . . . . . . . 23911.2.2.12.5.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23911.2.2.12.5.9 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.12.5.10 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.12.5.11 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.12.5.12 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    11.2.2.13 parallel_sort Template Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.13.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.13.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.13.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24011.2.2.13.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24111.2.2.13.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

    11.2.3 Flow Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24211.2.3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

    11.2.3.1.1 Dependency Flow Graph Example . . . . . . . . . . . . . . . . . . . . . 24211.2.3.1.2 Message Flow Graph Example . . . . . . . . . . . . . . . . . . . . . . . 24411.2.3.1.3 Body Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24611.2.3.1.4 Message Passing Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 24711.2.3.1.5 Forwarding, Buffering and Reception Policy . . . . . . . . . . . . . . . . 24711.2.3.1.6 Lightweight policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    11.2.3.1.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25011.2.3.1.6.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25011.2.3.1.6.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    11.2.3.1.7 Specifying Priorities for Functional Nodes . . . . . . . . . . . . . . . . . 25111.2.3.1.7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25111.2.3.1.7.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25111.2.3.1.7.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25211.2.3.1.7.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25211.2.3.1.7.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

    11.2.3.2 graph Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25511.2.3.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25511.2.3.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25511.2.3.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25511.2.3.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25511.2.3.2.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

    11.2.3.3 Abstract Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

    viii

  • 11.2.3.3.1 graph_node Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25811.2.3.3.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25811.2.3.3.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25811.2.3.3.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25811.2.3.3.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25811.2.3.3.1.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

    11.2.3.4 Special Message Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.1 continue_msg Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    11.2.3.4.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.1.4 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    11.2.3.4.2 tagged_msg Template Class . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25911.2.3.4.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26011.2.3.4.2.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26011.2.3.4.2.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

    11.2.3.5 Functional Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.2.3.5.1 continue_node Template Class . . . . . . . . . . . . . . . . . . . . . . . 262

    11.2.3.5.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.2.3.5.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.2.3.5.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.2.3.5.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.2.3.5.1.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26311.2.3.5.1.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    11.2.3.5.2 function_node Template Class . . . . . . . . . . . . . . . . . . . . . . . 26611.2.3.5.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.3.5.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.3.5.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.3.5.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26611.2.3.5.2.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26811.2.3.5.2.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

    11.2.3.5.3 source_node Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27011.2.3.5.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27011.2.3.5.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27011.2.3.5.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27011.2.3.5.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27011.2.3.5.3.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27111.2.3.5.3.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

    11.2.3.5.4 multifunction_node Template Class . . . . . . . . . . . . . . . . . . . . 27311.2.3.5.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27311.2.3.5.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27311.2.3.5.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27311.2.3.5.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27311.2.3.5.4.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27411.2.3.5.4.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

    11.2.3.5.5 async_node Template Class . . . . . . . . . . . . . . . . . . . . . . . . . 27611.2.3.5.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27611.2.3.5.5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27711.2.3.5.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27711.2.3.5.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27711.2.3.5.5.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    ix

  • 11.2.3.5.5.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27911.2.3.5.6 copy_body Template Function . . . . . . . . . . . . . . . . . . . . . . . 281

    11.2.3.5.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28111.2.3.5.6.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28111.2.3.5.6.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

    11.2.3.6 Buffering Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28111.2.3.6.1 overwrite_node Template Class . . . . . . . . . . . . . . . . . . . . . . . 281

    11.2.3.6.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28111.2.3.6.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.6.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.6.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.6.1.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28211.2.3.6.1.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

    11.2.3.6.2 write_once_node Template Class . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.6.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.6.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.6.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.6.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.6.2.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.2.3.6.2.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

    11.2.3.6.3 buffer_node Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.2.3.6.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.2.3.6.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.2.3.6.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.2.3.6.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.2.3.6.3.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.2.3.6.3.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

    11.2.3.6.4 queue_node Template Class . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.6.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.6.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.6.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.6.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.6.4.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.2.3.6.4.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

    11.2.3.6.5 priority_queue_node Template Class . . . . . . . . . . . . . . . . . . . . 29311.2.3.6.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29311.2.3.6.5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.2.3.6.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.2.3.6.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.2.3.6.5.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.2.3.6.5.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

    11.2.3.6.6 sequencer_node Template Class . . . . . . . . . . . . . . . . . . . . . . 29711.2.3.6.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.2.3.6.6.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.2.3.6.6.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.2.3.6.6.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.2.3.6.6.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29811.2.3.6.6.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

    11.2.3.7 Service Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30111.2.3.7.1 limiter_node Template Class . . . . . . . . . . . . . . . . . . . . . . . . 301

    11.2.3.7.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30111.2.3.7.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30111.2.3.7.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30111.2.3.7.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

    x

  • 11.2.3.7.1.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30211.2.3.7.1.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

    11.2.3.7.2 broadcast_node Template Class . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.7.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.7.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.7.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.7.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.2.3.7.2.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

    11.2.3.7.3 join_node Template Class . . . . . . . . . . . . . . . . . . . . . . . . . . 30511.2.3.7.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30511.2.3.7.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30611.2.3.7.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30611.2.3.7.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30611.2.3.7.3.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30711.2.3.7.3.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

    11.2.3.7.4 split_node Template Class . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.7.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.7.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.7.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.7.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.7.4.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31011.2.3.7.4.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    11.2.3.7.5 indexer_node Template Class . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.7.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.7.5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.7.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.7.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.7.5.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31211.2.3.7.5.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

    11.2.3.7.6 composite_node Template Class . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.7.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.7.6.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.7.6.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.7.6.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31511.2.3.7.6.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31611.2.3.7.6.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    11.2.3.8 Ports and Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31811.2.3.8.1 input_port Template Function . . . . . . . . . . . . . . . . . . . . . . . . 319

    11.2.3.8.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.8.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.8.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

    11.2.3.8.2 output_port Template Function . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.8.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.8.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31911.2.3.8.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

    11.2.3.8.3 make_edge Template Function . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.8.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.8.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.8.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

    11.2.3.8.4 remove_edge Template Function . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.8.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.8.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32011.2.3.8.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

    11.2.4 Task Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

    xi

  • 11.2.4.1 Floating-point Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32211.2.4.2 task_group_context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

    11.2.4.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32311.2.4.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32411.2.4.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32411.2.4.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32411.2.4.2.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

    11.2.4.3 task_arena Class and this_task_arena Namespace . . . . . . . . . . . . . . . . . . 32611.2.4.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32611.2.4.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32611.2.4.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32611.2.4.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32611.2.4.3.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32711.2.4.3.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

    11.2.4.4 task_scheduler_observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33111.2.4.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33111.2.4.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33111.2.4.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33111.2.4.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33111.2.4.4.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33111.2.4.4.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

    11.2.4.4.6.1 task_scheduler_observer Member . . . . . . . . . . . . . . . . . 33211.2.4.5 Task Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

    11.2.4.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33411.2.4.5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33411.2.4.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

    11.2.4.5.3.1 task_group Class . . . . . . . . . . . . . . . . . . . . . . . . . . 33411.2.4.5.3.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33411.2.4.5.3.3 Example with Lambda Expressions . . . . . . . . . . . . . . . . . 33511.2.4.5.3.4 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33511.2.4.5.3.5 task_group_status Enum . . . . . . . . . . . . . . . . . . . . . . 33611.2.4.5.3.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33611.2.4.5.3.7 task_handle Template Class . . . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.9 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.10 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.11 make_task Template Function . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.12 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.13 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33711.2.4.5.3.14 is_current_task_group_canceling Function . . . . . . . . . . . . . 338

    11.2.4.6 global_control Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.6.2 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.6.3 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.6.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33811.2.4.6.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33911.2.4.6.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

    11.2.5 Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34111.2.5.1 Container Range Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

    11.2.5.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34111.2.5.1.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34111.2.5.1.3 Model Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

    11.2.5.2 tbb_hash_compare Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34211.2.5.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    xii

  • 11.2.5.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34211.2.5.2.3 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34211.2.5.2.4 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    11.2.5.3 Node Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34311.2.5.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34311.2.5.3.2 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34311.2.5.3.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

    11.2.5.4 concurrent_map and concurrent_multimap Template Classes . . . . . . . . . . . . 34511.2.5.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34511.2.5.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34511.2.5.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34511.2.5.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34511.2.5.4.5 Members of both concurrent_map and concurrent_multimap . . . . . . . 34611.2.5.4.6 Members of concurrent_map . . . . . . . . . . . . . . . . . . . . . . . . 34811.2.5.4.7 Members of concurrent_multimap . . . . . . . . . . . . . . . . . . . . . 349

    11.2.5.4.7.1 Construct, Destroy, Copy . . . . . . . . . . . . . . . . . . . . . . 35011.2.5.4.7.2 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 35211.2.5.4.7.3 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35211.2.5.4.7.4 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35211.2.5.4.7.5 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35411.2.5.4.7.6 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35411.2.5.4.7.7 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

    11.2.5.5 concurrent_set and concurrent_multiset Template Classes . . . . . . . . . . . . . . 35611.2.5.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35611.2.5.5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35711.2.5.5.5 Members of both concurrent_set and concurrent_multiset . . . . . . . . . 35711.2.5.5.6 Members of concurrent_set . . . . . . . . . . . . . . . . . . . . . . . . . 36011.2.5.5.7 Members of concurrent_multiset . . . . . . . . . . . . . . . . . . . . . . 360

    11.2.5.5.7.1 Construct, Destroy, Copy . . . . . . . . . . . . . . . . . . . . . . 36111.2.5.5.7.2 Size and capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 36311.2.5.5.7.3 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36311.2.5.5.7.4 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36411.2.5.5.7.5 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36611.2.5.5.7.6 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36611.2.5.5.7.7 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

    11.2.5.6 concurrent_unordered_map and concurrent_unordered_multimap Template Classes 36811.2.5.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36811.2.5.6.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36811.2.5.6.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36911.2.5.6.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36911.2.5.6.5 Members of both concurrent_unordered_map and concur-

    rent_unordered_multimap . . . . . . . . . . . . . . . . . . . . . . . . . . 37011.2.5.6.6 Members of concurrent_unordered_map . . . . . . . . . . . . . . . . . . 37211.2.5.6.7 Members of concurrent_unordered_multimap . . . . . . . . . . . . . . . 373

    11.2.5.6.7.1 Construct, Destroy, Copy . . . . . . . . . . . . . . . . . . . . . . 37411.2.5.6.7.2 concurrent_unordered_map . . . . . . . . . . . . . . . . . . . . . 37611.2.5.6.7.3 concurrent_unordered_multimap . . . . . . . . . . . . . . . . . . 37811.2.5.6.7.4 Size and Capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 37911.2.5.6.7.5 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37911.2.5.6.7.6 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38011.2.5.6.7.7 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38211.2.5.6.7.8 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

    xiii

  • 11.2.5.6.7.9 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 38311.2.5.6.7.10 Bucket Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 38311.2.5.6.7.11 Hash Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

    11.2.5.7 concurrent_unordered_set and concurrent_unordered_multiset Template Classes . . 38511.2.5.7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38511.2.5.7.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38511.2.5.7.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38511.2.5.7.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38511.2.5.7.5 Members of concurrent_unordered_set and concurrent_unordered_multiset 38611.2.5.7.6 Members of concurrent_unordered_set . . . . . . . . . . . . . . . . . . . 38811.2.5.7.7 Members of concurrent_unordered_multiset . . . . . . . . . . . . . . . . 389

    11.2.5.7.7.1 Construct, Destroy, Copy . . . . . . . . . . . . . . . . . . . . . . 39011.2.5.7.7.2 concurrent_unordered_set . . . . . . . . . . . . . . . . . . . . . . 39211.2.5.7.7.3 concurrent_unordered_multiset . . . . . . . . . . . . . . . . . . . 39411.2.5.7.7.4 Size and Capacity . . . . . . . . . . . . . . . . . . . . . . . . . . 39511.2.5.7.7.5 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39511.2.5.7.7.6 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39511.2.5.7.7.7 Observers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39711.2.5.7.7.8 Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39711.2.5.7.7.9 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 39811.2.5.7.7.10 Bucket Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 39811.2.5.7.7.11 Hash Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

    11.2.5.8 concurrent_hash_map Template Class . . . . . . . . . . . . . . . . . . . . . . . . 40011.2.5.8.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40011.2.5.8.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40011.2.5.8.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40011.2.5.8.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40011.2.5.8.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40111.2.5.8.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40111.2.5.8.7 Exception Safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

    11.2.5.8.7.1 Whole Table Operations . . . . . . . . . . . . . . . . . . . . . . 40311.2.5.8.7.2 Concurrent Access . . . . . . . . . . . . . . . . . . . . . . . . . 40511.2.5.8.7.3 const_accessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40511.2.5.8.7.4 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40511.2.5.8.7.5 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40511.2.5.8.7.6 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40511.2.5.8.7.7 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40611.2.5.8.7.8 accessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40611.2.5.8.7.9 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40611.2.5.8.7.10 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40711.2.5.8.7.11 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40711.2.5.8.7.12 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40711.2.5.8.7.13 Concurrent Operations . . . . . . . . . . . . . . . . . . . . . . . 40711.2.5.8.7.14 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 41011.2.5.8.7.15 Capacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41011.2.5.8.7.16 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41111.2.5.8.7.17 Global Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 411

    11.2.5.9 concurrent_queue Template Class . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.9.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.9.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.9.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.9.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.9.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41211.2.5.9.6 Exception Safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

    xiv

  • 11.2.5.9.7 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41511.2.5.9.8 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

    11.2.5.10 concurrent_bounded_queue Template Class . . . . . . . . . . . . . . . . . . . . . 41511.2.5.10.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41511.2.5.10.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41611.2.5.10.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41611.2.5.10.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41611.2.5.10.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

    11.2.5.11 concurrent_priority_queue Template Class . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.11.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.11.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.11.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.11.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.2.5.11.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

    11.2.5.12 concurrent_vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.12.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.12.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.12.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.12.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.12.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.2.5.12.6 Exception Safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.2.5.12.7 Fragmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

    11.2.5.12.7.1 Construction, Copy, and Assignment . . . . . . . . . . . . . . . . 42711.2.5.12.7.2 Whole Vector Operations . . . . . . . . . . . . . . . . . . . . . . 42911.2.5.12.7.3 Concurrent Growth . . . . . . . . . . . . . . . . . . . . . . . . . 42911.2.5.12.7.4 Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43011.2.5.12.7.5 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 43111.2.5.12.7.6 Capacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43111.2.5.12.7.7 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    11.2.6 Thread Local Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.6.1 combinable Template Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    11.2.6.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.6.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.2.6.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.2.6.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.2.6.1.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

    11.2.6.2 enumerable_thread_specific Template Class . . . . . . . . . . . . . . . . . . . . . 43411.2.6.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43411.2.6.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43511.2.6.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43511.2.6.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43511.2.6.2.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.2.6.2.6 Example with Lambda Expressions . . . . . . . . . . . . . . . . . . . . . 43611.2.6.2.7 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

    11.2.6.2.7.1 Whole Container Operations . . . . . . . . . . . . . . . . . . . . 43811.2.6.2.7.2 Concurrent Operations . . . . . . . . . . . . . . . . . . . . . . . 44011.2.6.2.7.3 Combining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44011.2.6.2.7.4 Parallel Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.6.2.7.5 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

    11.2.6.3 flattened2d Template Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.6.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.6.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44111.2.6.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.6.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

    xv

  • 11.2.6.3.5 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44211.2.6.3.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

    11.2.6.3.6.1 Whole Container Operations . . . . . . . . . . . . . . . . . . . . 44411.2.6.3.6.2 Concurrent Operations . . . . . . . . . . . . . . . . . . . . . . . 44411.2.6.3.6.3 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44411.2.6.3.6.4 Utility Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 445

    11.2.7 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44511.2.7.1 Specific Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

    11.2.7.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44511.2.7.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44611.2.7.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44611.2.7.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44611.2.7.1.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

    11.3 oneTBB Auxiliary Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44711.3.1 Memory Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

    11.3.1.1 C Interface to Scalable Allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . 44711.3.1.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44711.3.1.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44711.3.1.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44811.3.1.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44811.3.1.1.5 size_t scalable_msize( void* ptr ) . . . . . . . . . . . . . . . . . . . . . . 44911.3.1.1.6 int scalable_allocation_mode(int mode, intptr_t value) . . . . . . . . . . . 44911.3.1.1.7 int scalable_allocation_command(int cmd, void* reserved) . . . . . . . . 449

    11.3.1.2 Allocator Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45011.3.1.2.1 tbb_allocator Template Class . . . . . . . . . . . . . . . . . . . . . . . . 451

    11.3.1.2.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

    11.3.1.2.2 scalable allocator Template Class . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45111.3.1.2.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45211.3.1.2.2.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

    11.3.1.2.3 cache_aligned_allocator Template Class . . . . . . . . . . . . . . . . . . 45211.3.1.2.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45211.3.1.2.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45211.3.1.2.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45211.3.1.2.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45211.3.1.2.3.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

    11.3.1.2.4 zero_allocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45411.3.1.2.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45411.3.1.2.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45411.3.1.2.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.3.1.2.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.3.1.2.4.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

    11.3.1.3 Memory Resource Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45511.3.1.3.1 scalable_memory_resource Function . . . . . . . . . . . . . . . . . . . . 456

    11.3.1.3.1.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45611.3.1.3.1.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45611.3.1.3.1.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45611.3.1.3.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

    11.3.1.3.2 cache_aligned_resource Class . . . . . . . . . . . . . . . . . . . . . . . 457

    xvi

  • 11.3.1.3.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45711.3.1.3.2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45711.3.1.3.2.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45711.3.1.3.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45711.3.1.3.2.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

    11.3.1.4 TBB_malloc_replacement_log Function . . . . . . . . . . . . . . . . . . . . . . . 45811.3.1.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45811.3.1.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45811.3.1.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45811.3.1.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45811.3.1.4.5 Usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

    11.3.2 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45911.3.2.1 Mutexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

    11.3.2.1.1 Mutex Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46011.3.2.1.1.1 C++11 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . 461

    11.3.2.1.2 Speculative locking (Transactional Lock Elision) . . . . . . . . . . . . . 46211.3.2.1.2.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

    11.3.2.1.3 spin_mutex Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.3.2.1.3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.3.2.1.3.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.3.2.1.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.3.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

    11.3.2.1.4 speculative_spin_mutex Class . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.4.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.4.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.3.2.1.4.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.3.2.1.4.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

    11.3.2.1.5 queuing_mutex Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.3.2.1.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.3.2.1.5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.3.2.1.5.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.3.2.1.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46411.3.2.1.5.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

    11.3.2.1.6 ReaderWriterMutex Concept . . . . . . . . . . . . . . . . . . . . . . . . 46511.3.2.1.7 spin_rw_mutex Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

    11.3.2.1.7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.3.2.1.7.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.3.2.1.7.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.3.2.1.7.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.3.2.1.7.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

    11.3.2.1.8 speculative_spin_rw_mutex Class . . . . . . . . . . . . . . . . . . . . . 46611.3.2.1.8.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.3.2.1.8.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46711.3.2.1.8.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46711.3.2.1.8.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46711.3.2.1.8.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46711.3.2.1.8.6 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

    11.3.2.1.9 queuing_rw_mutex Class . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.9.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.9.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.9.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

    xvii

  • 11.3.2.1.9.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.9.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

    11.3.2.1.10 null_mutex Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.10.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.10.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.3.2.1.10.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.10.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.10.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

    11.3.2.1.11 null_rw_mutex Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.11.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.11.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.11.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.11.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46911.3.2.1.11.5 Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

    11.3.3 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47011.3.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47011.3.3.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

    11.3.3.2.1 tick_count class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47011.3.3.2.2 tick_count::interval_t class . . . . . . . . . . . . . . . . . . . . . . . . . 47111.3.3.2.3 Non-member functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

    12 oneVPL 0.7 47312.1 Device Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47312.2 Device Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47412.3 Workstream Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47412.4 Workstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

    12.4.1 Workstream Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47512.4.2 Initialization Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47512.4.3 Dynamic Setting Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47612.4.4 Decode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47712.4.5 Encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48012.4.6 Video Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

    12.5 VPL Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48412.5.1 Creating memory objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48512.5.2 Helper Class for Simplifying Image Data Access . . . . . . . . . . . . . . . . . . . . . . . 486

    12.6 VPL API Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48712.6.1 Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

    12.6.1.1 vpl::DeviceInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48712.6.2 Device Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    12.6.2.1 vpl::DeviceContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48912.6.3 Workstream Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490

    12.6.3.1 vpl::VplParams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49012.6.4 Decode Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

    12.6.4.1 vpl::VplParamsDecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49212.6.5 Encode Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

    12.6.5.1 vpl::VplParamsEncode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49212.6.6 Workstreams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

    12.6.6.1 VplWorkstreamType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49312.6.7 Workstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

    12.6.7.1 vpl::Workstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49412.6.7.2 Workstream::Decode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49512.6.7.3 Workstream::Encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49712.6.7.4 Workstream::VideoProcess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

    12.6.8 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

    xviii

  • 12.6.8.1 vplm::cpu_image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49912.6.8.2 vplm::memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49912.6.8.3 vplm::cpu::memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50012.6.8.4 vplm::cpu::image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50012.6.8.5 vplm::cpu::make_memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50112.6.8.6 vplm::opencl::memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50112.6.8.7 vplm::opencl::image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50112.6.8.8 vplm::opencl::make_memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50212.6.8.9 vplm::sycl::memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50212.6.8.10 vplm::sycl::make_memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50312.6.8.11 vplm::vaapi::memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50312.6.8.12 vplm::vaapi::image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50312.6.8.13 vplm::vaapi::make_memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

    12.6.9 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50412.6.9.1 vplStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50412.6.9.2 VplCodecType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50412.6.9.3 VplFourCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50412.6.9.4 VplCrop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50512.6.9.5 VplAspectRatio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50512.6.9.6 VplEncodePreset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50512.6.9.7 VplEncodeScenario . . . . . . . . . . . . . . .