为了将模拟的时间从15天减少到更少的东西,我研究了GNU Parallel。它完成了这项工作,但却抛出了一些我无法找到解释的错误。
代码是:
parallel "./create_ffile.py -r {2} -s {1}; GENENMM -pdb file.pdb -fcust ffile.txt; DIAGSTD; FREQEN; RMSCOL" :::: arg1.txt arg2.txt
其中GENENMM,DIAGSTD,FREQEN和RMSCOL是fortran代码,argfiles包含变量以创建一个输入到GENENMM的ffile.txt。
错误是:
Program received signal SIGSEGV: Segmentation fault - invalid memory peference.
Backtrace for this error:
#0 aaaaaaaaaaaa
#1 .....
etc
和
Program received signal SIGABRT: Process abort signal.
Backtrace for this error:
#0 aaaaaaaaaaaa
#1 .....
etc
这两个错误后跟(core dumped) DIAGSTD
或(core dumped) RMSCOL
我无法理解的是,为什么它们仅出现在某些{1} - {2}组合而非全部。此外,这两个错误有时会一起出现,有时只会出现其中一个错误。从我在网上看到的是,fortran代码发生了什么。但为什么它不会发生在所有文件中呢?这是否与它们全部并行运行有关?
感谢您提前提供任何帮助/意见! 玛丽
答案 0 :(得分:0)
我不清楚不同程序使用哪些文件。我的猜测是程序使用相同的文件。因此,如果同时运行多个副本,它们将相互干扰,但如果它们是串行运行则不会发生这种情况。
因此解决方案是让每个副本在不同的文件上运行。执行此操作的标准方法是为每个副本创建一个目录。像这样:
parallel "mkdir {#}; cd {#}; ../create_ffile.py -r {2} -s {1}; GENENMM -pdb ../file.pdb -fcust ffile.txt; DIAGSTD; FREQEN; RMSCOL" :::: arg1.txt arg2.txt