Skip to content

Commit

Permalink
fixed resolution of MPI rank in provider lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
mdorier committed Aug 5, 2024
1 parent 0169f1c commit 485b461
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions src/DependencyFinder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ std::shared_ptr<NamedDependency> DependencyFinder::find(
auto client_name = match.str(1); // client to use for provider handles
auto identifier = match.str(2); // name or type
auto provider_id_str = match.str(3); // provider id
auto locator = match.str(4); // address or "local"
auto locator = match.str(4); // address or "local" or MPI rank
if(locator.empty()) locator = "local";

if (provider_id_str.empty()) {
Expand Down Expand Up @@ -360,8 +360,9 @@ std::shared_ptr<NamedDependency>
DependencyFinder::makeProviderHandle(const std::string& client_name,
const std::string& type,
const std::string& name,
const std::string& locator,
const std::string& locatorArg,
std::string* resolved) const {
auto locator = locatorArg;
auto mid = self->m_margo_context->m_mid;
auto client = findClient(type, client_name);
auto service_factory = ModuleContext::getServiceFactory(type);
Expand All @@ -371,6 +372,18 @@ DependencyFinder::makeProviderHandle(const std::string& client_name,
spdlog::trace("Making provider handle to provider {} of type {} at {}",
name, type, locator);

bool locator_is_number = true;
int rank = 0;
for(auto c : locator) {
if(c >= '0' && c <= '9') {
rank = rank*10 + (c - '0');
continue;
}
locator_is_number = false;
break;
}
if(locator_is_number) locator = MPIEnv(self->m_mpi).addressOfRank(rank);

if (locator == "local") {

auto provider_manager_impl = self->m_provider_manager.lock();
Expand Down

0 comments on commit 485b461

Please sign in to comment.