mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-15 21:00:47 +00:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/60543 Since now c10d is part of libtorch, it would also be nice if the sources lived all in one place. ghstack-source-id: 132306292 Test Plan: It builds Reviewed By: cbalioglu Differential Revision: D29062002 fbshipit-source-id: d9e1301e9d73e1643fa0f0119cd2d618f1ad52e6
33 lines
912 B
C++
33 lines
912 B
C++
#include <c10/util/irange.h>
|
|
#include <c10d/FileStore.hpp>
|
|
#include <c10d/ProcessGroupGloo.hpp>
|
|
|
|
using namespace ::c10d;
|
|
|
|
int main(int argc, char** argv) {
|
|
int rank = atoi(getenv("RANK"));
|
|
int size = atoi(getenv("SIZE"));
|
|
auto store = c10::make_intrusive<FileStore>("/tmp/c10d_example", size);
|
|
ProcessGroupGloo pg(store, rank, size);
|
|
|
|
// Create some tensors
|
|
const auto ntensors = 10;
|
|
std::vector<at::Tensor> tensors;
|
|
for (const auto i : c10::irange(ntensors)) {
|
|
auto x =
|
|
at::ones({1000, 16 * (i + 1)}, at::TensorOptions(at::CPU(at::kFloat)));
|
|
tensors.push_back(x);
|
|
}
|
|
|
|
// Kick off work
|
|
std::vector<c10::intrusive_ptr<ProcessGroup::Work>> pending;
|
|
for (const auto i : c10::irange(ntensors)) {
|
|
std::vector<at::Tensor> tmp = {tensors[i]};
|
|
pending.push_back(pg.allreduce(tmp));
|
|
}
|
|
|
|
// Wait for work to complete
|
|
for (auto& work : pending) {
|
|
work->wait();
|
|
}
|
|
}
|