我正在使用 mpi4py 构建一个量子电路模拟器。模拟器接受用户输入来构建初始系统和系统通过的量子门。如果我不使用用户输入而只在系统和门中使用硬代码,我可以让代码工作。但是,当我使用用户输入时,我无法弄清楚如何让代码工作。如果我使用用户输入运行代码,它不允许我输入输入,然后代码会出错,因为从未定义过变量。我试图获取用户输入,然后 mpirun 其余代码,但它无法识别从用户输入获得的变量。我试图将用户输入变量传递到我正在运行的代码中,但我也无法让它工作。我不知道如何处理这个问题!
使用 mpirun 传递用户输入
计算科学
Python
并行计算
高性能计算
mpi
2021-12-22 10:01:35
2个回答
如果在本地运行,来自控制台的输入可能在进程零上工作,但肯定不会在其他等级上工作。但是,我什至不会在进程零上进行交互式输入。
#!/bin/bash
if [ $PMI_RANK -eq 0 ] ; then
( echo 5 ; echo 1 ; echo foo ) | $*
else
exec $*
fi
把它放在一个脚本中,然后用 mpirun 启动它:
mpirun myscript.sh myprogram
MPI 等级的环境变量在您的 MPI 中可能具有不同的名称。
MPI 被设计成可以在多台机器上启动相同的可执行文件,而其中没有一台可能是调用该mpirun程序的机器。此外,MPI 作业通常被放入队列中,实际作业可能会在数小时或数天后运行。
因此,MPI 作业不打算在交互模式下使用,但所有输入都应该以某种方式提供,以便程序——无论何时何地实际运行——都可以以非交互方式访问它.
其它你可能感兴趣的问题