Files
alibaba--mnn/test/plugin/PluginMatMulCommon.hpp
2026-07-13 13:33:03 +08:00

45 lines
1.1 KiB
C++

//
// PluginMatMulCommon.hpp
// MNNTests
//
// Created by MNN on 2020/04/07.
// Copyright © 2018, Alibaba Group Holding Limited
//
#ifndef MNN_TEST_PLUGIN_PLUGIN_MATMUL_COMMON_HPP_
#define MNN_TEST_PLUGIN_PLUGIN_MATMUL_COMMON_HPP_
#include <cstring>
namespace MNN {
namespace plugin {
inline void doGemm(const int M, const int N, const int K, // NOLINT
const bool transpose_x, const bool transpose_y, // NOLINT
const float* x, const float* y, float* out) {
memset(out, 0, M * N * sizeof(float));
int x_m_stride = K, x_k_stride = 1, y_k_stride = N, y_n_stride = 1;
if (transpose_x) {
x_m_stride = 1;
x_k_stride = M;
}
if (transpose_y) {
y_k_stride = 1;
y_n_stride = K;
}
for (int m = 0; m < M; ++m) {
for (int n = 0; n < N; ++n) {
for (int k = 0; k < K; ++k) {
out[m * N + n] += x[m * x_m_stride + k * x_k_stride] * // NOLINT
y[k * y_k_stride + n * y_n_stride];
}
}
}
}
} // namespace plugin
} // namespace MNN
#endif // MNN_TEST_PLUGIN_PLUGIN_MATMUL_COMMON_HPP_