summaryrefslogtreecommitdiff
path: root/compute/ncnn/src/srcn/sgemm_singlethread.h
diff options
context:
space:
mode:
Diffstat (limited to 'compute/ncnn/src/srcn/sgemm_singlethread.h')
-rw-r--r--compute/ncnn/src/srcn/sgemm_singlethread.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/compute/ncnn/src/srcn/sgemm_singlethread.h b/compute/ncnn/src/srcn/sgemm_singlethread.h
new file mode 100644
index 000000000..47954e028
--- /dev/null
+++ b/compute/ncnn/src/srcn/sgemm_singlethread.h
@@ -0,0 +1,88 @@
+/*
+ * 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_SGEMM_SINGLETHREAD_H__
+#define __NNFW_SRCN_SGEMM_SINGLETHREAD_H__
+
+#include "common.h"
+
+namespace nnfw
+{
+namespace srcn
+{
+
+typedef enum { rowMajor = 0, colMajor } sgemmType_t;
+
+typedef enum { trans = 0, notrans } sgemmTrans_t;
+
+class sgemm_singlethread
+{
+public:
+ sgemm_singlethread(sgemmType_t major_type, sgemmTrans_t ltrans, sgemmTrans_t rtrans, const int m,
+ const int n, const int k, const float *lhs_data, const float *rhs_data,
+ float *res_data, int cache_div);
+ ~sgemm_singlethread();
+
+ void run();
+
+private:
+ void param_init();
+
+ void compute_rowmajor_nn();
+ void compute_rowmajor_nt();
+ void compute_rowmajor_tn();
+ void compute_rowmajor_tt();
+
+ void compute_colmajor_nn();
+ void compute_colmajor_nt();
+ void compute_colmajor_tn();
+ void compute_colmajor_tt();
+
+ const float *lhs_data_;
+ const float *rhs_data_;
+ float *res_data_;
+
+ sgemmType_t major_type_;
+ sgemmTrans_t ltrans_;
+ sgemmTrans_t rtrans_;
+
+ 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_;
+
+ shardType_t shard_type_;
+ int cache_div_;
+};
+
+} // namespace srcn
+} // namespace nnfw
+
+#endif // __NNFW_SRCN_SGEMM_SINGLETHREAD_H__