| #include <ATen/ThreadLocalState.h> | |
| #include <torch/csrc/distributed/c10d/ProcessGroup.hpp> | |
| #include <c10/util/Logging.h> | |
| #include <fmt/format.h> | |
| namespace c10d { | |
| std::string opTypeToString(OpType opType) { | |
| switch (opType) { | |
| case OpType::BROADCAST: | |
| return "BROADCAST"; | |
| case OpType::ALLREDUCE: | |
| return "ALLREDUCE"; | |
| case OpType::ALLREDUCE_COALESCED: | |
| return "ALLREDUCE_COALESCED"; | |
| case OpType::REDUCE: | |
| return "REDUCE"; | |
| case OpType::ALLGATHER: | |
| return "ALLGATHER"; | |
| case OpType::_ALLGATHER_BASE: | |
| return "_ALLGATHER_BASE"; | |
| case OpType::ALLGATHER_COALESCED: | |
| return "ALLGATHER_COALESCED"; | |
| case OpType::GATHER: | |
| return "GATHER"; | |
| case OpType::SCATTER: | |
| return "SCATTER"; | |
| case OpType::REDUCE_SCATTER: | |
| return "REDUCE_SCATTER"; | |
| case OpType::ALLTOALL_BASE: | |
| return "ALLTOALL_BASE"; | |
| case OpType::ALLTOALL: | |
| return "ALLTOALL"; | |
| case OpType::SEND: | |
| return "SEND"; | |
| case OpType::RECV: | |
| return "RECV"; | |
| case OpType::RECVANYSOURCE: | |
| return "RECVANYSOURCE"; | |
| case OpType::BARRIER: | |
| return "BARRIER"; | |
| case OpType::UNKNOWN: | |
| return "UNKNOWN"; | |
| case OpType::_REDUCE_SCATTER_BASE: | |
| return "_REDUCE_SCATTER_BASE"; | |
| default: | |
| TORCH_INTERNAL_ASSERT(false, "Unknown op type!"); | |
| } | |
| return "UNKNOWN"; | |
| } | |
| bool isP2POp(OpType opType, bool batchP2P /*= false*/) { | |
| if (batchP2P) | |
| return false; | |
| return opType == OpType::SEND || opType == OpType::RECV || | |
| opType == OpType::RECVANYSOURCE; | |
| } | |
| ProcessGroup::ProcessGroup(int rank, int size) | |
| : rank_(rank), size_(size), dist_debug_level_(debug_level()) { | |
| C10_LOG_API_USAGE_ONCE("c10d.process_group"); | |
| } | |
| ProcessGroup::~ProcessGroup() {} | |
| void ProcessGroup::init() { | |
| C10_LOG_API_USAGE_ONCE( | |
| fmt::format("c10d.process_group_{}", getBackendName())); | |
| } | |
| } // namespace c10d |