CommPtr Comm::dup() const { #ifdef OMEGA_H_USE_MPI MPI_Comm impl2; CALL(MPI_Comm_dup(impl_, &impl2)); return CommPtr(new Comm(impl2)); #else return CommPtr(new Comm(srcs_.exists(), srcs_.exists() && srcs_.size() == 1)); #endif }
CommPtr Comm::world() { #ifdef OMEGA_H_USE_MPI MPI_Comm impl; CALL(MPI_Comm_dup(MPI_COMM_WORLD, &impl)); return CommPtr(new Comm(impl)); #else return CommPtr(new Comm()); #endif }
CommPtr Comm::self() { #ifdef OMEGA_H_USE_MPI MPI_Comm impl; CALL(MPI_Comm_dup(MPI_COMM_SELF, &impl)); return CommPtr(new Comm(impl)); #else return CommPtr(new Comm()); #endif }
CommPtr Comm::split(I32 color, I32 key) const { #ifdef OMEGA_H_USE_MPI MPI_Comm impl2; CALL(MPI_Comm_split(impl_, color, key, &impl2)); return CommPtr(new Comm(impl2)); #else (void)color; (void)key; return CommPtr(new Comm()); #endif }
CommPtr Comm::graph_adjacent(Read<I32> srcs, Read<I32> dsts) const { #ifdef OMEGA_H_USE_MPI MPI_Comm impl2; HostRead<I32> sources(srcs); HostRead<I32> destinations(dsts); int reorder = 0; CALL(MPI_Dist_graph_create_adjacent(impl_, sources.size(), sources.data(), OMEGA_H_MPI_UNWEIGHTED, destinations.size(), destinations.data(), OMEGA_H_MPI_UNWEIGHTED, MPI_INFO_NULL, reorder, &impl2)); return CommPtr(new Comm(impl2)); #else CHECK(srcs == dsts); return CommPtr(new Comm(true, dsts.size() == 1)); #endif }
CommPtr Comm::graph(Read<I32> dsts) const { #ifdef OMEGA_H_USE_MPI MPI_Comm impl2; int n = 1; int sources[1] = {rank()}; int degrees[1] = {dsts.size()}; HostRead<I32> destinations(dsts); int reorder = 0; CALL(MPI_Dist_graph_create(impl_, n, sources, degrees, destinations.data(), OMEGA_H_MPI_UNWEIGHTED, MPI_INFO_NULL, reorder, &impl2)); return CommPtr(new Comm(impl2)); #else return CommPtr(new Comm(true, dsts.size() == 1)); #endif }
CommPtr Mailbox::put_init() { CommPtr res = CommPtr(new s4u::Comm()); res->sender_ = SIMIX_process_self(); res->mailbox_ = this; return res; }
BaseConnection::BaseConnection(BaseToBotImpl* baseToBot, int botPort, int basePort) { Log::trace("Starting server"); this->baseToBot = baseToBot; this->basePort = basePort; this->communicator = CommPtr(Ice::initialize().get(), [](Ice::Communicator* c) { c->destroy(); }); std::stringstream ss; ss << "tcp -p " << botPort; Ice::ObjectAdapterPtr adapter = communicator-> createObjectAdapterWithEndpoints("BaseToBotImplAdapter", ss.str()); adapter->add(baseToBot, communicator->stringToIdentity("BaseToBotImpl")); adapter->activate(); }