gloo/mpi/example/main_unmanaged.cc (22 lines of code) (raw):
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <cassert>
#include <iostream>
#include "gloo/mpi/context.h"
#include "gloo/transport/tcp/device.h"
#include "gloo/allreduce_ring.h"
int main(int argc, char** argv) {
int rv;
rv = MPI_Init(&argc, &argv);
assert(rv == MPI_SUCCESS);
// We'll use the TCP transport in this example
auto dev = gloo::transport::tcp::CreateDevice("localhost");
// Use inner scope to force destruction of context and algorithm
{
// Create Gloo context from MPI communicator
auto context = std::make_shared<gloo::mpi::Context>(MPI_COMM_WORLD);
context->connectFullMesh(dev);
// Create and run simple allreduce
int rank = context->rank;
gloo::AllreduceRing<int> allreduce(context, {&rank}, 1);
allreduce.run();
std::cout << "Result: " << rank << std::endl;
}
rv = MPI_Finalize();
assert(rv == MPI_SUCCESS);
return 0;
}