有什么方法可以在 FORTRAN 程序中调用 mprirun 吗?我正在通过 ssh 处理公共 linux 集群,主要思想是在程序执行结束后自动将程序加入队列。
我试图在程序结束时写这样的东西:
CALL system('mpirun -np 16 -maxtime 100 TestNP')
但收到此错误:
sh: mpirun: command not found
有任何想法吗 ?
有什么方法可以在 FORTRAN 程序中调用 mprirun 吗?我正在通过 ssh 处理公共 linux 集群,主要思想是在程序执行结束后自动将程序加入队列。
我试图在程序结束时写这样的东西:
CALL system('mpirun -np 16 -maxtime 100 TestNP')
但收到此错误:
sh: mpirun: command not found
有任何想法吗 ?
问题是缺少路径前缀,因此为 mpirun 指定绝对路径应该会有所帮助。但是,您的方法存在几个问题:
如果每个 MPI 进程都执行它,您将运行太多实例,因此只有一个节点(例如主节点)应该执行它。
原始程序不会完成,直到通过 system() 调用调用的程序没有完成。因此,如果您的队列受挂钟限制,您将一无所获。
通常,像这样的任务是通过 shell 脚本完成的。例如,在 Bash 中,您会编写如下内容:
while true; do
mpirun your_program
done
这将不断地重新调用 mpirun 直到未被您或排队系统杀死。(所以要小心!)