Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
eee3e559
MegEngine
项目概览
MegEngine 天元
/
MegEngine
大约 1 年 前同步成功
通知
396
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,发现更多精彩内容 >>
提交
eee3e559
编写于
5月 08, 2020
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(mge/distributed): add multiprocess launcher
GitOrigin-RevId: 7d831d125fcfa22f203ab92fb0490536abf156f7
上级
cde055e8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
2 deletion
+19
-2
python_module/megengine/distributed/__init__.py
python_module/megengine/distributed/__init__.py
+1
-0
python_module/megengine/distributed/util.py
python_module/megengine/distributed/util.py
+18
-2
未找到文件。
python_module/megengine/distributed/__init__.py
浏览文件 @
eee3e559
...
...
@@ -18,6 +18,7 @@ from .functional import (
)
from
.util
import
(
get_backend
,
get_free_ports
,
get_master_ip
,
get_master_port
,
get_rank
,
...
...
python_module/megengine/distributed/util.py
浏览文件 @
eee3e559
...
...
@@ -7,6 +7,7 @@
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import
functools
import
socket
from
typing
import
Callable
,
Optional
import
megengine._internal
as
mgb
...
...
@@ -110,7 +111,7 @@ def synchronized(func: Callable):
Specifically, we use this to prevent data race during hub.load"""
@
functools
.
wraps
(
func
)
def
_
(
*
args
,
**
kwargs
):
def
wrapper
(
*
args
,
**
kwargs
):
if
not
is_distributed
():
return
func
(
*
args
,
**
kwargs
)
...
...
@@ -118,4 +119,19 @@ def synchronized(func: Callable):
group_barrier
()
return
ret
return
_
return
wrapper
def
get_free_ports
(
num
:
Optional
[
int
]
=
1
)
->
int
:
"""Get one or more free ports.
Return an integer if num is 1, otherwise return a list of integers
"""
socks
,
ports
=
[],
[]
for
i
in
range
(
num
):
sock
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
sock
.
bind
((
""
,
0
))
socks
.
append
(
sock
)
ports
.
append
(
sock
.
getsockname
()[
1
])
for
sock
in
socks
:
sock
.
close
()
return
ports
[
0
]
if
num
==
1
else
ports
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录