【问题标题】:Run MPI Application from Visual Studio 2017 with each process in a different cmd window从 Visual Studio 2017 运行 MPI 应用程序,每个进程在不同的 cmd 窗口中
【发布时间】:2018-09-05 20:03:44
【问题描述】:

使用 Visual Studio 2017 我正在尝试运行类似于 Spades 游戏的 MPI 应用程序。运行它后,我想为 4 名玩家中的每一个打开一个 cmd 终端,以便他们每个人都可以在轮到他行动时输入他的牌选择。

我尝试了很多选项,包括转到 Project Properties -> Debugging 并将 Command 更改为 $(MSMPI_BIN)\mpiexecCommand Arguments 更改为 -np 4 "$(TargetPath)" - 请参阅链接下面:

Command and Command Arguments

但是,除了让 4 个进程同时运行之外,我仍然打开了一个终端,它对我的​​任何键盘输入都没有反应。

有没有办法使用 Visual Studio 调试打开 4 个终端?还是有什么其他方式?在 cmd / bash 中运行“mpiexec.exe -np 4 MyExec.exe”提供与上述相同的结果。

提前致谢

【问题讨论】:

  • VS 只运行mpiexec,它不控制mpiexec 如何运行进程。你想让mpiexec 做一件奇怪的事情。可能,你应该使用其他的 IPC 方式,而 MPI 不是你需要的。

标签: c++ visual-studio terminal mpi


【解决方案1】:

我认为这是不可能的。

我尝试在 mpi 测试程序上使用AllocConsole(),每个进程都返回错误,因为它认为已经有一个控制台连接到它。

在某种程度上,这似乎是合乎逻辑的,因为 mpiexec 将启动进程并且每个标准输出都将定向到相同的输出(文件或控制台),至于标准输入,您必须选择哪个进程将处理它(根据手册 https://www.open-mpi.org/doc/v3.0/man1/mpiexec.1.php 判断-stdin 选项)。

这些重定向肯定由进程管理器 (https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions) 管理

正如@Evg 所说,从“黑桃游戏”的典故来看,我认为 MPI 不是您所需要的。也许更多的unix域套接字。但它们是其他方式来进行进程间通信 (https://en.wikipedia.org/wiki/Inter-process_communication)

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2018-12-14
    • 2019-10-17
    相关资源
    最近更新 更多