Files
ncnn/tests/test_gemm_1a.cpp
nihui 63a7a8a590 optional layer support any packing (#6392)
* split gemm tests, enable gemm vulkan any packing
2025-11-07 14:23:53 +08:00

72 lines
1.5 KiB
C++

// Copyright 2023 Tencent
// SPDX-License-Identifier: BSD-3-Clause
#include "test_gemm_1.h"
int main()
{
SRAND(7767517);
int mnk[][3] = {
{1, 1, 1},
{2, 2, 2},
{3, 3, 3},
{4, 4, 4},
{5, 5, 5},
{6, 6, 6},
{7, 7, 7},
{8, 8, 8},
{15, 15, 15},
{16, 16, 16},
{24, 24, 24},
{31, 31, 31},
{31, 32, 31},
{32, 31, 32},
{32, 32, 32},
{20, 32, 20}
};
int tile_mnk[][3] = {
{1, 1, 1},
{2, 2, 2},
{4, 4, 4},
{8, 8, 8},
{12, 12, 12},
{16, 16, 16},
{20, 20, 20},
{24, 24, 24},
{28, 28, 28}
};
int mnk_count = sizeof(mnk) / sizeof(int) / 3;
int tile_mnk_count = sizeof(tile_mnk) / sizeof(int) / 3;
for (int i = 0; i < mnk_count; i++)
{
int M = mnk[i][0];
int N = mnk[i][1];
int K = mnk[i][2];
for (int j = 0; j < tile_mnk_count; j++)
{
int TILE_M = tile_mnk[j][0];
int TILE_N = tile_mnk[j][1];
int TILE_K = tile_mnk[j][2];
if (TILE_M >= M && TILE_N >= N && TILE_K >= K)
continue;
int ret = test_gemm_0(M, N, K, TILE_M, TILE_N, TILE_K);
if (ret != 0)
return ret;
}
// test no tiling
int ret = test_gemm_0(M, N, K, 100, 100, 100);
if (ret != 0)
return ret;
}
return 0;
}