对不起,如果已经问过这个问题。我根本无法找出合适的词汇来搜索。我需要在GPU集群中运行多个实验。但是目前,我开始一项工作,然后等待其完成再启动另一项工作。如何“给命令”以顺序运行所有脚本?我有类似以下内容:
./experiment.sh configs/job1.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
对于<gpu-ID>
,我将0
或1
放在特定的GPU上
现在我开始工作,说:
./experiment.sh configs/job1.sh --train <gpu-ID>
并定期检查它是否完成,以便我可以开始job2
。
什么是更有效的自动化方法?
答案 0 :(得分:1)
是的,您可以使用双重安培架:script1 && script2 && script3
在此示例中,script2
将在script1
结束时执行,只有script1
返回0,即不会失败
答案 1 :(得分:1)
如果任务出现在脚本中,您将将按顺序运行:
$ cat all_jobs
./experiment.sh configs/job1.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
$ sh all_jobs # Runs job1, then run job2, then run job 3
如果要从单个命令行运行它们,请用;
分隔它们:
$ ./experiment.sh configs/job1.sh --train <gpu-ID>; ./experiment.sh configs/job1.sh --train <gpu-ID>; ./experiment.sh configs/job1.sh --train <gpu-ID>;