torch.compiler.set_enable_guard_collectives#
- torch.compiler.set_enable_guard_collectives(enabled)[source]#
在 guard 评估期间启用 collectives,以跨 rank 同步行为。这开销很大:每次进入编译代码区域时,我们都必须发出一个 collective,即使没有 rank 实际需要编译。这有助于防止 NCCL 挂起,方法是确保我们永远不会出现一个 rank 开始重新编译而其他 rank 不编译的情况;它与 enable_compiler_collectives 结合使用特别有用,因为在后一种情况下,这种情况会立即导致挂起(因为所有 rank 同时编译以运行编译器 collectives 是必要的)。与编译器 collectives 一样,你只能在 SPMD 程序上运行此函数,否则会挂起。请注意,只有当有任何编译代码需要 guard 时,才会发出 guard collective;如果这是我们第一次遇到一个 frame,或者该 frame 被跳过,我们不会发出 collectives。
返回 enabled 的先前设置。