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