Skip to content

Commit c4a4485

Browse files
authored
Merge branch 'main' into update-tester-files
2 parents b79515c + 0d941e3 commit c4a4485

File tree

11 files changed

+866241
-28
lines changed

11 files changed

+866241
-28
lines changed

engineV2-README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
| `--custom_device_vs_gpu` | bool | 启用自定义设备与GPU的精度对比测试模式(默认 False) |
9090
| `--custom_device_vs_gpu_mode` | str | 自定义设备与GPU对比的模式:`upload``download`(默认 `upload`|
9191
| `--bitwise_alignment` | bool | 是否进行诸位对齐对比,开启后所有的api的精度对比都按照atol=0.0,rtol = 0.0的精度对比结果(默认False)|
92+
| `--generate_failed_tests` | bool | 是否为失败的测试用例生成可复现的测试文件。开启后,当测试失败时,会在`failed_tests`目录下生成独立的Python测试文件,便于后续复现和调试(默认False)|
9293
| `--exit_on_error` | bool | 是否在精度测试出现`paddle_error`或者 `accuracy_error` 错误时立即退出测试进程(exit code 为1)。默认为False,测试进程会继续执行 |
9394
9495
### 示例命令

engineV2.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
"random_seed",
5454
"bos_conf_path",
5555
"bcecmd_path",
56+
"generate_failed_tests",
5657
"bitwise_alignment",
5758
"exit_on_error",
5859
}
@@ -684,6 +685,12 @@ def main():
684685
default=False,
685686
help="Whether to using bitwise alignment when run accuracy test",
686687
)
688+
parser.add_argument(
689+
"--generate_failed_tests",
690+
type=parse_bool,
691+
default=False,
692+
help="Whether to generate reproducible test files for failed cases",
693+
)
687694
parser.add_argument(
688695
"--exit_on_error",
689696
type=parse_bool,

tester/api_config/8_big_tensor/slice/big_tensor_1223.txt

Lines changed: 1112 additions & 0 deletions
Large diffs are not rendered by default.

tester/api_config/8_big_tensor/slice/big_tensor_1225_setitem.txt

Lines changed: 66090 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), slice(0,100,2))
2+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), slice(0,100,2))
3+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), slice(0,100,2), 1.25)
4+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), slice(0,100,2), 1.25)
5+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), slice(0,100,2), Tensor([1], 'float32'))
6+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), slice(0,100,2), Tensor([1], 'float32'))
7+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),slice(None,None,None),slice(1,-1,None),))
8+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),slice(None,None,None),slice(1,-1,None),))
9+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),slice(None,None,None),slice(1,-1,None),), 1.25)
10+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),slice(None,None,None),slice(1,-1,None),), 1.25)
11+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(0,4,2),slice(None,None,None),slice(1,-1,None),), Tensor([1], 'float32'))
12+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(0,4,2),slice(None,None,None),slice(1,-1,None),), Tensor([1], 'float32'))
13+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,0,0,None,))
14+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,0,0,None,))
15+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,0,0,None,), 1.25)
16+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,0,0,None,), 1.25)
17+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(0,0,0,None,), Tensor([1], 'float32'))
18+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(0,0,0,None,), Tensor([1], 'float32'))
19+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Ellipsis)
20+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Ellipsis)
21+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Ellipsis, 1.25)
22+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Ellipsis, 1.25)
23+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Ellipsis, Tensor([1], 'float32'))
24+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Ellipsis, Tensor([1], 'float32'))
25+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,slice(None,None,None),0,None,))
26+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,slice(None,None,None),0,None,))
27+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,slice(None,None,None),0,None,), 1.25)
28+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(0,slice(None,None,None),0,None,), 1.25)
29+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(0,slice(None,None,None),0,None,), Tensor([1], 'float32'))
30+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(0,slice(None,None,None),0,None,), Tensor([1], 'float32'))
31+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), True)
32+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), True)
33+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), True, 1.25)
34+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), True, 1.25)
35+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), True, Tensor([1], 'float32'))
36+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), True, Tensor([1], 'float32'))
37+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108], 'bool'))
38+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108], 'bool'))
39+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108], 'bool'), 1.25)
40+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108], 'bool'), 1.25)
41+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([108], 'bool'), Tensor([1], 'float32'))
42+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([108], 'bool'), Tensor([1], 'float32'))
43+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64], 'bool'))
44+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64], 'bool'))
45+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64], 'bool'), 1.25)
46+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64], 'bool'), 1.25)
47+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([108, 64], 'bool'), Tensor([1], 'float32'))
48+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([108, 64], 'bool'), Tensor([1], 'float32'))
49+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64, 12288], 'bool'))
50+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64, 12288], 'bool'))
51+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64, 12288], 'bool'), 1.25)
52+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([108, 64, 12288], 'bool'), 1.25)
53+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([108, 64, 12288], 'bool'), Tensor([1], 'float32'))
54+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([108, 64, 12288], 'bool'), Tensor([1], 'float32'))
55+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), list[1, 0, 2])
56+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), list[1, 0, 2])
57+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), list[1, 0, 2], 1.25)
58+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), list[1, 0, 2], 1.25)
59+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), list[1, 0, 2], Tensor([1], 'float32'))
60+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), list[1, 0, 2], Tensor([1], 'float32'))
61+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(list[0, 1],list[3, 2],list[0, 2],))
62+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(list[0, 1],list[3, 2],list[0, 2],))
63+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(list[0, 1],list[3, 2],list[0, 2],), 1.25)
64+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(list[0, 1],list[3, 2],list[0, 2],), 1.25)
65+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(list[0, 1],list[3, 2],list[0, 2],), Tensor([1], 'float32'))
66+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(list[0, 1],list[3, 2],list[0, 2],), Tensor([1], 'float32'))
67+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([2, 4, 6], 'int'))
68+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([2, 4, 6], 'int'))
69+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([2, 4, 6], 'int'), 1.25)
70+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([2, 4, 6], 'int'), 1.25)
71+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([2, 4, 6], 'int'), Tensor([1], 'float32'))
72+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([2, 4, 6], 'int'), Tensor([1], 'float32'))
73+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([], 'int'))
74+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), Tensor([], 'int'))
75+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([], 'int'), 1.25)
76+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), Tensor([], 'int'), 1.25)
77+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([], 'int'), Tensor([1], 'float32'))
78+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), Tensor([], 'int'), Tensor([1], 'float32'))
79+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([2], 'int'),Tensor([2], 'int'),))
80+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([2], 'int'),Tensor([2], 'int'),))
81+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([2], 'int'),Tensor([2], 'int'),), 1.25)
82+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([2], 'int'),Tensor([2], 'int'),), 1.25)
83+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(Tensor([2], 'int'),Tensor([2], 'int'),), Tensor([1], 'float32'))
84+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(Tensor([2], 'int'),Tensor([2], 'int'),), Tensor([1], 'float32'))
85+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),3,list[0, 2],))
86+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),3,list[0, 2],))
87+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),3,list[0, 2],), 1.25)
88+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),3,list[0, 2],), 1.25)
89+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(None,None,None),3,list[0, 2],), Tensor([1], 'float32'))
90+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(None,None,None),3,list[0, 2],), Tensor([1], 'float32'))
91+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),list[0],None,0,))
92+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),list[0],None,0,))
93+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),list[0],None,0,), 1.25)
94+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(None,None,None),list[0],None,0,), 1.25)
95+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(None,None,None),list[0],None,0,), Tensor([1], 'float32'))
96+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(None,None,None),list[0],None,0,), Tensor([1], 'float32'))
97+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([108], 'bool'),slice(None,None,None),-1,))
98+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([108], 'bool'),slice(None,None,None),-1,))
99+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([108], 'bool'),slice(None,None,None),-1,), 1.25)
100+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(Tensor([108], 'bool'),slice(None,None,None),-1,), 1.25)
101+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(Tensor([108], 'bool'),slice(None,None,None),-1,), Tensor([1], 'float32'))
102+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(Tensor([108], 'bool'),slice(None,None,None),-1,), Tensor([1], 'float32'))
103+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),3,list[0, 2],))
104+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),3,list[0, 2],))
105+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),3,list[0, 2],), 1.25)
106+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float16'), tuple(slice(0,4,2),3,list[0, 2],), 1.25)
107+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(0,4,2),3,list[0, 2],), Tensor([1], 'float32'))
108+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288], 'float32'), tuple(slice(0,4,2),3,list[0, 2],), Tensor([1], 'float32'))
109+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(1,list[1, 2],slice(None,None,None),Tensor([2], 'int'),))
110+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(1,list[1, 2],slice(None,None,None),Tensor([2], 'int'),))
111+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(1,list[1, 2],slice(None,None,None),Tensor([2], 'int'),), 1.25)
112+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(1,list[1, 2],slice(None,None,None),Tensor([2], 'int'),), 1.25)
113+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float32'), tuple(1,list[1, 2],slice(None,None,None),Tensor([2], 'int'),), Tensor([1], 'float32'))
114+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float32'), tuple(1,list[1, 2],slice(None,None,None),Tensor([2], 'int'),), Tensor([1], 'float32'))
115+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(slice(None,None,None),list[1, 2],slice(None,None,None),list[1],))
116+
paddle.Tensor.__getitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(slice(None,None,None),list[1, 2],slice(None,None,None),list[1],))
117+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(slice(None,None,None),list[1, 2],slice(None,None,None),list[1],), 1.25)
118+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float16'), tuple(slice(None,None,None),list[1, 2],slice(None,None,None),list[1],), 1.25)
119+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float32'), tuple(slice(None,None,None),list[1, 2],slice(None,None,None),list[1],), Tensor([1], 'float32'))
120+
paddle.Tensor.__setitem__(Tensor([108, 64, 12288, 3], 'float32'), tuple(slice(None,None,None),list[1, 2],slice(None,None,None),list[1],), Tensor([1], 'float32'))

tester/api_config/config_analyzer.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2491,15 +2491,18 @@ def get_padding_offset(bsz, max_seq_len, seq_lens_this_time):
24912491
arr = self.get_arg(api_config, 0, "arr")
24922492
value = self.get_arg(api_config, 2, "value")
24932493
min_dim = min(arr.shape)
2494-
if value is not None and hasattr(value, "shape"):
2495-
indices = numpy.zeros(self.numel(), dtype="int64")
2496-
num_true = min(value.shape[0], self.numel())
2497-
true_indices = numpy.random.choice(
2498-
self.numel(), size=num_true, replace=False
2499-
)
2500-
indices[true_indices] = 1
2494+
if self.dtype == "bool":
2495+
if value is not None and hasattr(value, "shape"):
2496+
indices = numpy.zeros(self.numel(), dtype="int64")
2497+
num_true = min(value.shape[0], self.numel())
2498+
true_indices = numpy.random.choice(
2499+
self.numel(), size=num_true, replace=False
2500+
)
2501+
indices[true_indices] = 1
2502+
else:
2503+
indices = numpy.random.choice([0, 1], size=self.numel())
25012504
else:
2502-
indices = numpy.random.choice([0, 1], size=self.numel())
2505+
indices = numpy.random.randint(0, min_dim, size=self.numel())
25032506
self.numpy_tensor = indices.reshape(self.shape).astype(self.dtype)
25042507

25052508
elif api_config.api_name == "paddle.poisson":
@@ -2863,6 +2866,13 @@ def __init__(self, config):
28632866
self.config = config
28642867
self.args = []
28652868
self.kwargs = collections.OrderedDict()
2869+
2870+
# 兼容 paddle.Size([...]) 格式:将其替换为 [...]
2871+
def replace_paddle_size(match):
2872+
shape_list = match.group(1) # 提取 [...] 部分
2873+
return shape_list
2874+
2875+
config = re.sub(r"paddle\.Size\(\s*(\[[^\]]*\])\s*\)", replace_paddle_size, config)
28662876
config = config.replace("Tensor(", "TensorConfig(")
28672877

28682878
self.api_name, offset = self.get_api(config)

0 commit comments

Comments
 (0)