Skip to content

Commit 4f33b38

Browse files
Merge pull request #493 from cangtianhuang/develop
Fix `api_alias` and `api_merge` in `API Tracer`
2 parents f61e7de + 8d90299 commit 4f33b38

File tree

2 files changed

+44
-25
lines changed

2 files changed

+44
-25
lines changed

tools/api_merge.py

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
1-
EB45 = ["paddle.add_n","paddle.all","paddle.assign","paddle.broadcast_to","paddle.cast","paddle.clip","paddle.concat","paddle.divide","paddle.empty","paddle.empty_like","paddle.full","paddle.incubate.nn.functional.fused_linear","paddle.incubate.nn.functional.fused_rotary_position_embedding","paddle.incubate.nn.functional.swiglu","paddle.is_complex","paddle.maximum","paddle.nn.functional.cross_entropy","paddle.nn.functional.embedding","paddle.nn.functional.linear","paddle.nn.functional.softmax","paddle.ones","paddle.ones_like","paddle.reshape","paddle.sign","paddle.split","paddle.sqrt","paddle.stack","paddle.sum","paddle.take_along_axis","paddle.Tensor.__add__","paddle.Tensor.__eq__","paddle.Tensor.__getitem__","paddle.Tensor.__gt__","paddle.Tensor.__lt__","paddle.Tensor.__mul__","paddle.Tensor.__ne__","paddle.Tensor.__nonzero__","paddle.Tensor.__radd__","paddle.Tensor.__rmul__","paddle.Tensor.__setitem__","paddle.Tensor.__sub__","paddle.Tensor.__truediv__","paddle.Tensor.all","paddle.Tensor.astype","paddle.Tensor.cast","paddle.Tensor.clone","paddle.Tensor.detach","paddle.Tensor.dim","paddle.Tensor.item","paddle.Tensor.max","paddle.Tensor.mean","paddle.Tensor.norm","paddle.Tensor.put_along_axis","paddle.Tensor.reshape","paddle.Tensor.scale","paddle.Tensor.squeeze","paddle.Tensor.sum","paddle.Tensor.tolist","paddle.Tensor.unsqueeze","paddle.Tensor.zero_","paddle.topk","paddle.transpose","paddle.zeros","paddle.zeros_like"]
2-
EB5 = ["paddle.Tensor.__add__","paddle.Tensor.__and__","paddle.Tensor.__eq__","paddle.Tensor.__ge__","paddle.Tensor.__getitem__","paddle.Tensor.__gt__","paddle.Tensor.__le__","paddle.Tensor.__lt__","paddle.Tensor.__mul__","paddle.Tensor.__ne__","paddle.Tensor.__neg__","paddle.Tensor.__nonzero__","paddle.Tensor.__or__","paddle.Tensor.__radd__","paddle.Tensor.__rmul__","paddle.Tensor.__rpow__","paddle.Tensor.__rsub__","paddle.Tensor.__rtruediv__","paddle.Tensor.__setitem__","paddle.Tensor.__sub__","paddle.Tensor.__truediv__","paddle.Tensor.all","paddle.Tensor.any","paddle.Tensor.astype","paddle.Tensor.cast","paddle.Tensor.clone","paddle.Tensor.detach","paddle.Tensor.dim","paddle.Tensor.expand","paddle.Tensor.item","paddle.Tensor.mean","paddle.Tensor.norm","paddle.Tensor.put_along_axis","paddle.Tensor.scale","paddle.Tensor.split","paddle.Tensor.square","paddle.Tensor.squeeze","paddle.Tensor.sum","paddle.Tensor.topk","paddle.Tensor.transpose","paddle.Tensor.unsqueeze","paddle.Tensor.zero_","paddle.add","paddle.add_n","paddle.amax","paddle.amin","paddle.any","paddle.arange","paddle.as_complex","paddle.as_real","paddle.assign","paddle.broadcast_shape","paddle.broadcast_to","paddle.cast","paddle.chunk","paddle.clip","paddle.complex","paddle.concat","paddle.cos","paddle.divide","paddle.empty","paddle.empty_like","paddle.expand","paddle.flatten","paddle.full","paddle.full_like","paddle.gather_nd","paddle.incubate.nn.functional.fused_dropout_add","paddle.incubate.nn.functional.fused_linear","paddle.incubate.nn.functional.swiglu","paddle.index_select","paddle.is_complex","paddle.isfinite","paddle.isinf","paddle.isnan","paddle.logical_not","paddle.logsumexp","paddle.maximum","paddle.mean","paddle.median","paddle.multiply","paddle.nn.functional.cross_entropy","paddle.nn.functional.dropout","paddle.nn.functional.embedding","paddle.nn.functional.linear","paddle.nn.functional.pad","paddle.nn.functional.sigmoid","paddle.nonzero","paddle.numel","paddle.ones","paddle.ones_like","paddle.polar","paddle.pow","paddle.repeat_interleave","paddle.reshape","paddle.scatter_nd_add","paddle.shape","paddle.sign","paddle.sin","paddle.slice","paddle.split","paddle.sqrt","paddle.stack","paddle.sum","paddle.take_along_axis","paddle.topk","paddle.transpose","paddle.unsqueeze","paddle.var","paddle.where","paddle.zeros","paddle.zeros_like"]
3-
deepseek_v3 = ["paddle.arange","paddle.assign","paddle.broadcast_shape","paddle.broadcast_to","paddle.cast","paddle.clip","paddle.concat","paddle.divide","paddle.empty","paddle.empty_like","paddle.full","paddle.incubate.nn.functional.swiglu","paddle.logsumexp","paddle.matmul","paddle.maximum","paddle.mean","paddle.nn.functional.cross_entropy","paddle.nn.functional.embedding","paddle.nn.functional.sigmoid","paddle.ones","paddle.ones_like","paddle.outer","paddle.reshape","paddle.split","paddle.sqrt","paddle.stack","paddle.sum","paddle.Tensor.__add__","paddle.Tensor.__eq__","paddle.Tensor.__getitem__","paddle.Tensor.__gt__","paddle.Tensor.__len__","paddle.Tensor.__mul__","paddle.Tensor.__ne__","paddle.Tensor.__nonzero__","paddle.Tensor.__radd__","paddle.Tensor.__rmul__","paddle.Tensor.__rpow__","paddle.Tensor.__rsub__","paddle.Tensor.__rtruediv__","paddle.Tensor.__sub__","paddle.Tensor.__truediv__","paddle.Tensor.astype","paddle.Tensor.cast","paddle.Tensor.cos","paddle.Tensor.detach","paddle.Tensor.dim","paddle.Tensor.expand","paddle.Tensor.item","paddle.Tensor.mean","paddle.Tensor.put_along_axis","paddle.Tensor.reshape","paddle.Tensor.sin","paddle.Tensor.square","paddle.Tensor.sum","paddle.Tensor.topk","paddle.Tensor.transpose","paddle.Tensor.unsqueeze","paddle.Tensor.view","paddle.Tensor.zero_","paddle.topk","paddle.transpose","paddle.where","paddle.zeros","paddle.zeros_like"]
1+
from pathlib import Path
42

5-
all = list(set(EB45) | set(EB5) | set(deepseek_v3))
3+
apis = {}
4+
folder_path = Path("tools/api_tracer/trace_output")
5+
for dir_path in folder_path.glob("*/"):
6+
dir_name = dir_path.name
7+
print(dir_name)
8+
file = dir_path / "apis.txt"
9+
if file.exists():
10+
apis[dir_name] = set(file.read_text().splitlines())
611

12+
all = set()
13+
for api_set in apis.values():
14+
all.update(api_set)
15+
16+
result = "API\t"
17+
for name in apis.keys():
18+
result += name + "\t"
19+
result += "\n"
720
for api in all:
8-
result = api + "\t"
9-
if api in EB45:
10-
result += "是\t"
11-
else:
12-
result += "否\t"
13-
if api in EB5:
14-
result += "是\t"
15-
else:
16-
result += "否\t"
17-
if api in deepseek_v3:
18-
result += "是\t"
19-
else:
20-
result += "否\t"
21-
print(result)
21+
result += api + "\t"
22+
for name in apis.keys():
23+
if api in apis[name]:
24+
result += "是\t"
25+
else:
26+
result += "否\t"
27+
result += "\n"
28+
print(result)
29+
30+
with open("tools/api_tracer/trace_output/apis.txt", "w") as f:
31+
f.writelines(result)

tools/api_tracer/api_alias.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44

55
import yaml
66

7-
INPUT_DIR = Path("tools/api_tracer/trace_output_tmp")
7+
INPUT_DIR = Path("tools/api_tracer/trace_output_test_train/Qwen/Qwen3-0.6B")
88

99

1010
def parse_api(api):
1111
if ".Tensor." in api:
1212
return api
13-
if re.search(r"\.[A-Z][a-zA-Z0-9]*\.", api):
14-
return api.rsplit(".", 1)[0]
13+
parts = api.rsplit(".", 1)
14+
if len(parts) == 2 and re.match(r".*\.[A-Z][a-zA-Z0-9]*$", parts[0]):
15+
return parts[0]
1516
return api
1617

1718

@@ -31,19 +32,27 @@ def process_file(input_path, target_apis):
3132
alias_apis = set()
3233
excluded_apis = set()
3334
for api in apis:
34-
alias_api = api
35+
if not api.startswith("torch."):
36+
continue
37+
if api.startswith("torch.Tensor.__"):
38+
alias_apis.add(api)
39+
continue
40+
alias_api = parse_api(api)
3541
if alias_api not in target_apis:
36-
excluded_apis.add(api)
42+
excluded_apis.add(alias_api)
3743
continue
38-
alias_apis.add(parse_api(api))
44+
alias_apis.add(alias_api)
3945

4046
with output_path.open("w") as f:
4147
f.writelines(f"{line}\n" for line in sorted(alias_apis))
4248
print(f"Write {len(alias_apis)} alias apis to {output_path}", flush=True)
4349

4450
with output_excluded_path.open("w") as f:
4551
f.writelines(f"{line}\n" for line in sorted(excluded_apis))
46-
print(f"Write {len(excluded_apis)} excluded apis to {output_excluded_path}", flush=True)
52+
print(
53+
f"Write {len(excluded_apis)} excluded apis to {output_excluded_path}",
54+
flush=True,
55+
)
4756

4857

4958
def main():

0 commit comments

Comments
 (0)