当前位置: 首页 > 计算模拟 >lammps运行一定步数后停止(感觉是MPI的问题) Signal: Segmentation fault

lammps运行一定步数后停止(感觉是MPI的问题) Signal: Segmentation fault

作者 鱼叉君
来源: 小木虫 300 6 举报帖子
+关注

lammps安装好之后试着跑过例子,并行串行都没问题。
现在实际开始跑体系了,用reaxff,遇到的问题就是 比如设置并行跑一定步数,中间会报错停止:

out文件里面的错:

---------------- Step  5020000 ----- CPU =   1251.1345 (sec) ----------------
TotEng   =   -380902.9196 KinEng   =     13016.8627 Temp     =       992.7001
PotEng   =   -393919.7822 E_bond   =         0.0000 E_angle  =         0.0000
E_dihed  =         0.0000 E_impro  =         0.0000 E_vdwl   =   -388558.1753
E_coul   =     -5361.6069 E_long   =         0.0000 Press    =       627.1629
--------------------------------------------------------------------------
mpirun noticed that process rank 30 with PID 81743 on node node04 exited on signal 11 (Segmentation fault).

然后另一个文件里写的是:
[node04:81743] *** Process received signal ***
[node04:81743] Signal: Segmentation fault (11)
[node04:81743] Signal code: Address not mapped (1)
[node04:81743] Failing at address: 0x166f458b8
[node04:81743] [ 0] /lib64/libpthread.so.0[0x39bf00f710]
[node04:81743] [ 1] /home/lmp/lammps-17Nov16/src/lmp_mpi[0xd54c63]
[node04:81743] [ 2] /home/lmp/lammps-17Nov16/src/lmp_mpi[0xc351ac]
[node04:81743] [ 3] /home/lmp/lammps-17Nov16/src/lmp_mpi[0xdd5c57]
[node04:81743] [ 4] /home/lmp/lammps-17Nov16/src/lmp_mpi[0xd88643]
[node04:81743] [ 5] /home/lmp/lammps-17Nov16/src/lmp_mpi[0x894269]
[node04:81743] [ 6] /home/lmp/lammps-17Nov16/src/lmp_mpi[0x88de1d]
[node04:81743] [ 7] /home/lmp/lammps-17Nov16/src/lmp_mpi[0x889b5b]
[node04:81743] [ 8] /home/lmp/lammps-17Nov16/src/lmp_mpi[0x8a9384]
[node04:81743] [ 9] /lib64/libc.so.6(__libc_start_main+0xfd)[0x39bec1ed5d]
[node04:81743] [10] /home/lmp/lammps-17Nov16/src/lmp_mpi[0x40ad59]
[node04:81743] *** End of error message ***

这个问题困扰已久,也搜过资料,有的说法是结构不好之类的。但是我试过同样的输入文件,在我们这里设置np=1的时候跑就可以跑完,也在别的地方跑完了。(一般设置np=40,然后就会报错),所以怀疑是MPI的问题。
在lammps user里面看到有人回复说这不是lammps的错,是cluster的问题,不过我们的机子上跑其他软件并行没问题,gromacs,高斯都可以。
目前还在in文件的pair_style    reax/c lmp_control 加了  safezone 1.6 mincap 100 (手册说可以防止Segmentation fault,但续跑之后中间又停了)

当时编译时修改的部分:

# mpi = MPI with its default compiler

SHELL = /bin/sh

# ---------------------------------------------------------------------
# compiler/linker settings
# specify flags and libraries needed for your compiler

CC =            mpicxx
CCFLAGS =       -g -O3 -restrict
SHFLAGS =       -fPIC
DEPFLAGS =      -M

LINK =          mpicxx
LINKFLAGS =     -g -O
LIB =
SIZE =          size

ARCHIVE =       ar
ARFLAGS =       -rc
SHLIBFLAGS =    -shared

LMP_INC =       -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64

# MPI library
# see discussion in Section 2.2 (step 5) of manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
# INC = path for mpi.h, MPI compiler settings
# PATH = path for MPI library
# LIB = name of MPI library

MPI_INC =      -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -I/opt/openmpi/include
MPI_PATH = -L/opt/openmpi/lib
MPI_LIB =        -Ipthread -Impi

# FFT library
# see discussion in Section 2.2 (step 6) of manual
# can be left blank to use provided KISS FFT library
# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
# PATH = path for FFT library
# LIB = name of FFT library

FFT_INC =       -DFFT_FFTW -I/home/lmp/fftw2/include
FFT_PATH = -L/home/lmp/fftw2/lib
FFT_LIB =        /home/lmp/fftw2/lib/libfftw.a

不知道是哪里有问题吗?或者有谁经历过这个问题吗,如果能给我一些指导的话感激不尽~ 返回小木虫查看更多

今日热帖
  • 精华评论
  • lijf517

    应该不是MPI本身的问题。可能是你结构的问题。举个极端点的例子。比如你的体系一共只有20个原子,你却分配了40个cpu。那么肯定有一部分进程上是没有原子的,这是程序可能就会出错。也可能初始时各个cpu都有原子,但计算过程结构扭曲太厉害,原子都挤到一起去了,造成某些个CPU负责的区域变成空的了,没有原子了,计算也可能会出错。而串行过程是不会存在类似的问题的

  • 鱼叉君

    引用回帖:
    2楼: Originally posted by lijf517 at 2017-06-26 16:43:40
    应该不是MPI本身的问题。可能是你结构的问题。举个极端点的例子。比如你的体系一共只有20个原子,你却分配了40个cpu。那么肯定有一部分进程上是没有原子的,这是程序可能就会出错。也可能初始时各个cpu都有原子,但 ...

    觉得好像也有可能。我现在的体系是用packmol建立的,一共4400个原子,一开始设置的边长是45埃的立方盒子。但是用virtual nanolab转换成lammps的data文件后,边长会自动设置成65埃的样子。一开始的构型就是氧气分子和碳氢化合物都聚在中间(应该是45埃大小的盒子里),后来跑起来了,氧气分子会跑到盒子边缘的地方来,但是大部分分子还是聚集在中间。可能这个会导致报错吧。
    上传了两个轨迹的截图,一张是初始构型,另一张是跑开了的构型。大概是初始构型太不合理的缘故?
    谢谢你的回复,能再麻烦你看下图片吗?你这样一说我确实觉得初始构型有点问题。
    感谢~
    lammps运行一定步数后停止(感觉是MPI的问题) Signal: Segmentation fault
    1.jpg


    lammps运行一定步数后停止(感觉是MPI的问题) Signal: Segmentation fault-1
    2.jpg


  • d198711

    看别人的帖子好像是说openmpi版本问题,换1.8以后可以并行

  • d198711

    错了,是1.4或1.6版本

  • 树儿是歌神

    以前遇到过这个问题,后来解决了。除了data文件的问题外,还有可能是内存太小以及lammps的版本问题
    亲测:openmpi-2.1.1 lammps-9Jan17tar.gz 可用,没有再出现segmentation fault

  • 云破月来h

    我也出现过同样的问题,后来发现是模型结构有问题,不过有时候算着算着确实自己停了,但是结构还好好的。

猜你喜欢