Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
4286bb9f
MegEngine
项目概览
MegEngine 天元
/
MegEngine
大约 1 年 前同步成功
通知
399
Star
4705
Fork
582
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4286bb9f
编写于
4月 26, 2021
作者:
M
Megvii Engine Team
提交者:
huangxinda
7月 19, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(profiler): add launch script for profiler
GitOrigin-RevId: fdfb60b1493fab8300e4e84afd383923f0f081f3
上级
9d47c3ba
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
89 addition
and
0 deletion
+89
-0
imperative/python/megengine/tools/profiler.py
imperative/python/megengine/tools/profiler.py
+89
-0
未找到文件。
imperative/python/megengine/tools/profiler.py
0 → 100755
浏览文件 @
4286bb9f
import
argparse
import
getopt
import
os
import
runpy
import
sys
from
megengine.logger
import
get_logger
from
megengine.utils.profiler
import
Profiler
,
merge_trace_events
def
main
():
parser
=
argparse
.
ArgumentParser
(
prog
=
"megengine.tools.profiler"
,
description
=
"Profiling megengine program"
)
parser
.
add_argument
(
"-m"
,
"--module"
,
action
=
"store_true"
,
help
=
"whether launch program as module"
)
parser
.
add_argument
(
"-o"
,
"--output"
,
type
=
str
,
help
=
"output file location"
)
parser
.
add_argument
(
"-f"
,
"--format"
,
action
=
"append"
,
type
=
str
,
help
=
"output file format"
,
choices
=
Profiler
.
valid_formats
,
)
parser
.
add_argument
(
"--merge_trace_events"
,
action
=
"store_true"
,
)
parser
.
add_argument
(
"--clean"
,
action
=
"store_true"
,
)
for
opt
in
Profiler
.
valid_options
:
parser
.
add_argument
(
"--"
+
opt
,
type
=
int
,
default
=
None
)
args
,
extras
=
parser
.
parse_known_args
(
sys
.
argv
[
1
:])
prof_args
=
{}
for
opt
in
Profiler
.
valid_options
:
optval
=
getattr
(
args
,
opt
,
None
)
if
optval
is
not
None
:
prof_args
[
opt
]
=
optval
if
args
.
output
is
not
None
:
prof_args
[
"path"
]
=
args
.
output
if
args
.
format
:
prof_args
[
"formats"
]
=
args
.
format
if
args
.
clean
:
for
file
in
os
.
listdir
(
profiler
.
directory
):
os
.
remove
(
os
.
path
.
join
(
profiler
.
directory
,
file
))
if
len
(
extras
)
==
0
:
if
not
args
.
merge_trace_events
:
parser
.
print_usage
()
exit
(
1
)
else
:
filename
=
extras
[
0
]
if
not
args
.
module
:
if
not
os
.
path
.
exists
(
filename
):
get_logger
().
fatal
(
"cannot find file {}"
.
format
(
filename
))
exit
(
1
)
filename
=
os
.
path
.
realpath
(
filename
)
# Replace profiler's dir with script's dir in front of module search path.
sys
.
path
[
0
]
=
os
.
path
.
dirname
(
filename
)
sys
.
argv
[:]
=
[
filename
,
*
extras
[
1
:]]
profiler
=
Profiler
(
**
prof_args
)
with
profiler
:
if
args
.
module
:
runpy
.
run_module
(
filename
)
else
:
run_script
(
filename
)
profiler
.
dump
()
if
args
.
merge_trace_events
:
merge_trace_events
(
profiler
.
directory
)
def
run_module
(
modulename
):
runpy
.
run_module
(
modulename
,
None
,
"__main__"
,
True
)
def
run_script
(
filename
):
runpy
.
run_path
(
filename
,
None
,
"__main__"
)
if
__name__
==
"__main__"
:
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录