/* * 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_DECONV_SGEMM_MULTITHREADS_H__ #define __NNFW_SRCN_DECONV_SGEMM_MULTITHREADS_H__ #include "srcn/conv_type.h" #include "common.h" namespace nnfw { namespace srcn { class deconv_sgemm_multithreads { public: deconv_sgemm_multithreads(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); ~deconv_sgemm_multithreads(); void run(); private: void param_init(); void compute_rowmajor_colshard(); void compute_rowmajor_rowshard(); void compute_colmajor_colshard(); void compute_colmajor_rowshard(); const convMat_t in_mat_; const convMat_t weights_mat_; convMat_t out_mat_; const convParams_t in_param_; convType_t conv_type_; const int num_threads_; int m_; int n_; int k_; int bm_; int bn_; int bk_; int rm_; int rn_; int rk_; int nm_; int nn_; int nk_; int mr_; int nr_; int need_col2im_; shardType_t shard_type_; float *prhs_buffer_; float *plhs_buffer_; float *pres_buffer_; int error_; }; } // namespace srcn } // namespace nnfw #endif // __NNFW_SRCN_DECONV_SGEMM_MULTITHREADS_H__