Skip to content

Commit a2d5cb8

Browse files
committed
test++
1 parent 5845d8a commit a2d5cb8

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ ncnn_add_layer_test(RMSNorm)
150150
ncnn_add_layer_test(RNN)
151151
ncnn_add_layer_test(ROIPooling)
152152
ncnn_add_layer_test(ROIAlign)
153+
ncnn_add_layer_test(RotaryEmbed)
153154
ncnn_add_layer_test(Scale)
154155
ncnn_add_layer_test(SDPA)
155156
ncnn_add_layer_test(SELU)

tests/test_rotaryembed.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright 2025 Tencent
2+
// SPDX-License-Identifier: BSD-3-Clause
3+
4+
#include "testutil.h"
5+
6+
static int test_rotaryembed(const ncnn::Mat& a, int interleaved)
7+
{
8+
const int embed_dim = a.w;
9+
const int seqlen = a.h;
10+
const int num_heads = a.c;
11+
12+
ncnn::Mat cos_cache = RandomMat(embed_dim / 2, seqlen);
13+
ncnn::Mat sin_cache = RandomMat(embed_dim / 2, seqlen);
14+
15+
ncnn::ParamDict pd;
16+
pd.set(0, interleaved);
17+
18+
std::vector<ncnn::Mat> weights(0);
19+
20+
std::vector<ncnn::Mat> as(3);
21+
as[0] = a;
22+
as[1] = cos_cache;
23+
as[2] = sin_cache;
24+
25+
int ret = test_layer("RotaryEmbed", pd, weights, as, 1);
26+
if (ret != 0)
27+
{
28+
fprintf(stderr, "test_rotaryembed failed a=(%d %d %d) interleaved=%d\n", a.w, a.h, a.c, interleaved);
29+
}
30+
31+
return ret;
32+
}
33+
34+
static int test_rotaryembed_0()
35+
{
36+
return 0
37+
|| test_rotaryembed(RandomMat(32, 66, 8), 0)
38+
|| test_rotaryembed(RandomMat(26, 64, 8), 1)
39+
|| test_rotaryembed(RandomMat(64, 28, 12), 0)
40+
|| test_rotaryembed(RandomMat(48, 22, 12), 1)
41+
|| test_rotaryembed(RandomMat(44, 28, 64), 0)
42+
|| test_rotaryembed(RandomMat(12, 27, 64), 1)
43+
|| test_rotaryembed(RandomMat(28, 17, 15), 0)
44+
|| test_rotaryembed(RandomMat(28, 17, 15), 1);
45+
}
46+
47+
int main()
48+
{
49+
SRAND(7767517);
50+
51+
return test_rotaryembed_0();
52+
}

tests/test_rotaryembed_oom.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Copyright 2025 Tencent
2+
// SPDX-License-Identifier: BSD-3-Clause
3+
4+
#include "testutil.h"
5+
6+
static int test_rotaryembed_oom(const ncnn::Mat& a, int interleaved)
7+
{
8+
const int embed_dim = a.w;
9+
const int seqlen = a.h;
10+
const int num_heads = a.c;
11+
12+
ncnn::Mat cos_cache = RandomMat(embed_dim / 2, seqlen);
13+
ncnn::Mat sin_cache = RandomMat(embed_dim / 2, seqlen);
14+
15+
ncnn::ParamDict pd;
16+
pd.set(0, interleaved);
17+
18+
std::vector<ncnn::Mat> weights(0);
19+
20+
std::vector<ncnn::Mat> as(3);
21+
as[0] = a;
22+
as[1] = cos_cache;
23+
as[2] = sin_cache;
24+
25+
int ret = test_layer("RotaryEmbed", pd, weights, as, 1);
26+
if (ret != 0)
27+
{
28+
fprintf(stderr, "test_rotaryembed_oom failed a=(%d %d %d) interleaved=%d\n", a.w, a.h, a.c, interleaved);
29+
}
30+
31+
return ret;
32+
}
33+
34+
static int test_rotaryembed_0()
35+
{
36+
return 0
37+
|| test_rotaryembed_oom(RandomMat(32, 66, 8), 0)
38+
|| test_rotaryembed_oom(RandomMat(28, 17, 15), 1);
39+
}
40+
41+
int main()
42+
{
43+
SRAND(7767517);
44+
45+
return test_rotaryembed_0();
46+
}

0 commit comments

Comments
 (0)