SMAUG
Simulating Machine Learning Applications on gem5-Aladdin
smv_kernels.h
1 #ifndef _OPERATORS_SMV_KERNELS_H_
2 #define _OPERATORS_SMV_KERNELS_H_
3 
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 void smv_conv3d_nhwc_vec_fxp(float16* host_inputs,
11  float16* host_weights,
12  float16* host_results,
13  float* inputs,
14  float* weights,
15  float* results,
16  int inputs_dims[4],
17  int weights_dims[4],
18  int results_dims[4],
19  int inputs_align_pad,
20  int weights_pad,
21  int results_pad,
22  int inputs_halo_pad[4],
23  int row_stride,
24  int col_stride,
25  int ifmap_start,
26  int kern_start,
27  bool accumulate,
28  bool read_inputs,
29  bool read_weights,
30  bool send_results,
31  activation_type act_function,
32  activation_param_t act_params,
33  SamplingInfo* sampling);
34 
35 void smv_matrix_multiply_transpose_nc_vec_fxp(float16* host_a,
36  float16* host_b,
37  float16* host_results,
38  float* a,
39  float* b,
40  float* results,
41  int a_dims[2],
42  int b_dims[2],
43  int results_dims[2],
44  int a_pad,
45  int b_pad,
46  int results_pad,
47  int a_start,
48  int result_start,
49  bool accumulate,
50  bool read_inputs,
51  bool send_results,
52  activation_type act_function,
53  activation_param_t act_params,
54  SamplingInfo* sampling);
55 
56 void smv_maxpooling_nhwc_vec_fxp(float16* host_inputs,
57  float16* host_results,
58  float* inputs,
59  float* results,
60  int inputs_dims[4],
61  int results_dims[4],
62  int inputs_pad,
63  int results_pad,
64  int pool_rows,
65  int pool_cols,
66  int row_stride,
67  int col_stride,
68  int ofmap_start,
69  SamplingInfo* sampling);
70 
71 void smv_avgpooling_nhwc_vec_fxp(float16* host_inputs,
72  float16* host_results,
73  float* inputs,
74  float* results,
75  int inputs_dims[4],
76  int results_dims[4],
77  int inputs_pad,
78  int results_pad,
79  int pool_rows,
80  int pool_cols,
81  int row_stride,
82  int col_stride,
83  int ofmap_start,
84  SamplingInfo* sampling);
85 
86 void smv_batch_norm_post_fc_nc_vec_fxp(float16* host_inputs,
87  float16* host_weights,
88  float16* host_results,
89  float* inputs,
90  float* weights,
91  float* results,
92  int inputs_dims[2],
93  int weights_acts,
94  int inputs_pad,
95  int inputs_start,
96  int send_results,
97  activation_type act_function,
98  activation_param_t act_params);
99 
100 void smv_batch_norm_post_conv_nchw_vec_fxp(float16* host_inpits,
101  float16* host_weights,
102  float16* host_results,
103  float* inputs,
104  float* weights,
105  float* results,
106  int inputs_dims[4],
107  int weights_chans,
108  int inputs_pad,
109  int weights_pad,
110  int weights_start,
111  activation_type act_function,
112  activation_param_t act_params);
113 
114 void smv_batch_norm_post_conv_nhwc_vec_fxp(float16* host_inpits,
115  float16* host_weights,
116  float16* host_results,
117  float* inputs,
118  float* weights,
119  float* results,
120  int inputs_dims[4],
121  int weights_chans,
122  int inputs_pad,
123  int weights_pad,
124  int weights_start,
125  activation_type act_function,
126  activation_param_t act_params,
127  SamplingInfo* sampling);
128 
129 void smv_activation_fun_nc_vec_fxp(float16* host_inputs,
130  float16* host_results,
131  float* inputs,
132  float* results,
133  int inputs_size,
134  activation_type function,
135  activation_param_t params);
136 
137 void smv_softmax_nc_vec_fxp(float16* host_inputs,
138  float16* host_results,
139  float* inputs,
140  float* results,
141  int input_num,
142  int input_size,
143  int input_pad);
144 
145 void smv_eltwise_add_nc_vec_fxp(float16* host_inputs0,
146  float16* host_inputs1,
147  float16* host_results,
148  float* inputs0,
149  float* inputs1,
150  float* results,
151  int inputs_size);
152 
153 void smv_eltwise_mul_nc_vec_fxp(float16* host_inputs0,
154  float16* host_inputs1,
155  float16* host_results,
156  float* inputs0,
157  float* inputs1,
158  float* results,
159  int inputs_size);
160 
161 void smv_less_nc_vec_fxp(float16* host_inputs0,
162  float16* host_inputs1,
163  bool* host_results,
164  float* inputs0,
165  float* inputs1,
166  bool* results,
167  int inputs_size);
168 
169 void smv_less_equal_nc_vec_fxp(float16* host_inputs0,
170  float16* host_inputs1,
171  bool* host_results,
172  float* inputs0,
173  float* inputs1,
174  bool* results,
175  int inputs_size);
176 
177 void smv_greater_nc_vec_fxp(float16* host_inputs0,
178  float16* host_inputs1,
179  bool* host_results,
180  float* inputs0,
181  float* inputs1,
182  bool* results,
183  int inputs_size);
184 
185 void smv_greater_equal_nc_vec_fxp(float16* host_inputs0,
186  float16* host_inputs1,
187  bool* host_results,
188  float* inputs0,
189  float* inputs1,
190  bool* results,
191  int inputs_size);
192 #ifdef __cplusplus
193 }
194 #endif
195 
196 #endif
smv_batch_norm_post_conv_nhwc_vec_fxp
void smv_batch_norm_post_conv_nhwc_vec_fxp(float16 *host_inpits, float16 *host_weights, float16 *host_results, float *inputs, float *weights, float *results, int inputs_dims[4], int weights_chans, int inputs_pad, int weights_pad, int weights_start, activation_type act_function, activation_param_t act_params, SamplingInfo *sampling)
Definition: batch_norm.c:196
smv_batch_norm_post_conv_nchw_vec_fxp
void smv_batch_norm_post_conv_nchw_vec_fxp(float16 *host_inpits, float16 *host_weights, float16 *host_results, float *inputs, float *weights, float *results, int inputs_dims[4], int weights_chans, int inputs_pad, int weights_pad, int weights_start, activation_type act_function, activation_param_t act_params)
Definition: batch_norm.c:100
activation_type
enum _activation_type activation_type
The activation function to apply to an operator's output in hardware.
_SamplingInfo
Simulation sampling information maintained by the Operator and passed to the accelerated kernel.
Definition: common.h:262
smv_less_equal_nc_vec_fxp
void smv_less_equal_nc_vec_fxp(float16 *host_inputs0, float16 *host_inputs1, bool *host_results, float *inputs0, float *inputs1, bool *results, int inputs_size)
Definition: compare.c:48
smv_greater_equal_nc_vec_fxp
void smv_greater_equal_nc_vec_fxp(float16 *host_inputs0, float16 *host_inputs1, bool *host_results, float *inputs0, float *inputs1, bool *results, int inputs_size)
Definition: compare.c:106
smv_matrix_multiply_transpose_nc_vec_fxp
void smv_matrix_multiply_transpose_nc_vec_fxp(float16 *host_a, float16 *host_b, float16 *host_results, float *a, float *b, float *results, int a_dims[2], int b_dims[2], int results_dims[2], int a_pad, int b_pad, int results_pad, int a_start, int result_start, bool accumulate, bool read_inputs, bool send_results, activation_type act_function, activation_param_t act_params, SamplingInfo *sampling)
Definition: matrix_multiply.c:59
_activation_param_t
Parameters to the activation function hardware.
Definition: common.h:194
smv_conv3d_nhwc_vec_fxp
void smv_conv3d_nhwc_vec_fxp(float16 *host_inputs, float16 *host_weights, float16 *host_results, float *inputs, float *weights, float *results, int inputs_dims[4], int weights_dims[4], int results_dims[4], int inputs_align_pad, int weights_pad, int results_pad, int inputs_halo_pad[4], int row_stride, int col_stride, int ifmap_start, int kern_start, bool accumulate, bool read_inputs, bool read_weights, bool send_results, activation_type act_function, activation_param_t act_params, SamplingInfo *sampling)
Definition: convolution_simd.c:53
smv_softmax_nc_vec_fxp
void smv_softmax_nc_vec_fxp(float16 *host_inputs, float16 *host_results, float *inputs, float *results, int input_num, int input_size, int input_pad)
Definition: activation_functions_simd.c:31
smv_activation_fun_nc_vec_fxp
void smv_activation_fun_nc_vec_fxp(float16 *host_inputs, float16 *host_results, float *inputs, float *results, int inputs_size, activation_type function, activation_param_t params)
Definition: activation_functions_simd.c:13
smv_greater_nc_vec_fxp
void smv_greater_nc_vec_fxp(float16 *host_inputs0, float16 *host_inputs1, bool *host_results, float *inputs0, float *inputs1, bool *results, int inputs_size)
Definition: compare.c:77
smv_maxpooling_nhwc_vec_fxp
void smv_maxpooling_nhwc_vec_fxp(float16 *host_inputs, float16 *host_results, float *inputs, float *results, int inputs_dims[4], int results_dims[4], int inputs_pad, int results_pad, int pool_rows, int pool_cols, int row_stride, int col_stride, int ofmap_start, SamplingInfo *sampling)
Definition: pooling.c:36
smv_eltwise_add_nc_vec_fxp
void smv_eltwise_add_nc_vec_fxp(float16 *host_inputs0, float16 *host_inputs1, float16 *host_results, float *inputs0, float *inputs1, float *results, int inputs_size)
Definition: eltwise_add.c:13
smv_batch_norm_post_fc_nc_vec_fxp
void smv_batch_norm_post_fc_nc_vec_fxp(float16 *host_inputs, float16 *host_weights, float16 *host_results, float *inputs, float *weights, float *results, int inputs_dims[2], int weights_acts, int inputs_pad, int inputs_start, int send_results, activation_type act_function, activation_param_t act_params)
Definition: batch_norm.c:41
smv_eltwise_mul_nc_vec_fxp
void smv_eltwise_mul_nc_vec_fxp(float16 *host_inputs0, float16 *host_inputs1, float16 *host_results, float *inputs0, float *inputs1, float *results, int inputs_size)
Definition: eltwise_mul.c:13
common.h
Utilities for writing and invoking Aladdin kernels from Operators.
smv_avgpooling_nhwc_vec_fxp
void smv_avgpooling_nhwc_vec_fxp(float16 *host_inputs, float16 *host_results, float *inputs, float *results, int inputs_dims[4], int results_dims[4], int inputs_pad, int results_pad, int pool_rows, int pool_cols, int row_stride, int col_stride, int ofmap_start, SamplingInfo *sampling)
Definition: pooling.c:166
smv_less_nc_vec_fxp
void smv_less_nc_vec_fxp(float16 *host_inputs0, float16 *host_inputs1, bool *host_results, float *inputs0, float *inputs1, bool *results, int inputs_size)
Definition: compare.c:19