-
Notifications
You must be signed in to change notification settings - Fork 26.3k
Disallow creation of ProcessGroupNCCL without GPUs. #45642
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
Disallow creation of ProcessGroupNCCL without GPUs. #45642
Conversation
Prior to #45181, initializing a NCCL process group would work even if no GPUs were present. Although, now since init_process_group calls `barrier()` this would fail. In general the problem was that we could initialize ProcessGroupNCCL without GPUs and then if we called a method like `barrier()` the process would crash since we do % numGPUs resulting in division by zero. Differential Revision: [D24038839](https://our.internmc.facebook.com/intern/diff/D24038839/) [ghstack-poisoned]
Prior to #45181, initializing a NCCL process group would work even if no GPUs were present. Although, now since init_process_group calls `barrier()` this would fail. In general the problem was that we could initialize ProcessGroupNCCL without GPUs and then if we called a method like `barrier()` the process would crash since we do % numGPUs resulting in division by zero. Differential Revision: [D24038839](https://our.internmc.facebook.com/intern/diff/D24038839/) ghstack-source-id: 113302257 Pull Request resolved: #45642
Codecov Report
@@ Coverage Diff @@
## gh/pritamdamania87/167/base #45642 +/- ##
===============================================================
- Coverage 68.66% 68.66% -0.01%
===============================================================
Files 406 406
Lines 52223 52223
===============================================================
- Hits 35858 35857 -1
- Misses 16365 16366 +1
Continue to review full report at Codecov.
|
osalpekar
left a comment
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.
Will this be cherry-picked into 1.7, since #45181 made it in?
Yes, that is the plan. |
Prior to #45181, initializing a NCCL process group would work even if no GPUs were present. Although, now since init_process_group calls `barrier()` this would fail. In general the problem was that we could initialize ProcessGroupNCCL without GPUs and then if we called a method like `barrier()` the process would crash since we do % numGPUs resulting in division by zero. Differential Revision: [D24038839](https://our.internmc.facebook.com/intern/diff/D24038839/) [ghstack-poisoned]
Pull Request resolved: #45642 Prior to #45181, initializing a NCCL process group would work even if no GPUs were present. Although, now since init_process_group calls `barrier()` this would fail. In general the problem was that we could initialize ProcessGroupNCCL without GPUs and then if we called a method like `barrier()` the process would crash since we do % numGPUs resulting in division by zero. ghstack-source-id: 113490343 Differential Revision: [D24038839](https://our.internmc.facebook.com/intern/diff/D24038839/)
|
This pull request has been merged in b5a2f04. |
) Summary: Note: This PR has been merged into master at b5a2f04 after the 1.7 branch cut (see original PR: #45642). This PR is to merge it into the 1.7 branch. ---- Original Commit Description Follows --- Pull Request resolved: #45642 Prior to #45181, initializing a NCCL process group would work even if no GPUs were present. Although, now since init_process_group calls `barrier()` this would fail. In general the problem was that we could initialize ProcessGroupNCCL without GPUs and then if we called a method like `barrier()` the process would crash since we do % numGPUs resulting in division by zero. ghstack-source-id: 113490343 Test Plan: waitforbuildbot Reviewed By: osalpekar Differential Revision: D24038839 fbshipit-source-id: a1f1db52cabcfb83e06c1a11ae9744afbf03f8dc
) (#46073) Summary: Note: This PR has been merged into master at b5a2f04 after the 1.7 branch cut (see original PR: #45642). This PR is to merge it into the 1.7 branch. ---- Original Commit Description Follows --- Pull Request resolved: #45642 Prior to #45181, initializing a NCCL process group would work even if no GPUs were present. Although, now since init_process_group calls `barrier()` this would fail. In general the problem was that we could initialize ProcessGroupNCCL without GPUs and then if we called a method like `barrier()` the process would crash since we do % numGPUs resulting in division by zero. ghstack-source-id: 113490343 Test Plan: waitforbuildbot Reviewed By: osalpekar Differential Revision: D24038839 fbshipit-source-id: a1f1db52cabcfb83e06c1a11ae9744afbf03f8dc Co-authored-by: Pritam Damania <[email protected]>
Stack from ghstack:
Prior to #45181, initializing a
NCCL process group would work even if no GPUs were present. Although, now since
init_process_group calls
barrier()this would fail.In general the problem was that we could initialize ProcessGroupNCCL without
GPUs and then if we called a method like
barrier()the process would crashsince we do % numGPUs resulting in division by zero.
Differential Revision: D24038839