我希望能够同时运行多个长时间运行的进程来处理多个输入。例如:
solver_a problem_1
solver_b problem_1
...
solver_b problem_18
solver_c problem_18
我知道如何为相同的命令运行多个参数-这是最核心的用例。这更像是相反的情况:为同一参数运行多个命令。
当然,你总是可以运行多个parallel实例-但那么,当调度资源时,同一台机器或同一用户下的实例是否知道彼此存在呢?
我希望能够同时运行多个长时间运行的进程来处理多个输入。例如:
solver_a problem_1
solver_b problem_1
...
solver_b problem_18
solver_c problem_18
我认为你想要使用GNU Parallel来让每个问题都通过3个求解器中的每一个进行运行,总共18个问题:
parallel echo solver_{1} problem_{2} ::: {a..c} ::: {1..18}
样例输出
solver_a problem_1
solver_a problem_2
solver_a problem_3
solver_a problem_4
...
...
solver_c problem_16
solver_c problem_17
solver_c problem_18
或者,更快地改变另一个参数:
parallel echo solver_{2} problem_{1} ::: {1..18} ::: {a..c}
parallel "{1} {2}" ::: 'printf "%02d "' 'printf "%03d "' ::: 1 2
- Leo--shuf
,因为这样可以快速绘制整个输入范围的结果。绘图通常可以显示出一种趋势,使得不必运行完整个集合,而是停下来关注看起来有前途的范围。无论这是否与此处相关,我并不知道。 - Ole Tange