diff options
Diffstat (limited to 'runtimes/libs/srcn/include')
-rw-r--r-- | runtimes/libs/srcn/include/srcn/conv_type.h | 74 | ||||
-rw-r--r-- | runtimes/libs/srcn/include/srcn/srcn_conv.h | 65 |
2 files changed, 139 insertions, 0 deletions
diff --git a/runtimes/libs/srcn/include/srcn/conv_type.h b/runtimes/libs/srcn/include/srcn/conv_type.h new file mode 100644 index 000000000..59152a094 --- /dev/null +++ b/runtimes/libs/srcn/include/srcn/conv_type.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NNFW_SRCN_CONV_TYPE_H__ +#define __NNFW_SRCN_CONV_TYPE_H__ + +namespace nnfw +{ +namespace srcn +{ + +enum convType_t +{ + row_major = 0, + col_major +}; + +struct convMat_t +{ + int w; + int h; + int c; + int n; + float *data; +}; + +struct convParams_t +{ + int kernel_w; + int kernel_h; + int stride_w; + int stride_h; + int dilation_w; + int dilation_h; + int padding; + int pad_w; + int pad_h; +}; + +struct winogradParams_t +{ + int kernel_w; + int kernel_h; + int stride_w; + int stride_h; + int dilation_w; + int dilation_h; + int batch; + int w; + int h; + int inch; + int outch; + int num_threads; + convType_t conv_type; + float *weight_data; +}; + +} // namespace srcn +} // namespace nnfw + +#endif // __NNFW_SRCN_CONV_TYPE_H__ diff --git a/runtimes/libs/srcn/include/srcn/srcn_conv.h b/runtimes/libs/srcn/include/srcn/srcn_conv.h new file mode 100644 index 000000000..11130c0db --- /dev/null +++ b/runtimes/libs/srcn/include/srcn/srcn_conv.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NNFW_SRCN_CONV_H__ +#define __NNFW_SRCN_CONV_H__ + +#include "conv_type.h" + +namespace nnfw +{ +namespace srcn +{ + +int check_winograd(winogradParams_t ¶ms); + +float *trans_weight2winograd(winogradParams_t ¶ms, unsigned int *size = NULL); + +void winograd_release(float *winograd_weight); + +void srcn_convolution2D(const convMat_t &in_mat, const convMat_t &weights_mat, convMat_t &out_mat, + const convParams_t &in_param, const float *winograd_weight, int num_threads, + convType_t conv_type); + +void srcn_deconvolution2D(const convMat_t &in_mat, const convMat_t &weights_mat, convMat_t &out_mat, + const convParams_t &in_param, int num_threads, convType_t conv_type); + +void *trans_weight2sparse(const convMat_t &weights_mat); + +void sparse_release(const int outch, void *ptr); + +void srcn_sparse_convolution2D(const convMat_t &in_mat, convMat_t &out_mat, + const convParams_t &in_param, const void *sparse_weight, + int number_threas, convType_t conv_type); + +void srcn_batch_convolution2D(const convMat_t &in_mat, const convMat_t &weights_mat, + convMat_t &out_mat, const convParams_t &in_param, + const float *winograd_weight, int num_threads, convType_t conv_type); + +void srcn_convolution2D_gpu(const convMat_t &in_mat, const convMat_t &weights_mat, + convMat_t &out_mat, const convParams_t &in_param, convType_t conv_type); + +void srcn_convolution2D_dpu(const convMat_t &in_mat, const convMat_t &weights_mat, + convMat_t &out_mat, const convParams_t &in_param, convType_t conv_type); + +void srcn_depthwise_conv(const convMat_t &in_mat, const convMat_t &weights_mat, convMat_t &out_mat, + const convMat_t &bias, const convParams_t &in_param, int num_threads, + convType_t conv_type); + +} // namespace srcn +} // namespace nnfw + +#endif // __NNFW_SRCN_CONV_H__ |