On 2016.09.16 at 07:56 +0000, Mahmood Naderan wrote: > Hi > In a cluster, there is a frontend and some compute nodes with the following CPU specs: > > > Frontend: > cpu family : 21 > model : 2 > model name : AMD Opteron(tm) Processor 6380 > stepping : 0 > GCC: 4.4.7 > > Computes: > cpu family : 21 > model : 1 > model name : AMD Opteron(tm) Processor 6282 SE > stepping : 2 > GCC: 4.4.6 > > > > Specifically, the 6380 has the following flags while 6282 doesn't have them > > > fma, f16c, tch, tce, tbm and bmi1 > > > Problem is that, I have compiled OpenMPI and another program (which is written in Fortran) on the frontend. When issue the run via MPI, the compute node fails with an illegal instruction > > > -------------------------------------------------------------------------- > mpirun noticed that process rank 0 with PID 5383 on node compute-0-1 exited on signal 4 (Illegal instruction). > -------------------------------------------------------------------------- > > > I have compiled OMPI and the application with -march=amdfam10 on the frontend. A snippet of the program looks like > > > /export/apps/siesta/openmpi-2.0.0/bin/mpifort -c -g -Os -march=amdfam10 `FoX/FoX-config --fcflags` -DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT -DTRANSIESTA /export/apps/siesta/siesta-4.0/Src/pspltm1.F > > > > > > > The question is, how can I find the name of that illegal instruction? With that I can find which flag is missing. Run the application under gdb and type "disass". This will give you a disassembly of the failing function and a visual pointer to the failing instruction (or the very near vicinity). -- Markus