GNU 并行和 SIGSEGV/SIGABRT

GNU Parallel and SIGSEGV/SIGABRT

为了将模拟时间从 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 包含用于创建 ffile.txt 的变量,该 ffile.txt 被输入 GENENMM。

错误是:

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 代码发生了一些事情。但是为什么不是所有文件都发生这种情况呢?跟他们都是运行并联有关系吗?

提前感谢任何help/comments! 玛丽

我不清楚不同程序使用哪些文件。我的猜测是这些程序使用相同的文件。所以如果多个副本同时运行,它们会互相干扰,但是如果它们是运行连续的,就不会出现这种情况。

所以解决方案是在不同的文件上制作每个副本 运行。执行此操作的标准方法是为每个副本创建一个目录。像这样:

parallel "mkdir {#}; cd {#}; ../create_ffile.py -r {2} -s {1}; GENENMM -pdb ../file.pdb -fcust ffile.txt; DIAGSTD; FREQEN; RMSCOL" :::: arg1.txt arg2.txt