-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support both use_calc_stream and sync_op in all_reduce #45282
Conversation
你的PR提交成功,感谢你对开源项目的贡献! |
8ea3053
to
877abba
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some comments.
python/paddle/fluid/tests/unittests/collective/test_communication_api_base.py
Outdated
Show resolved
Hide resolved
python/paddle/fluid/tests/unittests/collective/test_communication_api_base.py
Outdated
Show resolved
Hide resolved
bef166b
to
be027c4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@@ -89,6 +95,17 @@ class ProcessGroupNCCL : public ProcessGroup { | |||
return std::string(NCCL_BACKEND_NAME); | |||
} | |||
|
|||
std::shared_ptr<ProcessGroup::Task> AllReduce( | |||
std::vector<phi::DenseTensor>& in_tensors, // NOLINT |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in_tensors will be modified?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this will be modified in the following pr
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 单测时间设置
PR types
New features
PR changes
APIs
Describe
In the new communication library, we designed ProcessGroup to manage different communication group. Inside each process_group has its own stream which all communications in this group will be done on this stream. For high level API, like distributed.all_reduce, we use
use_calc_stream
to indicate whether this operation is sync or not. Notice that frequently add unnecessary cuda events may lead to low performance on some model. In order to achieve high performance, this pr add a new API name distributed.stream.all_reduce. This new API provideduse_calc_stream
andsync_op
both.sync_op
, indicate whether communication is sync or not.use_calc_stream
, do communicate on calc stream, save the time of switching stream. Only work whensync_op
is true.对应中文文档,PaddlePaddle/docs#5225