From b9d0f96a19233322070b22dd59f523e5567d59e3 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 30 Sep 2016 09:17:55 -0600 Subject: [PATCH] change purge target in Makefile, also fixed one issue with Make.py --- examples/tad/README | 2 +- src/KOKKOS/comm_tiled_kokkos.cpp | 266 +++++++++++++++++++++++++++++++ src/KOKKOS/comm_tiled_kokkos.h | 59 +++++++ src/KOKKOS/neighbor_kokkos.cpp | 16 +- src/Make.py | 70 +++++--- src/Makefile | 4 +- src/USER-REAXC/pair_reax_c.cpp | 2 +- src/comm_tiled.cpp | 6 - src/comm_tiled.h | 24 +-- 9 files changed, 398 insertions(+), 51 deletions(-) create mode 100644 src/KOKKOS/comm_tiled_kokkos.cpp create mode 100644 src/KOKKOS/comm_tiled_kokkos.h diff --git a/examples/tad/README b/examples/tad/README index 0d0938c1f1..eeb4aa4692 100644 --- a/examples/tad/README +++ b/examples/tad/README @@ -1,5 +1,5 @@ Run this example as: -mpirun -np 3 lmp_linux -partition 3x1 -in in.tad +mpirun -np 3 lmp_g++ -partition 3x1 -in in.tad You should be able to use any number of replicas >= 3. diff --git a/src/KOKKOS/comm_tiled_kokkos.cpp b/src/KOKKOS/comm_tiled_kokkos.cpp new file mode 100644 index 0000000000..f3ea9d7abf --- /dev/null +++ b/src/KOKKOS/comm_tiled_kokkos.cpp @@ -0,0 +1,266 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include "comm_tiled_kokkos.h" +#include "comm_brick.h" +#include "atom_kokkos.h" +#include "atom_vec.h" +#include "domain.h" +#include "force.h" +#include "pair.h" +#include "neighbor.h" +#include "modify.h" +#include "fix.h" +#include "compute.h" +#include "output.h" +#include "dump.h" +#include "memory.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +#define BUFFACTOR 1.5 +#define BUFFACTOR 1.5 +#define BUFMIN 1000 +#define BUFEXTRA 1000 +#define EPSILON 1.0e-6 + +#define DELTA_PROCS 16 + +enum{SINGLE,MULTI}; // same as in Comm +enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files + +/* ---------------------------------------------------------------------- */ + +CommTiledKokkos::CommTiledKokkos(LAMMPS *lmp) : CommTiled(lmp) +{ + +} + +/* ---------------------------------------------------------------------- */ +//IMPORTANT: we *MUST* pass "*oldcomm" to the Comm initializer here, as +// the code below *requires* that the (implicit) copy constructor +// for Comm is run and thus creating a shallow copy of "oldcomm". +// The call to Comm::copy_arrays() then converts the shallow copy +// into a deep copy of the class with the new layout. + +CommTiledKokkos::CommTiledKokkos(LAMMPS *lmp, Comm *oldcomm) : CommTiled(lmp,oldcomm) +{ + +} + +/* ---------------------------------------------------------------------- */ + +CommTiledKokkos::~CommTiledKokkos() +{ + +} + +/* ---------------------------------------------------------------------- */ + + +/* ---------------------------------------------------------------------- + forward communication of atom coords every timestep + other per-atom attributes may also be sent via pack/unpack routines +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm(int dummy) +{ + if (comm_x_only) { + atomKK->sync(Host,X_MASK); + atomKK->modified(Host,X_MASK); + } else if (ghost_velocity) { + atomKK->sync(Host,X_MASK | V_MASK); + atomKK->modified(Host,X_MASK | V_MASK); + } else { + atomKK->sync(Host,ALL_MASK); + atomKK->modified(Host,ALL_MASK); + } + + CommTiled::forward_comm(dummy); +} + +/* ---------------------------------------------------------------------- + reverse communication of forces on atoms every timestep + other per-atom attributes may also be sent via pack/unpack routines +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm() +{ + if (comm_f_only) + atomKK->sync(Host,F_MASK); + else + atomKK->sync(Host,ALL_MASK); + CommTiled::reverse_comm(); + if (comm_f_only) + atomKK->modified(Host,F_MASK); + else + atomKK->modified(Host,ALL_MASK); + atomKK->sync(Device,ALL_MASK); +} + +/* ---------------------------------------------------------------------- + exchange: move atoms to correct processors + atoms exchanged with procs that touch sub-box in each of 3 dims + send out atoms that have left my box, receive ones entering my box + atoms will be lost if not inside a touching proc's box + can happen if atom moves outside of non-periodic bounary + or if atom moves more than one proc away + this routine called before every reneighboring + for triclinic, atoms must be in lamda coords (0-1) before exchange is called +------------------------------------------------------------------------- */ + +void CommTiledKokkos::exchange() +{ + atomKK->sync(Host,ALL_MASK); + CommTiled::exchange(); + atomKK->modified(Host,ALL_MASK); +} + +/* ---------------------------------------------------------------------- + borders: list nearby atoms to send to neighboring procs at every timestep + one list is created per swap/proc that will be made + as list is made, actually do communication + this does equivalent of a forward_comm(), so don't need to explicitly + call forward_comm() on reneighboring timestep + this routine is called before every reneighboring + for triclinic, atoms must be in lamda coords (0-1) before borders is called +------------------------------------------------------------------------- */ + +void CommTiledKokkos::borders() +{ + atomKK->sync(Host,ALL_MASK); + CommTiled::borders(); + atomKK->modified(Host,ALL_MASK); +} + +/* ---------------------------------------------------------------------- + forward communication invoked by a Pair + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm_pair(Pair *pair) +{ + CommTiled::forward_comm_pair(pair); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Pair + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm_pair(Pair *pair) +{ + CommTiled::reverse_comm_pair(pair); +} + +/* ---------------------------------------------------------------------- + forward communication invoked by a Fix + size/nsize used only to set recv buffer limit + size = 0 (default) -> use comm_forward from Fix + size > 0 -> Fix passes max size per atom + the latter is only useful if Fix does several comm modes, + some are smaller than max stored in its comm_forward +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm_fix(Fix *fix, int size) +{ + CommTiled::forward_comm_fix(fix,size); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Fix + size/nsize used only to set recv buffer limit + size = 0 (default) -> use comm_forward from Fix + size > 0 -> Fix passes max size per atom + the latter is only useful if Fix does several comm modes, + some are smaller than max stored in its comm_forward +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm_fix(Fix *fix, int size) +{ + CommTiled::reverse_comm_fix(fix,size); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Fix with variable size data + query fix for all pack sizes to insure buf_send is big enough + handshake sizes before irregular comm to insure buf_recv is big enough + NOTE: how to setup one big buf recv with correct offsets ?? +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm_fix_variable(Fix *fix) +{ + CommTiled::reverse_comm_fix_variable(fix); +} + +/* ---------------------------------------------------------------------- + forward communication invoked by a Compute + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm_compute(Compute *compute) +{ + CommTiled::forward_comm_compute(compute); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Compute + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm_compute(Compute *compute) +{ + CommTiled::reverse_comm_compute(compute); +} + +/* ---------------------------------------------------------------------- + forward communication invoked by a Dump + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm_dump(Dump *dump) +{ + CommTiled::forward_comm_dump(dump); +} + +/* ---------------------------------------------------------------------- + reverse communication invoked by a Dump + nsize used only to set recv buffer limit +------------------------------------------------------------------------- */ + +void CommTiledKokkos::reverse_comm_dump(Dump *dump) +{ + CommTiled::reverse_comm_dump(dump); +} + +/* ---------------------------------------------------------------------- + forward communication of Nsize values in per-atom array +------------------------------------------------------------------------- */ + +void CommTiledKokkos::forward_comm_array(int nsize, double **array) +{ + CommTiled::forward_comm_array(nsize,array); +} + +/* ---------------------------------------------------------------------- + exchange info provided with all 6 stencil neighbors + NOTE: this method is currently not used +------------------------------------------------------------------------- */ + +int CommTiledKokkos::exchange_variable(int n, double *inbuf, double *&outbuf) +{ + CommTiled::exchange_variable(n,inbuf,outbuf); +} \ No newline at end of file diff --git a/src/KOKKOS/comm_tiled_kokkos.h b/src/KOKKOS/comm_tiled_kokkos.h new file mode 100644 index 0000000000..96944bc7d1 --- /dev/null +++ b/src/KOKKOS/comm_tiled_kokkos.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef LMP_COMM_TILED_KOKKOS_H +#define LMP_COMM_TILED_KOKKOS_H + +#include "comm_tiled.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class CommTiledKokkos : public CommTiled { + public: + CommTiledKokkos(class LAMMPS *); + CommTiledKokkos(class LAMMPS *, class Comm *); + virtual ~CommTiledKokkos(); + + void forward_comm(int dummy = 0); // forward comm of atom coords + void reverse_comm(); // reverse comm of forces + void exchange(); // move atoms to new procs + void borders(); // setup list of atoms to comm + + void forward_comm_pair(class Pair *); // forward comm from a Pair + void reverse_comm_pair(class Pair *); // reverse comm from a Pair + void forward_comm_fix(class Fix *, int size=0); + // forward comm from a Fix + void reverse_comm_fix(class Fix *, int size=0); + // reverse comm from a Fix + void reverse_comm_fix_variable(class Fix *); + // variable size reverse comm from a Fix + void forward_comm_compute(class Compute *); // forward from a Compute + void reverse_comm_compute(class Compute *); // reverse from a Compute + void forward_comm_dump(class Dump *); // forward comm from a Dump + void reverse_comm_dump(class Dump *); // reverse comm from a Dump + + void forward_comm_array(int, double **); // forward comm of array + int exchange_variable(int, double *, double *&); // exchange on neigh stencil + + private: + +}; + +} + +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KOKKOS/neighbor_kokkos.cpp b/src/KOKKOS/neighbor_kokkos.cpp index dc2fae8046..c420f34e8e 100644 --- a/src/KOKKOS/neighbor_kokkos.cpp +++ b/src/KOKKOS/neighbor_kokkos.cpp @@ -280,15 +280,19 @@ void NeighborKokkos::choose_build(int index, NeighRequest *rq) if (rq->kokkos_host != 0) { PairPtrHost pb = NULL; if (rq->ghost) { - if (rq->full) pb = &NeighborKokkos::full_bin_kokkos; - else if (rq->half) &NeighborKokkos::full_bin_kokkos; - pair_build_host[index] = pb; + if (rq->full) { + if (rq->full_cluster) pb = &NeighborKokkos::full_bin_cluster_kokkos; + else pb = &NeighborKokkos::full_bin_kokkos; + } + else if (rq->half) pb = &NeighborKokkos::full_bin_kokkos; } else { - if (rq->full) pb = &NeighborKokkos::full_bin_kokkos; + if (rq->full) { + if (rq->full_cluster) pb = &NeighborKokkos::full_bin_cluster_kokkos; + else pb = &NeighborKokkos::full_bin_kokkos; + } else if (rq->half) pb = &NeighborKokkos::full_bin_kokkos; - pair_build_host[index] = pb; } - return; + pair_build_host[index] = pb; } if (rq->kokkos_device != 0) { PairPtrDevice pb = NULL; diff --git a/src/Make.py b/src/Make.py index c760301b59..3030183e1a 100755 --- a/src/Make.py +++ b/src/Make.py @@ -26,7 +26,8 @@ libclasses = ("atc","awpmd","colvars","cuda","gpu","h5md", buildclasses = ("intel","kokkos") makeclasses = ("cc","flags","mpi","fft","jpg","png") -setargs = ("gzip","#gzip","ffmpeg","#ffmpeg","smallbig","bigbig","smallsmall","exceptions","#exceptions") +setargs = ("gzip","#gzip","ffmpeg","#ffmpeg","smallbig","bigbig", + "smallsmall","exceptions","#exceptions") actionargs = ("lib-all","file","clean","exe") gpubuildflag = 0 @@ -85,7 +86,8 @@ def switch2str(switches,switch_order): def compile_check(compiler,ccflags,warn): open("tmpauto.cpp",'w').write("int main(int, char **) {}\n") tmp = "%s %s -c tmpauto.cpp" % (compiler,ccflags) - try: txt = subprocess.check_output(tmp,stderr=subprocess.STDOUT,shell=True).decode() + try: txt = subprocess.check_output(tmp,stderr=subprocess.STDOUT, + shell=True).decode() except subprocess.CalledProcessError as e: txt = e.output flag = 1 if txt or not os.path.isfile("tmpauto.o"): @@ -105,7 +107,8 @@ def compile_check(compiler,ccflags,warn): def link_check(linker,linkflags,libs,warn): open("tmpauto.cpp",'w').write("int main(int, char **) {}\n") tmp = "%s %s -o tmpauto tmpauto.cpp %s" % (linker,linkflags,libs) - try: txt = subprocess.check_output(tmp,stderr=subprocess.STDOUT,shell=True).decode() + try: txt = subprocess.check_output(tmp,stderr=subprocess.STDOUT, + shell=True).decode() except subprocess.CalledProcessError as e: txt = e.output flag = 1 if txt or not os.path.isfile("tmpauto"): @@ -532,7 +535,8 @@ class Actions(object): if caller == "file" or "file" not in self.alist: # make certain that 'MAKE/MINE' folder exists. - subprocess.check_output("mkdir -p %s/MAKE/MINE" % dir.src,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("mkdir -p %s/MAKE/MINE" % dir.src, + stderr=subprocess.STDOUT,shell=True) make.write("%s/MAKE/MINE/Makefile.auto" % dir.src,1) print("Created src/MAKE/MINE/Makefile.auto") @@ -859,9 +863,12 @@ class Packages(object): if self.plist: print("Installing packages ...") for one in self.plist: if one == "orig": continue - subprocess.check_output("cd %s; make %s" % (dir.src,one),stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make %s" % (dir.src,one), + stderr=subprocess.STDOUT,shell=True) if self.plist and verbose: - txt = subprocess.check_output("cd %s; make ps" % dir.src,stderr=subprocess.STDOUT,shell=True).decode() + txt = subprocess.check_output("cd %s; make ps" % dir.src, + stderr=subprocess.STDOUT, + shell=True).decode() print("Package status after installation:") print(txt) @@ -871,12 +878,16 @@ class Packages(object): def uninstall(self): if not self.plist or self.plist[-1] != "orig": return print("Restoring packages to original state ...") - subprocess.check_output("cd %s; make no-all" % dir.src,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make no-all" % dir.src, + stderr=subprocess.STDOUT,shell=True) for one in self.all: if self.original[one]: - subprocess.check_output("cd %s; make yes-%s" % (dir.src,one),stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make yes-%s" % (dir.src,one), + stderr=subprocess.STDOUT,shell=True) if verbose: - txt = subprocess.check_output("cd %s; make ps" % dir.src,stderr=subprocess.STDOUT,shell=True).decode() + txt = subprocess.check_output("cd %s; make ps" % dir.src, + stderr=subprocess.STDOUT, + shell=True).decode() print("Restored package status:") print(txt) @@ -970,7 +981,8 @@ class Settings(object): def help(self): return """ -s set1 set2 ... - possible settings = gzip #gzip ffmpeg #ffmpeg smallbig bigbig smallsmall exceptions #exceptions + possible settings = gzip #gzip ffmpeg #ffmpeg + smallbig bigbig smallsmall exceptions #exceptions alter LAMMPS ifdef settings in Makefile.auto only happens if new Makefile.auto is created by use of "file" action gzip and #gzip turn on/off LAMMPS_GZIP setting @@ -1059,7 +1071,8 @@ class ATC(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make -f Makefile.auto clean" % + libdir,stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; make -j %d -f Makefile.auto" % (libdir,jmake.n) else: txt = "cd %s; make -f Makefile.auto" % libdir @@ -1110,7 +1123,8 @@ class AWPMD(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make -f Makefile.auto clean" % + libdir,stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; make -j %d -f Makefile.auto" % (libdir,jmake.n) else: txt = "cd %s; make -f Makefile.auto" % libdir @@ -1161,7 +1175,8 @@ class COLVARS(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make -f Makefile.auto clean" % + libdir,stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; make -j %d -f Makefile.auto" % (libdir,jmake.n) else: txt = "cd %s; make -f Makefile.auto" % libdir @@ -1213,7 +1228,8 @@ class CUDA(object): def build(self): libdir = dir.lib + "/cuda" - subprocess.check_output("cd %s; make clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make clean" % libdir, + stderr=subprocess.STDOUT,shell=True) if self.mode == "double": n = 2 elif self.mode == "mixed": n = 3 elif self.mode == "single": n = 1 @@ -1308,7 +1324,8 @@ class GPU(object): make = "make" if "shannon" == platform.node(): make = "srun make" - subprocess.check_output("cd %s; %s -f Makefile.auto clean" % (libdir,make),stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; %s -f Makefile.auto clean" % + (libdir,make),stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; %s -j %d -f Makefile.auto" % (libdir,make,jmake.n) else: txt = "cd %s; %s -f Makefile.auto" % (libdir,make) @@ -1359,7 +1376,8 @@ class H5MD(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make clean" % libdir, + stderr=subprocess.STDOUT,shell=True) txt = "cd %s; make" % libdir # if verbose, print output as build proceeds, else only print if fails @@ -1409,7 +1427,8 @@ class MEAM(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make -f Makefile.auto clean" % + libdir,stderr=subprocess.STDOUT,shell=True) # do not use -j for MEAM build, parallel build does not work txt = "cd %s; make -f Makefile.auto" % libdir @@ -1460,7 +1479,8 @@ class POEMS(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir, + stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; make -j %d -f Makefile.auto" % (libdir,jmake.n) else: txt = "cd %s; make -f Makefile.auto" % libdir @@ -1506,9 +1526,10 @@ class PYTHON(object): libdir = dir.lib + "/python" if self.lammpsflag: subprocess.check_output("cd %s; cp Makefile.lammps.%s Makefile.lammps" % - (libdir,self.lammps)) + (libdir,self.lammps)) if not os.path.isfile("%s/Makefile.lammps.%s" % (libdir,self.lammps)): - error("Unsuccessful creation of lib/python/Makefile.lammps.%s file" % self.lammps) + error("Unsuccessful creation of lib/python/Makefile.lammps.%s file" % + self.lammps) else: print("Created lib/python/Makefile.lammps file") # QMMM lib @@ -1546,7 +1567,8 @@ class QMMM(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - subprocess.check_output("cd %s; make -f Makefile.auto clean" % libdir,stderr=subprocess.STDOUT,shell=True) + subprocess.check_output("cd %s; make -f Makefile.auto clean" % + libdir,stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; make -j %d -f Makefile.auto" % (libdir,jmake.n) else: txt = "cd %s; make -f Makefile.auto" % libdir @@ -1597,7 +1619,8 @@ class REAX(object): make.setvar("EXTRAMAKE","Makefile.lammps.%s" % self.lammps) make.write("%s/Makefile.auto" % libdir) - commands.getoutput("cd %s; make -f Makefile.auto clean" % libdir) + cmd = "cd %s; make -f Makefile.auto clean" % libdir + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) if jmake: txt = "cd %s; make -j %d -f Makefile.auto" % (libdir,jmake.n) else: txt = "cd %s; make -f Makefile.auto" % libdir @@ -1643,7 +1666,8 @@ class VORONOI(object): if not self.install: return libdir = dir.lib + "/voronoi" cmd = "cd %s; python install.py %s" % (libdir,self.install) - txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True).decode() + txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT, + shell=True).decode() if verbose: print(txt) print("Created lib/voronoi library") diff --git a/src/Makefile b/src/Makefile index 4467095a6c..92c0029dc0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -92,7 +92,7 @@ help: @echo 'make package-update (pu) replace src files with updated package files' @echo 'make package-overwrite replace package files with src files' @echo 'make package-diff (pd) diff src files against package files' - @echo 'make package-purge purge obsolete copies of package sources' + @echo 'make purge purge obsolete copies of source files' @echo '' @echo 'make machine build LAMMPS for machine' @echo 'make mode=lib machine build LAMMPS as static lib for machine' @@ -314,7 +314,7 @@ package-diff pd: @echo '' @for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p diff; done -package-purge: Purge.list +purge: Purge.list @echo 'Purging obsolete and auto-generated source files' @for f in `grep -v '#' Purge.list` ; \ do test -f $$f && rm $$f && echo $$f || : ; \ diff --git a/src/USER-REAXC/pair_reax_c.cpp b/src/USER-REAXC/pair_reax_c.cpp index 85eddf60ca..4933c90f01 100644 --- a/src/USER-REAXC/pair_reax_c.cpp +++ b/src/USER-REAXC/pair_reax_c.cpp @@ -348,7 +348,7 @@ void PairReaxC::init_style( ) int iqeq; for (iqeq = 0; iqeq < modify->nfix; iqeq++) - if (strcmp(modify->fix[iqeq]->style,"qeq/reax") == 0) break; + if (strstr(modify->fix[iqeq]->style,"qeq/reax")) break; if (iqeq == modify->nfix && qeqflag == 1) error->all(FLERR,"Pair reax/c requires use of fix qeq/reax"); diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index c7e11f06a0..2bdcd05030 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -45,9 +45,6 @@ enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files CommTiled::CommTiled(LAMMPS *lmp) : Comm(lmp) { - if (lmp->kokkos) - error->all(FLERR,"KOKKOS package does not yet support comm_style tiled"); - style = 1; layout = LAYOUT_UNIFORM; pbc_flag = NULL; @@ -63,9 +60,6 @@ CommTiled::CommTiled(LAMMPS *lmp) : Comm(lmp) CommTiled::CommTiled(LAMMPS *lmp, Comm *oldcomm) : Comm(*oldcomm) { - if (lmp->kokkos) - error->all(FLERR,"KOKKOS package does not yet support comm_style tiled"); - style = 1; layout = oldcomm->layout; Comm::copy_arrays(oldcomm); diff --git a/src/comm_tiled.h b/src/comm_tiled.h index 5f08c8a703..91feea7479 100644 --- a/src/comm_tiled.h +++ b/src/comm_tiled.h @@ -26,26 +26,26 @@ class CommTiled : public Comm { void init(); void setup(); // setup comm pattern - void forward_comm(int dummy = 0); // forward comm of atom coords - void reverse_comm(); // reverse comm of forces - void exchange(); // move atoms to new procs - void borders(); // setup list of atoms to comm + virtual void forward_comm(int dummy = 0); // forward comm of atom coords + virtual void reverse_comm(); // reverse comm of forces + virtual void exchange(); // move atoms to new procs + virtual void borders(); // setup list of atoms to comm - void forward_comm_pair(class Pair *); // forward comm from a Pair - void reverse_comm_pair(class Pair *); // reverse comm from a Pair + virtual void forward_comm_pair(class Pair *); // forward comm from a Pair + virtual void reverse_comm_pair(class Pair *); // reverse comm from a Pair virtual void forward_comm_fix(class Fix *, int size=0); // forward comm from a Fix virtual void reverse_comm_fix(class Fix *, int size=0); // reverse comm from a Fix virtual void reverse_comm_fix_variable(class Fix *); // variable size reverse comm from a Fix - void forward_comm_compute(class Compute *); // forward from a Compute - void reverse_comm_compute(class Compute *); // reverse from a Compute - void forward_comm_dump(class Dump *); // forward comm from a Dump - void reverse_comm_dump(class Dump *); // reverse comm from a Dump + virtual void forward_comm_compute(class Compute *); // forward from a Compute + virtual void reverse_comm_compute(class Compute *); // reverse from a Compute + virtual void forward_comm_dump(class Dump *); // forward comm from a Dump + virtual void reverse_comm_dump(class Dump *); // reverse comm from a Dump - void forward_comm_array(int, double **); // forward comm of array - int exchange_variable(int, double *, double *&); // exchange on neigh stencil + virtual void forward_comm_array(int, double **); // forward comm of array + virtual int exchange_variable(int, double *, double *&); // exchange on neigh stencil void coord2proc_setup(); int coord2proc(double *, int &, int &, int &);