提升MPI,连接绝对独立的程序

时间:2015-04-03 13:59:24

标签: c++ boost mpi ipc

我创建了两个必须发送每个/其他消息的程序。例如:第一个程序,如带播放列表的音频'播放器'和第二个程序,如'Visualizer'。

我认为make Player和Visualizer是完全独立的程序,因为这个程序基于不同的框架,我不想混合它。而且我不想使用标准的MS Windows消息。

例如,当我运行播放器,并在播放器按下按钮'显示可视化器'时,播放器运行'可视化器',当播放器按下按钮'播放歌曲'时,播放器必须通过MPI向'Visualizer'发送消息我们开始播放和Visualizer开始显示很好的动画。

环境:MS Windows

对于MPI,我使用:Boost.MPI + Microsoft HCP MPI

但我发现只有像'Hello world'这样的愚蠢的例子,其中'parent'程序和'child'程序从一个可执行文件中运行:

#include <boost/mpi.hpp>
#include <iostream>
#include <string>
#include <boost/serialization/string.hpp>
namespace mpi = boost::mpi;

int main()
{
  mpi::environment env;
  mpi::communicator world;

  // Parent, 'root' process
  if (world.rank() == 0) 
  {
    world.send(1, 0, std::string("Hello"));
  } 
  else // Child process
  {
    std::string msg;
    world.recv(0, 0, msg);
    std::cout << msg << ", world";
    std::cout.flush();
  }

  return 0;
}

我需要获得一个'mpi :: communicator world;'在不同的节目,独立开始。

// Player
int main_Player()
{
  mpi::environment env;
  mpi::communicator world;

  if (world.rank() != 0) 
  {
     std::cout << "Another copy of Player is started..";
     return -1
  }
}

// Visuzalizer
int main_Visuzalizer()
{
  mpi::environment env;
  mpi::communicator world;

  // Receive message from Player
  if (world.rank() > 0) 
  {
     std::string msg;
     world.recv(0, 0, msg);
  }
}

0 个答案:

没有答案