forked from Iainmon/ChAI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbridge.h
More file actions
196 lines (133 loc) · 4.52 KB
/
bridge.h
File metadata and controls
196 lines (133 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#ifndef BRIDGE_H
#define BRIDGE_H
#include <stdio.h>
#ifndef __cplusplus
#include <stdbool.h>
#endif
#ifdef __cplusplus
#include <cstdint>
#else
#include <stdint.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define proto_bridge_simple(Name) \
bridge_tensor_t Name(bridge_tensor_t input)
typedef float float32_t;
typedef double float64_t;
typedef char bool_t;
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
void debug_cpu_only_mode(bool_t mode);
typedef struct bridge_tensor_t {
float32_t* data;
uint32_t* sizes;
uint32_t dim;
bool_t created_by_c;
bool_t was_freed;
} bridge_tensor_t;
void free_bridge_tensor(bridge_tensor_t bt);
typedef struct bridge_pt_model_t {
void* pt_module;
} bridge_pt_model_t;
typedef struct test_struct_t {
int* field;
} test_struct_t;
void hello_world(void);
typedef struct nil_scalar_tensor_t {
float scalar;
bridge_tensor_t tensor;
bool_t is_nil;
bool_t is_scalar;
bool_t is_tensor;
} nil_scalar_tensor_t;
float* unsafe(const float* arr);
bridge_tensor_t load_tensor_from_file(const uint8_t* file_path);
bridge_tensor_t load_tensor_dict_from_file(const uint8_t* file_path,const uint8_t* tensor_key);
bridge_tensor_t load_run_model(const uint8_t* model_path, bridge_tensor_t input);
bridge_pt_model_t load_model(const uint8_t* model_path);
bool_t accelerator_available(void);
bridge_tensor_t model_forward(bridge_pt_model_t model, bridge_tensor_t input);
bridge_tensor_t model_forward_style_transfer(bridge_pt_model_t model, bridge_tensor_t input);
bridge_tensor_t resize(bridge_tensor_t input,int height,int width);
bridge_tensor_t imagenet_normalize(bridge_tensor_t input);
bridge_tensor_t add_two_arrays(bridge_tensor_t a, bridge_tensor_t b);
// bridge_tensor_t capture_webcam_bridge(int cam_index);
int baz(void);
void wrHello(void);
void wrHelloTorch(void);
float sumArray(float* arr, int* sizes, int dim);
void increment(float* arr, int* sizes, int dim, float* output);
bridge_tensor_t increment2(float* arr, int* sizes, int dim);
bridge_tensor_t increment3(bridge_tensor_t arr);
bridge_tensor_t convolve2d(
bridge_tensor_t input,
bridge_tensor_t kernel,
bridge_tensor_t bias,
int stride,
int padding
);
bridge_tensor_t conv2d(
bridge_tensor_t input,
bridge_tensor_t kernel,
bridge_tensor_t bias,
int stride,
int padding
);
bridge_tensor_t matmul(bridge_tensor_t a, bridge_tensor_t b);
bridge_tensor_t max_pool2d(
bridge_tensor_t input,
int kernel_size,
int stride,
int padding,
int dilation
);
void split_loop(int64_t idx, int64_t n);
void split_loop_filler(int64_t n,int64_t* ret);
// bridge_tensor_t conv2d(
// bridge_tensor_t input,
// bridge_tensor_t kernel,
// nil_scalar_tensor_t bias,
// nil_scalar_tensor_t stride,
// nil_scalar_tensor_t padding
// );
proto_bridge_simple(gelu);
proto_bridge_simple(logsigmoid);
proto_bridge_simple(mish);
proto_bridge_simple(relu);
proto_bridge_simple(relu6);
proto_bridge_simple(selu);
proto_bridge_simple(silu);
proto_bridge_simple(softsign);
proto_bridge_simple(tanhshrink);
bridge_tensor_t rrelu(bridge_tensor_t input, float lower, float upper, bool training);
bridge_tensor_t hardshrink(bridge_tensor_t input, float lambda);
bridge_tensor_t hardtanh(bridge_tensor_t input, float min_val, float max_val);
bridge_tensor_t elu(bridge_tensor_t input, float alpha);
bridge_tensor_t softplus(bridge_tensor_t input, float beta, float threhsold);
bridge_tensor_t threshold(bridge_tensor_t input, float threshold, float value);
bridge_tensor_t celu(bridge_tensor_t input, float alpha);
bridge_tensor_t leaky_relu(bridge_tensor_t input, float negative_slope);
bridge_tensor_t softshrink(bridge_tensor_t input, float lambda);
#ifdef __cplusplus
bridge_tensor_t softmax(bridge_tensor_t input, std::int64_t dim);
#else
bridge_tensor_t softmax(bridge_tensor_t input, int64_t dim);
#endif
#ifdef __cplusplus
bridge_tensor_t softmin(bridge_tensor_t input, std::int64_t dim);
#else
bridge_tensor_t softmin(bridge_tensor_t input, int64_t dim);
#endif
bridge_tensor_t dropout(bridge_tensor_t input, double p, bool training);
bridge_tensor_t alpha_dropout(bridge_tensor_t input, double p, bool training);
bridge_tensor_t feature_alpha_dropout(bridge_tensor_t input, double p, bool training);
bridge_tensor_t dropout2d(bridge_tensor_t input, double p, bool training);
bridge_tensor_t dropout3d(bridge_tensor_t input, double p, bool training);
#undef proto_bridge_simple
#ifdef __cplusplus
}
#endif
#endif // BRIDGE_H