算法评测需要跑很多次取均值,因此离不开linux集群。
集群上并行执行多次的命令是mpiexec,执行10次的命令是:mpiexec -n 10 -f config nohup python hello.py &
注意这10次都是独立运行的,不会通信。mpiexec中的config内容如下:
节点1:8
节点2:8
第一列是集群机器的节点名,冒号后面是当前机器分配给程序的内核数。
如果我执行6个算法,每个算法运行100次,那么就需要列出config1、config2、...、config6,来分配机器。
现在我需要搞清楚一个问题:
能不能所有算法只用一个config文件。比如,提交一个算法后,立刻更改它里面的机器节点名,给第二个算法使用。
测试:
(1)写一个执行很久的程序alg1.py。
(2)将节点1、节点2写入config ,每个机器1个核心。运行mpiexec -n 2 -f config nohup python alg1.py &
(3)清空config,将节点3、节点4写入config ,每个机器1个核心,仍然运行mpiexec -n 2 -f config nohup python alg1.py &
(4)同时打开节点1、节点2、节点3、节点4,发现程序都在正常运行。
结论:
在mpiexec提交程序后,更改config文件,不影响程序执行。