Trying to compile on Cray XC40

Hello,

I'm trying to build the latest version of lammps (11Aug17) on our Cray XC-40 with 'make mpi'
Make mpi seems to depend on something called 'quip' which hasn't been an issue before, before delving into that particular issue... I was wondering if anyone had any lammps compile recipes for an XC40 or anything in the same family of supercomputer. Thank you for your help.

-Andrew Downs, ARL HPC Specialist

Hello,

I'm trying to build the latest version of lammps (11Aug17) on our Cray
XC-40 with 'make mpi'
Make mpi seems to depend on something called 'quip' which hasn't been an
issue before, before delving into that particular issue... I was wondering
if anyone had any lammps compile recipes for an XC40 or anything in the
same family of supercomputer. Thank you for your help.

​andrew,​

​you are mi​xing up two things here: one is the selection of (optional)
packages that can be included in a LAMMPS compile, some of which have
dependencies on external software packages (e.g. QUIP, VORONOI, MSCG, KIM)
, and the other is the specific machine configuration. the former is done
with "make yes-<packagename>" or "make no-<packagename>", the latter is
done by selecting one of the machine targets like "mpi".

if you do "make clean-all; make no-lib; make mpi", you should be able to
get a "reduced" LAMMPS executable, which should work with the in.lj file in
the bench folder. then you can add packages and go over the list of what
would be desirable and what not. for a couple of packages, there are
conflicts, i.e. they cannot be included and work properly at the same time.

details are in the LAMMPS manual under:

http://lammps.sandia.gov/doc/Section_start.html

and:

http://lammps.sandia.gov/doc/Section_packages.html

​axel.​

Hello,

make clean-all
make no-lib
make mpi

worked better, but errored out on:

In file included from ../angle_charmm_intel.h(29),
                 from ../angle_charmm_intel.cpp(20):
../fix_intel.h(210): error: expected a ")"
    void reduce_results(ft * _noalias const f_in);
                                      ^

This is with the intel compiler, should I aim for GCC, or the cray compilers? Also when this compiles 'mpi' is it linking with the Cray's MPICH library?

Thank you.

-Andrew Downs, ARL HPC Specialist

Hello,

make clean-all
make no-lib
make mpi

worked better, but errored out on:

In file included from ../angle_charmm_intel.h(29),
                 from ../angle_charmm_intel.cpp(20):
../fix_intel.h(210): error: expected a ")"
    void reduce_results(ft * _noalias const f_in);
                                      ^

This is with the intel compiler, should I aim for GCC, or the cray
compilers?

​with intel compilers you need to add the '-restrict'​ flag to CCFLAGS or
use a special machine makefile like:

make intel_cpu_mpich

Also when this compiles 'mpi' is it linking with the Cray's MPICH library?

"make mpi" uses whatever MPI library is wrapped into "mpicxx".

​axel​

FYI, There is a “cori” Makefile in src/MAKE/MACHINES that is for XC40 w/ KNL. This will have to be modified for other processors/environments, but might be a closer start. For the Cray machines, this Makefile uses an alternative to TBB for memory allocation that still allows static linking (that is still generally preferred). For KNL w/ Cray MPI, building/running with 2MB pages can improve scalability.

Best, - Mike