以下各项之间是否有任何区别(例如,性能方面):
$ make && cp bin/myexecutable inputfile.txt $workdir && cd $workdir
$ <series of sed commands to modify inputfile.txt>
$ mpirun -n 12 ./myexecutable [args]
与通过脚本进行操作相比:
myscript.sh:
#!/bin/bash
make && cp bin/myexecutable inputfile.txt $workdir && cd $workdir
<series of sed commands to modify inputfile.txt>
mpirun -n 12 ./myexecutable [args]
+
$ ./myscript.sh
问的原因是,我经常在工作站上运行多个(10-100个或更多)模拟作业。每个作业将在不同的工作目录中运行(并且具有不同的输入文件,并具有不同的参数集)-因此,对运行脚本编写脚本将使在大量参数上运行许多测试变得更加容易。一些模拟运行可能需要几天的时间。
绩效差异是否可以忽略不计(即<5-10%)?脚本(相对于命令行)是否可以看到不同的环境,从而导致出现问题?
执行mpirun
命令行或脚本不会改变的性能mpirun
命令都没有。唯一的性能差异是启动时间:运行脚本在启动时需要几毫秒(如果Shell可执行文件不在磁盘高速缓存中,则需要更多毫秒),而在命令行上键入则需要几秒钟,因此键入所有内容都需要花费几秒钟的时间。 。
您可以通过告诉外壳程序用正在运行的最后一个命令代替自身,而不用等待最后一个命令完成并立即终止来节省少量内存。替换mpirun …
为exec mpirun …
。
通过使用破折号而不是bash可以节省少量的启动时间。对于像mpirun这样的长期工作而言,两者之间的差异可以忽略不计。只有在启动许多小的Shell脚本的任务(例如引导Linux)中才能看到性能优势。
将命令放在脚本中有一个主要优点:可以设置一系列命令,并且如果要对这些命令进行一些调整,则只需要编辑文件即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句