Repository navigation
fix: adding logging/timeout protection - #27
Conversation
|
Tested on 2× p6-b300 (NCCL 2.31.2). Full matrix + pressure pass; perf flat. With |
03028c6 to
3b79153
Compare
cdead70 to
ac94cf7
Compare
ac94cf7 to
938e73a
Compare
The Gin barrier flushed every context without a timeout. It now goes through `flush_with_timeout`, so a NIC that never completes its writes prints a flush timeout and traps instead of spinning. The combine scale-up wait prints one timeout line per scale-up rank instead of one per lane, and the epilogue drain timeout names the ranks.
938e73a to
40bf32d
Compare
akkart-aws
left a comment
There was a problem hiding this comment.
I think overflow should still not be an issue, if we use this
cudaDeviceSetLimit
to set the size of the printf buffer. But according to the documentation, this only works
before the first kernel that uses printf is launched. So if the user application launches
any kernel that uses printf before buffer creation, this fails, but the buffer is normally
created before any such kernel, so in practice it should work, and we can print a warning
when it does fail.
Thanks Arun. Yes we can, just a bit worried when the user is not setting it to be enough and then we need to ask them to set and run the logs for us etc. When the log buffer is overflow it just silently drops the earliest ones. |
The Gin barrier flushed every context without a timeout. It now goes
through
flush_with_timeout, so a NIC that never completes its writesprints a flush timeout and traps instead of spinning.
The combine scale-up wait prints one timeout line per scale-up rank
instead of one per lane, and the epilogue drain timeout names the ranks.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.