使用Visual Studio 2017,我正在尝试运行一个类似于黑桃游戏的MPI应用程序。运行它后,我想为 4 名玩家中的每个人打开一个 cmd 终端,以便他们每个人都可以在轮到他采取行动时输入他的卡选择。
我尝试了很多选项,包括转到项目属性 ->调试并将命令更改为$(MSMPI_BIN)mpiexec
,将命令参数更改为-np 4 "$(TargetPath)"
- 请参阅下面的链接:
命令和命令参数
但是,除了同时运行 4 个进程之外,我仍然打开了一个终端,它对我的任何键盘输入都没有反应。
有没有办法使用 Visual Studio 调试打开 4 个终端?还是其他方式?在cmd/bash中运行"mpiexec.exe -np 4 MyExec.exe"提供与上述相同的结果。
提前致谢
我认为这是不可能的。
我尝试在 mpi 测试程序上使用AllocConsole()
,每个进程都返回一个错误,因为它认为已经附加了一个控制台。
在某种程度上,这似乎是合乎逻辑的,因为 mpiexec 将启动进程,并且每个标准输出都将定向到相同的输出(文件或控制台(,至于 stdin,您必须选择哪个进程将处理它(通过手动判断 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(