Caffe2 - C++ API
A deep learning, cross platform ML framework
pthreadpool.h
1 // pthreadpool header from https://github.com/Maratyszcza/pthreadpool
2 // for NNPACK
3 #ifndef CAFFE2_UTILS_PTHREADPOOL_H_
4 #define CAFFE2_UTILS_PTHREADPOOL_H_
5 
6 #include "ThreadPoolCommon.h"
7 
8 
9 #include <stddef.h> // for size_t
10 
11 typedef struct pthreadpool* pthreadpool_t;
12 
13 typedef void (*pthreadpool_function_1d_t)(void*, size_t);
14 typedef void (*pthreadpool_function_1d_tiled_t)(void*, size_t, size_t);
15 typedef void (*pthreadpool_function_2d_t)(void*, size_t, size_t);
16 typedef void (*pthreadpool_function_2d_tiled_t)(void*, size_t, size_t, size_t, size_t);
17 typedef void (*pthreadpool_function_3d_t)(void*, size_t, size_t, size_t);
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
33 pthreadpool_t pthreadpool_create(size_t threads_count);
34 
42 size_t pthreadpool_get_threads_count(pthreadpool_t threadpool);
43 
44 
60 void pthreadpool_compute_1d(
61  pthreadpool_t threadpool,
62  pthreadpool_function_1d_t function,
63  void* argument,
64  size_t range);
65 
66 void pthreadpool_compute_1d_tiled(
67  pthreadpool_t threadpool,
68  pthreadpool_function_1d_tiled_t function,
69  void* argument,
70  size_t range,
71  size_t tile);
72 
73 void pthreadpool_compute_2d(
74  pthreadpool_t threadpool,
75  pthreadpool_function_2d_t function,
76  void* argument,
77  size_t range_i,
78  size_t range_j);
79 
80 void pthreadpool_compute_2d_tiled(
81  pthreadpool_t threadpool,
82  pthreadpool_function_2d_tiled_t function,
83  void* argument,
84  size_t range_i,
85  size_t range_j,
86  size_t tile_i,
87  size_t tile_j);
88 
97 void pthreadpool_destroy(pthreadpool_t threadpool);
98 
99 #ifdef __cplusplus
100 } /* extern "C" */
101 #endif
102 
103 #endif // CAFFE2_UTILS_PTHREADPOOL_H_