相关疑难解决方法(0)

探针似乎消耗了CPU

我有一个MPI程序,由一个主进程组成,将命令交给一堆从进程.收到命令后,slave只需调用system()来执行此操作.当奴隶正在等待命令时,他们正在消耗100%的各自CPU.似乎Probe()坐在一个紧凑的循环中,但这只是猜测.您认为可能导致这种情况,我该怎么做才能解决这个问题?

这是从属进程中等待命令的代码.同时观察日志和top命令表明,当奴隶消耗他们的CPU时,他们就在这个功能中.

MpiMessage
Mpi::BlockingRecv() {
  LOG(8, "BlockingRecv");

  MpiMessage result;
  MPI::Status status;

  MPI::COMM_WORLD.Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, status);
  result.source = status.Get_source();
  result.tag = status.Get_tag();

  int num_elems = status.Get_count(MPI_CHAR);
  char buf[num_elems + 1];
  MPI::COMM_WORLD.Recv(
     buf, num_elems, MPI_CHAR, result.source, result.tag
  );
  result.data = buf;
  LOG(7, "BlockingRecv about to return (%d, %d)", result.source, result.tag);
  return result;
}
Run Code Online (Sandbox Code Playgroud)

mpi openmpi

9
推荐指数
1
解决办法
3116
查看次数

标签 统计

mpi ×1

openmpi ×1