From 94bdf1237bd84e0b113d8b2a26cde48113d3aa05 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 14:21:54 +0000 Subject: [PATCH 01/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15236 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/read_data.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/read_data.cpp b/src/read_data.cpp index 39afcfbcf8..debb7713c3 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -283,6 +283,7 @@ void ReadData::command(int narg, char **arg) } // set up pointer to hold original styles while we replace them with "zero" + Pair *saved_pair = NULL; Bond *saved_bond = NULL; Angle *saved_angle = NULL; @@ -346,6 +347,9 @@ void ReadData::command(int narg, char **arg) natoms = ntypes = 0; nbonds = nangles = ndihedrals = nimpropers = 0; nbondtypes = nangletypes = ndihedraltypes = nimpropertypes = 0; + + boxlo[0] = boxlo[1] = boxlo[2] = -0.5; + boxhi[0] = boxhi[1] = boxhi[2] = 0.5; triclinic = 0; keyword[0] = '\0'; From 9fd68031424b35ff59fb262fd791b522090a9c84 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 14:25:15 +0000 Subject: [PATCH 02/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15237 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/neighbor.cpp | 209 +---------------------------------------------- src/neighbor.h | 11 --- 2 files changed, 3 insertions(+), 217 deletions(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 8bd70ee9a8..f82a20acd9 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -24,8 +24,6 @@ #include "neigh_request.h" #include "atom.h" #include "atom_vec.h" -#include "atom_vec_line.h" -#include "atom_vec_tri.h" #include "comm.h" #include "force.h" #include "pair.h" @@ -37,7 +35,6 @@ #include "update.h" #include "respa.h" #include "output.h" -#include "math_extra.h" #include "citeme.h" #include "memory.h" #include "error.h" @@ -98,8 +95,6 @@ Neighbor::Neighbor(LAMMPS *lmp) : Pointers(lmp) maxhold = 0; xhold = NULL; - line_hold = NULL; - tri_hold = NULL; lastcall = -1; // binning @@ -185,8 +180,6 @@ Neighbor::~Neighbor() delete [] fixchecklist; memory->destroy(xhold); - memory->destroy(line_hold); - memory->destroy(tri_hold); memory->destroy(binhead); memory->destroy(bins); @@ -248,15 +241,6 @@ void Neighbor::init() // ------------------------------------------------------------------ // settings - // linetri_flag = 1/2 if atom style allows for lines/tris - - avec_line = (AtomVecLine *) atom->style_match("line"); - avec_tri = (AtomVecTri *) atom->style_match("tri"); - - linetri_flag = 0; - if (avec_line) linetri_flag = 1; - if (avec_tri) linetri_flag = 2; - // bbox lo/hi = bounding box of entire domain, stored by Domain if (triclinic == 0) { @@ -395,14 +379,6 @@ void Neighbor::init() memory->destroy(xhold); maxhold = 0; xhold = NULL; - - if (linetri_flag == 1) { - memory->destroy(line_hold); - line_hold = NULL; - } else if (linetri_flag == 2) { - memory->destroy(tri_hold); - tri_hold = NULL; - } } if (style == NSQ) { @@ -413,7 +389,6 @@ void Neighbor::init() bins = NULL; // for USER-DPD Shardlow Splitting Algorithm (SSA) - memory->destroy(bins_ssa); memory->destroy(binhead_ssa); memory->destroy(gbinhead_ssa); @@ -424,18 +399,11 @@ void Neighbor::init() } // 1st time allocation of xhold and bins - // also line/tri hold if linetri_flag is set if (dist_check) { if (maxhold == 0) { maxhold = atom->nmax; memory->create(xhold,maxhold,3,"neigh:xhold"); - if (linetri_flag) { - if (linetri_flag == 1) - memory->create(line_hold,maxhold,4,"neigh:line_hold"); - else - memory->create(tri_hold,maxhold,9,"neigh:tri_hold"); - } } } @@ -1537,25 +1505,12 @@ int Neighbor::check_distance() if (includegroup) nlocal = atom->nfirst; int flag = 0; - for (int i = 0; i < nlocal; i++) { delx = x[i][0] - xhold[i][0]; dely = x[i][1] - xhold[i][1]; delz = x[i][2] - xhold[i][2]; rsq = delx*delx + dely*dely + delz*delz; - if (rsq > deltasq) { - flag = 1; - break; - } - } - - // if line or tri particles: - // also check distance moved by corner pts - // since rotation could mean corners move when x coord does not - - if (!flag && linetri_flag) { - if (linetri_flag == 1) flag = check_distance_line(deltasq); - else flag = check_distance_tri(deltasq); + if (rsq > deltasq) flag = 1; } int flagall; @@ -1564,154 +1519,10 @@ int Neighbor::check_distance() return flagall; } -/* ---------------------------------------------------------------------- - if any line end pt moved deltasq, return 1 -------------------------------------------------------------------------- */ - -int Neighbor::check_distance_line(double deltasq) -{ - double length,theta,dx,dy,rsq; - double endpts[4]; - - AtomVecLine::Bonus *bonus = avec_line->bonus; - double **x = atom->x; - int *line = atom->line; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - if (line[i] < 0) continue; - length = bonus[line[i]].length; - theta = bonus[line[i]].theta; - dx = 0.5*length*cos(theta); - dy = 0.5*length*sin(theta); - endpts[0] = x[i][0] - dx; - endpts[1] = x[i][1] - dy; - endpts[2] = x[i][0] + dx; - endpts[3] = x[i][1] + dy; - - dx = endpts[0] - line_hold[i][0]; - dy = endpts[1] - line_hold[i][1]; - rsq = dx*dx + dy*dy; - if (rsq > deltasq) return 1; - - dx = endpts[2] - line_hold[i][2]; - dy = endpts[3] - line_hold[i][3]; - rsq = dx*dx + dy*dy; - if (rsq > deltasq) return 1; - } - - return 0; -} - -/* ---------------------------------------------------------------------- - compute and store current line end pts in line_hold -------------------------------------------------------------------------- */ - -void Neighbor::calculate_endpts() -{ - double length,theta,dx,dy; - double *endpt; - - AtomVecLine::Bonus *bonus = avec_line->bonus; - double **x = atom->x; - int *line = atom->line; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - if (line[i] < 0) continue; - endpt = line_hold[i]; - length = bonus[line[i]].length; - theta = bonus[line[i]].theta; - dx = 0.5*length*cos(theta); - dy = 0.5*length*sin(theta); - endpt[0] = x[i][0] - dx; - endpt[1] = x[i][1] - dy; - endpt[2] = x[i][0] + dx; - endpt[3] = x[i][1] + dy; - } -} - -/* ---------------------------------------------------------------------- - if any tri corner pt moved deltasq, return 1 -------------------------------------------------------------------------- */ - -int Neighbor::check_distance_tri(double deltasq) -{ - int ibonus; - double dx,dy,dz,rsq; - double p[3][3],corner[9]; - - AtomVecTri::Bonus *bonus = avec_tri->bonus; - double **x = atom->x; - int *tri = atom->tri; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - if (tri[i] < 0) continue; - ibonus = tri[i]; - MathExtra::quat_to_mat(bonus[ibonus].quat,p); - MathExtra::matvec(p,bonus[ibonus].c1,&corner[0]); - MathExtra::add3(x[i],&corner[0],&corner[0]); - MathExtra::matvec(p,bonus[ibonus].c2,&corner[3]); - MathExtra::add3(x[i],&corner[3],&corner[3]); - MathExtra::matvec(p,bonus[ibonus].c3,&corner[6]); - MathExtra::add3(x[i],&corner[6],&corner[6]); - - dx = corner[0] - tri_hold[i][0]; - dy = corner[1] - tri_hold[i][1]; - dz = corner[2] - tri_hold[i][2]; - rsq = dx*dx + dy*dy + dz*dz; - if (rsq > deltasq) return 1; - - dx = corner[3] - tri_hold[i][3]; - dy = corner[4] - tri_hold[i][4]; - dz = corner[5] - tri_hold[i][5]; - rsq = dx*dx + dy*dy + dz*dz; - if (rsq > deltasq) return 1; - - dx = corner[6] - tri_hold[i][6]; - dy = corner[7] - tri_hold[i][7]; - dz = corner[8] - tri_hold[i][8]; - rsq = dx*dx + dy*dy + dz*dz; - if (rsq > deltasq) return 1; - } - - return 0; -} - -/* ---------------------------------------------------------------------- - compute and store current tri corner pts in tri_hold -------------------------------------------------------------------------- */ - -void Neighbor::calculate_corners() -{ - int ibonus; - double p[3][3]; - double *corner; - - AtomVecTri::Bonus *bonus = avec_tri->bonus; - double **x = atom->x; - int *tri = atom->tri; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - if (tri[i] < 0) continue; - ibonus = tri[i]; - corner = tri_hold[i]; - MathExtra::quat_to_mat(bonus[ibonus].quat,p); - MathExtra::matvec(p,bonus[ibonus].c1,&corner[0]); - MathExtra::add3(x[i],&corner[0],&corner[0]); - MathExtra::matvec(p,bonus[ibonus].c2,&corner[3]); - MathExtra::add3(x[i],&corner[3],&corner[3]); - MathExtra::matvec(p,bonus[ibonus].c3,&corner[6]); - MathExtra::add3(x[i],&corner[6],&corner[6]); - } -} - /* ---------------------------------------------------------------------- build perpetual neighbor lists called at setup and every few timesteps during run or minimization - topology lists also built if topoflag = 1, USER-CUDA called with tflag = 0 + topology lists also built if topoflag = 1, USER-CUDA calls with topoflag = 0 ------------------------------------------------------------------------- */ void Neighbor::build(int topoflag) @@ -1732,25 +1543,12 @@ void Neighbor::build(int topoflag) maxhold = atom->nmax; memory->destroy(xhold); memory->create(xhold,maxhold,3,"neigh:xhold"); - if (linetri_flag) { - if (linetri_flag == 1) { - memory->destroy(line_hold); - memory->create(line_hold,maxhold,4,"neigh:line_hold"); - } else { - memory->destroy(tri_hold); - memory->create(tri_hold,maxhold,4,"neigh:tri_hold"); - } - } } for (i = 0; i < nlocal; i++) { xhold[i][0] = x[i][0]; xhold[i][1] = x[i][1]; xhold[i][2] = x[i][2]; } - if (linetri_flag) { - if (linetri_flag == 1) calculate_endpts(); - else calculate_corners(); - } if (boxcheck) { if (triclinic == 0) { boxlo_hold[0] = bboxlo[0]; @@ -2406,8 +2204,6 @@ bigint Neighbor::memory_usage() { bigint bytes = 0; bytes += memory->usage(xhold,maxhold,3); - if (linetri_flag == 1) bytes += memory->usage(line_hold,maxhold,4); - if (linetri_flag == 2) bytes += memory->usage(tri_hold,maxhold,9); if (style != NSQ) { bytes += memory->usage(bins,maxbin); @@ -2436,3 +2232,4 @@ int Neighbor::exclude_setting() { return exclude; } + diff --git a/src/neighbor.h b/src/neighbor.h index 167af590ea..b44e0fde00 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -116,12 +116,6 @@ class Neighbor : protected Pointers { double boxlo_hold[3],boxhi_hold[3]; // box size at last neighbor build double corners_hold[8][3]; // box corners at last neighbor build - int linetri_flag; // 1 if lines exist, 2 if tris exist - double **line_hold; // line corner pts at last neighbor build - double **tri_hold; // tri corner pts at last neighbor build - class AtomVecLine *avec_line; // used to extract line info - class AtomVecTri *avec_tri; // used to extract tri info - int binatomflag; // bin atoms or not when build neigh list // turned off by build_one() @@ -190,11 +184,6 @@ class Neighbor : protected Pointers { // methods - int check_distance_line(double); // check line move dist since last neigh - int check_distance_tri(double); // check tri move dist since last neigh - void calculate_endpts(); - void calculate_corners(); - void bin_atoms(); // bin all atoms double bin_distance(int, int, int); // distance between binx int coord2bin(double *); // mapping atom coord to a bin From f0179f6f902ce8016881ed0b5da43b3eafa7a332 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 16:29:01 +0000 Subject: [PATCH 03/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15238 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/BODY/body_nparticle.h | 1 - src/atom_vec_body.cpp | 4 ---- src/my_pool_chunk.h | 2 +- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/BODY/body_nparticle.h b/src/BODY/body_nparticle.h index df968aac09..46903f9657 100644 --- a/src/BODY/body_nparticle.h +++ b/src/BODY/body_nparticle.h @@ -45,7 +45,6 @@ class BodyNparticle : public Body { private: int *imflag; double **imdata; - }; } diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 27fdaa1a7b..64e280fb69 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -26,10 +26,6 @@ #include "memory.h" #include "error.h" -// debug -#include "update.h" - - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/my_pool_chunk.h b/src/my_pool_chunk.h index e3a1775c13..f55da598c2 100644 --- a/src/my_pool_chunk.h +++ b/src/my_pool_chunk.h @@ -30,7 +30,7 @@ inputs: methods: T *get(index) = return ptr/index to unused chunk of size maxchunk T *get(N,index) = return ptr/index to unused chunk of size N - minchunk < N < maxchunk required + minchunk <= N <= maxchunk required put(index) = return indexed chunk to pool (same index returned by get) int size() = return total size of allocated pages in bytes public varaibles: From 29e64df1ba6fe6f8ceb8c00d66fed9786fe884fe Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 21:27:04 +0000 Subject: [PATCH 04/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15240 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/CLASS2/dihedral_class2.cpp | 12 ++++++++---- src/atom_vec_line.cpp | 6 +++++- src/atom_vec_tri.cpp | 4 ++++ src/fix.h | 1 + 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/CLASS2/dihedral_class2.cpp b/src/CLASS2/dihedral_class2.cpp index 9e907f87b7..d18d75b155 100644 --- a/src/CLASS2/dihedral_class2.cpp +++ b/src/CLASS2/dihedral_class2.cpp @@ -662,7 +662,8 @@ void DihedralClass2::coeff(int narg, char **arg) } } else if (strcmp(arg[1],"ebt") == 0) { - if (narg != 10) error->all(FLERR,"Incorrect args for dihedral coefficients"); + if (narg != 10) + error->all(FLERR,"Incorrect args for dihedral coefficients"); double f1_1_one = force->numeric(FLERR,arg[2]); double f2_1_one = force->numeric(FLERR,arg[3]); @@ -687,7 +688,8 @@ void DihedralClass2::coeff(int narg, char **arg) } } else if (strcmp(arg[1],"at") == 0) { - if (narg != 10) error->all(FLERR,"Incorrect args for dihedral coefficients"); + if (narg != 10) + error->all(FLERR,"Incorrect args for dihedral coefficients"); double f1_1_one = force->numeric(FLERR,arg[2]); double f2_1_one = force->numeric(FLERR,arg[3]); @@ -924,8 +926,10 @@ void DihedralClass2::read_restart(FILE *fp) void DihedralClass2::write_data(FILE *fp) { for (int i = 1; i <= atom->ndihedraltypes; i++) - fprintf(fp,"%d %g %g %g %g %g %g\n", - i,k1[i],phi1[i],k2[i],phi2[i],k3[i],phi3[i]); + fprintf(fp,"%d %g %g %g %g %g %g\n",i, + k1[i],phi1[i]*180.0/MY_PI, + k2[i],phi2[i]*180.0/MY_PI, + k3[i],phi3[i]*180.0/MY_PI); fprintf(fp,"\nAngleAngleTorsion Coeffs\n\n"); for (int i = 1; i <= atom->ndihedraltypes; i++) diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index 0839530e4b..0e534577f3 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -178,7 +178,7 @@ void AtomVecLine::copy(int i, int j, int delflag) /* ---------------------------------------------------------------------- copy bonus data from I to J, effectively deleting the J entry - also reset ine that points to I to now point to J + also reset line that points to I to now point to J ------------------------------------------------------------------------- */ void AtomVecLine::copy_bonus(int i, int j) @@ -195,6 +195,10 @@ void AtomVecLine::copy_bonus(int i, int j) void AtomVecLine::clear_bonus() { nghost_bonus = 0; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 7dc65d5f0f..8ffc39cec3 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -206,6 +206,10 @@ void AtomVecTri::copy_bonus(int i, int j) void AtomVecTri::clear_bonus() { nghost_bonus = 0; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } /* ---------------------------------------------------------------------- diff --git a/src/fix.h b/src/fix.h index a2aa3782cc..6ebeed26b3 100644 --- a/src/fix.h +++ b/src/fix.h @@ -136,6 +136,7 @@ class Fix : protected Pointers { virtual void set_arrays(int) {} virtual void update_arrays(int, int) {} virtual void set_molecule(int, tagint, int, double *, double *, double *) {} + virtual void clear_bonus() {} virtual int pack_border(int, int *, double *) {return 0;} virtual int unpack_border(int, int, double *) {return 0;} From d291fcb5d95967d1a7dd31dcb379cb2afc6ba1da Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 22:39:26 +0000 Subject: [PATCH 05/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15241 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/atom_vec_body.cpp | 7 ++++--- src/my_pool_chunk.h | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 64e280fb69..30efb33e7b 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -195,9 +195,10 @@ void AtomVecBody::copy(int i, int j, int delflag) // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && body[j] >= 0) { - icp->put(bonus[body[j]].iindex); - dcp->put(bonus[body[j]].dindex); - copy_bonus(nlocal_bonus-1,body[j]); + int k = body[j]; + icp->put(bonus[k].iindex); + dcp->put(bonus[k].dindex); + copy_bonus(nlocal_bonus-1,k); nlocal_bonus--; } diff --git a/src/my_pool_chunk.h b/src/my_pool_chunk.h index f55da598c2..7785ca41d6 100644 --- a/src/my_pool_chunk.h +++ b/src/my_pool_chunk.h @@ -148,8 +148,10 @@ class MyPoolChunk { } // return indexed chunk to pool via free list + // index = -1 for no allocated chunk void put(int index) { + if (index < 0) return; int ipage = index/chunkperpage; int ibin = whichbin[ipage]; nchunk--; From b4b30d65da81b65e4bcb7cc8de97a36fe584d99f Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 22:39:55 +0000 Subject: [PATCH 06/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15242 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/my_pool_chunk.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/my_pool_chunk.h b/src/my_pool_chunk.h index 7785ca41d6..61e9e604ca 100644 --- a/src/my_pool_chunk.h +++ b/src/my_pool_chunk.h @@ -148,7 +148,7 @@ class MyPoolChunk { } // return indexed chunk to pool via free list - // index = -1 for no allocated chunk + // index = -1 if no allocated chunk void put(int index) { if (index < 0) return; From 78df7623b30cbcff5c729e60d4a38dd8ad846129 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:21:38 +0000 Subject: [PATCH 07/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15243 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/USER-INTEL/TEST/README | 42 +++++++++++++++++------------- src/USER-INTEL/TEST/in.intel.rhodo | 2 +- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/USER-INTEL/TEST/README b/src/USER-INTEL/TEST/README index cfc5df31f9..cf14fb3237 100644 --- a/src/USER-INTEL/TEST/README +++ b/src/USER-INTEL/TEST/README @@ -1,35 +1,36 @@ ############################################################################# # Benchmarks # -# in.intel.lj - Atomic fluid (LJ Benchmark) -# in.intel.rhodo - Protein (Rhodopsin Benchmark) -# in.intel.lc - Liquid Crystal w/ Gay-Berne potential -# in.intel.sw - Silicon benchmark with Stillinger-Weber -# in.intel.tersoff - Silicon benchmark with Tersoff -# in.intel.water - Coarse-grain water benchmark using Stillinger-Weber +# in.intel.lj - Atomic fluid (LJ Benchmark) +# in.intel.rhodo - Protein (Rhodopsin Benchmark) +# in.intel.lc - Liquid Crystal w/ Gay-Berne potential +# in.intel.sw - Silicon benchmark with Stillinger-Weber +# in.intel.tersoff - Silicon benchmark with Tersoff +# in.intel.water - Coarse-grain water benchmark using Stillinger-Weber # ############################################################################# ############################################################################# -# Expected Timesteps/second on E5-2697v3 with turbo on and HT enabled +# Expected Timesteps/second with turbo on and HT enabled, LAMMPS 18-Jun-2016 # -# in.intel.lj - 131.943 -# in.intel.rhodo - 8.661 -# in.intel.lc - 14.015 -# in.intel.sw - 103.53 -# in.intel.tersoff - 55.525 -# in.intel.water - 44.079 +# Xeon E5-2697v4 Xeon Phi 7250 +# +# in.intel.lj - 162.764 179.148 +# in.intel.rhodo - 11.633 13.668 +# in.intel.lc - 19.136 24.863 +# in.intel.sw - 139.048 152.026 +# in.intel.tersoff - 82.663 92.985 +# in.intel.water - 59.838 85.704 # ############################################################################# ############################################################################# -# For Haswell and Broadwell architectures, depending on the compiler version, +# For Haswell (Xeon v3) architectures, depending on the compiler version, # it may give better performance to compile for an AVX target (with -xAVX # compiler option) instead of -xHost or -xCORE-AVX2 for some of the -# workloads due to inefficient code generation for gathers. Aside from -# Tersoff, this will not significantly impact performance because FMA -# sensitive routines will still use AVX2 (MKL and SVML detect the processor -# at runtime) +# workloads. In most cases, FMA sensitive routines will still use AVX2 +# (MKL and SVML detect the processor at runtime). For Broadwell (Xeon v4) +# architectures, -xCORE-AVX2 or -xHost will work best for all. ############################################################################# ############################################################################# @@ -86,3 +87,8 @@ mpirun -np $LMP_CORES $LMP_BIN -in $bench -log none -pk intel 0 -sf intel # To run with USER-INTEL and automatic load balancing to 1 coprocessor ############################################################################# mpirun -np $LMP_CORES $LMP_BIN -in $bench -log none -pk intel 1 -sf intel + +############################################################################# +# If using PPPM (in.intel.rhodo) on Intel Xeon Phi x200 series processors +############################################################################# +mpirun -np $LMP_CORES $LMP_BIN -in $bench -log none -pk intel 0 omp 3 lrt yes -sf intel diff --git a/src/USER-INTEL/TEST/in.intel.rhodo b/src/USER-INTEL/TEST/in.intel.rhodo index 37b0d65d7d..7b3b092607 100644 --- a/src/USER-INTEL/TEST/in.intel.rhodo +++ b/src/USER-INTEL/TEST/in.intel.rhodo @@ -7,7 +7,7 @@ variable n index 0 # Use NUMA Mapping for Multi-Node variable b index 3 # Neighbor binsize variable p index 0 # Use Power Measurement variable c index 0 # 1 to use collectives for PPPM -variable d index 0 # 1 to use 'diff ad' for PPPM +variable d index 1 # 1 to use 'diff ad' for PPPM variable x index 4 variable y index 2 From 99448ee45450e0fc72085b1bb3a7f2ca98a26e3e Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:21:59 +0000 Subject: [PATCH 08/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15244 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/src/JPG/offload_knc.png | Bin 0 -> 12755 bytes doc/src/JPG/user_intel.png | Bin 0 -> 14684 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 doc/src/JPG/offload_knc.png create mode 100755 doc/src/JPG/user_intel.png diff --git a/doc/src/JPG/offload_knc.png b/doc/src/JPG/offload_knc.png new file mode 100755 index 0000000000000000000000000000000000000000..0c4028a08d0bdae8d4c826f0b0bc96e1f40a5607 GIT binary patch literal 12755 zcmbt*c|4Tu_y0Xj8Kq1+k+D@$QQ2b#rBH;ZBt(x;cG-<(q|#=qL`n3dBtls;m}!wB z5+VkJ$Zp0m#y-F6zGu|)d_Ujs>-GKpet%@AZ`BHs6%Yii zI;?-t6oQt#gdkKH{}S-#eUbPs@PYC&)jI%X)oktu4@({QAKec@uc8I!&MpJb%RTfh zydY?;H~bIP?jY_DL3__1KDht5|C!+=gIimh0_gb@Qs1_bGl#F(Ej>n(NX*H#UVHjbBjr%YHh7ffKgJFDBRlq>-Ph8}DhZ6t!Imw%)c_zf@~7 zoU&7~3ax&^dIRUJrW;nucKzZ{6JKWS9Rf%@=A!mv`~Ln&k_0Oz^-HlrIA)A^3q})~ z3ZE9$J2sFqJIjc_--B8>yK8K8cHtfRUDTAYVK_KsL!opwjl!;1P$XzmhA2ftxOkjI zUJ_nE3`PQ}|Fu1R&~&UypE!iF!~7Eg|HHoh&!903p9_v|x*Dj_QwjIA^|4x2{evo% zAm%(Dbw^2pbJ}glYt1MrQYTblS@P-SP)_Vz*CWo%IA!MerVG&o5p}x3tZDI#NZTf5 zOi0(9c9Z1_KEalnRE?<@{#bqY~C1t42-*=cctXU?s>3fwAtPanCA4Ygsn z@t^QsSw|TAtphGN)M!{S_VF=Ek)0nOt%9JUy{YY-u~)(NzeY)!c~{+kNY8mb)g}{ZzhuC zoUN^Hb5;fif48khH7Ux=FdGNEK)A}?)@sXci4o0zd?Pgm~!pQ$GsAA^LA!O-FtU9^sB7IJ!7w)FEwi# zX)+PJnEYc5@_B_xPM4KnF@6e(FAkhKRVuLRqH>o{`nq(sxLo@&2OQQz?lJ$bj6#~z z4LcR5BFn!#+H8DWh$`h<%2Vg{HmM(ET%S4FKZJ=RI={P(=}Y_ejbnIpDFY>RZ7DYA z>hUtal(Q>w9%J_uG6G37Ljm8D`*R7+uQgj=mb1TM>R7&wrH>@lpwq_V7V^@Hb_ ztJ}mD&f>Fc>r}0k6ULxW<;1j|WM=*Q0BZEtb<1(KtMJ-pWK0mVI#gyW1p!1^i|kn4 zfcX&hUES>+B^UH|Jc=!`ygIN|$tT6pCB(?}Z7s$pnjGQzbEdM2*`F?59+u_q>ojj; zu3ZUrtx~ZasK%H|nVWn| znb32wH<6>zO*QOPC;Io0CK?w-f1);m#zV4FZ_$~Oaf}tf2AODpSsr5MI+k)rU~gP} znK~7m=lxKh2|0J5M0k_4Np|pnIy>kJi_IQl@LqQpTT%I|ML8eYf(?l}45^^DOxnQ$ zD*9FzzN257*DtZwgp9E&^5`@X2S(7Ff7#@=6YrlDV;X47{Mrd>^w#s(=kqUbjzUlT zv1*1}{7K48=;$y`Vk;+36IjSkv8F{u{$^!zlY%LNgD>2j`i}Pnd8Gu|Xrb3tGf;!R z+Xh$QY}d<%Pyz>5^H#*Cbc>3XXMba$vbqk7-Q>^=t(M6-xze^rPqYVlwY^|a5Bftc z{OxGL)!dU;T!JlX(96c8&d@iY%;_RQhrCz4P*RCgxMfi4GwMy2BE(%xAcHJRZI7CC+4T-o)>-~M{M1n`rKN@^80h#}$p0}Z5 zLxz#rj>Aa`-_1H-kNv39#uCEiL#G`yiZmiyMuGy)`lp5Z`5z1pTUDCtv#oDpbSepL zo<4pm)+nXd@E3%joH4v@Er7m1$zdsu`CfAccKZ<%_iE2lQ#;|mGg`E-Bt8jZoup2l zAJaFEaWAkV=PJ=gmbQou_j?;5ZH)p#f9Z&+l@(W0MX-*4b(4$N z2W$MP*qOdSZR6!bJC6h;iry`&@>zL8t?7}kzE`ilApH=7c_(8@hVfRqOY}Ovbac5} z+t0M?H2Kk`SB;K}2YaXxl44k9MUw^1k%ukY((4676Bg<%H{hw;P3JU2f@F9*FQU{i zf~trXkH2jrHT)_Syehi!Y*5if z*tw_yS!$497`#;d9^wWOCTUX&D)HlKd1as=3=|DEoqV{Ix9F?;(JGP3)=ofdE!wDz zDd*Zj`9me!ZP9pbo`spND&J{bI*mOj6)$yWeNNc%vMCECX5~(Qs6i0XHsg{70obU7 zVa~(m2iX7|u}9}W-Uarf|LeONn*|b2$W0=@d)HXaA#Y*Zlj8J1wKs7hS+xtL8{6eK zP>$u9{rHr#>bR8luPPoojI$a7Y&|By#VYdGDnUG0{X%bgQ|iK+>sB}Xk5T!0cR#$- zg+aX$87*%3%$fbh2%77bsRZ=oTWvrxF?(5t(6^fB``)}d)>OSs?4vs9AHp7|1b0lx zOT`+j*}dWiDbXx#a@Op~LN>km#K-*JyNBxYGaZ&R5=ilACY1ZB>-G3lFsuyWiDr%~ zam>j{g>irFh2r9n6Iv5hHoeh+7ZBE0jBOz9TWQ^MZ2-M`Tq^m&GL9@sF1O|-yY|Tv z0Q+6?me_V(_&kgD`F!j^nKO1H%-}H;@iEg;(<#R?;;(q;PlYfD zRFC$nLPhb#NYCSnt8!TWCXHkG3+uYr3pC1Y))oD3(+@Y7s7#e|7Se0HlzKjWzt;5B z$f}fb(fI!01ZkzU*DTRL(7-E2SlLcQPcd#blqM(Itx~Lar=X#MkeKHlrxOhkaeGDv z391xUfA$bzOfB})(`!P@T$qWWLG1SWuXk1>+j>2N?cR3GK^|M1Ur#uxRNZzA-KM_2 zVqm8r!R*bm0!zObnvu1gj(S*)3r?$uQTr2K@p=j&LR=cwbkk{HEvC*|1wQPlvivW2 zT*v7HVyr_-!`_xJ8h&ZakbSmColu%E?pdJw?)<72Q)7usT_=oBd~ER%jbMUtU}+sBk@(UqG>psCgAAGL!b;E86sPyx{QibBa5z zI&8vD;wAQagc>fD4bi~j4{(Q(+iW8xX~!g~Qcgajqm`!D4riRFa^yo=5`CvmtN)No zdtOQ?FLK|})aY9uK9(E(vMwQs^q_7{AZv5rIlz6cglh7+#Y&z$d9vGi6UKDTcPKQ0 zcN#I3ew=Sbt)FY1=Ik%D)7jK zZQ~Fu=u}sFDCbk6j6Sk@XkaOV0?QH2LvT+fB*xnZN^fZMQT08GH>0F#s-OIhdf z@s@SYBS3m$yVy;I$r4-_QR9uLQqm13h1$GIniDzBOp9QZujp3qHj17NYhoJ;nV()X zEX*^=Owo$N`olQp8%vwHiTFpd(!;OxbeNE}iXH>y6%=L%JWwTNF52eajNX=uvR#Kz zq8%vpd?M-YoE?^8uG?Z4&1bVd-g~cgv_gOv!FB@^D!RXGu36@czegDFgsEt6-40ZQ ze2JL@6@Aag^-EPMr(M0Sz#-UMDB^C9$&hvSv#pb^cv}y19pbLgyem(8a&j%l+Y;WP zTj~ue)>swJS+Vx(Vi3`_)PhxE(U~}pTbF^SolGu0=}?P45H{iSO78C$d)<^an6o^w zc3w2;yR;vff&9(#J`iiq%EO{(GupnKk50dq)WZLUna=Oz|M@bpTFrZKDg!_tQ3y2*8Anb9eQ{FPrmi`DT7z ztlH3vNTQ7;T8Qs=_hVl;IZonhT0dL;!0jLc2S3>81LY@7eB8TM0Wi4n+BgtDYj3Y| zB^aM5HqbbNV?94`W+>P0vd)LS15lRPK#xkxh1^lG)|KP_q=9&2&C>wf9jN69>o5ZF zxSx&R$z%U*w>MRK)7BQO^NhfKZ+f4f?{%&s#=1YAv&=finxcO)jokaZe=}j?Cb}W$ zfQF8UqEi2Mz>uWM8N2)u1`Xgteb#C4Vnf9$6+Hc2Tq3Xip&N8`2T=b`LI?lip#RxKmI($0W~(z_ddpHQsReM$OPDRc zmqy1=rj2dA8$0>qiDW2t;e=L5gzCynK7Rp@o z1#QTt+c5*enXLM~C3tPer8tj;d>wlSA|$>}X&Yj5G*H}C0-$vaWz1GtMPvG~f_=l1 z*m@cM>>2d3A1=RlhzrNj9s(GFMBJ?UaA|56eYieQ`x(FO3Ph%;a3B+4KY)L$P1i*! z%;Re7Y#Nf*E76&Lct~K60MI+UL>T7Odm>d5hLc*z^a9+<@(U|^*;0Ip3Rft;KSD8| zzO?_vBF%kW;!jA?{kJR~9p$vD))-8YyuY^3j|nJL@#t*Rk*8B)%ivQ^U!6qRn|RTQ zP1>D2y_>gWUWRc`71usPa z_Y{WdV+KMEQIc4XPzzIq?-XUg)gZ1?CJ~1r1Y5gGaVecF2%myNwx7o@W4j8);f4<} zC4nTwL7gPnj{O0liE{PVCo=P{GKe*tr2;sE5VYBxeJ7^hUwd??)!+ina>S> zyl|x#T0A`vOsBV@LpZwy7k-J;tr5%Ji+V9Zlsi>=%~!Yjb7W+(n@azlMvFv@+I^9t zYl^;aH|vkm1h~fvjDW<}(63!yNOErb&1cRQ)k`yp&~8j-2Btes9D7RCUwg?SkbVRV zGy~2@vgtLG^buXf%LO5vj}|;~E2naeP<-2Y<1^i6xgA=YUfDOkVc`OgBgU%`123Oz z{N9Z|Rqz7IzI!jHivLCVE=H!GCV%|0>BbIuLW_!4!Tn=CyRif=5NSLc0Bgs>6XUoy zM%Yg#hrClF^!x@*Zavr=`Q-kN-S}pS!f%8Jc~75>G^Yk??~Q`6`nTN!ewW@l+6J^W<+DLi_TMNDdFq0DOQ&4;w6cdx$KS1Q;(t33IiW!|EI{D{Fi20#sBx8#|6*TrO}qZpp# zL|FqsBKR95P>u?Ab)CTy^lk<fFMz~aG4a3X}t0^bi_DyAxr`Zp-{LK z82g#=7^PHtc}GuJ{;OH7x%&7h5cMv4LYN3SmJ%e^dXwV$+&0UG#7B=vahb9a<#jxw zCxb(%0W5zENm;U-Q5T!UbL+67Z>&PMP^!BzO9n5kr`(M2LvkCvsND?UZGd2>2_zv% zg@&O{!M5H^<`j+@XCmpf z8gvUC?e~<}7P50QwkRFeiqMF!!|g}@MZo4}i-XRY-yfq}kDvxmlSfI3l_CTxf%u+T z(ylfZ&5Y1sAUo8K_PrCc#$UU4xA%dQqYy`DN&bgHagkJqrlO*Ul?NBb_G`Qgb=t$~ z`t^1YPN3!d6y%8o*wvXIem3_*u(f&iggZ-YCg1A{ubF)_xgfcJJ(HBk2TV&ZN`NlO zJqVot1yvaE-XUv+>KLd2%b9|9vR?6xG*{KX+a8lyU!FRWj@rB8VzjDqqCRQ8b7WAi zz?2s7NogiY+>KHShbV=?s3H`$Z{=I=K0U;=&bt1QN1fAkK&26_?$wD>g>wsFofu2b z11>ZEap(ZRyMbRYGLVyBt2fq6)@1lSu6DSbfoU~t96>2|1eAKVYSoY_`?(A|sfEx% z6`%8(mN^Mq#H%BL*$*XNXs5U)ccKD|%X>p#`L!eq`-Ds>?K|fg&|SUm;5&6^kY0_L zT?dC5*OsMrWrrks--b#4mdsojQbk&ieQyCr(KqMT-#|s1o^pH%^w1;pz%YCtguW!p z83@}YkEM7%)c^C7@HoVpMXlq^>o8Ci*Dm`sij3WQ7<2)%ymR4l%d43{ZGZC{gWlXr zqmL+D3^$bl^w4f@;nq!Q>Yj_q!t?W_>zqr_KYn~azZ~XNhc?DXw5#d*FzcZnWdn6rX(Sw#QDsr zPg-q7oqSg_`EaXW^`K(F-u%W=xhCK`?IKPLH}8mDhd0$!7Us$ClJm2aR^4+>nMvXY z=V@UD6Gud;9lJmDEJJurbHzs@iIaEs1m)?m0`G&4jqgBLiphNG`xU3W`v{XUhp3Gn>2>`pT9Op z$b$2REqYOO2=@Gi9m5{vJ+`1T(CbX-t%nz(HP^0+n7q21PNd(N-&!d z6$6_Z3pAM;rs+VzrQAQJZ7#l6Jb&vO%L>t7VqGf5m)*{$%1pR9dgNgeHiLfWJl`-| z*8EYP$;nrTajS9i1+)wzbx2a@r?T6U{&37egrCX&_Iz2IDplw?yT{EB-=iI{o|dH; z*XwBRt}##%*SV=Ov)TFSE4zdC9|^e*UlHkCxu}au0t@+6HRXiMX<41UL@p#jw5}_W z+Yv9Z3=lEAbj5DE@c|gq+&TYX96STmAN-A~|F*@au8V*Q|3hiuO8~&`kT(IkQPySA zmtoc59?>6t_+LE7miM$eV-Q{OCke7;kYpYRNN^Hs8!enaDPEiyE8TKVo$a_#Q!*?% zEtoHmu~N4EqiUI?hl<{oFHc101K8y1BMi4K%Id4hcQAbNiC=~(}hIdthQ2&lA5gRLAN-(>~ z=KRM$$Llr^C~X@{mnx0C-b|DXL#P7GpTB;JHDJfU=o;^3>{O(oTYoy(J-0q(e=Tde z+753!js!WWTt5e_?AJ%7X@(R`Ufwd_=hg|zA6)Yf(FtR-jsYa8FW+ei=cATnaCr!q zH~?32ZzE&7;w%fQzIBm26En5_0+fwu1vfNLz^VR+EN+) z&k_7dM#JphN0h15yL0fxGxY~pmekFve)CD55r<7NK-CId3~ZViD8DHC^n$YXlg&OE{ z?JkVnv@@9jJLw`|5^&=o6bq)+c@!Hi#MmNP|3(YbbPk_#F*A_Fc|*PHE`#VL7pBw6 znto00!81D-Z{Kem#TM-sIAviGn{B_j10~DN{`g~y!Y>O`w0?G}-MTvm5|%sRj1d~Q z=VZ4g2(U(s9*kx42cGlX$Eq{prHdgDdCV`|4Wx`yrR`6Sk|y2B8}Hq_iYIA78E7wD zhnw_>FkYLhFCYm0QPBGqxk^7b*yK|Bt-iwDaDl9m3$ln?Kot51g6t8zxx+n-_lx2k z3*o`7xP#Q~_wdv~yBcqXsD+hLSzb7o78E7Hd7_b4-{LR3uqIdNd;3t<4Z?dazidMD z#seovEvF&KX?%&j%e(gfw;E+L)Q*AKrXpT_s$k3tVEHw=?Dnhzo&;PUAganHF=Aks z7dn4G`|#)8@UDcv7@e`_l-sk5CZNZ|-TPO7JORwjxjMnKR6yH-|A7w`oCD9tf;R9W zclpx!mIq z;D0}Z^m~OoT@Qw_2afsQ_VW^EU41_uOOe~_!m~MurF_jUx761MYIZL>_?Mp+hlb#( zXhA9x(*S25Ev%x>l*RLiUp_tAbPStJvqZvCylv)h?;14P?bvfza<7b*XtqHTDB|#N zFyDl?Rfp{(tEcZN@jCZrCfqo*|Ngq@dAa4W8EcT1^jYd8z>fspo8zi!q89vt2?}h= zZc6)W4>Y!YuRXcYimudD+_wHWN9{1@SPC~|t|#B712aN!g*$_TS?rMJo0ou(*1CLn z(dw4>ec#>AqG8no*(Nn@()*8Qh_fd@ZyVZo?}4M|K4(u+F;~(b|DGOHAs!qJW3E7) zoc3jNHULeo%InkZ&GEGxiYa9YhV}0zAlW(wGszy1+*aJ7 zY|O;OXPJi5+}KAo9>(oxDPRjrFfLoUggc5bhKSl4%xqK`WT49SkgF#ol;d%=^on^( zl8Ly%*R|U%Z6PGfBWTltFe|XYIc~2qhNV4-i~>WnQi8V>p)vxr2Y#NeA0kwkqSYzl zkRnWP2_0@Qe*o$5zW0pS7(kY_LPzQPJb3RQTP(x1#~dli$s4MCl{P=p8s7(M0!(Ma ziG_H8a!%=_n3`>fZRk}(i`nq7W>Vr{v2;>Z-1!l zo+k;D%1w+(#JRJ(POOzOmp&tO=R>)ta5`H^KGfvdAWE^ZXXH^{((tKqK9}_ulbL~} zLmqt3U$u39wb7yt+;)98B1JEbg4)@_)i^xqV} zD@%}An0$0P(K?*wZQ$$VCpwDZf3G~Rt77{EK=%^jDPk%M#~V%{mz)jRP8!R}h zJIQe~dR9guD%{Iou{0o13ju;J>UYV@;DV!J6AkFpsTBSkL2J$rYG{l_rjz1eGE^3lENO>f@@;A8e_k9VSNL2hR|m{=_oaX(;fjZe(= zKQ)Yeook~zmasIq3F~v7&7mVAyohQ<+8pr#oP7&D*uwdf%#Cv;|n=YsQy<+||qtOxFXj ze98!tx}oiVA>}Pg0N3G5%-i2rbKyw;o1DDOlV7Gh(V1GnWCGEMzmO~f5I!j)D+Xqf zxiVGW1ZvX=D7YGa`SepNAekzyO+`Qm6dO9dSIfuae`6z11K95MSfa!V8x8T{j#dULL zOGBl~qmg}iYV;^%rauD7Qk>2C_!AWeyh=~)W1V=aG?LtWD?aSsGZYg~Vx`}?{$QkiX|x5dHhtj56n4^+xEl2YkZ(V% za^Z~-{QlIb`JXx(ysDFMV~R2Chq76FL5@`qm*1?}K(AMRzSoxD09QL&k!55g(2ME? z3>2wqm?W??VRBW{QV|Gl?tMWC^nk;dccILc^%R>&Wk@ZOeh-b+ZH$odI89KR8!CJ= zXs(RHB<0w>-syirc#PDQbwAJe$mnce!=hVw#|}9H94Dy)M>OPRB%1vkUd<8F9?=Ha z)h$N2ROC7 zZx8BH#=@F20^sR~ZDs)YfLw6@AC=PEA_GNx=kAD|ZYlJW*BTA`N`j6uhL=Jg-=eqO zw8{JammKZ!ufc&4tr^)D+7_&;jR`x#3)exy;PP|3TQlxd+W0`bThDOR>t)YA-=Zyt zZiQnE?^tZW)0^Dl>>R3>tov&+vcu;1jnp%B+q*jW0&gGG2L#c_vm8h*rRbJ6 zB6qu>O*mgVUx?jMyRsBBta79`r(d_HwCY}`-3ATl<5Jw7qYf{fb!IDlPwFvO()rs6 z7l_q36L0S#3$jvDD`fm);ZRlWs~IdGEa-IwyR)J#JuSKJDS;H}a9IU^4IjVM;Z}5u zWqQJe^HfPL%js0?@P%$I$J@Rr+MsAjt9yqp`ZXm;NDv#CVbH>VuTo=_&&i3QmpI>M z%p?_|Ak{UX-dsf-4^dYD=zx?41m9u*Z~l|O|8$0^MG!_z2E(wi*s={j|I-~*BIJ=uF8P+lX ztnL1vW5Z9G96=zyC25I!%8t5oaN*GL;?Sofiq522t+a8&Vj96;m$mM(U;85YY$@wf zZwQP`DOo7LK)WHptKx+oh+6LKnHQ7%6ROglmwqta+lVZ)=9;$L+v=^@DRy2IYFSxUN0~q2tdRyGo;^ z>RyUcHKs$rN!)k0Z^)B@KzFV@v0?de>VXHV(@9-6{>|;pZjH_!bB=-HxnrQpNKbH^ zSlvUi*65u)>!LFt5D5qxM?7BIZei6|8|M%cIJ-Xhg@@q49l`Qet?yghsc|~5UAc>} z#lbLKq$CKm@jTZE1bT6~GV~Y-mnAc@)Ph{`8;<59>hjtY@R&YH(2EgbR+@RLVRNNDayBMW-2n$r3}a4} z>7>|IP^Bed1o?VOpIE`VM*AuZ7Zcg-L44W4{P*ueyi^ZfQuUfiMx`zvDGB#VI7*K=Ikchzyvv$g?8 zkM7%`9Qpgvh^wGCi)nS$wa6=V3Zri3a%6u$yoBX+^t3PK`eo2O6XYRF?gxDWf$(LQXr{BJMN6qUjuO0tDc0K)wfif@^a1 z(dDmM`OOwu&-2PZe7iJ)L90{=@NQnmw7}4N$@_IJGWm;a7;N9A#M)c8mWc*EFGem+tMZ`tmt!7VoC*C9tr;0Dx>4P@8qdv^imw+US9{n$WuU zpW`1z_8VU_j6W|*;a%gmZRPw8%|jp*xDY+hIMT`cS%5cU`>`A}CXork0;MSB7uD_O zZ4cRr12XP~-_mcxYC?G-0^3i9GRyC^)~-eRdtHJe82SyNA{O2shO~JJgx>sC$PvNH zDwn^D*BK-kH9geO80xdL6D)6d40U0Idq^0SYH4IgrL{a`jG%GUAlW$S+H1Rh;HDN+ z^rXB*=3+JZBJoD{)clgL+ttjN4K^B(Z=HjzL-4{Bod%p5sw+|_H~dNuz*_#H|7t=b zDf9GZdEax!kuRSA{Wi`3O^mAxJBB*`duxDXgo1zD%oI`fK4*7bZXkzZjOpGnR}qwH ziHocJNaJ*@I&3OlVkwAx5qzlbG5Xk(=5MzvBgaZpN*mT!0zb8efe9=z3`aMiA@)o@|8bhu*3QP4pl!Z>lZJ6!h*xI`GZ9(=>&C0smxw5 z|K7&{4O$fX?WPn2c0;PcHJkj_@!!uTim)r0+GKK~n!4f49+R(XsqY)(3u2F3QT~pC zlGgHfw!F;2EqB{-W3=9kc4h|C6`qa@(rg*6YbN|>M%jOBODV$Y-$>U&6%|mG3)KfK zU!my`+~GPyOYx-R%Yi7*Z_!+=K>8VXur#xY=H|70H%&RB;@_bznPS^KwSH>SIp9mX-V6fpgxE!FUxs<9JNrcgOKHdJJ>VL~ZoaS;qkw+7k=T#Q`!{MQt zj}L=>Dx7fd9w4C&uh_%HhhoRyb|PN-N^mN3JwD0rM)&N2q^cj7>D(|<)-r@anvK7x zhdQ!_o{tv_ArN}K5Y4`E;Z=!@t%@J`XD9HU8W%`+;W3nb1s#8U@fvW{QLRhUH``Sh zfco7AM3@XkoREE1r+a52!WDH(b*xhdM0Y3!H-%bkXr%8dY@DCHSQ&Jvf4x)-_HfJa zTlg&^QETFTH2kH=08Q#M+yM~LMF5q=BLt7sUT06|V!b|t=}3;fcyXwLw-AhQ<mW<*N+zKLF3E`L5B1VP)hv5zT?}?G0=L1N z)uH@fsZ)ix+oh6_DZt9#ki#VE$WK!I@{c_$@SH297!HYeP0M(7zXjK&G42=VN4Rws z*-qPq|HuFmvVt$SJyd+X+x>~@x`7bQD8b>@3=yuUSA$sl_>O~!07U=ZYxC0b*t5<* zpY9`uVa|ef=gmwPd~=kx5-4?t;gLG$PIqyk5u|#krX-yWN!m2wbdRLi^H3CUQ?nLZ z#EDy14$S~OKtKGf)HUNv&dFoNeuu(9qV69oXJk9y=%8MBTE0xnlu)x%UzWaTQK;9~ z?{-n1r1)qQ%E1*?qbVU(QW5mLgmfw5(SoNuIjeCWc72l;@FC-N5KDy3wC6X*)+mkhYermkJ`$Bt}W znx3barpHyw_)K9g3B$?u2Nd@ghJZvKfsbZY$>SCpO=gg4&q*CmAI8mM3xRdGI0Et# zuM5~EKn{7vrr*pDkK>1m3>;(p6IO*D6S z>-LdUo$(iI&WjX_zzc^=z3X}lcGv?`3`G3bTb(tFP79a`?weY?&$K^Z0^p|?;TpX} z94Q?;o%D5kwe~fehmE>@YgUp}LP8hC;>9Cwrh@7QJRAR9<$arTp@uL<^?|u@n@|yU z1C`VyGY6ss%IROJC2NV6f4?MG?Y}el< zB%w0DXx=5CdrY$C@GYDL`u+7vwb3IRn4>|rt{>XQ5D|+(F9aOh4g#p>5K7Y(dARAe z8tW%Vvyvf#o}PdA?6=2_#^T?`{d*25=U0LN$mZX2Mb^6To{FO@C*=tGG!o?`Pm+7| zZ02ZxH`G{G46`MA=G78E2a_pbrOP2Y02P}wE2Z|+6;(<5$@JX@DNm{9yw%-IeLrQ(ha{mV{7O>dEuZB_#Iqx^z^#?f<*u|p)2=c2!H^7s?cFr zTQYoc4Cq(>N`^rVPEkRUi=ZP3;0$#q`QLY&haJpxtmNUW=*oP_u{Ufg2b))PDTUCBOQ+zwiK5 zU&6`{N1gHyyxfi3+g{j1(jUeQE(mRP#hd_Tf6(qZcldZ{Fe28yT>Y!wMs@fx_QXHe zfQk;JkCc%A<@i$ukscUAtMlWZQ;wQmgdIh;yDWZh+=54~8@=$q9?9)4*I;g}(?JsW(pyx}bcSt8SEgN5qRvxzpg( z0pYhrl$Akn(d1TVei_s@O3-bqPI$oTcrDHd^2FtJk8P!%wS%6jWMBO?aX|KRs-<*5 z(-Gl3FfQNdVsuqz+y_9WUd5A6gB8IAs9k{oBxn?@-Y^@e0gsMAtv zXn(RaXJzj#$8M_q(``&!a2DU?X6U)Q-wgrX4a)aF8pIGGBs?SEg&Q&QM}Z=@pOtq} z#5azr$nX0dlUa&BJQoEtj{Y{*l8I?kPwB!JXVYMw=DEdma@|#;eTSh+V#wJQWc|1m zel~3BCoD^uM5{fxP_(maj-@msq8`}S3_;T&6eKZ1FusX<6NZGhiF)~dN`cZQ_ zWxsnp@bsTv1dL{@df2-@P?nXU>crc6SQa+#%;&_Kf4EGe2M7GKDC|)E*8y@f!agI< zek|`@BL{$DLlttn_-=UCFLxVVjI5femi={%%&?2v zADVjp0!2XcsNEPdCQ}IrDXLo<2-6eOpO|OeM`4Lo*iv`8*wd3E)7JnneJ(rzD$w9# zI30D0(HqkMoO~?p&H@zEA3aGC&O&R;3k*gh$f7J+q*MLLJvJUX;2d*jp-{b9L z?|)YGsBklQgs8oUyIJ6gN5M(r>2A0F9m$tuN>BMvEcYQwu5`w2zktI zQy&R!=s$A7Kn3#qdflR$4%Vs+wX8{AJBF-)6}|NR&pFU0iw-74r}kAjZ)z+n{Ku5V zI-RiC`rZJ=WUe#wXg_BP`qut;e*n`^-oQUft@p{l&k*% z?yqMG&wje6lO|zl=PC2;A5}&mLDiExjV$~}mYl+gn7@4>= z(EMNVE5yXPIH4AC~rYf{z86qfR=HBC{}U9zV-c{!NvI%uGA?;17RTJ-a1 z7G%weyLK5>TgyIJJb#aJx}6@@s=i#nx?5`Hx<;=BE2vV6Z>y{htu_6SX zXY|Y`oQoqZhBn1g_u+IBR|I)hE^H#%uLLv6SkLrAC>VdGzJ~wjM!u@*{J4$`_Tm}I zWx}_O*5Z-l5JnBCNRT`8y#GbY$+Gud(#EVbng-)vpkXE0%;TaW_Qom^u5Sym993>- zFk`XQVFFVDU~v|}1`|cKbxb6 z(ixie&bzHwgvDJm(P>Z;apj4N9H6XCME%3KybLmS@DtJgBShqyK6^*Xj$d(j+{G zuHC*W^a;jHSV2wwwUnFJKU|x_u8xs23UR@WWn`+LEF=bqp}K@CnAxkB!qbLEq^LS(W3BY6zNhM1l3@r(rA9UTEXI!fV?+hYRlxz7<%be)k-U)e>KH>r|WhgsL$_|_|kiN6bB*4S+-41OYG zd^+)L#B76<;zin1Q(VXo?AiC533wlDVFhnBa#C{dC^O7gl|M#V>kJv*IHzE5*IjP$ zP;ZZPE+fq=h|<_`v=xihH52?OjAHvdGQ%A86CB8mv`;K+pU4en^!3=SF?l>a=L{J< zvm^Xf?}g;%b$?z>Mc* zjSzlZ=baUwFL?e8RJdty6DpzRiioO3$&bj@@&!r3nUY{cB7+Wdb-Zy*xumuN0;ss#T6dnbP73UWD3!k<^S0sXk0Wisv9xNdtw zKaV9xKG}4TMDLs%L^k=u{QZI3p;i=S!QnwLM$5W&&Wdcgq0McH*)XfqCHL8;u-7^h zpEikDv+$7oB6xf6Pa9vSn3rTO#A>-urf5o*r@oe0NAyQHhozTNF z$@hNcCj7H`6H~k{b#*djYi6o*N4a=|KTjRcpu2s?j;H#;Ij!^(wW8vW3;Vn*H|9g$ zsyoK5wDwvHdE0F&EZ=G(lXIj4D*qZbTrzpEtJ1jBV!!V6CecBO@>QJ;mO)jUlLmo5 z_}AyvHkT)W3(SXgm8maOhdh&smbs_1N)bD2m@IsfI(yV5N>7b?-qe-_M-?LXtQz*C zRDdO#@vrS@q*EE~te`m?x#o}wU@wFp?p*Y8hwk*oUweHCmT~+VR!7^jy!^v25ZBmV zwqWKLnjAkX0ev&EcZ#*S2|<*I0hgU+R19E5f^eJ4fXe8QDE{c&XyMK}k6{iqLrN zWw{*_%OkxKE1w*#36lx8;%s)KREzN$iL!^!?!@C?4xS@>o-#{?fEjKn^5;0WVw!ok z5Gxe?)`qr^T_eo&&f0xl9ecRa;FQ8U5$8$!%ipe|H`AKWp6rEQ_TQ0q`09;$9dB3Z zb_Rd#WeDD#nYEnouR4s(meZKu+B)YnTgn*(d>sclQ5!1w3n=^4z}p3mqkm(+9P>^2 zJSE(rM-#R^(n0kdYn!G{9bQA(IUWIXh$*_+0>u>(>-R^=A5SUi_8hM$)nh*;s)$gT zC|!DvuKGd-&%+A+S*7e&AkYw$9HEA7~aD#B4O(Gk7Y}I|2Xdfs`I| za|VlG3T-Ty>2fo)V4p`MxJoPM9yerf>(txt+{jp|L&r!AJ^97H1)?{hJ0cprQv>Je z1jszEA8rDl$XKuFJ>N{<}*QT{j%DQ7^=8B^1fhZn5WQ z1GzqkTpXM&7`zTfz?-MVRP)mAo5gz0zwNj(E%FN-{Y>GXvb44HlJgSkw;TJYn%`54 znQzni@0j;X>ad_9k+M3rg!l_jxRsW&tX7;ytY;LuV&*J63xSiwbj?vwj|^aZBP<>7R6I)k{)IWwa?kJ$+-i{L zb!3Vqb%r$7^%`6(+Ei1z`ixdb`xs`nV|5sY855$q;F;U8kk@_!vc(B6x)Nr5#_Lhx@+we4)$O6g!ItOuIat^F$96KDm7T>PvrmtBj}zDX~<9Aw8(o&b;h zSOnMHD@UFmX&y{qM-6PLGE#<~UWHEb+Tg{NV6HHDHW)xqISuA= zavCLIDy7&P-11Y|0_u}ZE6EyCX@ryW>6rV85ss%BuInx`AQ)RQ8KKh7y*PfUENQ=7 zoPbs&H~bgjn0P1$shr6d9h#DPU1Gt|b+a)b**O;f{LE81Hbd>>))WHqWs*at3yJ-` ztuvBE9$m={2fjdNp@n=H?z=Mw#SO5&dn(hSRFX;2gXDDM&{%laA#35=@t#qTBHN7g z4Yg}Sxt~qxY}A;&aoD^36Kc+^jlh-i5d(_uhkO!3-|DDU*ZQpw&ZAe7oBRW#_-9;WNU5Z z4#%A7uG6O0BvxPOuI&fga>Sr3-*^cOGG2kNi}c-C|90-IoP^5wNY!tUer69fH=cAX zX=@N-^}^_2o>6*On49>)ztSQY2veGGRy4|7q!x>zJRrJR||T5oGvP=f5HvYC){fOy?=$x1RSYtuRG4l;PX&SD{d^< zFzMNgTpCMbNyoM!Kd!-V(+hbwuEoAmbfNphE7i2^lbtWign7Sry>ZUpX&dWza*diyNe*Gz?7f{%w!ZQ{W~X)G z1f1*4H_b4v@BC;4!E_m;E^`F`+DJW`-4JvueUP|31yj#>;d0)`Ue*XJO)X>J=2duO8 zVQ)u}X$jscLuwDT12o(xlOw-$PI4(5IME-D7Ea1KxkD|AXGwKmX#zhJm|c#Hj|Y@~ zblN-^0)LLJM{HH#<$gG_KmSb{vu^6`ZAAtEKf48ydhBjaJ`FqdU=Mg2a!=pNwT*Ls zsNDf(-v9LSui=qwI>mP?=E$sgIIjw;!&dN{)q4g{$Hzt}SK>IzRv=YJ$Kg#Dw#~Vm z67y}nVg^iOeY^1RutG0cqUc1NB|8JnS`$FoOXIQO#Y%(V=fTQEfh;bVKA1vrN2_!F zOcpS>9_~F@7rKY5*n`jwjKLMQGUrcgPX@XXty#OfHhS=qY8I^^{r$}Y4e+{)f#6VQLh$L^?M`+wA z9GQ4z*Z$?W4-u}Dx=`e**~f-3q(Wof_URtx9g<+t*i26ZrE$lYnTPraL^Reqc*8N? zxHCmgfD-t1mxb##--LFG5HcTs^=(BIp3l88E``XO#E-=xhj3GaEgAM*> zHWw;m?ea}y*A;Cu6htaia0uu}?AW7S%xPYEjyd2CCQ!Rp#&P2&i8h)&QB(f^@!#zlumZ#;J zrMy<#Iq$9HwnVa$W>|47?2>I?_Jwn^)N*aw1zALGa#G}^i4isqbOPHUcf4C(NvQ?B zt&q{@58V`OU{+Xbp41&Tu@h4YeXdF&GuP{=tn;-ntW)hhYQ}7Yeg3kmVsDi=0gzsCig9dER^BPzjV_?UrDyrld1d>y z8^BUdj!=;W%_*Aa9(TW=2^!F)UHg%{;4L@S)+Qo@)&rq)fhr&$UE-;@ZPax{21d%lM&A?EYhXg$1W zIjl=1Lc2&gLEL)Yz(t;CewRo-lj_#_RTRfHOMutt>f`~R!@l@*yyaQ0Aqy>HIyV$h_~4wua=eUn$Gd& zVVN?%?_7RaWU>U9Hz5koE9%0gmuKVB-d@rR zb`O60Eo#CWxDh>kY5pe2+opJNu z?}W-~auRmg7A?j{h?EP>CNew&Q)Psd4>2`1>pTcCKM^JBAEIuB0ebT15^NS)^&xgF zb=<|L(;ryeH7Ow5=U?^+)_FX_1E16Tb}g&HIdxbVF^0M$G|;XfDq>`)b*otwwgrnv zMC9%?GI-q2_6VTY`7GPAE4uw|n2E{2WhgDS7#-=3R~gZ{6Pvdh$TPCsm@lW`FaJ6PV5 z_3h)hg?3W&$~cSf6^HMg{yA+m$V*bsO>YT48EfIl69*kHi_5#29NN;)U-7Z@rHKCawdGqvJ;*dOX?9^vh!dd=@K z^;@bBvJW)SEUi_+zVkk5^a+Wq{k~>y-1h}sc7<(HJFez@n~dZGRwt$mGjxs`Wo*{W zeYGNJJWct$iqo@kqG}a!&&^CVPV%PeDBl7)Ck40y^+l>S{relTjEZV9H(oWSM610M zDnz$($HkT+kmd3scSN|YS>UNTA28Rr0zdj@E4P{^hLz+p!B{dyoZz1$@}u{y#FPP4 z=1Ko;K>~JnBq3jKi_gcsTMBF|FL^UCcH+FwZDA|s&u4hO{mljI^2OrCvKJcTGFCr% z_ax^C&>L$_ehjA?c@4`LC--{F?IpkXUSJGf`O1i7rg~xVZ3#91fYCXo(a;2pP}GAP z^FH}nPOy1e7>m8512220=@!qhNV19FC7Tg4DUvAE9ds^YLPbR__VcvH1)u`qv?D%! z+qy4aZalRe68nf&BiJQL>7gSy*1?MLW?XVk=fjJ)%L`6Rx|nEx%MObRXSmwt#bO*8 zQ{l{CgH!eC>8Xuzd;nk69epVfJCEY;t@W~rl)XXUC|rB$4ZG+rq^$-1-P~f6BDvH$ zD!Y^VPMK3{2NhNO=51Mk=8D$O#c-0tLvOg;?S1o;x-eSyp?ViIg7Eb5O0*gXrl@4n z1aCE6TGcnkbx8HbSn6n4FNIMdb)B)}vvKccQ{`44a!O*dsbOQhP6}9aF3-t4;PFXYT-wJUJ1$jYzbuI3n8#s+@05gGG|^bP;65xAM^ z9TuAD?R$=f%Ob!f9%d7D0q|I@x6m4SL~IaVp)vQ`4-tm06Hi{|a1|?_b`KkvUcnSz zbC`&J8gtW44QJzgs*?Y*n*D2)b0Cq*8?pmgDNOPfo=s%t_{$K;sMaik<$ zUdimcZYi$)o0L*@&f?m2)=OwWOUIj_tmy^gA)A#&8iV*2b literal 0 HcmV?d00001 From d11877d5afc5f2739ae8bbee09b15160e64684f2 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:22:42 +0000 Subject: [PATCH 09/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15245 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/html/_images/offload_knc.png | Bin 0 -> 12755 bytes doc/html/_images/user_intel.png | Bin 0 -> 14684 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/html/_images/offload_knc.png create mode 100644 doc/html/_images/user_intel.png diff --git a/doc/html/_images/offload_knc.png b/doc/html/_images/offload_knc.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4028a08d0bdae8d4c826f0b0bc96e1f40a5607 GIT binary patch literal 12755 zcmbt*c|4Tu_y0Xj8Kq1+k+D@$QQ2b#rBH;ZBt(x;cG-<(q|#=qL`n3dBtls;m}!wB z5+VkJ$Zp0m#y-F6zGu|)d_Ujs>-GKpet%@AZ`BHs6%Yii zI;?-t6oQt#gdkKH{}S-#eUbPs@PYC&)jI%X)oktu4@({QAKec@uc8I!&MpJb%RTfh zydY?;H~bIP?jY_DL3__1KDht5|C!+=gIimh0_gb@Qs1_bGl#F(Ej>n(NX*H#UVHjbBjr%YHh7ffKgJFDBRlq>-Ph8}DhZ6t!Imw%)c_zf@~7 zoU&7~3ax&^dIRUJrW;nucKzZ{6JKWS9Rf%@=A!mv`~Ln&k_0Oz^-HlrIA)A^3q})~ z3ZE9$J2sFqJIjc_--B8>yK8K8cHtfRUDTAYVK_KsL!opwjl!;1P$XzmhA2ftxOkjI zUJ_nE3`PQ}|Fu1R&~&UypE!iF!~7Eg|HHoh&!903p9_v|x*Dj_QwjIA^|4x2{evo% zAm%(Dbw^2pbJ}glYt1MrQYTblS@P-SP)_Vz*CWo%IA!MerVG&o5p}x3tZDI#NZTf5 zOi0(9c9Z1_KEalnRE?<@{#bqY~C1t42-*=cctXU?s>3fwAtPanCA4Ygsn z@t^QsSw|TAtphGN)M!{S_VF=Ek)0nOt%9JUy{YY-u~)(NzeY)!c~{+kNY8mb)g}{ZzhuC zoUN^Hb5;fif48khH7Ux=FdGNEK)A}?)@sXci4o0zd?Pgm~!pQ$GsAA^LA!O-FtU9^sB7IJ!7w)FEwi# zX)+PJnEYc5@_B_xPM4KnF@6e(FAkhKRVuLRqH>o{`nq(sxLo@&2OQQz?lJ$bj6#~z z4LcR5BFn!#+H8DWh$`h<%2Vg{HmM(ET%S4FKZJ=RI={P(=}Y_ejbnIpDFY>RZ7DYA z>hUtal(Q>w9%J_uG6G37Ljm8D`*R7+uQgj=mb1TM>R7&wrH>@lpwq_V7V^@Hb_ ztJ}mD&f>Fc>r}0k6ULxW<;1j|WM=*Q0BZEtb<1(KtMJ-pWK0mVI#gyW1p!1^i|kn4 zfcX&hUES>+B^UH|Jc=!`ygIN|$tT6pCB(?}Z7s$pnjGQzbEdM2*`F?59+u_q>ojj; zu3ZUrtx~ZasK%H|nVWn| znb32wH<6>zO*QOPC;Io0CK?w-f1);m#zV4FZ_$~Oaf}tf2AODpSsr5MI+k)rU~gP} znK~7m=lxKh2|0J5M0k_4Np|pnIy>kJi_IQl@LqQpTT%I|ML8eYf(?l}45^^DOxnQ$ zD*9FzzN257*DtZwgp9E&^5`@X2S(7Ff7#@=6YrlDV;X47{Mrd>^w#s(=kqUbjzUlT zv1*1}{7K48=;$y`Vk;+36IjSkv8F{u{$^!zlY%LNgD>2j`i}Pnd8Gu|Xrb3tGf;!R z+Xh$QY}d<%Pyz>5^H#*Cbc>3XXMba$vbqk7-Q>^=t(M6-xze^rPqYVlwY^|a5Bftc z{OxGL)!dU;T!JlX(96c8&d@iY%;_RQhrCz4P*RCgxMfi4GwMy2BE(%xAcHJRZI7CC+4T-o)>-~M{M1n`rKN@^80h#}$p0}Z5 zLxz#rj>Aa`-_1H-kNv39#uCEiL#G`yiZmiyMuGy)`lp5Z`5z1pTUDCtv#oDpbSepL zo<4pm)+nXd@E3%joH4v@Er7m1$zdsu`CfAccKZ<%_iE2lQ#;|mGg`E-Bt8jZoup2l zAJaFEaWAkV=PJ=gmbQou_j?;5ZH)p#f9Z&+l@(W0MX-*4b(4$N z2W$MP*qOdSZR6!bJC6h;iry`&@>zL8t?7}kzE`ilApH=7c_(8@hVfRqOY}Ovbac5} z+t0M?H2Kk`SB;K}2YaXxl44k9MUw^1k%ukY((4676Bg<%H{hw;P3JU2f@F9*FQU{i zf~trXkH2jrHT)_Syehi!Y*5if z*tw_yS!$497`#;d9^wWOCTUX&D)HlKd1as=3=|DEoqV{Ix9F?;(JGP3)=ofdE!wDz zDd*Zj`9me!ZP9pbo`spND&J{bI*mOj6)$yWeNNc%vMCECX5~(Qs6i0XHsg{70obU7 zVa~(m2iX7|u}9}W-Uarf|LeONn*|b2$W0=@d)HXaA#Y*Zlj8J1wKs7hS+xtL8{6eK zP>$u9{rHr#>bR8luPPoojI$a7Y&|By#VYdGDnUG0{X%bgQ|iK+>sB}Xk5T!0cR#$- zg+aX$87*%3%$fbh2%77bsRZ=oTWvrxF?(5t(6^fB``)}d)>OSs?4vs9AHp7|1b0lx zOT`+j*}dWiDbXx#a@Op~LN>km#K-*JyNBxYGaZ&R5=ilACY1ZB>-G3lFsuyWiDr%~ zam>j{g>irFh2r9n6Iv5hHoeh+7ZBE0jBOz9TWQ^MZ2-M`Tq^m&GL9@sF1O|-yY|Tv z0Q+6?me_V(_&kgD`F!j^nKO1H%-}H;@iEg;(<#R?;;(q;PlYfD zRFC$nLPhb#NYCSnt8!TWCXHkG3+uYr3pC1Y))oD3(+@Y7s7#e|7Se0HlzKjWzt;5B z$f}fb(fI!01ZkzU*DTRL(7-E2SlLcQPcd#blqM(Itx~Lar=X#MkeKHlrxOhkaeGDv z391xUfA$bzOfB})(`!P@T$qWWLG1SWuXk1>+j>2N?cR3GK^|M1Ur#uxRNZzA-KM_2 zVqm8r!R*bm0!zObnvu1gj(S*)3r?$uQTr2K@p=j&LR=cwbkk{HEvC*|1wQPlvivW2 zT*v7HVyr_-!`_xJ8h&ZakbSmColu%E?pdJw?)<72Q)7usT_=oBd~ER%jbMUtU}+sBk@(UqG>psCgAAGL!b;E86sPyx{QibBa5z zI&8vD;wAQagc>fD4bi~j4{(Q(+iW8xX~!g~Qcgajqm`!D4riRFa^yo=5`CvmtN)No zdtOQ?FLK|})aY9uK9(E(vMwQs^q_7{AZv5rIlz6cglh7+#Y&z$d9vGi6UKDTcPKQ0 zcN#I3ew=Sbt)FY1=Ik%D)7jK zZQ~Fu=u}sFDCbk6j6Sk@XkaOV0?QH2LvT+fB*xnZN^fZMQT08GH>0F#s-OIhdf z@s@SYBS3m$yVy;I$r4-_QR9uLQqm13h1$GIniDzBOp9QZujp3qHj17NYhoJ;nV()X zEX*^=Owo$N`olQp8%vwHiTFpd(!;OxbeNE}iXH>y6%=L%JWwTNF52eajNX=uvR#Kz zq8%vpd?M-YoE?^8uG?Z4&1bVd-g~cgv_gOv!FB@^D!RXGu36@czegDFgsEt6-40ZQ ze2JL@6@Aag^-EPMr(M0Sz#-UMDB^C9$&hvSv#pb^cv}y19pbLgyem(8a&j%l+Y;WP zTj~ue)>swJS+Vx(Vi3`_)PhxE(U~}pTbF^SolGu0=}?P45H{iSO78C$d)<^an6o^w zc3w2;yR;vff&9(#J`iiq%EO{(GupnKk50dq)WZLUna=Oz|M@bpTFrZKDg!_tQ3y2*8Anb9eQ{FPrmi`DT7z ztlH3vNTQ7;T8Qs=_hVl;IZonhT0dL;!0jLc2S3>81LY@7eB8TM0Wi4n+BgtDYj3Y| zB^aM5HqbbNV?94`W+>P0vd)LS15lRPK#xkxh1^lG)|KP_q=9&2&C>wf9jN69>o5ZF zxSx&R$z%U*w>MRK)7BQO^NhfKZ+f4f?{%&s#=1YAv&=finxcO)jokaZe=}j?Cb}W$ zfQF8UqEi2Mz>uWM8N2)u1`Xgteb#C4Vnf9$6+Hc2Tq3Xip&N8`2T=b`LI?lip#RxKmI($0W~(z_ddpHQsReM$OPDRc zmqy1=rj2dA8$0>qiDW2t;e=L5gzCynK7Rp@o z1#QTt+c5*enXLM~C3tPer8tj;d>wlSA|$>}X&Yj5G*H}C0-$vaWz1GtMPvG~f_=l1 z*m@cM>>2d3A1=RlhzrNj9s(GFMBJ?UaA|56eYieQ`x(FO3Ph%;a3B+4KY)L$P1i*! z%;Re7Y#Nf*E76&Lct~K60MI+UL>T7Odm>d5hLc*z^a9+<@(U|^*;0Ip3Rft;KSD8| zzO?_vBF%kW;!jA?{kJR~9p$vD))-8YyuY^3j|nJL@#t*Rk*8B)%ivQ^U!6qRn|RTQ zP1>D2y_>gWUWRc`71usPa z_Y{WdV+KMEQIc4XPzzIq?-XUg)gZ1?CJ~1r1Y5gGaVecF2%myNwx7o@W4j8);f4<} zC4nTwL7gPnj{O0liE{PVCo=P{GKe*tr2;sE5VYBxeJ7^hUwd??)!+ina>S> zyl|x#T0A`vOsBV@LpZwy7k-J;tr5%Ji+V9Zlsi>=%~!Yjb7W+(n@azlMvFv@+I^9t zYl^;aH|vkm1h~fvjDW<}(63!yNOErb&1cRQ)k`yp&~8j-2Btes9D7RCUwg?SkbVRV zGy~2@vgtLG^buXf%LO5vj}|;~E2naeP<-2Y<1^i6xgA=YUfDOkVc`OgBgU%`123Oz z{N9Z|Rqz7IzI!jHivLCVE=H!GCV%|0>BbIuLW_!4!Tn=CyRif=5NSLc0Bgs>6XUoy zM%Yg#hrClF^!x@*Zavr=`Q-kN-S}pS!f%8Jc~75>G^Yk??~Q`6`nTN!ewW@l+6J^W<+DLi_TMNDdFq0DOQ&4;w6cdx$KS1Q;(t33IiW!|EI{D{Fi20#sBx8#|6*TrO}qZpp# zL|FqsBKR95P>u?Ab)CTy^lk<fFMz~aG4a3X}t0^bi_DyAxr`Zp-{LK z82g#=7^PHtc}GuJ{;OH7x%&7h5cMv4LYN3SmJ%e^dXwV$+&0UG#7B=vahb9a<#jxw zCxb(%0W5zENm;U-Q5T!UbL+67Z>&PMP^!BzO9n5kr`(M2LvkCvsND?UZGd2>2_zv% zg@&O{!M5H^<`j+@XCmpf z8gvUC?e~<}7P50QwkRFeiqMF!!|g}@MZo4}i-XRY-yfq}kDvxmlSfI3l_CTxf%u+T z(ylfZ&5Y1sAUo8K_PrCc#$UU4xA%dQqYy`DN&bgHagkJqrlO*Ul?NBb_G`Qgb=t$~ z`t^1YPN3!d6y%8o*wvXIem3_*u(f&iggZ-YCg1A{ubF)_xgfcJJ(HBk2TV&ZN`NlO zJqVot1yvaE-XUv+>KLd2%b9|9vR?6xG*{KX+a8lyU!FRWj@rB8VzjDqqCRQ8b7WAi zz?2s7NogiY+>KHShbV=?s3H`$Z{=I=K0U;=&bt1QN1fAkK&26_?$wD>g>wsFofu2b z11>ZEap(ZRyMbRYGLVyBt2fq6)@1lSu6DSbfoU~t96>2|1eAKVYSoY_`?(A|sfEx% z6`%8(mN^Mq#H%BL*$*XNXs5U)ccKD|%X>p#`L!eq`-Ds>?K|fg&|SUm;5&6^kY0_L zT?dC5*OsMrWrrks--b#4mdsojQbk&ieQyCr(KqMT-#|s1o^pH%^w1;pz%YCtguW!p z83@}YkEM7%)c^C7@HoVpMXlq^>o8Ci*Dm`sij3WQ7<2)%ymR4l%d43{ZGZC{gWlXr zqmL+D3^$bl^w4f@;nq!Q>Yj_q!t?W_>zqr_KYn~azZ~XNhc?DXw5#d*FzcZnWdn6rX(Sw#QDsr zPg-q7oqSg_`EaXW^`K(F-u%W=xhCK`?IKPLH}8mDhd0$!7Us$ClJm2aR^4+>nMvXY z=V@UD6Gud;9lJmDEJJurbHzs@iIaEs1m)?m0`G&4jqgBLiphNG`xU3W`v{XUhp3Gn>2>`pT9Op z$b$2REqYOO2=@Gi9m5{vJ+`1T(CbX-t%nz(HP^0+n7q21PNd(N-&!d z6$6_Z3pAM;rs+VzrQAQJZ7#l6Jb&vO%L>t7VqGf5m)*{$%1pR9dgNgeHiLfWJl`-| z*8EYP$;nrTajS9i1+)wzbx2a@r?T6U{&37egrCX&_Iz2IDplw?yT{EB-=iI{o|dH; z*XwBRt}##%*SV=Ov)TFSE4zdC9|^e*UlHkCxu}au0t@+6HRXiMX<41UL@p#jw5}_W z+Yv9Z3=lEAbj5DE@c|gq+&TYX96STmAN-A~|F*@au8V*Q|3hiuO8~&`kT(IkQPySA zmtoc59?>6t_+LE7miM$eV-Q{OCke7;kYpYRNN^Hs8!enaDPEiyE8TKVo$a_#Q!*?% zEtoHmu~N4EqiUI?hl<{oFHc101K8y1BMi4K%Id4hcQAbNiC=~(}hIdthQ2&lA5gRLAN-(>~ z=KRM$$Llr^C~X@{mnx0C-b|DXL#P7GpTB;JHDJfU=o;^3>{O(oTYoy(J-0q(e=Tde z+753!js!WWTt5e_?AJ%7X@(R`Ufwd_=hg|zA6)Yf(FtR-jsYa8FW+ei=cATnaCr!q zH~?32ZzE&7;w%fQzIBm26En5_0+fwu1vfNLz^VR+EN+) z&k_7dM#JphN0h15yL0fxGxY~pmekFve)CD55r<7NK-CId3~ZViD8DHC^n$YXlg&OE{ z?JkVnv@@9jJLw`|5^&=o6bq)+c@!Hi#MmNP|3(YbbPk_#F*A_Fc|*PHE`#VL7pBw6 znto00!81D-Z{Kem#TM-sIAviGn{B_j10~DN{`g~y!Y>O`w0?G}-MTvm5|%sRj1d~Q z=VZ4g2(U(s9*kx42cGlX$Eq{prHdgDdCV`|4Wx`yrR`6Sk|y2B8}Hq_iYIA78E7wD zhnw_>FkYLhFCYm0QPBGqxk^7b*yK|Bt-iwDaDl9m3$ln?Kot51g6t8zxx+n-_lx2k z3*o`7xP#Q~_wdv~yBcqXsD+hLSzb7o78E7Hd7_b4-{LR3uqIdNd;3t<4Z?dazidMD z#seovEvF&KX?%&j%e(gfw;E+L)Q*AKrXpT_s$k3tVEHw=?Dnhzo&;PUAganHF=Aks z7dn4G`|#)8@UDcv7@e`_l-sk5CZNZ|-TPO7JORwjxjMnKR6yH-|A7w`oCD9tf;R9W zclpx!mIq z;D0}Z^m~OoT@Qw_2afsQ_VW^EU41_uOOe~_!m~MurF_jUx761MYIZL>_?Mp+hlb#( zXhA9x(*S25Ev%x>l*RLiUp_tAbPStJvqZvCylv)h?;14P?bvfza<7b*XtqHTDB|#N zFyDl?Rfp{(tEcZN@jCZrCfqo*|Ngq@dAa4W8EcT1^jYd8z>fspo8zi!q89vt2?}h= zZc6)W4>Y!YuRXcYimudD+_wHWN9{1@SPC~|t|#B712aN!g*$_TS?rMJo0ou(*1CLn z(dw4>ec#>AqG8no*(Nn@()*8Qh_fd@ZyVZo?}4M|K4(u+F;~(b|DGOHAs!qJW3E7) zoc3jNHULeo%InkZ&GEGxiYa9YhV}0zAlW(wGszy1+*aJ7 zY|O;OXPJi5+}KAo9>(oxDPRjrFfLoUggc5bhKSl4%xqK`WT49SkgF#ol;d%=^on^( zl8Ly%*R|U%Z6PGfBWTltFe|XYIc~2qhNV4-i~>WnQi8V>p)vxr2Y#NeA0kwkqSYzl zkRnWP2_0@Qe*o$5zW0pS7(kY_LPzQPJb3RQTP(x1#~dli$s4MCl{P=p8s7(M0!(Ma ziG_H8a!%=_n3`>fZRk}(i`nq7W>Vr{v2;>Z-1!l zo+k;D%1w+(#JRJ(POOzOmp&tO=R>)ta5`H^KGfvdAWE^ZXXH^{((tKqK9}_ulbL~} zLmqt3U$u39wb7yt+;)98B1JEbg4)@_)i^xqV} zD@%}An0$0P(K?*wZQ$$VCpwDZf3G~Rt77{EK=%^jDPk%M#~V%{mz)jRP8!R}h zJIQe~dR9guD%{Iou{0o13ju;J>UYV@;DV!J6AkFpsTBSkL2J$rYG{l_rjz1eGE^3lENO>f@@;A8e_k9VSNL2hR|m{=_oaX(;fjZe(= zKQ)Yeook~zmasIq3F~v7&7mVAyohQ<+8pr#oP7&D*uwdf%#Cv;|n=YsQy<+||qtOxFXj ze98!tx}oiVA>}Pg0N3G5%-i2rbKyw;o1DDOlV7Gh(V1GnWCGEMzmO~f5I!j)D+Xqf zxiVGW1ZvX=D7YGa`SepNAekzyO+`Qm6dO9dSIfuae`6z11K95MSfa!V8x8T{j#dULL zOGBl~qmg}iYV;^%rauD7Qk>2C_!AWeyh=~)W1V=aG?LtWD?aSsGZYg~Vx`}?{$QkiX|x5dHhtj56n4^+xEl2YkZ(V% za^Z~-{QlIb`JXx(ysDFMV~R2Chq76FL5@`qm*1?}K(AMRzSoxD09QL&k!55g(2ME? z3>2wqm?W??VRBW{QV|Gl?tMWC^nk;dccILc^%R>&Wk@ZOeh-b+ZH$odI89KR8!CJ= zXs(RHB<0w>-syirc#PDQbwAJe$mnce!=hVw#|}9H94Dy)M>OPRB%1vkUd<8F9?=Ha z)h$N2ROC7 zZx8BH#=@F20^sR~ZDs)YfLw6@AC=PEA_GNx=kAD|ZYlJW*BTA`N`j6uhL=Jg-=eqO zw8{JammKZ!ufc&4tr^)D+7_&;jR`x#3)exy;PP|3TQlxd+W0`bThDOR>t)YA-=Zyt zZiQnE?^tZW)0^Dl>>R3>tov&+vcu;1jnp%B+q*jW0&gGG2L#c_vm8h*rRbJ6 zB6qu>O*mgVUx?jMyRsBBta79`r(d_HwCY}`-3ATl<5Jw7qYf{fb!IDlPwFvO()rs6 z7l_q36L0S#3$jvDD`fm);ZRlWs~IdGEa-IwyR)J#JuSKJDS;H}a9IU^4IjVM;Z}5u zWqQJe^HfPL%js0?@P%$I$J@Rr+MsAjt9yqp`ZXm;NDv#CVbH>VuTo=_&&i3QmpI>M z%p?_|Ak{UX-dsf-4^dYD=zx?41m9u*Z~l|O|8$0^MG!_z2E(wi*s={j|I-~*BIJ=uF8P+lX ztnL1vW5Z9G96=zyC25I!%8t5oaN*GL;?Sofiq522t+a8&Vj96;m$mM(U;85YY$@wf zZwQP`DOo7LK)WHptKx+oh+6LKnHQ7%6ROglmwqta+lVZ)=9;$L+v=^@DRy2IYFSxUN0~q2tdRyGo;^ z>RyUcHKs$rN!)k0Z^)B@KzFV@v0?de>VXHV(@9-6{>|;pZjH_!bB=-HxnrQpNKbH^ zSlvUi*65u)>!LFt5D5qxM?7BIZei6|8|M%cIJ-Xhg@@q49l`Qet?yghsc|~5UAc>} z#lbLKq$CKm@jTZE1bT6~GV~Y-mnAc@)Ph{`8;<59>hjtY@R&YH(2EgbR+@RLVRNNDayBMW-2n$r3}a4} z>7>|IP^Bed1o?VOpIE`VM*AuZ7Zcg-L44W4{P*ueyi^ZfQuUfiMx`zvDGB#VI7*K=Ikchzyvv$g?8 zkM7%`9Qpgvh^wGCi)nS$wa6=V3Zri3a%6u$yoBX+^t3PK`eo2O6XYRF?gxDWf$(LQXr{BJMN6qUjuO0tDc0K)wfif@^a1 z(dDmM`OOwu&-2PZe7iJ)L90{=@NQnmw7}4N$@_IJGWm;a7;N9A#M)c8mWc*EFGem+tMZ`tmt!7VoC*C9tr;0Dx>4P@8qdv^imw+US9{n$WuU zpW`1z_8VU_j6W|*;a%gmZRPw8%|jp*xDY+hIMT`cS%5cU`>`A}CXork0;MSB7uD_O zZ4cRr12XP~-_mcxYC?G-0^3i9GRyC^)~-eRdtHJe82SyNA{O2shO~JJgx>sC$PvNH zDwn^D*BK-kH9geO80xdL6D)6d40U0Idq^0SYH4IgrL{a`jG%GUAlW$S+H1Rh;HDN+ z^rXB*=3+JZBJoD{)clgL+ttjN4K^B(Z=HjzL-4{Bod%p5sw+|_H~dNuz*_#H|7t=b zDf9GZdEax!kuRSA{Wi`3O^mAxJBB*`duxDXgo1zD%oI`fK4*7bZXkzZjOpGnR}qwH ziHocJNaJ*@I&3OlVkwAx5qzlbG5Xk(=5MzvBgaZpN*mT!0zb8efe9=z3`aMiA@)o@|8bhu*3QP4pl!Z>lZJ6!h*xI`GZ9(=>&C0smxw5 z|K7&{4O$fX?WPn2c0;PcHJkj_@!!uTim)r0+GKK~n!4f49+R(XsqY)(3u2F3QT~pC zlGgHfw!F;2EqB{-W3=9kc4h|C6`qa@(rg*6YbN|>M%jOBODV$Y-$>U&6%|mG3)KfK zU!my`+~GPyOYx-R%Yi7*Z_!+=K>8VXur#xY=H|70H%&RB;@_bznPS^KwSH>SIp9mX-V6fpgxE!FUxs<9JNrcgOKHdJJ>VL~ZoaS;qkw+7k=T#Q`!{MQt zj}L=>Dx7fd9w4C&uh_%HhhoRyb|PN-N^mN3JwD0rM)&N2q^cj7>D(|<)-r@anvK7x zhdQ!_o{tv_ArN}K5Y4`E;Z=!@t%@J`XD9HU8W%`+;W3nb1s#8U@fvW{QLRhUH``Sh zfco7AM3@XkoREE1r+a52!WDH(b*xhdM0Y3!H-%bkXr%8dY@DCHSQ&Jvf4x)-_HfJa zTlg&^QETFTH2kH=08Q#M+yM~LMF5q=BLt7sUT06|V!b|t=}3;fcyXwLw-AhQ<mW<*N+zKLF3E`L5B1VP)hv5zT?}?G0=L1N z)uH@fsZ)ix+oh6_DZt9#ki#VE$WK!I@{c_$@SH297!HYeP0M(7zXjK&G42=VN4Rws z*-qPq|HuFmvVt$SJyd+X+x>~@x`7bQD8b>@3=yuUSA$sl_>O~!07U=ZYxC0b*t5<* zpY9`uVa|ef=gmwPd~=kx5-4?t;gLG$PIqyk5u|#krX-yWN!m2wbdRLi^H3CUQ?nLZ z#EDy14$S~OKtKGf)HUNv&dFoNeuu(9qV69oXJk9y=%8MBTE0xnlu)x%UzWaTQK;9~ z?{-n1r1)qQ%E1*?qbVU(QW5mLgmfw5(SoNuIjeCWc72l;@FC-N5KDy3wC6X*)+mkhYermkJ`$Bt}W znx3barpHyw_)K9g3B$?u2Nd@ghJZvKfsbZY$>SCpO=gg4&q*CmAI8mM3xRdGI0Et# zuM5~EKn{7vrr*pDkK>1m3>;(p6IO*D6S z>-LdUo$(iI&WjX_zzc^=z3X}lcGv?`3`G3bTb(tFP79a`?weY?&$K^Z0^p|?;TpX} z94Q?;o%D5kwe~fehmE>@YgUp}LP8hC;>9Cwrh@7QJRAR9<$arTp@uL<^?|u@n@|yU z1C`VyGY6ss%IROJC2NV6f4?MG?Y}el< zB%w0DXx=5CdrY$C@GYDL`u+7vwb3IRn4>|rt{>XQ5D|+(F9aOh4g#p>5K7Y(dARAe z8tW%Vvyvf#o}PdA?6=2_#^T?`{d*25=U0LN$mZX2Mb^6To{FO@C*=tGG!o?`Pm+7| zZ02ZxH`G{G46`MA=G78E2a_pbrOP2Y02P}wE2Z|+6;(<5$@JX@DNm{9yw%-IeLrQ(ha{mV{7O>dEuZB_#Iqx^z^#?f<*u|p)2=c2!H^7s?cFr zTQYoc4Cq(>N`^rVPEkRUi=ZP3;0$#q`QLY&haJpxtmNUW=*oP_u{Ufg2b))PDTUCBOQ+zwiK5 zU&6`{N1gHyyxfi3+g{j1(jUeQE(mRP#hd_Tf6(qZcldZ{Fe28yT>Y!wMs@fx_QXHe zfQk;JkCc%A<@i$ukscUAtMlWZQ;wQmgdIh;yDWZh+=54~8@=$q9?9)4*I;g}(?JsW(pyx}bcSt8SEgN5qRvxzpg( z0pYhrl$Akn(d1TVei_s@O3-bqPI$oTcrDHd^2FtJk8P!%wS%6jWMBO?aX|KRs-<*5 z(-Gl3FfQNdVsuqz+y_9WUd5A6gB8IAs9k{oBxn?@-Y^@e0gsMAtv zXn(RaXJzj#$8M_q(``&!a2DU?X6U)Q-wgrX4a)aF8pIGGBs?SEg&Q&QM}Z=@pOtq} z#5azr$nX0dlUa&BJQoEtj{Y{*l8I?kPwB!JXVYMw=DEdma@|#;eTSh+V#wJQWc|1m zel~3BCoD^uM5{fxP_(maj-@msq8`}S3_;T&6eKZ1FusX<6NZGhiF)~dN`cZQ_ zWxsnp@bsTv1dL{@df2-@P?nXU>crc6SQa+#%;&_Kf4EGe2M7GKDC|)E*8y@f!agI< zek|`@BL{$DLlttn_-=UCFLxVVjI5femi={%%&?2v zADVjp0!2XcsNEPdCQ}IrDXLo<2-6eOpO|OeM`4Lo*iv`8*wd3E)7JnneJ(rzD$w9# zI30D0(HqkMoO~?p&H@zEA3aGC&O&R;3k*gh$f7J+q*MLLJvJUX;2d*jp-{b9L z?|)YGsBklQgs8oUyIJ6gN5M(r>2A0F9m$tuN>BMvEcYQwu5`w2zktI zQy&R!=s$A7Kn3#qdflR$4%Vs+wX8{AJBF-)6}|NR&pFU0iw-74r}kAjZ)z+n{Ku5V zI-RiC`rZJ=WUe#wXg_BP`qut;e*n`^-oQUft@p{l&k*% z?yqMG&wje6lO|zl=PC2;A5}&mLDiExjV$~}mYl+gn7@4>= z(EMNVE5yXPIH4AC~rYf{z86qfR=HBC{}U9zV-c{!NvI%uGA?;17RTJ-a1 z7G%weyLK5>TgyIJJb#aJx}6@@s=i#nx?5`Hx<;=BE2vV6Z>y{htu_6SX zXY|Y`oQoqZhBn1g_u+IBR|I)hE^H#%uLLv6SkLrAC>VdGzJ~wjM!u@*{J4$`_Tm}I zWx}_O*5Z-l5JnBCNRT`8y#GbY$+Gud(#EVbng-)vpkXE0%;TaW_Qom^u5Sym993>- zFk`XQVFFVDU~v|}1`|cKbxb6 z(ixie&bzHwgvDJm(P>Z;apj4N9H6XCME%3KybLmS@DtJgBShqyK6^*Xj$d(j+{G zuHC*W^a;jHSV2wwwUnFJKU|x_u8xs23UR@WWn`+LEF=bqp}K@CnAxkB!qbLEq^LS(W3BY6zNhM1l3@r(rA9UTEXI!fV?+hYRlxz7<%be)k-U)e>KH>r|WhgsL$_|_|kiN6bB*4S+-41OYG zd^+)L#B76<;zin1Q(VXo?AiC533wlDVFhnBa#C{dC^O7gl|M#V>kJv*IHzE5*IjP$ zP;ZZPE+fq=h|<_`v=xihH52?OjAHvdGQ%A86CB8mv`;K+pU4en^!3=SF?l>a=L{J< zvm^Xf?}g;%b$?z>Mc* zjSzlZ=baUwFL?e8RJdty6DpzRiioO3$&bj@@&!r3nUY{cB7+Wdb-Zy*xumuN0;ss#T6dnbP73UWD3!k<^S0sXk0Wisv9xNdtw zKaV9xKG}4TMDLs%L^k=u{QZI3p;i=S!QnwLM$5W&&Wdcgq0McH*)XfqCHL8;u-7^h zpEikDv+$7oB6xf6Pa9vSn3rTO#A>-urf5o*r@oe0NAyQHhozTNF z$@hNcCj7H`6H~k{b#*djYi6o*N4a=|KTjRcpu2s?j;H#;Ij!^(wW8vW3;Vn*H|9g$ zsyoK5wDwvHdE0F&EZ=G(lXIj4D*qZbTrzpEtJ1jBV!!V6CecBO@>QJ;mO)jUlLmo5 z_}AyvHkT)W3(SXgm8maOhdh&smbs_1N)bD2m@IsfI(yV5N>7b?-qe-_M-?LXtQz*C zRDdO#@vrS@q*EE~te`m?x#o}wU@wFp?p*Y8hwk*oUweHCmT~+VR!7^jy!^v25ZBmV zwqWKLnjAkX0ev&EcZ#*S2|<*I0hgU+R19E5f^eJ4fXe8QDE{c&XyMK}k6{iqLrN zWw{*_%OkxKE1w*#36lx8;%s)KREzN$iL!^!?!@C?4xS@>o-#{?fEjKn^5;0WVw!ok z5Gxe?)`qr^T_eo&&f0xl9ecRa;FQ8U5$8$!%ipe|H`AKWp6rEQ_TQ0q`09;$9dB3Z zb_Rd#WeDD#nYEnouR4s(meZKu+B)YnTgn*(d>sclQ5!1w3n=^4z}p3mqkm(+9P>^2 zJSE(rM-#R^(n0kdYn!G{9bQA(IUWIXh$*_+0>u>(>-R^=A5SUi_8hM$)nh*;s)$gT zC|!DvuKGd-&%+A+S*7e&AkYw$9HEA7~aD#B4O(Gk7Y}I|2Xdfs`I| za|VlG3T-Ty>2fo)V4p`MxJoPM9yerf>(txt+{jp|L&r!AJ^97H1)?{hJ0cprQv>Je z1jszEA8rDl$XKuFJ>N{<}*QT{j%DQ7^=8B^1fhZn5WQ z1GzqkTpXM&7`zTfz?-MVRP)mAo5gz0zwNj(E%FN-{Y>GXvb44HlJgSkw;TJYn%`54 znQzni@0j;X>ad_9k+M3rg!l_jxRsW&tX7;ytY;LuV&*J63xSiwbj?vwj|^aZBP<>7R6I)k{)IWwa?kJ$+-i{L zb!3Vqb%r$7^%`6(+Ei1z`ixdb`xs`nV|5sY855$q;F;U8kk@_!vc(B6x)Nr5#_Lhx@+we4)$O6g!ItOuIat^F$96KDm7T>PvrmtBj}zDX~<9Aw8(o&b;h zSOnMHD@UFmX&y{qM-6PLGE#<~UWHEb+Tg{NV6HHDHW)xqISuA= zavCLIDy7&P-11Y|0_u}ZE6EyCX@ryW>6rV85ss%BuInx`AQ)RQ8KKh7y*PfUENQ=7 zoPbs&H~bgjn0P1$shr6d9h#DPU1Gt|b+a)b**O;f{LE81Hbd>>))WHqWs*at3yJ-` ztuvBE9$m={2fjdNp@n=H?z=Mw#SO5&dn(hSRFX;2gXDDM&{%laA#35=@t#qTBHN7g z4Yg}Sxt~qxY}A;&aoD^36Kc+^jlh-i5d(_uhkO!3-|DDU*ZQpw&ZAe7oBRW#_-9;WNU5Z z4#%A7uG6O0BvxPOuI&fga>Sr3-*^cOGG2kNi}c-C|90-IoP^5wNY!tUer69fH=cAX zX=@N-^}^_2o>6*On49>)ztSQY2veGGRy4|7q!x>zJRrJR||T5oGvP=f5HvYC){fOy?=$x1RSYtuRG4l;PX&SD{d^< zFzMNgTpCMbNyoM!Kd!-V(+hbwuEoAmbfNphE7i2^lbtWign7Sry>ZUpX&dWza*diyNe*Gz?7f{%w!ZQ{W~X)G z1f1*4H_b4v@BC;4!E_m;E^`F`+DJW`-4JvueUP|31yj#>;d0)`Ue*XJO)X>J=2duO8 zVQ)u}X$jscLuwDT12o(xlOw-$PI4(5IME-D7Ea1KxkD|AXGwKmX#zhJm|c#Hj|Y@~ zblN-^0)LLJM{HH#<$gG_KmSb{vu^6`ZAAtEKf48ydhBjaJ`FqdU=Mg2a!=pNwT*Ls zsNDf(-v9LSui=qwI>mP?=E$sgIIjw;!&dN{)q4g{$Hzt}SK>IzRv=YJ$Kg#Dw#~Vm z67y}nVg^iOeY^1RutG0cqUc1NB|8JnS`$FoOXIQO#Y%(V=fTQEfh;bVKA1vrN2_!F zOcpS>9_~F@7rKY5*n`jwjKLMQGUrcgPX@XXty#OfHhS=qY8I^^{r$}Y4e+{)f#6VQLh$L^?M`+wA z9GQ4z*Z$?W4-u}Dx=`e**~f-3q(Wof_URtx9g<+t*i26ZrE$lYnTPraL^Reqc*8N? zxHCmgfD-t1mxb##--LFG5HcTs^=(BIp3l88E``XO#E-=xhj3GaEgAM*> zHWw;m?ea}y*A;Cu6htaia0uu}?AW7S%xPYEjyd2CCQ!Rp#&P2&i8h)&QB(f^@!#zlumZ#;J zrMy<#Iq$9HwnVa$W>|47?2>I?_Jwn^)N*aw1zALGa#G}^i4isqbOPHUcf4C(NvQ?B zt&q{@58V`OU{+Xbp41&Tu@h4YeXdF&GuP{=tn;-ntW)hhYQ}7Yeg3kmVsDi=0gzsCig9dER^BPzjV_?UrDyrld1d>y z8^BUdj!=;W%_*Aa9(TW=2^!F)UHg%{;4L@S)+Qo@)&rq)fhr&$UE-;@ZPax{21d%lM&A?EYhXg$1W zIjl=1Lc2&gLEL)Yz(t;CewRo-lj_#_RTRfHOMutt>f`~R!@l@*yyaQ0Aqy>HIyV$h_~4wua=eUn$Gd& zVVN?%?_7RaWU>U9Hz5koE9%0gmuKVB-d@rR zb`O60Eo#CWxDh>kY5pe2+opJNu z?}W-~auRmg7A?j{h?EP>CNew&Q)Psd4>2`1>pTcCKM^JBAEIuB0ebT15^NS)^&xgF zb=<|L(;ryeH7Ow5=U?^+)_FX_1E16Tb}g&HIdxbVF^0M$G|;XfDq>`)b*otwwgrnv zMC9%?GI-q2_6VTY`7GPAE4uw|n2E{2WhgDS7#-=3R~gZ{6Pvdh$TPCsm@lW`FaJ6PV5 z_3h)hg?3W&$~cSf6^HMg{yA+m$V*bsO>YT48EfIl69*kHi_5#29NN;)U-7Z@rHKCawdGqvJ;*dOX?9^vh!dd=@K z^;@bBvJW)SEUi_+zVkk5^a+Wq{k~>y-1h}sc7<(HJFez@n~dZGRwt$mGjxs`Wo*{W zeYGNJJWct$iqo@kqG}a!&&^CVPV%PeDBl7)Ck40y^+l>S{relTjEZV9H(oWSM610M zDnz$($HkT+kmd3scSN|YS>UNTA28Rr0zdj@E4P{^hLz+p!B{dyoZz1$@}u{y#FPP4 z=1Ko;K>~JnBq3jKi_gcsTMBF|FL^UCcH+FwZDA|s&u4hO{mljI^2OrCvKJcTGFCr% z_ax^C&>L$_ehjA?c@4`LC--{F?IpkXUSJGf`O1i7rg~xVZ3#91fYCXo(a;2pP}GAP z^FH}nPOy1e7>m8512220=@!qhNV19FC7Tg4DUvAE9ds^YLPbR__VcvH1)u`qv?D%! z+qy4aZalRe68nf&BiJQL>7gSy*1?MLW?XVk=fjJ)%L`6Rx|nEx%MObRXSmwt#bO*8 zQ{l{CgH!eC>8Xuzd;nk69epVfJCEY;t@W~rl)XXUC|rB$4ZG+rq^$-1-P~f6BDvH$ zD!Y^VPMK3{2NhNO=51Mk=8D$O#c-0tLvOg;?S1o;x-eSyp?ViIg7Eb5O0*gXrl@4n z1aCE6TGcnkbx8HbSn6n4FNIMdb)B)}vvKccQ{`44a!O*dsbOQhP6}9aF3-t4;PFXYT-wJUJ1$jYzbuI3n8#s+@05gGG|^bP;65xAM^ z9TuAD?R$=f%Ob!f9%d7D0q|I@x6m4SL~IaVp)vQ`4-tm06Hi{|a1|?_b`KkvUcnSz zbC`&J8gtW44QJzgs*?Y*n*D2)b0Cq*8?pmgDNOPfo=s%t_{$K;sMaik<$ zUdimcZYi$)o0L*@&f?m2)=OwWOUIj_tmy^gA)A#&8iV*2b literal 0 HcmV?d00001 From cedb420ebcce7fc01a600746955f3ea1e52f46d5 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:23:56 +0000 Subject: [PATCH 10/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15246 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/USER-INTEL/dihedral_charmm_intel.cpp | 15 +++++++++++- src/USER-INTEL/intel_simd.h | 31 ++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/USER-INTEL/dihedral_charmm_intel.cpp b/src/USER-INTEL/dihedral_charmm_intel.cpp index 82c5bc77db..7e93e319d9 100644 --- a/src/USER-INTEL/dihedral_charmm_intel.cpp +++ b/src/USER-INTEL/dihedral_charmm_intel.cpp @@ -178,6 +178,11 @@ void DihedralCharmmIntel::eval(const int vflag, } } + #if defined(LMP_SIMD_COMPILER_TEST) + #pragma vector aligned + #pragma simd reduction(+:sedihedral, sevdwl, secoul, sv0, sv1, sv2, \ + sv3, sv4, sv5, spv0, spv1, spv2, spv3, spv4, spv5) + #endif for (int n = nfrom; n < nto; n++) { const int i1 = dihedrallist[n].a; const int i2 = dihedrallist[n].b; @@ -237,6 +242,7 @@ void DihedralCharmmIntel::eval(const int vflag, const flt_t s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z); // error check + #ifndef LMP_SIMD_COMPILER_TEST if (c > PTOLERANCE || c < MTOLERANCE) { int me = comm->me; @@ -258,6 +264,7 @@ void DihedralCharmmIntel::eval(const int vflag, me,x[i4].x,x[i4].y,x[i4].z); } } + #endif if (c > (flt_t)1.0) c = (flt_t)1.0; if (c < (flt_t)-1.0) c = (flt_t)-1.0; @@ -337,6 +344,9 @@ void DihedralCharmmIntel::eval(const int vflag, } + #if defined(LMP_SIMD_COMPILER_TEST) + #pragma simdoff + #endif { if (NEWTON_BOND || i2 < nlocal) { f[i2].x += f2x; @@ -413,6 +423,9 @@ void DihedralCharmmIntel::eval(const int vflag, } // apply force to each of 4 atoms + #if defined(LMP_SIMD_COMPILER_TEST) + #pragma simdoff + #endif { if (NEWTON_BOND || i1 < nlocal) { f[i1].x += f1x; @@ -668,7 +681,7 @@ void DihedralCharmmIntel::eval(const int vflag, const SIMD_flt_t tcos_shift = SIMD_gather(nmask, cos_shift, type); const SIMD_flt_t tsin_shift = SIMD_gather(nmask, sin_shift, type); const SIMD_flt_t tk = SIMD_gather(nmask, k, type); - const SIMD_int m = SIMD_gather(nmask, multiplicity, type); + const SIMD_int m = SIMD_gatherz_offset(nmask, multiplicity, type); SIMD_flt_t p(one); SIMD_flt_t ddf1(szero); diff --git a/src/USER-INTEL/intel_simd.h b/src/USER-INTEL/intel_simd.h index 3bc99c790f..ac13f1edfd 100644 --- a/src/USER-INTEL/intel_simd.h +++ b/src/USER-INTEL/intel_simd.h @@ -194,6 +194,37 @@ namespace ip_simd { _MM_SCALE_8); } + template + inline SIMD_int SIMD_gatherz_offset(const SIMD_mask &m, const int *p, + const SIMD_int &i) { + } + + template <> + inline SIMD_int SIMD_gatherz_offset(const SIMD_mask &m, const int *p, + const SIMD_int &i) { + return _mm512_mask_i32gather_epi32( _mm512_set1_epi32(0), m, i, p, + _MM_SCALE_4); + } + + template <> + inline SIMD_int SIMD_gatherz_offset(const SIMD_mask &m, const int *p, + const SIMD_int &i) { + return _mm512_mask_i32gather_epi32( _mm512_set1_epi32(0), m, i, p, + _MM_SCALE_8); + } + + inline SIMD_float SIMD_gatherz(const SIMD_mask &m, const float *p, + const SIMD_int &i) { + return _mm512_mask_i32gather_ps( _mm512_set1_ps((float)0), m, i, p, + _MM_SCALE_4); + } + + inline SIMD_double SIMD_gatherz(const SIMD_mask &m, const double *p, + const SIMD_int &i) { + return _mm512_mask_i32logather_pd( _mm512_set1_pd(0.0), m, i, p, + _MM_SCALE_8); + } + // ------- Store Operations inline void SIMD_store(int *p, const SIMD_int &one) { From 8366b354597d9a006d4e6002f68ffa15154e5b12 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:25:50 +0000 Subject: [PATCH 11/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15247 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/GPU/Install.sh | 2 +- src/GPU/pair_born_coul_long_gpu.cpp | 4 ++-- src/GPU/pair_born_coul_wolf_gpu.cpp | 2 +- src/GPU/pair_born_gpu.cpp | 2 +- src/GPU/pair_lj_gromacs_gpu.cpp | 30 ++++++++++++++--------------- src/GPU/pair_sw_gpu.cpp | 2 +- src/GPU/pair_tersoff_gpu.cpp | 2 +- src/GPU/pair_tersoff_mod_gpu.cpp | 2 +- src/GPU/pair_tersoff_zbl_gpu.cpp | 2 +- src/GPU/pair_zbl_gpu.cpp | 26 ++++++++++++------------- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/GPU/Install.sh b/src/GPU/Install.sh index 0ff436e95d..9bc2d84ace 100644 --- a/src/GPU/Install.sh +++ b/src/GPU/Install.sh @@ -132,7 +132,7 @@ if (test $1 = 1) then if (test -e ../Makefile.package) then sed -i -e 's/[^ \t]*gpu[^ \t]* //' ../Makefile.package - sed -i -e 's|^PKG_PATH =[ \t]*|&-L../../lib/gpu |' ../Makefile.package + sed -i -e 's|^PKG_PATH =[ \t]*|&-L../../lib/gpu$(LIBOBJDIR) |' ../Makefile.package sed -i -e 's|^PKG_LIB =[ \t]*|&-lgpu |' ../Makefile.package sed -i -e 's|^PKG_SYSINC =[ \t]*|&$(gpu_SYSINC) |' ../Makefile.package sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(gpu_SYSLIB) |' ../Makefile.package diff --git a/src/GPU/pair_born_coul_long_gpu.cpp b/src/GPU/pair_born_coul_long_gpu.cpp index 4e457de4a5..b6a7e57038 100644 --- a/src/GPU/pair_born_coul_long_gpu.cpp +++ b/src/GPU/pair_born_coul_long_gpu.cpp @@ -182,8 +182,8 @@ void PairBornCoulLongGPU::init_style() int success = borncl_gpu_init(atom->ntypes+1, cutsq, rhoinv, born1, born2, born3, a, c, d, sigma, offset, force->special_lj, atom->nlocal, - atom->nlocal+atom->nghost, 300, maxspecial, - cell_size, gpu_mode, screen, cut_ljsq, + atom->nlocal+atom->nghost, 300, maxspecial, + cell_size, gpu_mode, screen, cut_ljsq, cut_coulsq, force->special_coul, force->qqrd2e, g_ewald); diff --git a/src/GPU/pair_born_coul_wolf_gpu.cpp b/src/GPU/pair_born_coul_wolf_gpu.cpp index 4a7e0f223c..931252be6b 100644 --- a/src/GPU/pair_born_coul_wolf_gpu.cpp +++ b/src/GPU/pair_born_coul_wolf_gpu.cpp @@ -71,7 +71,7 @@ double borncw_gpu_bytes(); /* ---------------------------------------------------------------------- */ PairBornCoulWolfGPU::PairBornCoulWolfGPU(LAMMPS *lmp) : PairBornCoulWolf(lmp), - gpu_mode(GPU_FORCE) + gpu_mode(GPU_FORCE) { respa_enable = 0; reinitflag = 0; diff --git a/src/GPU/pair_born_gpu.cpp b/src/GPU/pair_born_gpu.cpp index e80a6509ad..46729ab77c 100644 --- a/src/GPU/pair_born_gpu.cpp +++ b/src/GPU/pair_born_gpu.cpp @@ -155,7 +155,7 @@ void PairBornGPU::init_style() born1, born2, born3, a, c, d, sigma, offset, force->special_lj, atom->nlocal, atom->nlocal+atom->nghost, 300, maxspecial, - cell_size, gpu_mode, screen); + cell_size, gpu_mode, screen); GPU_EXTRA::check_flag(success,error,world); if (gpu_mode == GPU_FORCE) { diff --git a/src/GPU/pair_lj_gromacs_gpu.cpp b/src/GPU/pair_lj_gromacs_gpu.cpp index 5833b8198f..d749eacba3 100644 --- a/src/GPU/pair_lj_gromacs_gpu.cpp +++ b/src/GPU/pair_lj_gromacs_gpu.cpp @@ -153,7 +153,7 @@ void PairLJGromacsGPU::init_style() maxspecial=atom->maxspecial; int success = ljgrm_gpu_init(atom->ntypes+1, cutsq, lj1, lj2, lj3, lj4, - force->special_lj, atom->nlocal, + force->special_lj, atom->nlocal, atom->nlocal+atom->nghost, 300, maxspecial, cell_size, gpu_mode, screen, ljsw1, ljsw2, ljsw3, ljsw4, ljsw5, cut_inner, cut_inner_sq); @@ -215,31 +215,31 @@ void PairLJGromacsGPU::cpu_compute(int start, int inum, int eflag, if (rsq < cutsq[itype][jtype]) { r2inv = 1.0/rsq; - r6inv = r2inv*r2inv*r2inv; + r6inv = r2inv*r2inv*r2inv; forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - if (rsq > cut_inner_sq[itype][jtype]) { + if (rsq > cut_inner_sq[itype][jtype]) { r = sqrt(rsq); t = r - cut_inner[itype][jtype]; - fswitch = r*t*t*(ljsw1[itype][jtype] + ljsw2[itype][jtype]*t); - forcelj += fswitch; + fswitch = r*t*t*(ljsw1[itype][jtype] + ljsw2[itype][jtype]*t); + forcelj += fswitch; } - fpair = factor_lj*forcelj * r2inv; + fpair = factor_lj*forcelj * r2inv; - f[i][0] += delx*fpair; - f[i][1] += dely*fpair; - f[i][2] += delz*fpair; + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; - if (eflag) { - evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); - evdwl += ljsw5[itype][jtype]; + if (eflag) { + evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]); + evdwl += ljsw5[itype][jtype]; if (rsq > cut_inner_sq[itype][jtype]) { eswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t); evdwl += eswitch; } - evdwl *= factor_lj; - } + evdwl *= factor_lj; + } - if (evflag) ev_tally_full(i,evdwl,0.0,fpair,delx,dely,delz); + if (evflag) ev_tally_full(i,evdwl,0.0,fpair,delx,dely,delz); } } } diff --git a/src/GPU/pair_sw_gpu.cpp b/src/GPU/pair_sw_gpu.cpp index 67faf98da4..d2d21a131a 100644 --- a/src/GPU/pair_sw_gpu.cpp +++ b/src/GPU/pair_sw_gpu.cpp @@ -115,7 +115,7 @@ void PairSWGPU::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - sw_gpu_compute(neighbor->ago, atom->nlocal, nall, inum+list->gnum, + sw_gpu_compute(neighbor->ago, inum, nall, inum+list->gnum, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success); diff --git a/src/GPU/pair_tersoff_gpu.cpp b/src/GPU/pair_tersoff_gpu.cpp index 7b225de729..41d8e6b751 100644 --- a/src/GPU/pair_tersoff_gpu.cpp +++ b/src/GPU/pair_tersoff_gpu.cpp @@ -119,7 +119,7 @@ void PairTersoffGPU::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - tersoff_gpu_compute(neighbor->ago, atom->nlocal, nall, inum+list->gnum, + tersoff_gpu_compute(neighbor->ago, inum, nall, inum+list->gnum, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success); diff --git a/src/GPU/pair_tersoff_mod_gpu.cpp b/src/GPU/pair_tersoff_mod_gpu.cpp index 3313904d16..25ea2cb99f 100644 --- a/src/GPU/pair_tersoff_mod_gpu.cpp +++ b/src/GPU/pair_tersoff_mod_gpu.cpp @@ -112,7 +112,7 @@ void PairTersoffMODGPU::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - tersoff_mod_gpu_compute(neighbor->ago, atom->nlocal, nall, inum+list->gnum, + tersoff_mod_gpu_compute(neighbor->ago, inum, nall, inum+list->gnum, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success); diff --git a/src/GPU/pair_tersoff_zbl_gpu.cpp b/src/GPU/pair_tersoff_zbl_gpu.cpp index 86f02e49ef..b4b679b7d0 100644 --- a/src/GPU/pair_tersoff_zbl_gpu.cpp +++ b/src/GPU/pair_tersoff_zbl_gpu.cpp @@ -120,7 +120,7 @@ void PairTersoffZBLGPU::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - tersoff_zbl_gpu_compute(neighbor->ago, atom->nlocal, nall, inum+list->gnum, + tersoff_zbl_gpu_compute(neighbor->ago, inum, nall, inum+list->gnum, atom->x, atom->type, ilist, numneigh, firstneigh, eflag, vflag, eflag_atom, vflag_atom, host_start, cpu_time, success); diff --git a/src/GPU/pair_zbl_gpu.cpp b/src/GPU/pair_zbl_gpu.cpp index faf6e9b29d..f1f6bdd44b 100644 --- a/src/GPU/pair_zbl_gpu.cpp +++ b/src/GPU/pair_zbl_gpu.cpp @@ -210,15 +210,15 @@ void PairZBLGPU::cpu_compute(int start, int inum, int eflag, int vflag, jtype = type[j]; if (rsq < cut_globalsq) { - r = sqrt(rsq); + r = sqrt(rsq); fpair = dzbldr(r, itype, jtype); - if (rsq > cut_innersq) { - t = r - cut_inner; - fswitch = t*t * - (sw1[itype][jtype] + sw2[itype][jtype]*t); - fpair += fswitch; - } + if (rsq > cut_innersq) { + t = r - cut_inner; + fswitch = t*t * + (sw1[itype][jtype] + sw2[itype][jtype]*t); + fpair += fswitch; + } fpair *= -1.0/r; f[i][0] += delx*fpair; @@ -227,12 +227,12 @@ void PairZBLGPU::cpu_compute(int start, int inum, int eflag, int vflag, if (eflag) { evdwl = e_zbl(r, itype, jtype); - evdwl += sw5[itype][jtype]; - if (rsq > cut_innersq) { - eswitch = t*t*t * - (sw3[itype][jtype] + sw4[itype][jtype]*t); - evdwl += eswitch; - } + evdwl += sw5[itype][jtype]; + if (rsq > cut_innersq) { + eswitch = t*t*t * + (sw3[itype][jtype] + sw4[itype][jtype]*t); + evdwl += eswitch; + } } if (evflag) ev_tally_full(i,evdwl,0.0,fpair,delx,dely,delz); From 9656958169df763b79a91194e8c67c876c1f7d8e Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:27:26 +0000 Subject: [PATCH 12/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15248 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- lib/gpu/Makefile.lammps.mingw-cross | 2 +- lib/gpu/Makefile.linux | 2 +- lib/gpu/Makefile.mingw32-cross | 2 +- lib/gpu/Makefile.mingw32-cross-mpi | 2 +- lib/gpu/Makefile.mingw64-cross | 2 +- lib/gpu/Makefile.mingw64-cross-mpi | 2 +- lib/gpu/geryon/nvd_device.h | 92 +++---- lib/gpu/geryon/nvd_kernel.h | 126 +++++----- lib/gpu/geryon/nvd_mat.h | 6 +- lib/gpu/geryon/nvd_memory.h | 106 ++++---- lib/gpu/geryon/nvd_texture.h | 24 +- lib/gpu/geryon/nvd_timer.h | 30 +-- lib/gpu/geryon/ocl_device.h | 120 ++++----- lib/gpu/geryon/ocl_kernel.h | 132 +++++----- lib/gpu/geryon/ocl_mat.h | 6 +- lib/gpu/geryon/ocl_memory.h | 116 ++++----- lib/gpu/geryon/ocl_texture.h | 8 +- lib/gpu/geryon/ocl_timer.h | 30 +-- lib/gpu/geryon/ucl_arg_kludge.h | 372 ++++++++++++++-------------- lib/gpu/geryon/ucl_basemat.h | 16 +- lib/gpu/geryon/ucl_copy.h | 162 ++++++------ lib/gpu/geryon/ucl_d_mat.h | 112 ++++----- lib/gpu/geryon/ucl_d_vec.h | 98 ++++---- lib/gpu/geryon/ucl_h_mat.h | 164 ++++++------ lib/gpu/geryon/ucl_h_vec.h | 144 +++++------ lib/gpu/geryon/ucl_matrix.h | 48 ++-- lib/gpu/geryon/ucl_nv_kernel.h | 6 +- lib/gpu/geryon/ucl_print.h | 64 ++--- lib/gpu/geryon/ucl_s_obj_help.h | 30 +-- lib/gpu/geryon/ucl_types.h | 78 +++--- lib/gpu/geryon/ucl_vector.h | 48 ++-- lib/gpu/lal_answer.cpp | 46 ++-- lib/gpu/lal_atom.cpp | 46 ++-- lib/gpu/lal_atom.cu | 6 +- lib/gpu/lal_atom.h | 60 ++--- lib/gpu/lal_balance.h | 18 +- lib/gpu/lal_base_atomic.cpp | 20 +- lib/gpu/lal_base_atomic.h | 22 +- lib/gpu/lal_base_charge.cpp | 16 +- lib/gpu/lal_base_charge.h | 12 +- lib/gpu/lal_base_dipole.cpp | 18 +- lib/gpu/lal_base_dipole.h | 12 +- lib/gpu/lal_base_dpd.cpp | 18 +- lib/gpu/lal_base_dpd.h | 12 +- lib/gpu/lal_base_ellipsoid.cpp | 34 +-- lib/gpu/lal_base_ellipsoid.h | 28 +-- lib/gpu/lal_base_three.cpp | 52 ++-- lib/gpu/lal_base_three.h | 31 +-- lib/gpu/lal_beck.cpp | 10 +- lib/gpu/lal_beck.cu | 26 +- lib/gpu/lal_beck.h | 12 +- lib/gpu/lal_beck_ext.cpp | 8 +- lib/gpu/lal_born.cpp | 26 +- lib/gpu/lal_born.cu | 58 ++--- lib/gpu/lal_born.h | 20 +- lib/gpu/lal_born_coul_long.cpp | 28 +-- lib/gpu/lal_born_coul_long.cu | 268 ++++++++++---------- lib/gpu/lal_born_coul_long.h | 20 +- lib/gpu/lal_born_coul_long_ext.cpp | 32 +-- lib/gpu/lal_born_coul_wolf.cpp | 30 +-- lib/gpu/lal_born_coul_wolf.cu | 64 ++--- lib/gpu/lal_born_coul_wolf.h | 20 +- lib/gpu/lal_born_coul_wolf_ext.cpp | 24 +- lib/gpu/lal_born_ext.cpp | 30 +-- lib/gpu/lal_buck.cpp | 30 +-- lib/gpu/lal_buck.cu | 54 ++-- lib/gpu/lal_buck.h | 18 +- lib/gpu/lal_buck_coul.cpp | 30 +-- lib/gpu/lal_buck_coul.cu | 80 +++--- lib/gpu/lal_buck_coul.h | 20 +- lib/gpu/lal_buck_coul_ext.cpp | 24 +- lib/gpu/lal_buck_coul_long.cpp | 26 +- lib/gpu/lal_buck_coul_long.cu | 276 ++++++++++----------- lib/gpu/lal_buck_coul_long.h | 14 +- lib/gpu/lal_buck_coul_long_ext.cpp | 20 +- lib/gpu/lal_buck_ext.cpp | 24 +- lib/gpu/lal_cg_cmm.cpp | 24 +- lib/gpu/lal_cg_cmm.cu | 44 ++-- lib/gpu/lal_cg_cmm.h | 10 +- lib/gpu/lal_cg_cmm_ext.cpp | 14 +- lib/gpu/lal_cg_cmm_long.cpp | 24 +- lib/gpu/lal_cg_cmm_long.cu | 38 +-- lib/gpu/lal_cg_cmm_long.h | 12 +- lib/gpu/lal_cg_cmm_long_ext.cpp | 16 +- lib/gpu/lal_charmm_long.cpp | 20 +- lib/gpu/lal_charmm_long.cu | 42 ++-- lib/gpu/lal_charmm_long.h | 12 +- lib/gpu/lal_charmm_long_ext.cpp | 16 +- lib/gpu/lal_colloid.cpp | 30 +-- lib/gpu/lal_colloid.cu | 116 ++++----- lib/gpu/lal_colloid.h | 20 +- lib/gpu/lal_colloid_ext.cpp | 22 +- lib/gpu/lal_coul.cpp | 18 +- lib/gpu/lal_coul.cu | 38 +-- lib/gpu/lal_coul.h | 12 +- lib/gpu/lal_coul_debye.cpp | 16 +- lib/gpu/lal_coul_debye.cu | 26 +- lib/gpu/lal_coul_debye.h | 12 +- lib/gpu/lal_coul_debye_ext.cpp | 16 +- lib/gpu/lal_coul_dsf.cpp | 18 +- lib/gpu/lal_coul_dsf.cu | 56 ++--- lib/gpu/lal_coul_dsf.h | 10 +- lib/gpu/lal_coul_dsf_ext.cpp | 22 +- lib/gpu/lal_coul_ext.cpp | 18 +- lib/gpu/lal_coul_long.cpp | 14 +- lib/gpu/lal_coul_long.cu | 18 +- lib/gpu/lal_coul_long.h | 12 +- lib/gpu/lal_coul_long_ext.cpp | 42 ++-- lib/gpu/lal_device.cpp | 112 ++++----- lib/gpu/lal_device.cu | 6 +- lib/gpu/lal_device.h | 68 ++--- lib/gpu/lal_dipole_lj.cpp | 16 +- lib/gpu/lal_dipole_lj.cu | 90 +++---- lib/gpu/lal_dipole_lj.h | 8 +- lib/gpu/lal_dipole_lj_ext.cpp | 12 +- lib/gpu/lal_dipole_lj_sf.cpp | 20 +- lib/gpu/lal_dipole_lj_sf.cu | 122 ++++----- lib/gpu/lal_dipole_lj_sf.h | 8 +- lib/gpu/lal_dipole_lj_sf_ext.cpp | 12 +- lib/gpu/lal_dpd.cpp | 30 +-- lib/gpu/lal_dpd.cu | 84 +++---- lib/gpu/lal_dpd.h | 18 +- lib/gpu/lal_dpd_ext.cpp | 22 +- lib/gpu/lal_eam.cpp | 134 +++++----- lib/gpu/lal_eam.cu | 136 +++++----- lib/gpu/lal_eam.h | 54 ++-- lib/gpu/lal_eam_alloy_ext.cpp | 32 +-- lib/gpu/lal_eam_ext.cpp | 32 +-- lib/gpu/lal_eam_fs_ext.cpp | 32 +-- lib/gpu/lal_ellipsoid_extra.h | 16 +- lib/gpu/lal_ellipsoid_nbor.cu | 34 +-- lib/gpu/lal_gauss.cpp | 22 +- lib/gpu/lal_gauss.cu | 60 ++--- lib/gpu/lal_gauss.h | 18 +- lib/gpu/lal_gauss_ext.cpp | 24 +- lib/gpu/lal_gayberne.cpp | 80 +++--- lib/gpu/lal_gayberne.cu | 144 +++++------ lib/gpu/lal_gayberne.h | 26 +- lib/gpu/lal_gayberne_ext.cpp | 20 +- lib/gpu/lal_gayberne_lj.cu | 130 +++++----- lib/gpu/lal_lj.cpp | 30 +-- lib/gpu/lal_lj.cu | 60 ++--- lib/gpu/lal_lj.h | 16 +- lib/gpu/lal_lj96.cpp | 18 +- lib/gpu/lal_lj96.cu | 50 ++-- lib/gpu/lal_lj96.h | 10 +- lib/gpu/lal_lj96_ext.cpp | 8 +- lib/gpu/lal_lj_class2_long.cpp | 16 +- lib/gpu/lal_lj_class2_long.cu | 42 ++-- lib/gpu/lal_lj_class2_long.h | 8 +- lib/gpu/lal_lj_class2_long_ext.cpp | 8 +- lib/gpu/lal_lj_coul.cpp | 24 +- lib/gpu/lal_lj_coul.cu | 46 ++-- lib/gpu/lal_lj_coul.h | 8 +- lib/gpu/lal_lj_coul_debye.cpp | 22 +- lib/gpu/lal_lj_coul_debye.cu | 42 ++-- lib/gpu/lal_lj_coul_debye.h | 8 +- lib/gpu/lal_lj_coul_debye_ext.cpp | 12 +- lib/gpu/lal_lj_coul_ext.cpp | 10 +- lib/gpu/lal_lj_coul_long.cpp | 22 +- lib/gpu/lal_lj_coul_long.cu | 38 +-- lib/gpu/lal_lj_coul_long.h | 10 +- lib/gpu/lal_lj_coul_long_ext.cpp | 18 +- lib/gpu/lal_lj_coul_msm.cpp | 24 +- lib/gpu/lal_lj_coul_msm.cu | 30 +-- lib/gpu/lal_lj_coul_msm.h | 14 +- lib/gpu/lal_lj_coul_msm_ext.cpp | 10 +- lib/gpu/lal_lj_cubic.cpp | 26 +- lib/gpu/lal_lj_cubic.cu | 64 ++--- lib/gpu/lal_lj_cubic.h | 16 +- lib/gpu/lal_lj_cubic_ext.cpp | 16 +- lib/gpu/lal_lj_dsf.cpp | 24 +- lib/gpu/lal_lj_dsf.cu | 46 ++-- lib/gpu/lal_lj_dsf.h | 8 +- lib/gpu/lal_lj_dsf_ext.cpp | 10 +- lib/gpu/lal_lj_expand.cpp | 28 +-- lib/gpu/lal_lj_expand.cu | 70 +++--- lib/gpu/lal_lj_expand.h | 14 +- lib/gpu/lal_lj_expand_ext.cpp | 14 +- lib/gpu/lal_lj_ext.cpp | 14 +- lib/gpu/lal_lj_gromacs.cpp | 22 +- lib/gpu/lal_lj_gromacs.cu | 26 +- lib/gpu/lal_lj_gromacs.h | 12 +- lib/gpu/lal_lj_gromacs_ext.cpp | 16 +- lib/gpu/lal_mie.cpp | 16 +- lib/gpu/lal_mie.cu | 42 ++-- lib/gpu/lal_mie.h | 12 +- lib/gpu/lal_mie_ext.cpp | 8 +- lib/gpu/lal_morse.cpp | 24 +- lib/gpu/lal_morse.cu | 48 ++-- lib/gpu/lal_morse.h | 12 +- lib/gpu/lal_morse_ext.cpp | 14 +- lib/gpu/lal_neighbor.cpp | 119 +++++---- lib/gpu/lal_neighbor.h | 62 ++--- lib/gpu/lal_neighbor_cpu.cu | 6 +- lib/gpu/lal_neighbor_gpu.cu | 118 ++++----- lib/gpu/lal_neighbor_shared.cpp | 6 +- lib/gpu/lal_neighbor_shared.h | 6 +- lib/gpu/lal_pppm.cpp | 44 ++-- lib/gpu/lal_pppm.cu | 68 ++--- lib/gpu/lal_pppm.h | 28 +-- lib/gpu/lal_pppm_ext.cpp | 18 +- lib/gpu/lal_precision.h | 16 +- lib/gpu/lal_preprocessor.h | 20 +- lib/gpu/lal_re_squared.cpp | 68 ++--- lib/gpu/lal_re_squared.cu | 40 +-- lib/gpu/lal_re_squared.h | 20 +- lib/gpu/lal_re_squared_ext.cpp | 20 +- lib/gpu/lal_re_squared_lj.cu | 140 +++++------ lib/gpu/lal_soft.cpp | 18 +- lib/gpu/lal_soft.cu | 32 +-- lib/gpu/lal_soft.h | 14 +- lib/gpu/lal_soft_ext.cpp | 16 +- lib/gpu/lal_sw.cpp | 64 ++--- lib/gpu/lal_sw.cu | 128 +++++----- lib/gpu/lal_sw.h | 12 +- lib/gpu/lal_sw_ext.cpp | 26 +- lib/gpu/lal_table.cpp | 88 +++---- lib/gpu/lal_table.cu | 328 ++++++++++++------------ lib/gpu/lal_table.h | 36 +-- lib/gpu/lal_table_ext.cpp | 14 +- lib/gpu/lal_tersoff.cpp | 12 +- lib/gpu/lal_tersoff.cu | 30 ++- lib/gpu/lal_tersoff_ext.cpp | 2 +- lib/gpu/lal_tersoff_extra.h | 2 +- lib/gpu/lal_tersoff_mod.cpp | 12 +- lib/gpu/lal_tersoff_mod.cu | 32 ++- lib/gpu/lal_tersoff_mod_ext.cpp | 2 +- lib/gpu/lal_tersoff_mod_extra.h | 4 +- lib/gpu/lal_tersoff_zbl.cpp | 12 +- lib/gpu/lal_tersoff_zbl.cu | 30 ++- lib/gpu/lal_tersoff_zbl_ext.cpp | 2 +- lib/gpu/lal_tersoff_zbl_extra.h | 2 +- lib/gpu/lal_yukawa.cpp | 18 +- lib/gpu/lal_yukawa.cu | 52 ++-- lib/gpu/lal_yukawa.h | 16 +- lib/gpu/lal_yukawa_colloid.cpp | 64 ++--- lib/gpu/lal_yukawa_colloid.cu | 74 +++--- lib/gpu/lal_yukawa_colloid.h | 28 +-- lib/gpu/lal_yukawa_colloid_ext.cpp | 26 +- lib/gpu/lal_yukawa_ext.cpp | 22 +- lib/gpu/lal_zbl.cpp | 28 +-- lib/gpu/lal_zbl.cu | 108 ++++---- lib/gpu/lal_zbl.h | 20 +- lib/gpu/lal_zbl_ext.cpp | 20 +- 245 files changed, 4890 insertions(+), 4832 deletions(-) diff --git a/lib/gpu/Makefile.lammps.mingw-cross b/lib/gpu/Makefile.lammps.mingw-cross index e92c3e9d0d..12d833c744 100644 --- a/lib/gpu/Makefile.lammps.mingw-cross +++ b/lib/gpu/Makefile.lammps.mingw-cross @@ -1,6 +1,6 @@ # Settings that the LAMMPS build will import when this package library is used # settings for OpenCL builds gpu_SYSINC = -gpu_SYSLIB = -Wl,--enable-stdcall-fixup -L../../tools/mingw-cross$(LIBOBJDIR) -lOpenCL +gpu_SYSLIB = -Wl,--enable-stdcall-fixup -L../../tools/mingw-cross$(LIBOBJDIR) -Wl,-Bdynamic,-lOpenCL,-Bstatic gpu_SYSPATH = diff --git a/lib/gpu/Makefile.linux b/lib/gpu/Makefile.linux index 1e689a355c..d72c0ba437 100644 --- a/lib/gpu/Makefile.linux +++ b/lib/gpu/Makefile.linux @@ -7,7 +7,7 @@ EXTRAMAKE = Makefile.lammps.standard -ifeq($(CUDA_HOME),) +ifeq ($(CUDA_HOME),) CUDA_HOME = /usr/local/cuda endif diff --git a/lib/gpu/Makefile.mingw32-cross b/lib/gpu/Makefile.mingw32-cross index 3f1240af1a..6f77634755 100644 --- a/lib/gpu/Makefile.mingw32-cross +++ b/lib/gpu/Makefile.mingw32-cross @@ -3,7 +3,7 @@ CUDA_HOME = ../../tools/mingw-cross/OpenCL OCL_CPP = i686-w64-mingw32-g++ -O2 -march=i686 -mtune=generic -mfpmath=387 \ -mpc64 -DMPI_GERYON -DUCL_NO_EXIT -I../../src/STUBS \ -I$(CUDA_HOME)/include -OCL_LINK = -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw32 -lOpenCL -L../../src/STUBS -lmpi_mingw32 +OCL_LINK = -static -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw32 -Wl,-Bdynamic,-lOpenCL,-Bstatic -L../../src/STUBS -lmpi_mingw32 OCL_PREC = -D_SINGLE_DOUBLE OCL_TUNE = -DFERMI_OCL EXTRAMAKE = Makefile.lammps.mingw-cross diff --git a/lib/gpu/Makefile.mingw32-cross-mpi b/lib/gpu/Makefile.mingw32-cross-mpi index 6dae2d0604..94099cd90b 100644 --- a/lib/gpu/Makefile.mingw32-cross-mpi +++ b/lib/gpu/Makefile.mingw32-cross-mpi @@ -4,7 +4,7 @@ OCL_CPP = i686-w64-mingw32-g++ -O2 -march=i686 -mtune=generic -mfpmath=387 \ -mpc64 -DMPI_GERYON -DUCL_NO_EXIT -I$(CUDA_HOME)/include \ -I../../tools/mingw-cross/mpich2-win32/include/ \ -DMPICH_IGNORE_CXX_SEEK -OCL_LINK = -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw32 -lOpenCL \ +OCL_LINK = -static -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw32 -Wl,-Bdynamic,-lOpenCL,-Bstatic \ -L../../tools/mingw-cross/mpich2-win32/lib -lmpi OCL_PREC = -D_SINGLE_DOUBLE OCL_TUNE = -DFERMI_OCL diff --git a/lib/gpu/Makefile.mingw64-cross b/lib/gpu/Makefile.mingw64-cross index 606b0309cb..54f6af8c65 100644 --- a/lib/gpu/Makefile.mingw64-cross +++ b/lib/gpu/Makefile.mingw64-cross @@ -3,7 +3,7 @@ CUDA_HOME = ../../tools/mingw-cross/OpenCL OCL_CPP = x86_64-w64-mingw32-g++ -O3 -march=core2 -mtune=core2 -mpc64 \ -msse2 -DMPI_GERYON -DUCL_NO_EXIT -I../../src/STUBS \ -I$(CUDA_HOME)/include -OCL_LINK = -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw64 -lOpenCL \ +OCL_LINK = -static -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw64 -Wl,-Bdynamic,-lOpenCL,-Bstatic \ -L../../src/STUBS -lmpi_mingw64 OCL_PREC = -D_SINGLE_DOUBLE OCL_TUNE = -DFERMI_OCL diff --git a/lib/gpu/Makefile.mingw64-cross-mpi b/lib/gpu/Makefile.mingw64-cross-mpi index cea8155efd..2ff72d98b1 100644 --- a/lib/gpu/Makefile.mingw64-cross-mpi +++ b/lib/gpu/Makefile.mingw64-cross-mpi @@ -5,7 +5,7 @@ OCL_CPP = x86_64-w64-mingw32-g++ -O3 -march=core2 -mtune=core2 -mpc64 \ -I../../tools/mingw-cross/mpich2-win64/include/ \ -DMPICH_IGNORE_CXX_SEEK -OCL_LINK = -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw64 -lOpenCL \ +OCL_LINK = -static -Wl,--enable-stdcall-fixup -L$(CUDA_HOME)/../Obj_mingw64 -Wl,-Bdynamic,-lOpenCL,-Bstatic \ -L../../tools/mingw-cross/mpich2-win64/lib -lmpi OCL_PREC = -D_SINGLE_DOUBLE OCL_TUNE = -DFERMI_OCL diff --git a/lib/gpu/geryon/nvd_device.h b/lib/gpu/geryon/nvd_device.h index 3b7781753c..2d2a751f85 100644 --- a/lib/gpu/geryon/nvd_device.h +++ b/lib/gpu/geryon/nvd_device.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -35,7 +35,7 @@ namespace ucl_cudadr { // -------------------------------------------------------------------------- // - COMMAND QUEUE STUFF // -------------------------------------------------------------------------- -typedef CUstream command_queue; +typedef CUstream command_queue; inline void ucl_sync(CUstream &stream) { CU_SAFE_CALL(cuStreamSynchronize(stream)); @@ -59,21 +59,21 @@ struct NVDProperties { /// Class for looking at device properties /** \note Calls to change the device outside of the class results in incorrect - * behavior + * behavior * \note There is no error checking for indexing past the number of devices **/ class UCL_Device { public: /// Collect properties for every GPU on the node /** \note You must set the active GPU with set() before using the device **/ inline UCL_Device(); - + inline ~UCL_Device(); /// Returns 1 (For compatibility with OpenCL) inline int num_platforms() { return 1; } /// Return a string with name and info of the current platform - inline std::string platform_name() + inline std::string platform_name() { return "NVIDIA Corporation NVIDIA CUDA Driver"; } /// Delete any contexts/data and set the platform number to be used @@ -97,24 +97,24 @@ class UCL_Device { /// Returns the default stream for the current device inline command_queue & cq() { return cq(0); } - + /// Returns the stream indexed by i inline command_queue & cq(const int i) { return _cq[i]; } - + /// Block until all commands in the default stream have completed inline void sync() { sync(0); } - + /// Block until all commands in the specified stream have completed inline void sync(const int i) { ucl_sync(cq(i)); } - + /// Get the number of command queues currently available on device - inline int num_queues() + inline int num_queues() { return _cq.size(); } - + /// Add a stream for device computations inline void push_command_queue() { - _cq.push_back(CUstream()); - CU_SAFE_CALL(cuStreamCreate(&_cq.back(),0)); + _cq.push_back(CUstream()); + CU_SAFE_CALL(cuStreamCreate(&_cq.back(),0)); } /// Remove a stream for device computations @@ -124,19 +124,19 @@ class UCL_Device { CU_SAFE_CALL_NS(cuStreamDestroy(_cq.back())); _cq.pop_back(); } - + /// Set the default command queue (by default this is the null stream) - /** \param i index of the command queue (as added by push_command_queue()) + /** \param i index of the command queue (as added by push_command_queue()) If i is 0, the default command queue is set to the null stream **/ inline void set_command_queue(const int i) { if (i==0) _cq[0]=0; else _cq[0]=_cq[i]; } - + /// Get the current CUDA device name inline std::string name() { return name(_device); } /// Get the CUDA device name - inline std::string name(const int i) + inline std::string name(const int i) { return std::string(_properties[i].name); } /// Get a string telling the type of the current device @@ -148,38 +148,38 @@ class UCL_Device { inline int device_type() { return device_type(_device); } /// Get device type (UCL_CPU, UCL_GPU, UCL_ACCELERATOR, UCL_DEFAULT) inline int device_type(const int i) { return UCL_GPU; } - + /// Returns true if host memory is efficiently addressable from device inline bool shared_memory() { return shared_memory(_device); } /// Returns true if host memory is efficiently addressable from device inline bool shared_memory(const int i) { return device_type(i)==UCL_CPU; } - + /// Returns true if double precision is support for the current device inline bool double_precision() { return double_precision(_device); } /// Returns true if double precision is support for the device inline bool double_precision(const int i) {return arch(i)>=1.3;} - + /// Get the number of compute units on the current device inline unsigned cus() { return cus(_device); } /// Get the number of compute units - inline unsigned cus(const int i) + inline unsigned cus(const int i) { return _properties[i].multiProcessorCount; } /// Get the number of cores in the current device inline unsigned cores() { return cores(_device); } /// Get the number of cores - inline unsigned cores(const int i) - { if (arch(i)<2.0) return _properties[i].multiProcessorCount*8; + inline unsigned cores(const int i) + { if (arch(i)<2.0) return _properties[i].multiProcessorCount*8; else if (arch(i)<2.1) return _properties[i].multiProcessorCount*32; else if (arch(i)<3.0) return _properties[i].multiProcessorCount*48; else return _properties[i].multiProcessorCount*192; } - + /// Get the gigabytes of global memory in the current device inline double gigabytes() { return gigabytes(_device); } /// Get the gigabytes of global memory - inline double gigabytes(const int i) + inline double gigabytes(const int i) { return static_cast(_properties[i].totalGlobalMem)/1073741824; } - + /// Get the bytes of global memory in the current device inline size_t bytes() { return bytes(_device); } /// Get the bytes of global memory @@ -188,13 +188,13 @@ class UCL_Device { // Get the gigabytes of free memory in the current device inline double free_gigabytes() { return free_gigabytes(_device); } // Get the gigabytes of free memory - inline double free_gigabytes(const int i) + inline double free_gigabytes(const int i) { return static_cast(free_bytes(i))/1073741824; } - + // Get the bytes of free memory in the current device inline size_t free_bytes() { return free_bytes(_device); } // Get the bytes of free memory - inline size_t free_bytes(const int i) { + inline size_t free_bytes(const int i) { CUDA_INT_TYPE dfree, dtotal; CU_SAFE_CALL_NS(cuMemGetInfo(&dfree, &dtotal)); return static_cast(dfree); @@ -203,21 +203,21 @@ class UCL_Device { /// Return the GPGPU compute capability for current device inline double arch() { return arch(_device); } /// Return the GPGPU compute capability - inline double arch(const int i) + inline double arch(const int i) { return static_cast(_properties[i].minor)/10+_properties[i].major;} - + /// Clock rate in GHz for current device inline double clock_rate() { return clock_rate(_device); } /// Clock rate in GHz - inline double clock_rate(const int i) + inline double clock_rate(const int i) { return _properties[i].p.clockRate*1e-6;} - + /// Get the maximum number of threads per block inline size_t group_size() { return group_size(_device); } /// Get the maximum number of threads per block - inline size_t group_size(const int i) + inline size_t group_size(const int i) { return _properties[i].p.maxThreadsPerBlock; } - + /// Return the maximum memory pitch in bytes for current device inline size_t max_pitch() { return max_pitch(_device); } /// Return the maximum memory pitch in bytes @@ -242,7 +242,7 @@ class UCL_Device { { return fission_by_counts(_device); } /// True if splitting device into subdevices by specified counts supported inline bool fission_by_counts(const int i) - { return false; } + { return false; } /// True if splitting device into subdevices by affinity domains supported inline bool fission_by_affinity() { return fission_by_affinity(_device); } @@ -259,7 +259,7 @@ class UCL_Device { /// List all devices along with all properties inline void print_all(std::ostream &out); - + private: int _device, _num_devices; std::vector _properties; @@ -279,16 +279,16 @@ UCL_Device::UCL_Device() { CU_SAFE_CALL_NS(cuDeviceComputeCapability(&major,&minor,m)); if (major==9999) continue; - + _properties.push_back(NVDProperties()); _properties.back().device_id=dev; _properties.back().major=major; _properties.back().minor=minor; - + char namecstr[1024]; CU_SAFE_CALL_NS(cuDeviceGetName(namecstr,1024,m)); _properties.back().name=namecstr; - + CU_SAFE_CALL_NS(cuDeviceTotalMem(&_properties.back().totalGlobalMem,m)); CU_SAFE_CALL_NS(cuDeviceGetAttribute(&_properties.back().multiProcessorCount, CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT, @@ -296,23 +296,23 @@ UCL_Device::UCL_Device() { CU_SAFE_CALL_NS(cuDeviceGetProperties(&_properties.back().p,m)); #if CUDA_VERSION >= 2020 CU_SAFE_CALL_NS(cuDeviceGetAttribute( - &_properties.back().kernelExecTimeoutEnabled, + &_properties.back().kernelExecTimeoutEnabled, CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT,dev)); CU_SAFE_CALL_NS(cuDeviceGetAttribute( &_properties.back().integrated, CU_DEVICE_ATTRIBUTE_INTEGRATED, dev)); CU_SAFE_CALL_NS(cuDeviceGetAttribute( - &_properties.back().canMapHostMemory, + &_properties.back().canMapHostMemory, CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY, dev)); - CU_SAFE_CALL_NS(cuDeviceGetAttribute(&_properties.back().computeMode, + CU_SAFE_CALL_NS(cuDeviceGetAttribute(&_properties.back().computeMode, CU_DEVICE_ATTRIBUTE_COMPUTE_MODE,dev)); #endif #if CUDA_VERSION >= 3010 CU_SAFE_CALL_NS(cuDeviceGetAttribute( - &_properties.back().concurrentKernels, + &_properties.back().concurrentKernels, CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS, dev)); CU_SAFE_CALL_NS(cuDeviceGetAttribute( - &_properties.back().ECCEnabled, + &_properties.back().ECCEnabled, CU_DEVICE_ATTRIBUTE_ECC_ENABLED, dev)); #endif } @@ -365,7 +365,7 @@ void UCL_Device::print_all(std::ostream &out) { cuDriverGetVersion(&driver_version); out << "CUDA Driver Version: " << driver_version/1000 << "." << driver_version%100 - << std::endl; + << std::endl; #endif if (num_devices() == 0) diff --git a/lib/gpu/geryon/nvd_kernel.h b/lib/gpu/geryon/nvd_kernel.h index e0bfb1bb5e..d03a715e1b 100644 --- a/lib/gpu/geryon/nvd_kernel.h +++ b/lib/gpu/geryon/nvd_kernel.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -35,15 +35,15 @@ template class UCL_D_Mat; template class UCL_Vector; template class UCL_Matrix; #define UCL_MAX_KERNEL_ARGS 256 - + /// Class storing 1 or more kernel functions from a single string or file class UCL_Program { public: inline UCL_Program(UCL_Device &device) { _cq=device.cq(); } - inline UCL_Program(UCL_Device &device, const void *program, - const char *flags="", std::string *log=NULL) { + inline UCL_Program(UCL_Device &device, const void *program, + const char *flags="", std::string *log=NULL) { _cq=device.cq(); - init(device); + init(device); load_string(program,flags,log); } @@ -61,20 +61,20 @@ class UCL_Program { std::string *log=NULL) { std::ifstream in(filename); if (!in || in.is_open()==false) { - #ifndef UCL_NO_EXIT - std::cerr << "UCL Error: Could not open kernel file: " + #ifndef UCL_NO_EXIT + std::cerr << "UCL Error: Could not open kernel file: " << filename << std::endl; UCL_GERYON_EXIT; #endif return UCL_FILE_NOT_FOUND; } - + std::string program((std::istreambuf_iterator(in)), std::istreambuf_iterator()); in.close(); return load_string(program.c_str(),flags,log); } - + /// Load a program from a string and compile with flags inline int load_string(const void *program, const char *flags="", std::string *log=NULL) { @@ -94,12 +94,12 @@ class UCL_Program { CUresult err=cuModuleLoadDataEx(&_module,program,num_opts, options,(void **)values); - + if (log!=NULL) *log=std::string(clog); - + if (err != CUDA_SUCCESS) { - #ifndef UCL_NO_EXIT + #ifndef UCL_NO_EXIT std::cerr << std::endl << "----------------------------------------------------------\n" << " UCL Error: Error compiling PTX Program...\n" @@ -108,24 +108,24 @@ class UCL_Program { #endif return UCL_COMPILE_ERROR; } - + return UCL_SUCCESS; - } - + } + /// Load a precompiled program from a file inline int load_binary(const char *filename) { CUmodule _module; CUresult err = cuModuleLoad(&_module,filename); if (err==301) { - #ifndef UCL_NO_EXIT - std::cerr << "UCL Error: Could not open binary kernel file: " + #ifndef UCL_NO_EXIT + std::cerr << "UCL Error: Could not open binary kernel file: " << filename << std::endl; UCL_GERYON_EXIT; #endif return UCL_FILE_NOT_FOUND; } else if (err!=CUDA_SUCCESS) { - #ifndef UCL_NO_EXIT - std::cerr << "UCL Error: Error loading binary kernel file: " + #ifndef UCL_NO_EXIT + std::cerr << "UCL Error: Error loading binary kernel file: " << filename << std::endl; UCL_GERYON_EXIT; #endif @@ -138,7 +138,7 @@ class UCL_Program { // return UCL_ERROR; return UCL_SUCCESS; } - + friend class UCL_Kernel; private: CUmodule _module; @@ -149,23 +149,23 @@ class UCL_Program { /// Class for dealing with CUDA Driver kernels class UCL_Kernel { public: - UCL_Kernel() : _dimensions(1), _num_args(0) { + UCL_Kernel() : _dimensions(1), _num_args(0) { #if CUDA_VERSION < 4000 _param_size=0; #endif - _num_blocks[0]=0; + _num_blocks[0]=0; } - - UCL_Kernel(UCL_Program &program, const char *function) : + + UCL_Kernel(UCL_Program &program, const char *function) : _dimensions(1), _num_args(0) { #if CUDA_VERSION < 4000 _param_size=0; #endif - _num_blocks[0]=0; - set_function(program,function); - _cq=program._cq; + _num_blocks[0]=0; + set_function(program,function); + _cq=program._cq; } - + ~UCL_Kernel() {} /// Clear any function associated with the kernel @@ -189,7 +189,7 @@ class UCL_Kernel { /// Set the kernel argument. /** If not a device pointer, this must be repeated each time the argument - * changes + * changes * \note To set kernel parameter i (i>0), parameter i-1 must be set **/ template inline void set_arg(const unsigned index, const dtype * const arg) { @@ -202,27 +202,27 @@ class UCL_Kernel { CU_SAFE_CALL(cuParamSetv(_kernel, _offsets[index], arg, sizeof(dtype))); #endif else - assert(0==1); // Must add kernel parameters in sequential order + assert(0==1); // Must add kernel parameters in sequential order } - + /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_D_Vec * const arg) + inline void set_arg(const UCL_D_Vec * const arg) { set_arg(&arg->begin()); } /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_D_Mat * const arg) + inline void set_arg(const UCL_D_Mat * const arg) { set_arg(&arg->begin()); } /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_Vector * const arg) + inline void set_arg(const UCL_Vector * const arg) { set_arg(&arg->device.begin()); } /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_Matrix * const arg) + inline void set_arg(const UCL_Matrix * const arg) { set_arg(&arg->device.begin()); } /// Add a kernel argument. @@ -257,37 +257,37 @@ class UCL_Kernel { /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_D_Vec * const arg) + inline void add_arg(const UCL_D_Vec * const arg) { add_arg(&arg->begin()); } /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_D_Mat * const arg) + inline void add_arg(const UCL_D_Mat * const arg) { add_arg(&arg->begin()); } /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_Vector * const arg) + inline void add_arg(const UCL_Vector * const arg) { add_arg(&arg->device.begin()); } /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_Matrix * const arg) + inline void add_arg(const UCL_Matrix * const arg) { add_arg(&arg->device.begin()); } /// Set the number of thread blocks and the number of threads in each block /** \note This should be called before any arguments have been added \note The default command queue is used for the kernel execution **/ - inline void set_size(const size_t num_blocks, const size_t block_size) { - _dimensions=1; - _num_blocks[0]=num_blocks; + inline void set_size(const size_t num_blocks, const size_t block_size) { + _dimensions=1; + _num_blocks[0]=num_blocks; _num_blocks[1]=1; _num_blocks[2]=1; #if CUDA_VERSION >= 4000 _block_size[0]=block_size; _block_size[1]=1; _block_size[2]=1; - #else + #else CU_SAFE_CALL(cuFuncSetBlockShape(_kernel,block_size,1,1)); #endif } @@ -303,43 +303,43 @@ class UCL_Kernel { /** \note This should be called before any arguments have been added \note The default command queue is used for the kernel execution **/ inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, - const size_t block_size_x, const size_t block_size_y) { - _dimensions=2; - _num_blocks[0]=num_blocks_x; - _num_blocks[1]=num_blocks_y; + const size_t block_size_x, const size_t block_size_y) { + _dimensions=2; + _num_blocks[0]=num_blocks_x; + _num_blocks[1]=num_blocks_y; _num_blocks[2]=1; #if CUDA_VERSION >= 4000 _block_size[0]=block_size_x; _block_size[1]=block_size_y; _block_size[2]=1; - #else + #else CU_SAFE_CALL(cuFuncSetBlockShape(_kernel,block_size_x,block_size_y,1)); #endif } - + /// Set the number of thread blocks and the number of threads in each block /** \note This should be called before any arguments have been added \note The default command queue for the kernel is changed to cq **/ inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, const size_t block_size_x, const size_t block_size_y, - command_queue &cq) + command_queue &cq) {_cq=cq; set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y);} /// Set the number of thread blocks and the number of threads in each block /** \note This should be called before any arguments have been added \note The default command queue is used for the kernel execution **/ inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, - const size_t block_size_x, + const size_t block_size_x, const size_t block_size_y, const size_t block_size_z) { - _dimensions=2; - _num_blocks[0]=num_blocks_x; - _num_blocks[1]=num_blocks_y; - _num_blocks[2]=1; + _dimensions=2; + _num_blocks[0]=num_blocks_x; + _num_blocks[1]=num_blocks_y; + _num_blocks[2]=1; #if CUDA_VERSION >= 4000 _block_size[0]=block_size_x; _block_size[1]=block_size_y; _block_size[2]=block_size_z; - #else + #else CU_SAFE_CALL(cuFuncSetBlockShape(_kernel,block_size_x,block_size_y, block_size_z)); #endif @@ -352,10 +352,10 @@ class UCL_Kernel { const size_t block_size_x, const size_t block_size_y, const size_t block_size_z, command_queue &cq) { _cq=cq; - set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y, + set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y, block_size_z); } - + /// Run the kernel in the default command queue inline void run() { #if CUDA_VERSION >= 4000 @@ -367,12 +367,12 @@ class UCL_Kernel { CU_SAFE_CALL(cuLaunchGridAsync(_kernel,_num_blocks[0],_num_blocks[1],_cq)); #endif } - + /// Clear any arguments associated with the kernel - inline void clear_args() { - _num_args=0; + inline void clear_args() { + _num_args=0; #if CUDA_VERSION < 4000 - _offsets.clear(); + _offsets.clear(); _param_size=0; #endif } @@ -390,7 +390,7 @@ class UCL_Kernel { unsigned _num_blocks[3]; unsigned _num_args; friend class UCL_Texture; - + #if CUDA_VERSION >= 4000 unsigned _block_size[3]; void * _kernel_args[UCL_MAX_KERNEL_ARGS]; diff --git a/lib/gpu/geryon/nvd_mat.h b/lib/gpu/geryon/nvd_mat.h index 51cfe1d56f..042e2978c3 100644 --- a/lib/gpu/geryon/nvd_mat.h +++ b/lib/gpu/geryon/nvd_mat.h @@ -17,12 +17,12 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ /*! \file */ - + #ifndef NVD_MAT_H #define NVD_MAT_H @@ -52,6 +52,6 @@ namespace ucl_cudadr { #include "ucl_print.h" #undef UCL_PRINT_ALLOW -} // namespace ucl_cudadr +} // namespace ucl_cudadr #endif diff --git a/lib/gpu/geryon/nvd_memory.h b/lib/gpu/geryon/nvd_memory.h index 5f7b98ba5c..0484e33de6 100644 --- a/lib/gpu/geryon/nvd_memory.h +++ b/lib/gpu/geryon/nvd_memory.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -46,7 +46,7 @@ typedef CUdeviceptr device_ptr; // - HOST MEMORY ALLOCATION ROUTINES // -------------------------------------------------------------------------- template -inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, +inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, const enum UCL_MEMOPT kind, const enum UCL_MEMOPT kind2){ CUresult err=CUDA_SUCCESS; if (kind==UCL_NOT_PINNED) @@ -62,7 +62,7 @@ inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, } template -inline int _host_alloc(mat_type &mat, UCL_Device &dev, const size_t n, +inline int _host_alloc(mat_type &mat, UCL_Device &dev, const size_t n, const enum UCL_MEMOPT kind, const enum UCL_MEMOPT kind2){ CUresult err=CUDA_SUCCESS; if (kind==UCL_NOT_PINNED) @@ -95,7 +95,7 @@ inline int _host_resize(mat_type &mat, const size_t n) { *(mat.host_ptr())=(typename mat_type::data_type*)malloc(n); else if (mat.kind()==UCL_WRITE_ONLY) err=cuMemHostAlloc((void **)mat.host_ptr(),n,CU_MEMHOSTALLOC_WRITECOMBINED); - else + else err=cuMemAllocHost((void **)mat.host_ptr(),n); if (err!=CUDA_SUCCESS || *(mat.host_ptr())==NULL) return UCL_MEMORY_ERROR; @@ -130,30 +130,30 @@ inline int _device_alloc(mat_type &mat, copy_type &cm, const size_t rows, const size_t cols, size_t &pitch, const enum UCL_MEMOPT kind) { CUresult err; - CUDA_INT_TYPE upitch; + CUDA_INT_TYPE upitch; err=cuMemAllocPitch(&mat.cbegin(),&upitch, cols*sizeof(typename mat_type::data_type),rows,16); - pitch=static_cast(upitch); + pitch=static_cast(upitch); if (err!=CUDA_SUCCESS) return UCL_MEMORY_ERROR; mat.cq()=cm.cq(); return UCL_SUCCESS; -} +} template inline int _device_alloc(mat_type &mat, UCL_Device &d, const size_t rows, const size_t cols, size_t &pitch, const enum UCL_MEMOPT kind) { CUresult err; - unsigned upitch; + unsigned upitch; err=cuMemAllocPitch(&mat.cbegin(),&upitch, cols*sizeof(typename mat_type::data_type),rows,16); - pitch=static_cast(upitch); + pitch=static_cast(upitch); if (err!=CUDA_SUCCESS) return UCL_MEMORY_ERROR; mat.cq()=d.cq(); return UCL_SUCCESS; -} +} template inline void _device_free(mat_type &mat) { @@ -175,33 +175,33 @@ inline int _device_resize(mat_type &mat, const size_t rows, const size_t cols, size_t &pitch) { _device_free(mat); CUresult err; - CUDA_INT_TYPE upitch; + CUDA_INT_TYPE upitch; err=cuMemAllocPitch(&mat.cbegin(),&upitch, cols*sizeof(typename mat_type::data_type),rows,16); - pitch=static_cast(upitch); + pitch=static_cast(upitch); if (err!=CUDA_SUCCESS) return UCL_MEMORY_ERROR; return UCL_SUCCESS; -} +} -inline void _device_view(CUdeviceptr *ptr, CUdeviceptr &in) { +inline void _device_view(CUdeviceptr *ptr, CUdeviceptr &in) { *ptr=in; } template -inline void _device_view(CUdeviceptr *ptr, numtyp *in) { - *ptr=0; +inline void _device_view(CUdeviceptr *ptr, numtyp *in) { + *ptr=0; } -inline void _device_view(CUdeviceptr *ptr, CUdeviceptr &in, - const size_t offset, const size_t numsize) { +inline void _device_view(CUdeviceptr *ptr, CUdeviceptr &in, + const size_t offset, const size_t numsize) { *ptr=in+offset*numsize; } template inline void _device_view(CUdeviceptr *ptr, numtyp *in, - const size_t offset, const size_t numsize) { - *ptr=0; + const size_t offset, const size_t numsize) { + *ptr=0; } // -------------------------------------------------------------------------- @@ -211,13 +211,13 @@ template inline void _device_image_alloc(mat_type &mat, copy_type &cm, const size_t rows, const size_t cols) { assert(0==1); -} +} template inline void _device_image_alloc(mat_type &mat, UCL_Device &d, const size_t rows, const size_t cols) { assert(0==1); -} +} template inline void _device_image_free(mat_type &mat) { @@ -245,7 +245,7 @@ inline void _device_zero(mat_type &mat, const size_t n, command_queue &cq) { // - HELPER FUNCTIONS FOR MEMCPY ROUTINES // -------------------------------------------------------------------------- -inline void _nvd_set_2D_loc(CUDA_MEMCPY2D &ins, const size_t dpitch, +inline void _nvd_set_2D_loc(CUDA_MEMCPY2D &ins, const size_t dpitch, const size_t spitch, const size_t cols, const size_t rows) { ins.srcXInBytes=0; @@ -257,13 +257,13 @@ inline void _nvd_set_2D_loc(CUDA_MEMCPY2D &ins, const size_t dpitch, ins.WidthInBytes=cols; ins.Height=rows; } - + template struct _nvd_set_2D_mem; -template <> struct _nvd_set_2D_mem<1> +template <> struct _nvd_set_2D_mem<1> { static CUmemorytype a() { return CU_MEMORYTYPE_HOST; } }; -template <> struct _nvd_set_2D_mem<2> +template <> struct _nvd_set_2D_mem<2> { static CUmemorytype a() { return CU_MEMORYTYPE_ARRAY; } }; -template struct _nvd_set_2D_mem +template struct _nvd_set_2D_mem { static CUmemorytype a() { return CU_MEMORYTYPE_DEVICE; } }; @@ -285,7 +285,7 @@ template<> struct _ucl_memcpy<2,2> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -297,7 +297,7 @@ template<> struct _ucl_memcpy<2,2> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -322,7 +322,7 @@ template<> struct _ucl_memcpy<2,0> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -334,7 +334,7 @@ template<> struct _ucl_memcpy<2,0> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -359,7 +359,7 @@ template<> struct _ucl_memcpy<2,1> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -371,7 +371,7 @@ template<> struct _ucl_memcpy<2,1> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -396,7 +396,7 @@ template<> struct _ucl_memcpy<0,2> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -408,7 +408,7 @@ template<> struct _ucl_memcpy<0,2> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -433,7 +433,7 @@ template<> struct _ucl_memcpy<1,2> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -445,7 +445,7 @@ template<> struct _ucl_memcpy<1,2> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -470,7 +470,7 @@ template <> struct _ucl_memcpy<1,0> { CU_SAFE_CALL(cuMemcpyDtoHAsync(dst.begin(),src.cbegin(),n,cq)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -482,7 +482,7 @@ template <> struct _ucl_memcpy<1,0> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -507,7 +507,7 @@ template <> struct _ucl_memcpy<0,1> { CU_SAFE_CALL(cuMemcpyHtoDAsync(dst.cbegin(),src.begin(),n,cq)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -519,7 +519,7 @@ template <> struct _ucl_memcpy<0,1> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -542,7 +542,7 @@ template <> struct _ucl_memcpy<1,1> { CUstream &cq) { memcpy(dst.begin(),src.begin(),n); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { CUDA_MEMCPY2D ins; @@ -554,7 +554,7 @@ template <> struct _ucl_memcpy<1,1> { CU_SAFE_CALL(cuMemcpy2D(&ins)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { CUDA_MEMCPY2D ins; @@ -579,18 +579,18 @@ template struct _ucl_memcpy { CU_SAFE_CALL(cuMemcpyDtoDAsync(dst.cbegin(),src.cbegin(),n,cq)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows) { if (p1::PADDED==0 || p2::PADDED==0) { size_t src_offset=0, dst_offset=0; - for (size_t i=0; i::a(); @@ -601,12 +601,12 @@ template struct _ucl_memcpy { } } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, CUstream &cq) { if (p1::PADDED==0 || p2::PADDED==0) { size_t src_offset=0, dst_offset=0; - for (size_t i=0; i -inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, - const size_t spitch, const size_t cols, +inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, + const size_t spitch, const size_t cols, const size_t rows) { _ucl_memcpy::mc(dst,dpitch,src,spitch,cols, rows); } template -inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, - const size_t spitch, const size_t cols, +inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, + const size_t spitch, const size_t cols, const size_t rows,CUstream &cq) { _ucl_memcpy::mc(dst,dpitch,src,spitch,cols, rows,cq); } -} // namespace ucl_cudart +} // namespace ucl_cudart #endif diff --git a/lib/gpu/geryon/nvd_texture.h b/lib/gpu/geryon/nvd_texture.h index 07650263a5..965595a448 100644 --- a/lib/gpu/geryon/nvd_texture.h +++ b/lib/gpu/geryon/nvd_texture.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -28,7 +28,7 @@ #include "nvd_mat.h" namespace ucl_cudadr { - + /// Class storing a texture reference class UCL_Texture { public: @@ -38,39 +38,39 @@ class UCL_Texture { inline UCL_Texture(UCL_Program &prog, const char *texture_name) { get_texture(prog,texture_name); } /// Set the texture reference for this object - inline void get_texture(UCL_Program &prog, const char *texture_name) + inline void get_texture(UCL_Program &prog, const char *texture_name) { CU_SAFE_CALL(cuModuleGetTexRef(&_tex, prog._module, texture_name)); } /// Bind a float array where each fetch grabs a vector of length numel template - inline void bind_float(UCL_D_Vec &vec, const unsigned numel) + inline void bind_float(UCL_D_Vec &vec, const unsigned numel) { _bind_float(vec,numel); } /// Bind a float array where each fetch grabs a vector of length numel template - inline void bind_float(UCL_D_Mat &vec, const unsigned numel) + inline void bind_float(UCL_D_Mat &vec, const unsigned numel) { _bind_float(vec,numel); } /// Bind a float array where each fetch grabs a vector of length numel template - inline void bind_float(UCL_Vector &vec, const unsigned numel) + inline void bind_float(UCL_Vector &vec, const unsigned numel) { _bind_float(vec.device,numel); } /// Bind a float array where each fetch grabs a vector of length numel template - inline void bind_float(UCL_Matrix &vec, const unsigned numel) + inline void bind_float(UCL_Matrix &vec, const unsigned numel) { _bind_float(vec.device,numel); } /// Unbind the texture reference from the memory allocation inline void unbind() { } - /// Make a texture reference available to kernel - inline void allow(UCL_Kernel &kernel) { + /// Make a texture reference available to kernel + inline void allow(UCL_Kernel &kernel) { #if CUDA_VERSION < 4000 - CU_SAFE_CALL(cuParamSetTexRef(kernel._kernel, CU_PARAM_TR_DEFAULT, _tex)); + CU_SAFE_CALL(cuParamSetTexRef(kernel._kernel, CU_PARAM_TR_DEFAULT, _tex)); #endif } - + private: CUtexref _tex; friend class UCL_Kernel; @@ -80,7 +80,7 @@ class UCL_Texture { #ifdef UCL_DEBUG assert(numel!=0 && numel<5); #endif - CU_SAFE_CALL(cuTexRefSetAddress(NULL, _tex, vec.cbegin(), + CU_SAFE_CALL(cuTexRefSetAddress(NULL, _tex, vec.cbegin(), vec.numel()*vec.element_size())); if (vec.element_size()==sizeof(float)) CU_SAFE_CALL(cuTexRefSetFormat(_tex, CU_AD_FORMAT_FLOAT, numel)); diff --git a/lib/gpu/geryon/nvd_timer.h b/lib/gpu/geryon/nvd_timer.h index 4c3e993e0d..aefbaea0c3 100644 --- a/lib/gpu/geryon/nvd_timer.h +++ b/lib/gpu/geryon/nvd_timer.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ class UCL_Timer { /// Clear any data associated with timer /** \note init() must be called to reuse timer after a clear() **/ inline void clear() { - if (_initialized) { + if (_initialized) { CU_DESTRUCT_CALL(cuEventDestroy(start_event)); CU_DESTRUCT_CALL(cuEventDestroy(stop_event)); _initialized=false; @@ -63,16 +63,16 @@ class UCL_Timer { /// Start timing on command queue inline void start() { CU_SAFE_CALL(cuEventRecord(start_event,_cq)); } - + /// Stop timing on command queue inline void stop() { CU_SAFE_CALL(cuEventRecord(stop_event,_cq)); } - + /// Block until the start event has been reached on device - inline void sync_start() + inline void sync_start() { CU_SAFE_CALL(cuEventSynchronize(start_event)); } /// Block until the stop event has been reached on device - inline void sync_stop() + inline void sync_stop() { CU_SAFE_CALL(cuEventSynchronize(stop_event)); } /// Set the time elapsed to zero (not the total_time) @@ -80,29 +80,29 @@ class UCL_Timer { CU_SAFE_CALL(cuEventRecord(start_event,_cq)); CU_SAFE_CALL(cuEventRecord(stop_event,_cq)); } - + /// Set the total time to zero inline void zero_total() { _total_time=0.0; } - + /// Add time from previous start and stop to total /** Forces synchronization **/ - inline double add_to_total() + inline double add_to_total() { double t=time(); _total_time+=t; return t/1000.0; } - + /// Add a user specified time to the total (ms) inline void add_time_to_total(const double t) { _total_time+=t; } - + /// Return the time (ms) of last start to stop - Forces synchronization - inline double time() { + inline double time() { float timer; CU_SAFE_CALL(cuEventSynchronize(stop_event)); CU_SAFE_CALL( cuEventElapsedTime(&timer,start_event,stop_event) ); - return timer; + return timer; } - + /// Return the time (s) of last start to stop - Forces synchronization inline double seconds() { return time()/1000.0; } - + /// Return the total time in ms inline double total_time() { return _total_time; } diff --git a/lib/gpu/geryon/ocl_device.h b/lib/gpu/geryon/ocl_device.h index 8dadcf2efd..20656c8489 100644 --- a/lib/gpu/geryon/ocl_device.h +++ b/lib/gpu/geryon/ocl_device.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -40,13 +40,13 @@ #include "ucl_types.h" namespace ucl_opencl { - + // -------------------------------------------------------------------------- // - COMMAND QUEUE STUFF // -------------------------------------------------------------------------- -typedef cl_command_queue command_queue; +typedef cl_command_queue command_queue; typedef cl_context context_type; - + inline void ucl_sync(cl_command_queue &cq) { CL_SAFE_CALL(clFinish(cq)); } @@ -76,19 +76,19 @@ struct OCLProperties { /// Class for looking at data parallel device properties /** \note Calls to change the device outside of the class results in incorrect - * behavior + * behavior * \note There is no error checking for indexing past the number of devices **/ class UCL_Device { public: /// Collect properties for every device on the node /** \note You must set the active GPU with set() before using the device **/ inline UCL_Device(); - + inline ~UCL_Device(); /// Return the number of platforms (0 if error or no platforms) inline int num_platforms() { return _num_platforms; } - + /// Return a string with name and info of the current platform inline std::string platform_name(); @@ -104,38 +104,38 @@ class UCL_Device { * be allocated for use. clear() is called to delete any contexts and * associated data from previous calls to set(). **/ inline int set(int num); - + /// Delete any context and associated data stored from a call to set() inline void clear(); /// Get the current device number inline int device_num() { return _device; } - + /// Returns the context for the current device inline cl_context & context() { return _context; } - + /// Returns the default stream for the current device inline command_queue & cq() { return cq(_default_cq); } - + /// Returns the stream indexed by i inline command_queue & cq(const int i) { return _cq[i]; } - + /// Set the default command queue - /** \param i index of the command queue (as added by push_command_queue()) + /** \param i index of the command queue (as added by push_command_queue()) If i is 0, the command queue created with device initialization is used **/ inline void set_command_queue(const int i) { _default_cq=i; } - + /// Block until all commands in the default stream have completed inline void sync() { sync(_default_cq); } - + /// Block until all commands in the specified stream have completed inline void sync(const int i) { ucl_sync(cq(i)); } - + /// Get the number of command queues currently available on device - inline int num_queues() + inline int num_queues() { return _cq.size(); } - + /// Add a command queue for device computations (with profiling enabled) inline void push_command_queue() { cl_int errorv; @@ -143,7 +143,7 @@ class UCL_Device { _cq.back()=clCreateCommandQueue(_context,_cl_device, CL_QUEUE_PROFILING_ENABLE,&errorv); if (errorv!=CL_SUCCESS) { - std::cerr << "Could not create command queue on device: " << name() + std::cerr << "Could not create command queue on device: " << name() << std::endl; UCL_GERYON_EXIT; } @@ -160,76 +160,76 @@ class UCL_Device { /// Get the current OpenCL device name inline std::string name() { return name(_device); } /// Get the OpenCL device name - inline std::string name(const int i) + inline std::string name(const int i) { return std::string(_properties[i].name); } /// Get a string telling the type of the current device inline std::string device_type_name() { return device_type_name(_device); } /// Get a string telling the type of the device inline std::string device_type_name(const int i); - + /// Get current device type (UCL_CPU, UCL_GPU, UCL_ACCELERATOR, UCL_DEFAULT) inline int device_type() { return device_type(_device); } /// Get device type (UCL_CPU, UCL_GPU, UCL_ACCELERATOR, UCL_DEFAULT) inline int device_type(const int i); - + /// Returns true if host memory is efficiently addressable from device inline bool shared_memory() { return shared_memory(_device); } /// Returns true if host memory is efficiently addressable from device - inline bool shared_memory(const int i) + inline bool shared_memory(const int i) { return _shared_mem_device(_properties[i].device_type); } - + /// Returns true if double precision is support for the current device inline bool double_precision() { return double_precision(_device); } /// Returns true if double precision is support for the device - inline bool double_precision(const int i) + inline bool double_precision(const int i) {return _properties[i].double_precision;} - + /// Get the number of compute units on the current device inline unsigned cus() { return cus(_device); } /// Get the number of compute units - inline unsigned cus(const int i) + inline unsigned cus(const int i) { return _properties[i].compute_units; } /// Get the gigabytes of global memory in the current device inline double gigabytes() { return gigabytes(_device); } /// Get the gigabytes of global memory - inline double gigabytes(const int i) + inline double gigabytes(const int i) { return static_cast(_properties[i].global_mem)/1073741824; } /// Get the bytes of global memory in the current device inline size_t bytes() { return bytes(_device); } /// Get the bytes of global memory inline size_t bytes(const int i) { return _properties[i].global_mem; } - + /// Return the GPGPU revision number for current device //inline double revision() { return revision(_device); } /// Return the GPGPU revision number - //inline double revision(const int i) + //inline double revision(const int i) // { return //static_cast(_properties[i].minor)/10+_properties[i].major;} - + /// Clock rate in GHz for current device inline double clock_rate() { return clock_rate(_device); } /// Clock rate in GHz inline double clock_rate(const int i) { return _properties[i].clock*1e-3;} - + /// Return the address alignment in bytes inline int alignment() { return alignment(_device); } /// Return the address alignment in bytes inline int alignment(const int i) { return _properties[i].alignment; } - + /// Return the timer resolution inline size_t timer_resolution() { return timer_resolution(_device); } /// Return the timer resolution - inline size_t timer_resolution(const int i) + inline size_t timer_resolution(const int i) { return _properties[i].timer_resolution; } - + /// Get the maximum number of threads per block inline size_t group_size() { return group_size(_device); } /// Get the maximum number of threads per block - inline size_t group_size(const int i) + inline size_t group_size(const int i) { return _properties[i].work_group_size; } - + /// Return the maximum memory pitch in bytes for current device inline size_t max_pitch() { return max_pitch(_device); } /// Return the maximum memory pitch in bytes @@ -254,7 +254,7 @@ class UCL_Device { { return fission_by_counts(_device); } /// True if splitting device into subdevices by specified counts supported inline bool fission_by_counts(const int i) - { return _properties[i].partition_counts; } + { return _properties[i].partition_counts; } /// True if splitting device into subdevices by affinity domains supported inline bool fission_by_affinity() { return fission_by_affinity(_device); } @@ -271,10 +271,10 @@ class UCL_Device { /// List all devices along with all properties inline void print_all(std::ostream &out); - + /// Return the OpenCL type for the device inline cl_device_id & cl_device() { return _cl_device; } - + private: int _num_platforms; // Number of platforms int _platform; // UCL_Device ID for current platform @@ -287,7 +287,7 @@ class UCL_Device { std::vector _cl_devices; // OpenCL IDs for all devices int _num_devices; // Number of devices std::vector _properties; // Properties for each device - + inline void add_properties(cl_device_id); inline int create_context(); int _default_cq; @@ -300,7 +300,7 @@ UCL_Device::UCL_Device() { // --- Get Number of Platforms cl_uint nplatforms; cl_int errorv=clGetPlatformIDs(20,_cl_platforms,&nplatforms); - + if (errorv!=CL_SUCCESS) { _num_platforms=0; return; @@ -328,18 +328,18 @@ void UCL_Device::clear() { int UCL_Device::set_platform(int pid) { clear(); cl_int errorv; - + _cl_device=0; _device=-1; _num_devices=0; _default_cq=0; - + #ifdef UCL_DEBUG assert(pid namespace ucl_opencl { - + class UCL_Texture; template class UCL_D_Vec; template class UCL_D_Mat; @@ -41,10 +41,10 @@ class UCL_Program { public: inline UCL_Program() : _init_done(false) {} inline UCL_Program(UCL_Device &device) : _init_done(false) { init(device); } - inline UCL_Program(UCL_Device &device, const void *program, - const char *flags="", std::string *log=NULL) : - _init_done(false) { - init(device); + inline UCL_Program(UCL_Device &device, const void *program, + const char *flags="", std::string *log=NULL) : + _init_done(false) { + init(device); load_string(program,flags,log); } @@ -56,7 +56,7 @@ class UCL_Program { _device=device.cl_device(); _context=device.context(); _cq=device.cq(); - CL_SAFE_CALL(clRetainContext(_context)); + CL_SAFE_CALL(clRetainContext(_context)); CL_SAFE_CALL(clRetainCommandQueue(_cq)); _init_done=true; } @@ -65,7 +65,7 @@ class UCL_Program { /** \note Must call init() after each clear **/ inline void clear() { if (_init_done) { - CL_DESTRUCT_CALL(clReleaseProgram(_program)); + CL_DESTRUCT_CALL(clReleaseProgram(_program)); CL_DESTRUCT_CALL(clReleaseContext(_context)); CL_DESTRUCT_CALL(clReleaseCommandQueue(_cq)); _init_done=false; @@ -77,20 +77,20 @@ class UCL_Program { std::string *log=NULL) { std::ifstream in(filename); if (!in || in.is_open()==false) { - #ifndef UCL_NO_EXIT - std::cerr << "UCL Error: Could not open kernel file: " + #ifndef UCL_NO_EXIT + std::cerr << "UCL Error: Could not open kernel file: " << filename << std::endl; UCL_GERYON_EXIT; #endif return UCL_FILE_NOT_FOUND; } - + std::string program((std::istreambuf_iterator(in)), std::istreambuf_iterator()); in.close(); return load_string(program.c_str(),flags,log); } - + /// Load a program from a string and compile with flags inline int load_string(const void *program, const char *flags="", std::string *log=NULL) { @@ -103,23 +103,23 @@ class UCL_Program { CL_CHECK_ERR(error_flag); cl_build_status build_status; CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device, - CL_PROGRAM_BUILD_STATUS, + CL_PROGRAM_BUILD_STATUS, sizeof(cl_build_status),&build_status, NULL)); - + if (build_status != CL_SUCCESS || log!=NULL) { size_t ms; - CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,0, + CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,0, NULL, &ms)); - char build_log[ms]; + char build_log[ms]; CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,ms, build_log, NULL)); - + if (log!=NULL) *log=std::string(build_log); - + if (build_status != CL_SUCCESS) { - #ifndef UCL_NO_EXIT + #ifndef UCL_NO_EXIT std::cerr << std::endl << "----------------------------------------------------------\n" << " UCL Error: Error compiling OpenCL Program (" @@ -130,10 +130,10 @@ class UCL_Program { return UCL_COMPILE_ERROR; } } - + return UCL_SUCCESS; } - + /// Return the default command queue/stream associated with this data inline command_queue & cq() { return _cq; } /// Change the default command queue associated with matrix @@ -143,7 +143,7 @@ class UCL_Program { private: bool _init_done; cl_program _program; - cl_device_id _device; + cl_device_id _device; cl_context _context; cl_command_queue _cq; }; @@ -153,7 +153,7 @@ class UCL_Kernel { public: UCL_Kernel() : _dimensions(1), _function_set(false), _num_args(0) { _block_size[0]=0; _num_blocks[0]=0; } - + inline UCL_Kernel(UCL_Program &program, const char *function) : _dimensions(1), _function_set(false), _num_args(0) { _block_size[0]=0; _num_blocks[0]=0; set_function(program,function); } @@ -178,48 +178,48 @@ class UCL_Kernel { /** If not a device pointer, this must be repeated each time the argument * changes **/ template - inline void set_arg(const cl_uint index, const dtype * const arg) { - CL_SAFE_CALL(clSetKernelArg(_kernel,index,sizeof(dtype),arg)); + inline void set_arg(const cl_uint index, const dtype * const arg) { + CL_SAFE_CALL(clSetKernelArg(_kernel,index,sizeof(dtype),arg)); if (index>_num_args) { _num_args=index; #ifdef UCL_DEBUG if (_num_args>_kernel_info_nargs) { - std::cerr << "TOO MANY ARGUMENTS TO OPENCL FUNCTION: " + std::cerr << "TOO MANY ARGUMENTS TO OPENCL FUNCTION: " << _kernel_info_name << std::endl; assert(0==1); } #endif } } - + /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_D_Vec * const arg) + inline void set_arg(const UCL_D_Vec * const arg) { set_arg(&arg->begin()); } /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_D_Mat * const arg) + inline void set_arg(const UCL_D_Mat * const arg) { set_arg(&arg->begin()); } /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_Vector * const arg) + inline void set_arg(const UCL_Vector * const arg) { set_arg(&arg->device.begin()); } /// Set a geryon container as a kernel argument. template - inline void set_arg(const UCL_Matrix * const arg) + inline void set_arg(const UCL_Matrix * const arg) { set_arg(&arg->device.begin()); } /// Add a kernel argument. template inline void add_arg(const dtype * const arg) { - CL_SAFE_CALL(clSetKernelArg(_kernel,_num_args,sizeof(dtype),arg)); - _num_args++; + CL_SAFE_CALL(clSetKernelArg(_kernel,_num_args,sizeof(dtype),arg)); + _num_args++; #ifdef UCL_DEBUG if (_num_args>_kernel_info_nargs) { - std::cerr << "TOO MANY ARGUMENTS TO OPENCL FUNCTION: " + std::cerr << "TOO MANY ARGUMENTS TO OPENCL FUNCTION: " << _kernel_info_name << std::endl; assert(0==1); } @@ -228,31 +228,31 @@ class UCL_Kernel { /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_D_Vec * const arg) + inline void add_arg(const UCL_D_Vec * const arg) { add_arg(&arg->begin()); } /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_D_Mat * const arg) + inline void add_arg(const UCL_D_Mat * const arg) { add_arg(&arg->begin()); } /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_Vector * const arg) + inline void add_arg(const UCL_Vector * const arg) { add_arg(&arg->device.begin()); } /// Add a geryon container as a kernel argument. template - inline void add_arg(const UCL_Matrix * const arg) + inline void add_arg(const UCL_Matrix * const arg) { add_arg(&arg->device.begin()); } /// Set the number of thread blocks and the number of threads in each block /** \note This should be called before any arguments have been added \note The default command queue is used for the kernel execution **/ - inline void set_size(const size_t num_blocks, const size_t block_size) { - _dimensions=1; - _num_blocks[0]=num_blocks*block_size; - _block_size[0]=block_size; + inline void set_size(const size_t num_blocks, const size_t block_size) { + _dimensions=1; + _num_blocks[0]=num_blocks*block_size; + _block_size[0]=block_size; } /// Set the number of thread blocks and the number of threads in each block @@ -266,36 +266,36 @@ class UCL_Kernel { /** \note This should be called before any arguments have been added \note The default command queue is used for the kernel execution **/ inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, - const size_t block_size_x, const size_t block_size_y) { - _dimensions=2; - _num_blocks[0]=num_blocks_x*block_size_x; - _block_size[0]=block_size_x; - _num_blocks[1]=num_blocks_y*block_size_y; - _block_size[1]=block_size_y; + const size_t block_size_x, const size_t block_size_y) { + _dimensions=2; + _num_blocks[0]=num_blocks_x*block_size_x; + _block_size[0]=block_size_x; + _num_blocks[1]=num_blocks_y*block_size_y; + _block_size[1]=block_size_y; } - + /// Set the number of thread blocks and the number of threads in each block /** \note This should be called before any arguments have been added \note The default command queue for the kernel is changed to cq **/ inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, const size_t block_size_x, const size_t block_size_y, - command_queue &cq) + command_queue &cq) {_cq=cq; set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y);} /// Set the number of thread blocks and the number of threads in each block /** \note This should be called before any arguments have been added \note The default command queue is used for the kernel execution **/ inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, - const size_t block_size_x, + const size_t block_size_x, const size_t block_size_y, const size_t block_size_z) { - _dimensions=3; + _dimensions=3; const size_t num_blocks_z=1; - _num_blocks[0]=num_blocks_x*block_size_x; - _block_size[0]=block_size_x; - _num_blocks[1]=num_blocks_y*block_size_y; - _block_size[1]=block_size_y; - _num_blocks[2]=num_blocks_z*block_size_z; - _block_size[2]=block_size_z; + _num_blocks[0]=num_blocks_x*block_size_x; + _block_size[0]=block_size_x; + _num_blocks[1]=num_blocks_y*block_size_y; + _block_size[1]=block_size_y; + _num_blocks[2]=num_blocks_z*block_size_z; + _block_size[2]=block_size_z; } /// Set the number of thread blocks and the number of threads in each block @@ -305,13 +305,13 @@ class UCL_Kernel { const size_t block_size_x, const size_t block_size_y, const size_t block_size_z, command_queue &cq) { _cq=cq; - set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y, + set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y, block_size_z); } - + /// Run the kernel in the default command queue inline void run(); - + /// Clear any arguments associated with the kernel inline void clear_args() { _num_args=0; } @@ -320,7 +320,7 @@ class UCL_Kernel { /// Change the default command queue associated with matrix inline void cq(command_queue &cq_in) { _cq=cq_in; } #include "ucl_arg_kludge.h" - + private: cl_kernel _kernel; cl_program _program; @@ -328,7 +328,7 @@ class UCL_Kernel { size_t _block_size[3]; size_t _num_blocks[3]; bool _function_set; - + cl_command_queue _cq; // The default command queue for this kernel unsigned _num_args; @@ -348,7 +348,7 @@ inline int UCL_Kernel::set_function(UCL_Program &program, const char *function) CL_SAFE_CALL(clRetainProgram(_program)); cl_int error_flag; _kernel=clCreateKernel(program._program,function,&error_flag); - + if (error_flag!=CL_SUCCESS) { #ifndef UCL_NO_EXIT std::cerr << "UCL Error: Could not find function: " << function @@ -357,7 +357,7 @@ inline int UCL_Kernel::set_function(UCL_Program &program, const char *function) #endif return UCL_FUNCTION_NOT_FOUND; } - + #ifdef UCL_DEBUG _kernel_info_name=function; cl_uint nargs; @@ -375,7 +375,7 @@ inline int UCL_Kernel::set_function(UCL_Program &program, const char *function) #endif #endif - return UCL_SUCCESS; + return UCL_SUCCESS; } void UCL_Kernel::run() { diff --git a/lib/gpu/geryon/ocl_mat.h b/lib/gpu/geryon/ocl_mat.h index 2909d72a72..3135594dc3 100644 --- a/lib/gpu/geryon/ocl_mat.h +++ b/lib/gpu/geryon/ocl_mat.h @@ -17,12 +17,12 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ /*! \file */ - + #ifndef OCL_MAT_H #define OCL_MAT_H @@ -54,6 +54,6 @@ namespace ucl_opencl { #include "ucl_print.h" #undef UCL_PRINT_ALLOW -} // namespace ucl_cudart +} // namespace ucl_cudart #endif diff --git a/lib/gpu/geryon/ocl_memory.h b/lib/gpu/geryon/ocl_memory.h index 7aed0a1a8c..28bb88941f 100644 --- a/lib/gpu/geryon/ocl_memory.h +++ b/lib/gpu/geryon/ocl_memory.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -36,10 +36,10 @@ namespace ucl_opencl { // -------------------------------------------------------------------------- struct ocl_kernel_dim { size_t x,y,z; - ocl_kernel_dim(size_t _x = 1, size_t _y = 1, size_t _z = 1) : + ocl_kernel_dim(size_t _x = 1, size_t _y = 1, size_t _z = 1) : x(_x), y(_y), z(_z) {} operator size_t * () { return (size_t *)this; } - operator const size_t * () const { return (const size_t *)this; } + operator const size_t * () const { return (const size_t *)this; } }; typedef ocl_kernel_dim ucl_kernel_dim; @@ -53,13 +53,13 @@ typedef cl_mem device_ptr; // -------------------------------------------------------------------------- template -inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, +inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, const enum UCL_MEMOPT kind, const enum UCL_MEMOPT kind2){ cl_int error_flag; cl_context context; CL_SAFE_CALL(clGetMemObjectInfo(cm.cbegin(),CL_MEM_CONTEXT,sizeof(context), &context,NULL)); - + cl_mem_flags buffer_perm; cl_map_flags map_perm; if (kind2==UCL_NOT_SPECIFIED) { @@ -88,7 +88,7 @@ inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, buffer_perm=CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR; else buffer_perm=CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR; - + if (kind==UCL_READ_ONLY) { #ifdef CL_VERSION_1_2 buffer_perm=buffer_perm | CL_MEM_HOST_READ_ONLY; @@ -102,9 +102,9 @@ inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, } else map_perm=CL_MAP_READ | CL_MAP_WRITE; } - + mat.cbegin()=clCreateBuffer(context,buffer_perm,n,NULL,&error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; *mat.host_ptr() = (typename mat_type::data_type*) clEnqueueMapBuffer(cm.cq(),mat.cbegin(),CL_TRUE, @@ -125,7 +125,7 @@ inline int _host_view(mat_type &mat, copy_type &cm, const size_t n) { CL_SAFE_CALL(clGetMemObjectInfo(cm.cbegin(),CL_MEM_FLAGS,sizeof(orig_flags), &orig_flags,NULL)); orig_flags=orig_flags & ~CL_MEM_ALLOC_HOST_PTR; - + mat.cbegin()=clCreateBuffer(context, CL_MEM_USE_HOST_PTR | orig_flags, n, *mat.host_ptr(), &error_flag); @@ -135,7 +135,7 @@ inline int _host_view(mat_type &mat, copy_type &cm, const size_t n) { } template -inline int _host_alloc(mat_type &mat, UCL_Device &dev, const size_t n, +inline int _host_alloc(mat_type &mat, UCL_Device &dev, const size_t n, const enum UCL_MEMOPT kind, const enum UCL_MEMOPT kind2){ cl_mem_flags buffer_perm; cl_map_flags map_perm; @@ -160,7 +160,7 @@ inline int _host_alloc(mat_type &mat, UCL_Device &dev, const size_t n, cl_int error_flag; mat.cbegin()=clCreateBuffer(dev.context(),buffer_perm,n,NULL,&error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; *mat.host_ptr() = (typename mat_type::data_type*) @@ -210,7 +210,7 @@ inline int _host_resize(mat_type &mat, const size_t n) { map_perm=CL_MAP_READ | CL_MAP_WRITE; mat.cbegin()=clCreateBuffer(context,buffer_perm,n,NULL,&error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; *mat.host_ptr() = (typename mat_type::data_type*) clEnqueueMapBuffer(mat.cq(),mat.cbegin(),CL_TRUE, @@ -248,7 +248,7 @@ inline int _device_alloc(mat_type &mat, copy_type &cm, const size_t n, else assert(0==1); mat.cbegin()=clCreateBuffer(context,flag,n,NULL,&error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; mat.cq()=cm.cq(); CL_SAFE_CALL(clRetainCommandQueue(mat.cq())); @@ -278,7 +278,7 @@ inline int _device_alloc(mat_type &mat, UCL_Device &dev, const size_t n, assert(0==1); mat.cbegin()=clCreateBuffer(dev.context(),flag,n,NULL, &error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; mat.cq()=dev.cq(); CL_SAFE_CALL(clRetainCommandQueue(mat.cq())); @@ -304,7 +304,7 @@ inline int _device_alloc(mat_type &mat, UCL_Device &dev, const size_t rows, if (dev.device_type()!=UCL_CPU && cols%256!=0) padded_cols+=256-cols%256; pitch=padded_cols*sizeof(typename mat_type::data_type); - return _device_alloc(mat,dev,pitch*rows,kind); + return _device_alloc(mat,dev,pitch*rows,kind); } template @@ -342,7 +342,7 @@ inline int _device_resize(mat_type &mat, const size_t n) { else assert(0==1); mat.cbegin()=clCreateBuffer(context,flag,n,NULL,&error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; return UCL_SUCCESS; } @@ -380,7 +380,7 @@ inline int _device_resize(mat_type &mat, const size_t rows, else assert(0==1); mat.cbegin()=clCreateBuffer(context,flag,pitch*rows,NULL,&error_flag); - if (error_flag != CL_SUCCESS) + if (error_flag != CL_SUCCESS) return UCL_MEMORY_ERROR; return UCL_SUCCESS; } @@ -396,21 +396,21 @@ inline void _host_zero(void *ptr, const size_t n) { inline void _ocl_build(cl_program &program, cl_device_id &device, const char* options = "") { clBuildProgram(program,1,&device,options,NULL,NULL); - + cl_build_status build_status; - CL_SAFE_CALL(clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_STATUS, + CL_SAFE_CALL(clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_STATUS, sizeof(cl_build_status),&build_status, NULL)); if (build_status == CL_SUCCESS) return; - + size_t ms; - CL_SAFE_CALL(clGetProgramBuildInfo(program, device,CL_PROGRAM_BUILD_LOG, 0, + CL_SAFE_CALL(clGetProgramBuildInfo(program, device,CL_PROGRAM_BUILD_LOG, 0, NULL, &ms)); - char build_log[ms]; + char build_log[ms]; CL_SAFE_CALL(clGetProgramBuildInfo(program,device,CL_PROGRAM_BUILD_LOG,ms, build_log, NULL)); - + std::cerr << std::endl << "----------------------------------------------------------\n" << " Error compiling OpenCL Program...\n" @@ -423,13 +423,13 @@ inline void _ocl_kernel_from_source(cl_context &context, cl_device_id &device, cl_kernel &kernel, const char *function, const char *options="") { cl_int error_flag; - + cl_program program=clCreateProgramWithSource(context,lines,source, NULL,&error_flag); - CL_CHECK_ERR(error_flag); + CL_CHECK_ERR(error_flag); _ocl_build(program,device,options); kernel=clCreateKernel(program,function,&error_flag); - CL_CHECK_ERR(error_flag); + CL_CHECK_ERR(error_flag); } template @@ -452,17 +452,17 @@ inline void _device_zero(mat_type &mat, const size_t n, command_queue &cq) { cl_device_id device; CL_SAFE_CALL(clGetContextInfo(context,CL_CONTEXT_DEVICES, sizeof(cl_device_id),&device,NULL)); - + const char * szero[3]={ "#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n", "__kernel void _device_zero(__global NUMTYP *a, const int offset)", " { int gid=get_global_id(0)+offset; a[gid]=(NUMTYP)0; }" }; - + cl_kernel kzero; _ocl_kernel_from_source(context,device,szero,3,kzero,"_device_zero", _UCL_DATA_ID::numtyp_flag()); - + cl_int offset=mat.offset(); CL_SAFE_CALL(clSetKernelArg(kzero,0,sizeof(cl_mem),(void *)&mat.begin())); CL_SAFE_CALL(clSetKernelArg(kzero,1,sizeof(cl_int),(void *)&offset)); @@ -486,7 +486,7 @@ template<> struct _ucl_memcpy<2,2> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, cl_command_queue &cq, const cl_bool block, @@ -504,7 +504,7 @@ template<> struct _ucl_memcpy<2,0> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, cl_command_queue &cq, const cl_bool block, @@ -522,7 +522,7 @@ template<> struct _ucl_memcpy<2,1> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, cl_command_queue &cq, const cl_bool block, @@ -540,7 +540,7 @@ template<> struct _ucl_memcpy<0,2> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, cl_command_queue &cq, const cl_bool block, @@ -558,7 +558,7 @@ template<> struct _ucl_memcpy<1,2> { assert(0==1); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, cl_command_queue &cq, const cl_bool block, @@ -587,9 +587,9 @@ template <> struct _ucl_memcpy<1,0> { dst.begin(),0,NULL,NULL)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, + const size_t rows, cl_command_queue &cq, const cl_bool block, size_t dst_offset, size_t src_offset) { if (src.cbegin()==dst.cbegin()) { @@ -602,20 +602,20 @@ template <> struct _ucl_memcpy<1,0> { #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 2NS\n"; #endif - if (spitch==dpitch && dst.cols()==src.cols() && + if (spitch==dpitch && dst.cols()==src.cols() && src.cols()==cols/src.element_size()) CL_SAFE_CALL(clEnqueueReadBuffer(cq,src.cbegin(),block,src_offset, spitch*rows, (char *)dst.begin()+dst_offset,0,NULL, NULL)); else - for (size_t i=0; i struct _ucl_memcpy<0,1> { #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 3S\n"; #endif - return; + return; } #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 3NS\n"; @@ -639,9 +639,9 @@ template <> struct _ucl_memcpy<0,1> { src.begin(),0,NULL,NULL)); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, - const size_t rows, cl_command_queue &cq, + const size_t rows, cl_command_queue &cq, const cl_bool block, size_t dst_offset, size_t src_offset) { if (src.cbegin()==dst.cbegin()) { @@ -649,12 +649,12 @@ template <> struct _ucl_memcpy<0,1> { #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 4S\n"; #endif - return; + return; } #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 4NS\n"; #endif - if (spitch==dpitch && dst.cols()==src.cols() && + if (spitch==dpitch && dst.cols()==src.cols() && src.cols()==cols/src.element_size()) CL_SAFE_CALL(clEnqueueWriteBuffer(cq,dst.cbegin(),block,dst_offset, spitch*rows, @@ -667,7 +667,7 @@ template <> struct _ucl_memcpy<0,1> { NULL)); src_offset+=spitch; dst_offset+=dpitch; - } + } } }; @@ -687,33 +687,33 @@ template struct _ucl_memcpy { #ifdef UCL_DBG_MEM_TRACE else std::cerr << "UCL_COPY 6S\n"; #endif - + if (block==CL_TRUE) ucl_sync(cq); } template - static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, + static inline void mc(p1 &dst, const size_t dpitch, const p2 &src, const size_t spitch, const size_t cols, const size_t rows, cl_command_queue &cq, const cl_bool block, size_t dst_offset, size_t src_offset) { - if (src.cbegin()!=dst.cbegin() || src_offset!=dst_offset) { + if (src.cbegin()!=dst.cbegin() || src_offset!=dst_offset) { #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 7NS\n"; #endif - if (spitch==dpitch && dst.cols()==src.cols() && + if (spitch==dpitch && dst.cols()==src.cols() && src.cols()==cols/src.element_size()) CL_SAFE_CALL(clEnqueueCopyBuffer(cq,src.cbegin(),dst.cbegin(),src_offset, dst_offset,spitch*rows,0,NULL,NULL)); - + else - for (size_t i=0; i -inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, - const size_t spitch, const size_t cols, +inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, + const size_t spitch, const size_t cols, const size_t rows) { _ucl_memcpy::mc(dst,dpitch,src,spitch,cols, rows,dst.cq(),CL_TRUE, @@ -745,15 +745,15 @@ inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, } template -inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, - const size_t spitch, const size_t cols, +inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, + const size_t spitch, const size_t cols, const size_t rows,cl_command_queue &cq) { _ucl_memcpy::mc(dst,dpitch,src,spitch,cols, rows,cq,CL_FALSE, dst.byteoff(),src.byteoff()); } -} // namespace ucl_cudart +} // namespace ucl_cudart #endif diff --git a/lib/gpu/geryon/ocl_texture.h b/lib/gpu/geryon/ocl_texture.h index 8e72c51730..0e60045f55 100644 --- a/lib/gpu/geryon/ocl_texture.h +++ b/lib/gpu/geryon/ocl_texture.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -28,7 +28,7 @@ #include "ocl_mat.h" namespace ucl_opencl { - + /// Class storing a texture reference class UCL_Texture { public: @@ -46,9 +46,9 @@ class UCL_Texture { /// Unbind the texture reference from the memory allocation inline void unbind() { } - /// Make a texture reference available to kernel + /// Make a texture reference available to kernel inline void allow(UCL_Kernel &kernel) { } - + private: friend class UCL_Kernel; }; diff --git a/lib/gpu/geryon/ocl_timer.h b/lib/gpu/geryon/ocl_timer.h index 627d19d66f..66b79dcab1 100644 --- a/lib/gpu/geryon/ocl_timer.h +++ b/lib/gpu/geryon/ocl_timer.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -67,33 +67,33 @@ class UCL_Timer { clRetainCommandQueue(_cq); _initialized=true; } - + /// Start timing on default command queue inline void start() { UCL_OCL_MARKER(_cq,&start_event); } - + /// Stop timing on default command queue inline void stop() { UCL_OCL_MARKER(_cq,&stop_event); } - + /// Block until the start event has been reached on device - inline void sync_start() + inline void sync_start() { CL_SAFE_CALL(clWaitForEvents(1,&start_event)); } /// Block until the stop event has been reached on device - inline void sync_stop() + inline void sync_stop() { CL_SAFE_CALL(clWaitForEvents(1,&stop_event)); } /// Set the time elapsed to zero (not the total_time) - inline void zero() - { UCL_OCL_MARKER(_cq,&start_event); UCL_OCL_MARKER(_cq,&stop_event); } - + inline void zero() + { UCL_OCL_MARKER(_cq,&start_event); UCL_OCL_MARKER(_cq,&stop_event); } + /// Set the total time to zero inline void zero_total() { _total_time=0.0; } - + /// Add time from previous start and stop to total /** Forces synchronization **/ - inline double add_to_total() + inline double add_to_total() { double t=time(); _total_time+=t; return t/1000.0; } - + /// Add a user specified time to the total (ms) inline void add_time_to_total(const double t) { _total_time+=t; } @@ -107,12 +107,12 @@ class UCL_Timer { CL_SAFE_CALL(clGetEventProfilingInfo(start_event, CL_PROFILING_COMMAND_END, sizeof(cl_ulong), &tstart, NULL)); - return (tend-tstart)*t_factor; + return (tend-tstart)*t_factor; } - + /// Return the time (s) of last start to stop - Forces synchronization inline double seconds() { return time()/1000.0; } - + /// Return the total time in ms inline double total_time() { return _total_time; } diff --git a/lib/gpu/geryon/ucl_arg_kludge.h b/lib/gpu/geryon/ucl_arg_kludge.h index 646aa4d68f..eea913863d 100644 --- a/lib/gpu/geryon/ucl_arg_kludge.h +++ b/lib/gpu/geryon/ucl_arg_kludge.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -38,47 +38,47 @@ template inline void add_args(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5) { - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); } template inline void add_args(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6) { - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); } template inline void add_args(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7) { - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); } template inline void add_args(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7, t8 *a8) { - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); } template inline void add_args(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7, t8 *a8, t9 *a9) { - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); } template inline void add_args(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10) { - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); } template inline void run(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); run(); } @@ -434,8 +434,8 @@ inline void run(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); run(); } @@ -444,8 +444,8 @@ inline void run(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); run(); } @@ -454,8 +454,8 @@ inline void run(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7, t8 *a8) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); run(); } @@ -464,8 +464,8 @@ inline void run(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7, t8 *a8, t9 *a9) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); run(); } @@ -474,8 +474,8 @@ inline void run(t1 *a1, t2 *a2, t3 *a3, t4 *a4, t5 *a5, t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); run(); } @@ -486,9 +486,9 @@ t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10, t11 *a11) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); run(); } @@ -499,8 +499,8 @@ t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10, t11 *a11, t12 *a12) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); add_arg(a11); add_arg(a12); run(); } @@ -512,9 +512,9 @@ t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10, t11 *a11, t12 *a12, t13 *a13) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); run(); } @@ -525,9 +525,9 @@ t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10, t11 *a11, t12 *a12, t13 *a13, t14 *a14) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); run(); } @@ -538,9 +538,9 @@ t6 *a6, t7 *a7, t8 *a8, t9 *a9, t10 *a10, t11 *a11, t12 *a12, t13 *a13, t14 *a14, t15 *a15) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); run(); } @@ -553,10 +553,10 @@ t11 *a11, t12 *a12, t13 *a13, t14 *a14, t15 *a15, t16 *a16) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); run(); } @@ -569,10 +569,10 @@ t11 *a11, t12 *a12, t13 *a13, t14 *a14, t15 *a15, t16 *a16, t17 *a17) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); run(); } @@ -585,10 +585,10 @@ t11 *a11, t12 *a12, t13 *a13, t14 *a14, t15 *a15, t16 *a16, t17 *a17, t18 *a18) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); run(); } @@ -601,10 +601,10 @@ t11 *a11, t12 *a12, t13 *a13, t14 *a14, t15 *a15, t16 *a16, t17 *a17, t18 *a18, t19 *a19) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); run(); } @@ -617,10 +617,10 @@ t11 *a11, t12 *a12, t13 *a13, t14 *a14, t15 *a15, t16 *a16, t17 *a17, t18 *a18, t19 *a19, t20 *a20) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); run(); } @@ -635,10 +635,10 @@ t16 *a16, t17 *a17, t18 *a18, t19 *a19, t20 *a20, t21 *a21) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); add_arg(a21); run(); } @@ -654,10 +654,10 @@ t16 *a16, t17 *a17, t18 *a18, t19 *a19, t20 *a20, t21 *a21, t22 *a22) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); add_arg(a21); add_arg(a22); run(); } @@ -673,10 +673,10 @@ t16 *a16, t17 *a17, t18 *a18, t19 *a19, t20 *a20, t21 *a21, t22 *a22, t23 *a23) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); add_arg(a21); add_arg(a22); add_arg(a23); run(); } @@ -692,10 +692,10 @@ t16 *a16, t17 *a17, t18 *a18, t19 *a19, t20 *a20, t21 *a21, t22 *a22, t23 *a23, t24 *a24) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); run(); } @@ -711,11 +711,11 @@ t16 *a16, t17 *a17, t18 *a18, t19 *a19, t20 *a20, t21 *a21, t22 *a22, t23 *a23, t24 *a24, t25 *a25) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); - add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); run(); } @@ -732,11 +732,11 @@ t21 *a21, t22 *a22, t23 *a23, t24 *a24, t25 *a25, t26 *a26) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); - add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); add_arg(a26); run(); } @@ -754,11 +754,11 @@ t21 *a21, t22 *a22, t23 *a23, t24 *a24, t25 *a25, t26 *a26, t27 *a27) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); - add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); add_arg(a26); add_arg(a27); run(); } @@ -776,12 +776,12 @@ t21 *a21, t22 *a22, t23 *a23, t24 *a24, t25 *a25, t26 *a26, t27 *a27, t28 *a28) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); - add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); - add_arg(a26); add_arg(a27); add_arg(a28); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); + add_arg(a26); add_arg(a27); add_arg(a28); run(); } @@ -798,11 +798,11 @@ t21 *a21, t22 *a22, t23 *a23, t24 *a24, t25 *a25, t26 *a26, t27 *a27, t28 *a28, t29 *a29) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); - add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); add_arg(a26); add_arg(a27); add_arg(a28); add_arg(a29); run(); } @@ -820,11 +820,11 @@ t21 *a21, t22 *a22, t23 *a23, t24 *a24, t25 *a25, t26 *a26, t27 *a27, t28 *a28, t29 *a29, t30 *a30) { clear_args(); - add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); - add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); - add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); - add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); - add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); - add_arg(a26); add_arg(a27); add_arg(a28); add_arg(a29); add_arg(a30); + add_arg(a1); add_arg(a2); add_arg(a3); add_arg(a4); add_arg(a5); + add_arg(a6); add_arg(a7); add_arg(a8); add_arg(a9); add_arg(a10); + add_arg(a11); add_arg(a12); add_arg(a13); add_arg(a14); add_arg(a15); + add_arg(a16); add_arg(a17); add_arg(a18); add_arg(a19); add_arg(a20); + add_arg(a21); add_arg(a22); add_arg(a23); add_arg(a24); add_arg(a25); + add_arg(a26); add_arg(a27); add_arg(a28); add_arg(a29); add_arg(a30); run(); } diff --git a/lib/gpu/geryon/ucl_basemat.h b/lib/gpu/geryon/ucl_basemat.h index 4edf83e057..1ded9f043b 100644 --- a/lib/gpu/geryon/ucl_basemat.h +++ b/lib/gpu/geryon/ucl_basemat.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -52,10 +52,10 @@ /// Base class for vector/matrix containers /** All containers are associated with a default command queue. * For CUDA, this is the default stream. - * - * The default queue is used for asynchonrous operations on the container + * + * The default queue is used for asynchonrous operations on the container * that do not specify a queue. For OpenCL, this queue is also used in - * calls for reserving and copying memory **/ + * calls for reserving and copying memory **/ class UCL_BaseMat { public: UCL_BaseMat() : _cq(0), _kind(UCL_VIEW) { } @@ -68,8 +68,8 @@ class UCL_BaseMat { inline void sync() { ucl_sync(_cq); } /// Return the type/permissions of memory allocation /** Returns UCL_READ_WRITE, UCL_WRITE_ONLY, UCL_READ_ONLY, UCL_NOT_PINNED - * or UCL_VIEW **/ - inline enum UCL_MEMOPT kind() const { return _kind; } + * or UCL_VIEW **/ + inline enum UCL_MEMOPT kind() const { return _kind; } inline bool shared_mem_device() { #ifdef _OCL_MAT @@ -79,12 +79,12 @@ class UCL_BaseMat { cl_device_type device_type; CL_SAFE_CALL(clGetDeviceInfo(device,CL_DEVICE_TYPE, sizeof(device_type),&device_type,NULL)); - return _shared_mem_device(device_type); + return _shared_mem_device(device_type); #else return false; #endif } - + protected: command_queue _cq; enum UCL_MEMOPT _kind; diff --git a/lib/gpu/geryon/ucl_copy.h b/lib/gpu/geryon/ucl_copy.h index c6bff97a8c..c906a14f30 100644 --- a/lib/gpu/geryon/ucl_copy.h +++ b/lib/gpu/geryon/ucl_copy.h @@ -17,33 +17,33 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ - + /*************************************************************************** The ucl_copy and ucl_cast_copy routines provide a general prototype for copying data between host and device memory (including texture memory) for the matrix and vector types in nvc_memory. - - For host/host and host/device transfers, typecasting is performed - automatically as necessary. - - The routines are written so that all branches can be removed by the + + For host/host and host/device transfers, typecasting is performed + automatically as necessary. + + The routines are written so that all branches can be removed by the compiler during template instantiation. - + The routines currently assume row-major ordering for all types. - + For asynchronous copy in the default command queue, async is boolean true; For asynchronous copy in a specified command queue, async is command queue Otherwise, set async to boolean false; - + When performing frequent data copies that require casting, it is more efficient to allocate a casting buffer once and then pass that buffer to the copy routine. This can be accomplished with the ucl_cast_copy routines. - - Examples + + Examples (x's represent alignment padding - to maintain alignment) (o's represent a larger matrix in memory) (vectors represented as single row) @@ -51,18 +51,18 @@ dst src command ---------------------------------------------------------------- 0 1 2 3 4 <-- 0 1 2 3 4 ucl_copy(dst,src,async) - + 0 1 2 3 <-- 0 1 2 3 4 ucl_copy(dst,src,4,async) - + 0 1 2 <-- 0 1 2 3 4 5 ucl_copy(dst,src,async) - 3 4 5 - + 3 4 5 + 0 1 2 3 4 5 <-- 0 1 2 ucl_copy(dst,src,async) 3 4 5 - + 0 1 2 <-- 0 1 2 ucl_copy(dst,src,async) 3 4 5 3 4 5 - + 0 1 2 <-- 0 1 2 ucl_copy(dst,src,6,async) 3 4 5 3 4 5 5 6 7 @@ -70,33 +70,33 @@ 0 1 2 <-- 0 1 2 3 ucl_copy(dst,src,2,3,async) 4 5 6 4 5 6 7 8 9 10 11 - + 0 1 2 x x <-- 0 1 2 ucl_copy(dst,src,async) 3 4 5 x x 3 4 5 - + 0 1 2 <-- 0 1 2 x x ucl_copy(dst,src,async) 3 4 5 3 4 5 x x - + 0 1 2 o o <-- 0 1 2 ucl_copy(dst,src,2,3,async) 3 4 5 o o 3 4 5 - o o o o o + o o o o o 0 1 2 o o <-- 0 1 2 3 4 5 ucl_copy(dst,src,2,3,async) - 3 4 5 o o - o o o o o + 3 4 5 o o + o o o o o 0 1 o o o <-- 0 1 2 3 4 5 ucl_copy(dst,src,2,2,async) - 2 3 o o o - o o o o o + 2 3 o o o + o o o o o 0 1 2 o o <-- 0 1 2 3 4 ucl_copy(dst,src,2,3,async) 5 6 7 o o 5 6 7 8 9 o o o o o 10 11 12 13 14 - + 0 1 2 5 6 7 <-- 0 1 2 3 4 ucl_copy(dst,src,2,3,async) 5 6 7 8 9 10 11 12 13 14 - + ***************************************************************************/ // Only allow this file to be included by nvc_memory.h and ocl_memory.h @@ -124,7 +124,7 @@ inline void _check_ucl_copy_perm(mat1 &dst, mat2 &src) { assert(0==1); } } -} +} // -------------------------------------------------------------------------- // - HOST-HOST COPY ROUTINES @@ -182,7 +182,7 @@ template <> struct _host_host_copy<1,1> { return; } #endif - + #ifdef UCL_DBG_MEM_TRACE std::cerr << "UCL_COPY 8NS\n"; #endif @@ -212,7 +212,7 @@ template struct _host_host_copy { static inline void hhc(mat1 &dst, const mat2 &src, const size_t rows, const size_t cols) { assert(0==1); - } + } }; // -------------------------------------------------------------------------- @@ -242,20 +242,20 @@ template struct _ucl_cast_copy<1,host_type2> { template static inline void cc(mat1 &dst, const mat2 &src, const size_t rows, const size_t cols, mat3 &cast_buffer) { - // Asynchronous currently pointless here + // Asynchronous currently pointless here #ifdef UCL_DEBUG assert(mat1::ROW_MAJOR==1 && mat2::ROW_MAJOR==1); assert(dst.numel()>=rows*cols && cast_buffer.numel()>=rows*cols); - if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); - if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); - #endif + if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); + if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); + #endif if (mat1::VECTOR) { ucl_mv_cpy(cast_buffer,cols*sizeof(typename mat2::data_type),src, src.row_bytes(),cols*sizeof(typename mat2::data_type),rows); for (size_t i=0; i(cast_buffer[i]); } else { - if (mat2::VECTOR) + if (mat2::VECTOR) ucl_mv_cpy(cast_buffer,cols*sizeof(typename mat2::data_type),src, cols*sizeof(typename mat2::data_type), cols*sizeof(typename mat2::data_type),rows); @@ -276,23 +276,23 @@ template struct _ucl_cast_copy<1,host_type2> { } template static inline void cc(mat1 &dst, const mat2 &src, const size_t rows, - const size_t cols, mat3 &cast_buffer, + const size_t cols, mat3 &cast_buffer, command_queue &cq) { - // Asynchronous currently pointless here + // Asynchronous currently pointless here #ifdef UCL_DEBUG assert(mat1::ROW_MAJOR==1 && mat2::ROW_MAJOR==1); assert(dst.numel()>=rows*cols && cast_buffer.numel()>=rows*cols); - if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); - if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); - #endif + if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); + if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); + #endif if (mat1::VECTOR) { ucl_mv_cpy(cast_buffer,cols*sizeof(typename mat2::data_type),src, src.row_bytes(),cols*sizeof(typename mat2::data_type),rows,cq); - cast_buffer.sync(); + cast_buffer.sync(); for (size_t i=0; i(cast_buffer[i]); } else { - if (mat2::VECTOR) + if (mat2::VECTOR) ucl_mv_cpy(cast_buffer,cols*sizeof(typename mat2::data_type),src, cols*sizeof(typename mat2::data_type), cols*sizeof(typename mat2::data_type),rows,cq); @@ -338,7 +338,7 @@ template struct _ucl_cast_copy { assert(src.numel()>=rows*cols && cast_buffer.numel()>=rows*cols); if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); - if (mat3::VECTOR==0) { + if (mat3::VECTOR==0) { assert(cast_buffer.rows()>=rows && cast_buffer.cols()>=cols); assert(dst.rows()>=rows && dst.cols()>=cols); } @@ -404,9 +404,9 @@ template struct _ucl_cast_copy { #ifdef UCL_DEBUG assert(mat1::ROW_MAJOR==1 && mat2::ROW_MAJOR==1); assert(src.numel()>=rows*cols && cast_buffer.numel()>=rows*cols); - if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); - if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); - if (mat3::VECTOR==0) { + if (mat1::VECTOR==0) assert(dst.rows()>=rows && dst.cols()>=cols); + if (mat2::VECTOR==0) assert(src.rows()>=rows && src.cols()>=cols); + if (mat3::VECTOR==0) { assert(cast_buffer.rows()>=rows && cast_buffer.cols()>=cols); assert(dst.rows()>=rows && dst.cols()>=cols); } @@ -472,23 +472,23 @@ template <> struct _ucl_cast_copy<1,1> { template static inline void cc(mat1 &dst, const mat2 &src, const size_t numel, mat3 &cast_buffer, command_queue &cq) { - assert(0==1); + assert(0==1); } template static inline void cc(mat1 &dst, const mat2 &src, const size_t numel, mat3 &cast_buffer) { - assert(0==1); + assert(0==1); } template static inline void cc(mat1 &dst, const mat2 &src, const size_t rows, const size_t cols, mat3 &cast_buffer) { - assert(0==1); + assert(0==1); } template static inline void cc(mat1 &dst, const mat2 &src, const size_t rows, const size_t cols, mat3 &cast_buffer, command_queue &cq) { - assert(0==1); + assert(0==1); } }; @@ -497,23 +497,23 @@ template <> struct _ucl_cast_copy<0,0> { template static inline void cc(mat1 &dst, const mat2 &src, const size_t numel, mat3 &cast_buffer, command_queue &cq) { - assert(0==1); + assert(0==1); } template static inline void cc(mat1 &dst, const mat2 &src, const size_t numel, mat3 &cast_buffer) { - assert(0==1); + assert(0==1); } template static inline void cc(mat1 &dst, const mat2 &src, const size_t rows, const size_t cols, mat3 &cast_buffer) { - assert(0==1); + assert(0==1); } template static inline void cc(mat1 &dst, const mat2 &src, const size_t rows, const size_t cols, mat3 &cast_buffer, command_queue &cq) { - assert(0==1); + assert(0==1); } }; @@ -525,7 +525,7 @@ template <> struct _ucl_cast_copy<0,0> { /** \param numel Number of elements (not bytes) to copy * \param cast_buffer Buffer on host with enough storage for casting * - If the data types for the two matrices are same, no cast performed - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Currently does not handle textures **/ template inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t numel, @@ -551,7 +551,7 @@ inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t numel, * \param async Perform non-blocking copy on default stream * \param cast_buffer Buffer on host with enough storage for casting * - If the data types for the two matrices are same, no cast performed - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Currently does not handle textures **/ template inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t numel, @@ -580,7 +580,7 @@ inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t numel, * buffer is created for copy. When multiple casts occur, it is * more efficient to create a permanent casting buffer that can * be passed to an alternative copy routine. - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Currently does not handle textures **/ template inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t numel, @@ -593,7 +593,7 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t numel, #endif if (mat1::MEM_TYPE==1 && mat2::MEM_TYPE==1) _host_host_copy::hhc(dst,src,numel); - else if ((int)mat1::DATA_TYPE!=(int)mat2::DATA_TYPE && + else if ((int)mat1::DATA_TYPE!=(int)mat2::DATA_TYPE && (mat1::MEM_TYPE==1 || mat2::MEM_TYPE==1)) { if (mat1::MEM_TYPE==1) { UCL_H_Vec cast_buffer; @@ -606,8 +606,8 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t numel, _ucl_cast_copy::cc(dst,src,numel, cast_buffer,cq); } - } else - ucl_mv_cpy(dst,src,numel*sizeof(typename mat2::data_type),cq); + } else + ucl_mv_cpy(dst,src,numel*sizeof(typename mat2::data_type),cq); } /// Copy matrix/vector (memory already allocated) @@ -619,7 +619,7 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t numel, * buffer is created for copy. When multiple casts occur, it is * more efficient to create a permanent casting buffer that can * be passed to an alternative copy routine. - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - The default stream is used for asynchronous copy * - Currently does not handle textures **/ template @@ -648,7 +648,7 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t numel, cast_buffer); } } else - ucl_mv_cpy(dst,src,numel*sizeof(typename mat2::data_type)); + ucl_mv_cpy(dst,src,numel*sizeof(typename mat2::data_type)); } // -------------------------------------------------------------------------- @@ -659,11 +659,11 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t numel, /** \param async Perform non-blocking copy on default stream * \param cast_buffer Buffer on host with enough storage for casting * - If src is a vector, routine assumes row-major rows by cols copy - * - If src is a matrix, routine will copy upper left tile of matrix + * - If src is a matrix, routine will copy upper left tile of matrix * - If dst is a vector, routine assumes row-major rows by cols copy - * - If dst is a matrix, routine will copy into left tile of matrix + * - If dst is a matrix, routine will copy into left tile of matrix * - If the data types for the two matrices are same, no cast performed - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Copy from vector to matrix and vice versa allowed * - Currently does not handle textures **/ template @@ -686,16 +686,16 @@ inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t rows, /// Asynchronous copy subset matrix rows,cols with cast (Device/Host transfer) /** \param cast_buffer Buffer on host with enough storage for casting * - If src is a vector, routine assumes row-major rows by cols copy - * - If src is a matrix, routine will copy upper left tile of matrix + * - If src is a matrix, routine will copy upper left tile of matrix * - If dst is a vector, routine assumes row-major rows by cols copy - * - If dst is a matrix, routine will copy into upper left tile of matrix + * - If dst is a matrix, routine will copy into upper left tile of matrix * - If the data types for the two matrices are same, no cast performed - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Copy from vector to matrix and vice versa allowed * - Currently does not handle textures **/ template inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t rows, - const size_t cols, mat3 &cast_buffer, + const size_t cols, mat3 &cast_buffer, command_queue &cq) { if ((int)mat1::DATA_TYPE==(int)mat2::DATA_TYPE) ucl_copy(dst,src,rows,cols,cq); @@ -710,11 +710,11 @@ inline void ucl_cast_copy(mat1 &dst, const mat2 &src, const size_t rows, /// Asynchronous copy of subset matrix rows,cols (memory already allocated) /** - If src is a vector, routine assumes row-major rows by cols copy - * - If src is a matrix, routine will copy upper left tile of matrix + * - If src is a matrix, routine will copy upper left tile of matrix * - If dst is a vector, routine assumes row-major rows by cols copy - * - If dst is a matrix, routine will copy into left tile of matrix + * - If dst is a matrix, routine will copy into left tile of matrix * - If the data types of the two matrices are not the same, - * casting will be performed automatically as long as the copy is + * casting will be performed automatically as long as the copy is * not device to device. For host/device transfers, a temporary * buffer is created for copy. When multiple casts occur, it is * more efficient to create a permanent casting buffer that can @@ -730,7 +730,7 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t rows, #endif if (mat1::MEM_TYPE==1 && mat2::MEM_TYPE==1) _host_host_copy::hhc(dst,src,rows,cols); - else if ((int)mat1::DATA_TYPE!=(int)mat2::DATA_TYPE && + else if ((int)mat1::DATA_TYPE!=(int)mat2::DATA_TYPE && (mat1::MEM_TYPE==1 || mat2::MEM_TYPE==1)) { if (mat1::MEM_TYPE==1) { UCL_H_Vec cast_buffer; @@ -773,9 +773,9 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t rows, /// Copy subset of matrix rows,cols (memory already allocated) /** \param async Perform non-blocking copy (ignored for host to host copy) * - If src is a vector, routine assumes row-major rows by cols copy - * - If src is a matrix, routine will copy upper left tile of matrix + * - If src is a matrix, routine will copy upper left tile of matrix * - If dst is a vector, routine assumes row-major rows by cols copy - * - If dst is a matrix, routine will copy into left tile of matrix + * - If dst is a matrix, routine will copy into left tile of matrix * - If the data types of the two matrices are not the same, * casting will be performed automatically as long as the copy is * not device to device. For host/device transfers, a temporary @@ -796,7 +796,7 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t rows, ucl_copy(dst,src,rows,cols,dst.cq()); else if (mat1::MEM_TYPE==1 && mat2::MEM_TYPE==1) _host_host_copy::hhc(dst,src,rows,cols); - else if ((int)mat1::DATA_TYPE!=(int)mat2::DATA_TYPE && + else if ((int)mat1::DATA_TYPE!=(int)mat2::DATA_TYPE && (mat1::MEM_TYPE==1 || mat2::MEM_TYPE==1)) { if (mat1::MEM_TYPE==1) { UCL_H_Vec cast_buffer; @@ -846,7 +846,7 @@ inline void ucl_copy(mat1 &dst, const mat2 &src, const size_t rows, * \param cast_buffer Buffer on host with enough storage for casting * - If the data types for the two matrices are same, no cast performed * - The number of bytes copied is determined by entire src data - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Copy from vector to matrix and vice versa allowed * - Currently does not handle textures **/ template @@ -866,7 +866,7 @@ inline void ucl_cast_copy(mat1 &dst, const mat2 &src, /** \param cast_buffer Buffer on host with enough storage for casting * - If the data types for the two matrices are same, no cast performed * - The number of bytes copied is determined by entire src data - * - Padding for 2D matrices is not considered in this routine. + * - Padding for 2D matrices is not considered in this routine. * - Copy from vector to matrix and vice versa allowed * - Currently does not handle textures **/ template @@ -885,7 +885,7 @@ inline void ucl_cast_copy(mat1 &dst, const mat2 &src, /// Asynchronous copy of matrix/vector (memory already allocated) /** - The number of bytes copied is determined by entire src data * - If the data types of the two matrices are not the same, - * casting will be performed automatically as long as the copy is + * casting will be performed automatically as long as the copy is * not device to device. For host/device transfers, a temporary * buffer is created for copy. When multiple casts occur, it is * more efficient to create a permanent casting buffer that can @@ -924,7 +924,7 @@ template inline void ucl_copy(mat1 &dst, const mat2 &src, const bool async) { if (async) ucl_copy(dst,src,dst.cq()); - else if (dst.row_bytes()==src.row_bytes() && + else if (dst.row_bytes()==src.row_bytes() && src.kind()!=UCL_VIEW && dst.kind()!=UCL_VIEW && (int)mat1::DATA_TYPE==(int)mat2::DATA_TYPE) ucl_copy(dst,src,src.row_size()*src.rows(),async); diff --git a/lib/gpu/geryon/ucl_d_mat.h b/lib/gpu/geryon/ucl_d_mat.h index f1aaa27903..da55cc6ebc 100644 --- a/lib/gpu/geryon/ucl_d_mat.h +++ b/lib/gpu/geryon/ucl_d_mat.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -37,23 +37,23 @@ class UCL_D_Mat : public UCL_BaseMat { ROW_MAJOR = 1, VECTOR = 0 }; - typedef numtyp data_type; + typedef numtyp data_type; UCL_D_Mat() : _cols(0) {} ~UCL_D_Mat() { _device_free(*this); } - + /// Construct with specified rows and cols /** \sa alloc() **/ UCL_D_Mat(const size_t rows, const size_t cols, UCL_Device &device, - const enum UCL_MEMOPT kind=UCL_READ_WRITE) : + const enum UCL_MEMOPT kind=UCL_READ_WRITE) : _cols(0) { alloc(rows,cols,device,kind); } - + /// Row major matrix on device /** The kind parameter controls memory optimizations as follows: * - UCL_READ_WRITE - Specify that you will read and write in kernels * - UCL_WRITE_ONLY - Specify that you will only write in kernels * - UCL_READ_ONLY - Specify that you will only read in kernels - * \param cq Default command queue for operations copied from another mat + * \param cq Default command queue for operations copied from another mat * \note - Coalesced access using adjacent cols on same row * UCL_D_Mat(row,col) given by array[row*row_size()+col] * \return UCL_SUCCESS if the memory allocation is successful **/ @@ -65,7 +65,7 @@ class UCL_D_Mat : public UCL_BaseMat { int err=_device_alloc(*this,cq,rows,cols,_pitch,kind); if (err!=UCL_SUCCESS) { #ifndef UCL_NO_EXIT - std::cerr << "UCL Error: Could not allocate " + std::cerr << "UCL Error: Could not allocate " << rows*cols*sizeof(numtyp) << " bytes on device.\n"; UCL_GERYON_EXIT; #endif @@ -82,9 +82,9 @@ class UCL_D_Mat : public UCL_BaseMat { #ifdef _OCL_MAT _offset=0; #endif - return err; + return err; } - + /// Row major matrix on device /** The kind parameter controls memory optimizations as follows: * - UCL_READ_WRITE - Specify that you will read and write in kernels @@ -118,15 +118,15 @@ class UCL_D_Mat : public UCL_BaseMat { #ifdef _OCL_MAT _offset=0; #endif - return err; + return err; } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols, const size_t stride) { @@ -145,7 +145,7 @@ class UCL_D_Mat : public UCL_BaseMat { #else _device_view(&_array,input.begin()); #endif - + #ifndef _UCL_DEVICE_PTR_MAT _end=_array+_cols; #endif @@ -157,39 +157,39 @@ class UCL_D_Mat : public UCL_BaseMat { * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs **/ template - inline void view(ucl_type &input, const size_t rows, const size_t cols) + inline void view(ucl_type &input, const size_t rows, const size_t cols) { view(input,rows,cols,input.row_size()); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template inline void view(ucl_type &input, const size_t cols) { view(input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template - inline void view(ucl_type &input) + inline void view(ucl_type &input) { view(input,input.rows(),input.cols()); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ptr_type input, const size_t rows, const size_t cols, - const size_t stride, UCL_Device &dev) { + const size_t stride, UCL_Device &dev) { clear(); _kind=UCL_VIEW; _cols=cols; @@ -215,7 +215,7 @@ class UCL_D_Mat : public UCL_BaseMat { template inline void view(ptr_type input, const size_t rows, const size_t cols, UCL_Device &dev) { view(input,rows,cols,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the @@ -223,13 +223,13 @@ class UCL_D_Mat : public UCL_BaseMat { template inline void view(ptr_type input, const size_t cols, UCL_Device &dev) { view(input,1,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, const size_t cols, const size_t stride) { @@ -248,7 +248,7 @@ class UCL_D_Mat : public UCL_BaseMat { #else _device_view(&_array,input.begin(),offset,sizeof(numtyp)); #endif - + #ifndef _UCL_DEVICE_PTR_MAT _end=_array+_cols; #endif @@ -261,45 +261,45 @@ class UCL_D_Mat : public UCL_BaseMat { * allocating container when using CUDA APIs **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols) + const size_t cols) { view_offset(offset,input,rows,cols,input.row_size()); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t cols) { view_offset(offset,input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template - inline void view_offset(const size_t offset, ucl_type &input) { - if (input.rows()==1) + inline void view_offset(const size_t offset, ucl_type &input) { + if (input.rows()==1) view_offset(offset,input,1,input.cols()-offset); - else + else view_offset(offset,input,input.rows()-offset/input.row_size(), input.cols()); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ptr_type input,const size_t rows, const size_t cols,const size_t stride, - UCL_Device &dev) { + UCL_Device &dev) { clear(); _kind=UCL_VIEW; _cols=cols; @@ -307,7 +307,7 @@ class UCL_D_Mat : public UCL_BaseMat { _pitch=stride*sizeof(numtyp); _row_size=stride; this->_cq=dev.cq(); - + #ifdef _OCL_MAT _array=input; _offset=offset; @@ -320,7 +320,7 @@ class UCL_D_Mat : public UCL_BaseMat { _array=input+offset; #endif #endif - + #ifndef _UCL_DEVICE_PTR_MAT _end=_array+_cols; #endif @@ -332,20 +332,20 @@ class UCL_D_Mat : public UCL_BaseMat { * allocating container when using CUDA APIs **/ template inline void view_offset(const size_t offset,ptr_type input,const size_t rows, - const size_t cols, UCL_Device &dev) + const size_t cols, UCL_Device &dev) { view_offset(offset,input,rows,cols,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs **/ template - inline void view_offset(const size_t offset, ptr_type input, + inline void view_offset(const size_t offset, ptr_type input, const size_t cols, UCL_Device &dev) { view_offset(offset,input,1,cols,dev); } - + /// Free memory and set size to 0 - inline void clear() + inline void clear() { _device_free(*this); _cols=0; _kind=UCL_VIEW; } /// Resize the allocation to contain cols elements @@ -356,7 +356,7 @@ class UCL_D_Mat : public UCL_BaseMat { int err=_device_resize(*this,rows,cols,_pitch); if (err!=UCL_SUCCESS) { #ifndef UCL_NO_EXIT - std::cerr << "UCL Error: Could not allocate " + std::cerr << "UCL Error: Could not allocate " << rows*cols*sizeof(numtyp) << " bytes on device.\n"; UCL_GERYON_EXIT; #endif @@ -372,13 +372,13 @@ class UCL_D_Mat : public UCL_BaseMat { #ifdef _OCL_MAT _offset=0; #endif - return err; + return err; } - + /// Resize (only if bigger) the allocation to contain rows x cols elements /** \note Cannot be used on views **/ inline int resize_ib(const int rows, const int cols) - { if (cols>_cols || rows>_rows) return resize(rows,cols); + { if (cols>_cols || rows>_rows) return resize(rows,cols); else return UCL_SUCCESS; } /// Set each element to zero asynchronously in the default command_queue @@ -386,10 +386,10 @@ class UCL_D_Mat : public UCL_BaseMat { /// Set first n elements to zero asynchronously in the default command_queue inline void zero(const int n) { zero(n,_cq); } /// Set each element to zero asynchronously - inline void zero(command_queue &cq) + inline void zero(command_queue &cq) { _device_zero(*this,row_bytes()*_rows,cq); } /// Set first n elements to zero asynchronously - inline void zero(const int n, command_queue &cq) + inline void zero(const int n, command_queue &cq) { _device_zero(*this,n*sizeof(numtyp),cq); } @@ -445,7 +445,7 @@ class UCL_D_Mat : public UCL_BaseMat { inline size_t row_bytes() const { return _pitch; } /// Get the size in bytes of 1 element inline int element_size() const { return sizeof(numtyp); } - + #ifdef _OCL_MAT /// Return the offset (in elements) from begin() pointer where data starts /** \note Always 0 for host matrices and CUDA APIs **/ @@ -459,7 +459,7 @@ class UCL_D_Mat : public UCL_BaseMat { /// Return the offset (in bytes) from begin() pointer where data starts /** \note Always 0 for host matrices and CUDA APIs **/ inline size_t byteoff() const { return offset()*sizeof(numtyp); } - + private: size_t _pitch, _row_size, _rows, _cols; diff --git a/lib/gpu/geryon/ucl_d_vec.h b/lib/gpu/geryon/ucl_d_vec.h index fc1977f4b5..99a6c939c6 100644 --- a/lib/gpu/geryon/ucl_d_vec.h +++ b/lib/gpu/geryon/ucl_d_vec.h @@ -17,14 +17,14 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ // Only allow this file to be included by CUDA and OpenCL specific headers #ifdef _UCL_MAT_ALLOW -/// Row vector on device +/// Row vector on device template class UCL_D_Vec : public UCL_BaseMat { public: @@ -37,7 +37,7 @@ class UCL_D_Vec : public UCL_BaseMat { ROW_MAJOR = 1, VECTOR = 1 }; - typedef numtyp data_type; + typedef numtyp data_type; UCL_D_Vec() : _cols(0) {} ~UCL_D_Vec() { _device_free(*this); } @@ -45,7 +45,7 @@ class UCL_D_Vec : public UCL_BaseMat { /// Construct with n columns /** \sa alloc() **/ UCL_D_Vec(const size_t n, UCL_Device &device, - const enum UCL_MEMOPT kind=UCL_READ_WRITE) : + const enum UCL_MEMOPT kind=UCL_READ_WRITE) : _cols(0) { alloc(n,device,kind); } /// Set up host vector with 'cols' columns and reserve memory @@ -58,7 +58,7 @@ class UCL_D_Vec : public UCL_BaseMat { template inline int alloc(const size_t cols, mat_type &cq, const enum UCL_MEMOPT kind=UCL_READ_WRITE) { - + clear(); _row_bytes=cols*sizeof(numtyp); @@ -82,8 +82,8 @@ class UCL_D_Vec : public UCL_BaseMat { #ifdef _OCL_MAT _offset=0; #endif - return err; - } + return err; + } /// Set up host vector with 'cols' columns and reserve memory /** The kind parameter controls memory optimizations as follows: @@ -116,7 +116,7 @@ class UCL_D_Vec : public UCL_BaseMat { #ifdef _OCL_MAT _offset=0; #endif - return err; + return err; } /// Do not allocate memory, instead use an existing allocation from Geryon @@ -142,18 +142,18 @@ class UCL_D_Vec : public UCL_BaseMat { #else _device_view(&_array,input.begin()); #endif - + #ifndef _UCL_DEVICE_PTR_MAT _end=_array+_cols; #endif } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols, const size_t stride) { view(input,rows,cols); } @@ -162,24 +162,24 @@ class UCL_D_Vec : public UCL_BaseMat { /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template inline void view(ucl_type &input, const size_t cols) { view(input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template - inline void view(ucl_type &input) + inline void view(ucl_type &input) { view(input,input.rows()*input.row_size()); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the @@ -205,15 +205,15 @@ class UCL_D_Vec : public UCL_BaseMat { CL_SAFE_CALL(clRetainCommandQueue(dev.cq())); #endif } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ptr_type input, const size_t rows, const size_t cols, - const size_t stride, UCL_Device &dev) + const size_t stride, UCL_Device &dev) { view(input,rows,cols,stride); } /// Do not allocate memory, instead use an existing allocation @@ -223,7 +223,7 @@ class UCL_D_Vec : public UCL_BaseMat { template inline void view(ptr_type input, const size_t cols, UCL_Device &dev) { view(input,1,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. @@ -248,45 +248,45 @@ class UCL_D_Vec : public UCL_BaseMat { #else _device_view(&_array,input.begin(),offset,sizeof(numtyp)); #endif - + #ifndef _UCL_DEVICE_PTR_MAT _end=_array+_cols; #endif } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols, const size_t stride) + const size_t cols, const size_t stride) { view_offset(offset,input,rows,cols); } /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t cols) { view_offset(offset,input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) * will be used for view **/ template - inline void view_offset(const size_t offset, ucl_type &input) + inline void view_offset(const size_t offset, ucl_type &input) { view_offset(offset,input,input.rows()*input.row_size()-offset); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the @@ -302,7 +302,7 @@ class UCL_D_Vec : public UCL_BaseMat { _cols=cols; _row_bytes=_cols*sizeof(numtyp); this->_cq=dev.cq(); - + #ifdef _OCL_MAT _array=input; _offset=offset; @@ -315,20 +315,20 @@ class UCL_D_Vec : public UCL_BaseMat { _array=input+offset; #endif #endif - + #ifndef _UCL_DEVICE_PTR_MAT _end=_array+_cols; #endif } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ptr_type input,const size_t rows, - const size_t cols,const size_t stride,UCL_Device &dev) + const size_t cols,const size_t stride,UCL_Device &dev) { view_offset(offset,input,rows,cols,stride); } /// Do not allocate memory, instead use an existing allocation @@ -336,12 +336,12 @@ class UCL_D_Vec : public UCL_BaseMat { * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs **/ template - inline void view_offset(const size_t offset, ptr_type input, + inline void view_offset(const size_t offset, ptr_type input, const size_t cols, UCL_Device &dev) { view_offset(offset,input,1,cols,dev); } - + /// Free memory and set size to 0 - inline void clear() + inline void clear() { _device_free(*this); _cols=0; _kind=UCL_VIEW; } /// Resize the allocation to contain cols elements @@ -369,9 +369,9 @@ class UCL_D_Vec : public UCL_BaseMat { #ifdef _OCL_MAT _offset=0; #endif - return err; + return err; } - + /// Resize (only if bigger) the allocation to contain cols elements /** \note Cannot be used on views **/ inline int resize_ib(const int cols) @@ -384,7 +384,7 @@ class UCL_D_Vec : public UCL_BaseMat { /// Set each element to zero asynchronously inline void zero(command_queue &cq) { _device_zero(*this,row_bytes(),cq); } /// Set first n elements to zero asynchronously - inline void zero(const int n, command_queue &cq) + inline void zero(const int n, command_queue &cq) { _device_zero(*this,n*sizeof(numtyp),cq); } #ifdef _UCL_DEVICE_PTR_MAT @@ -402,7 +402,7 @@ class UCL_D_Vec : public UCL_BaseMat { /// For CUDA-RT, get device pointer to one past last element inline numtyp * end() const { return _end; } #endif - + #ifdef _UCL_DEVICE_PTR_MAT /// Returns an API specific device pointer /** - For OpenCL, returns a &cl_mem object @@ -427,10 +427,10 @@ class UCL_D_Vec : public UCL_BaseMat { inline const numtyp ** cbegin() const { return &_array; } /// For CUDA-RT, allocate row vector and bind texture inline void safe_alloc(const size_t cols, UCL_Device &dev, - textureReference *t) + textureReference *t) { alloc(cols,dev); assign_texture(t); bind(); } /// For CUDA-RT, assign a texture to matrix - inline void assign_texture(textureReference *t) { _tex_ptr=t; } + inline void assign_texture(textureReference *t) { _tex_ptr=t; } /// For CUDA-RT, bind to texture inline void bind() { cuda_gb_get_channel(_channel); @@ -456,7 +456,7 @@ class UCL_D_Vec : public UCL_BaseMat { inline size_t row_bytes() const { return _row_bytes; } /// Get the size in bytes of 1 element inline int element_size() const { return sizeof(numtyp); } - + #ifdef _OCL_MAT /// Return the offset (in elements) from begin() pointer where data starts /** \note Always 0 for host matrices and CUDA APIs **/ @@ -473,7 +473,7 @@ class UCL_D_Vec : public UCL_BaseMat { private: size_t _row_bytes, _row_size, _rows, _cols; - + #ifdef _UCL_DEVICE_PTR_MAT device_ptr _array; #else diff --git a/lib/gpu/geryon/ucl_h_mat.h b/lib/gpu/geryon/ucl_h_mat.h index dc6da3de0c..1df3c2de4b 100644 --- a/lib/gpu/geryon/ucl_h_mat.h +++ b/lib/gpu/geryon/ucl_h_mat.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -37,21 +37,21 @@ class UCL_H_Mat : public UCL_BaseMat { ROW_MAJOR = 1, VECTOR = 0 }; - typedef numtyp data_type; - + typedef numtyp data_type; + UCL_H_Mat() : _cols(0) { #ifdef _OCL_MAT _carray=(cl_mem)(0); #endif } ~UCL_H_Mat() { _host_free(*this); } - + /// Construct with specied number of rows and columns /** \sa alloc() **/ - UCL_H_Mat(const size_t rows, const size_t cols, UCL_Device &device, - const enum UCL_MEMOPT kind=UCL_READ_WRITE) + UCL_H_Mat(const size_t rows, const size_t cols, UCL_Device &device, + const enum UCL_MEMOPT kind=UCL_READ_WRITE) { _cols=0; _kind=UCL_VIEW; alloc(rows,cols,device,kind); } - + /// Set up host matrix with specied # of rows/cols and reserve memory /** The kind parameter controls memory pinning as follows: * - UCL_READ_WRITE - Specify that you will read and write from host @@ -74,7 +74,7 @@ class UCL_H_Mat : public UCL_BaseMat { << " bytes on host.\n"; _row_bytes=0; UCL_GERYON_EXIT; - #endif + #endif _row_bytes=0; return err; } @@ -84,7 +84,7 @@ class UCL_H_Mat : public UCL_BaseMat { _kind=kind; _end=_array+rows*cols; return err; - } + } /// Set up host matrix with specied # of rows/cols and reserve memory /** The kind parameter controls memory pinning as follows: @@ -117,15 +117,15 @@ class UCL_H_Mat : public UCL_BaseMat { _kind=kind; _end=_array+rows*cols; return err; - } - + } + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * - Viewing a device container on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols, const size_t stride) { @@ -149,45 +149,45 @@ class UCL_H_Mat : public UCL_BaseMat { /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device container on the host is not supported **/ template - inline void view(ucl_type &input, const size_t rows, const size_t cols) + inline void view(ucl_type &input, const size_t rows, const size_t cols) { view(input,rows,cols,input.row_size()); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template inline void view(ucl_type &input, const size_t cols) { view(input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view when using CUDA APIs - * - Viewing a device container on the host is not supported **/ + * will be used for view when using CUDA APIs + * - Viewing a device container on the host is not supported **/ template - inline void view(ucl_type &input) + inline void view(ucl_type &input) { view(input,input.rows(),input.cols()); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ptr_type *input, const size_t rows, const size_t cols, - const size_t stride, UCL_Device &dev) { + const size_t stride, UCL_Device &dev) { assert(rows==1 || stride==cols); clear(); _kind=UCL_VIEW; @@ -197,40 +197,40 @@ class UCL_H_Mat : public UCL_BaseMat { this->_cq=dev.cq(); _array=input; _end=_array+_cols; - + #ifdef _OCL_MAT _host_view(*this,dev,_row_bytes*rows); - #endif + #endif } /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported **/ template inline void view(ptr_type *input, const size_t rows, const size_t cols, UCL_Device &dev) { view(input,rows,cols,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported **/ template inline void view(ptr_type *input, const size_t cols, UCL_Device &dev) { view(input,1,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * - Viewing a device container on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols, const size_t stride) { + const size_t cols, const size_t stride) { assert(rows==1 || stride==cols); clear(); _kind=UCL_VIEW; @@ -244,81 +244,81 @@ class UCL_H_Mat : public UCL_BaseMat { _host_view(*this,input,_row_bytes*_rows); #endif } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device container on the host is not supported **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols) + const size_t cols) { view_offset(offset,input,rows,cols,input.row_size()); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t cols) { view_offset(offset,input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template - inline void view_offset(const size_t offset, ucl_type &input) { - if (input.rows()==1) + inline void view_offset(const size_t offset, ucl_type &input) { + if (input.rows()==1) view_offset(offset,input,1,input.cols()-offset); - else + else view_offset(offset,input,input.rows()-offset/input.row_size(), input.cols()); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container - * - Viewing a device pointer on the host is not supported **/ + * allocating container + * - Viewing a device pointer on the host is not supported **/ template inline void view_offset(const size_t offset,ptr_type *input,const size_t rows, const size_t cols, UCL_Device &dev) { view(input+offset,rows,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ptr_type *input,const size_t rows, - const size_t cols,const size_t stride,UCL_Device &dev) + const size_t cols,const size_t stride,UCL_Device &dev) { view(input+offset,rows,cols,stride,dev); } /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported **/ template - inline void view_offset(const size_t offset, ptr_type *input, + inline void view_offset(const size_t offset, ptr_type *input, const size_t cols, UCL_Device &dev) { view(input+offset,1,cols,dev); } - + /// Free memory and set size to 0 - inline void clear() - { _host_free(*this); _cols=0; _kind=UCL_VIEW; } + inline void clear() + { _host_free(*this); _cols=0; _kind=UCL_VIEW; } /// Resize the allocation to rows x cols elements /** \note Cannot be used on views **/ @@ -333,7 +333,7 @@ class UCL_H_Mat : public UCL_BaseMat { << " bytes on host.\n"; _row_bytes=0; UCL_GERYON_EXIT; - #endif + #endif _row_bytes=0; return err; } @@ -347,7 +347,7 @@ class UCL_H_Mat : public UCL_BaseMat { /// Resize (only if bigger) the allocation to contain rows x cols elements /** \note Cannot be used on views **/ inline int resize_ib(const int rows, const int cols) - { if (cols>_cols || rows>_rows) return resize(rows,cols); + { if (cols>_cols || rows>_rows) return resize(rows,cols); else return UCL_SUCCESS; } /// Set each element to zero @@ -376,21 +376,21 @@ class UCL_H_Mat : public UCL_BaseMat { inline size_t row_bytes() const { return _row_bytes; } /// Get the size in bytes of 1 element inline int element_size() const { return sizeof(numtyp); } - + /// Get element at index i inline numtyp & operator[](const int i) { return _array[i]; } /// Get element at index i inline const numtyp & operator[](const int i) const { return _array[i]; } - /// 2D access (row should always be 0) - inline numtyp & operator()(const int row, const int col) + /// 2D access (row should always be 0) + inline numtyp & operator()(const int row, const int col) { return _array[row*_cols+col]; } - /// 2D access (row should always be 0) + /// 2D access (row should always be 0) inline const numtyp & operator()(const int row, const int col) const { return _array[row*_cols+col]; } - + /// Returns pointer to memory pointer for allocation on host inline numtyp ** host_ptr() { return &_array; } - + /// Return the offset (in elements) from begin() pointer where data starts /** \note Always 0 for host matrices and CUDA APIs **/ inline size_t offset() const { return 0; } @@ -409,14 +409,14 @@ class UCL_H_Mat : public UCL_BaseMat { /// Returns an API specific device pointer (cl_mem& for OpenCL, void ** for CUDA) inline const void ** cbegin() const { return (const void **)&_array; } #endif - + private: numtyp *_array, *_end; size_t _row_bytes, _rows, _cols; #ifdef _OCL_MAT device_ptr _carray; - #endif + #endif }; #endif diff --git a/lib/gpu/geryon/ucl_h_vec.h b/lib/gpu/geryon/ucl_h_vec.h index 773facdea0..a9d64349d9 100644 --- a/lib/gpu/geryon/ucl_h_vec.h +++ b/lib/gpu/geryon/ucl_h_vec.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2009) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -37,21 +37,21 @@ class UCL_H_Vec : public UCL_BaseMat { ROW_MAJOR = 1, VECTOR = 1 }; - typedef numtyp data_type; - + typedef numtyp data_type; + UCL_H_Vec() : _cols(0) { #ifdef _OCL_MAT _carray=(cl_mem)(0); #endif } ~UCL_H_Vec() { _host_free(*this); } - + /// Construct with n columns /** \sa alloc() **/ - UCL_H_Vec(const size_t n, UCL_Device &device, - const enum UCL_MEMOPT kind=UCL_READ_WRITE) + UCL_H_Vec(const size_t n, UCL_Device &device, + const enum UCL_MEMOPT kind=UCL_READ_WRITE) { _cols=0; _kind=UCL_VIEW; alloc(n,device,kind); } - + /// Set up host vector with 'cols' columns and reserve memory /** The kind parameter controls memory pinning as follows: * - UCL_READ_WRITE - Specify that you will read and write from host @@ -84,7 +84,7 @@ class UCL_H_Vec : public UCL_BaseMat { _kind=kind; _end=_array+cols; return err; - } + } /// Set up host vector with 'cols' columns and reserve memory /** The kind parameter controls memory pinning as follows: @@ -108,7 +108,7 @@ class UCL_H_Vec : public UCL_BaseMat { << " bytes on host.\n"; _row_bytes=0; UCL_GERYON_EXIT; - #endif + #endif _row_bytes=0; return err; } @@ -118,13 +118,13 @@ class UCL_H_Vec : public UCL_BaseMat { _end=_array+cols; return err; } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device container on the host is not supported **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols) { #ifdef UCL_DEBUG @@ -143,14 +143,14 @@ class UCL_H_Vec : public UCL_BaseMat { CL_SAFE_CALL(clRetainCommandQueue(input.cq())); #endif } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * - Viewing a device container on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ucl_type &input, const size_t rows, const size_t cols, const size_t stride) { view(input,rows,cols); } @@ -159,31 +159,31 @@ class UCL_H_Vec : public UCL_BaseMat { /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template inline void view(ucl_type &input, const size_t cols) { view(input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container + * allocating container * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template - inline void view(ucl_type &input) + inline void view(ucl_type &input) { view(input,input.rows()*input.row_size()); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported **/ template inline void view(ptr_type *input, const size_t rows, const size_t cols, UCL_Device &dev) { @@ -197,38 +197,38 @@ class UCL_H_Vec : public UCL_BaseMat { this->_cq=dev.cq(); _array=input; _end=_array+_cols; - + #ifdef _OCL_MAT _host_view(*this,dev,_row_bytes); - #endif + #endif } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * - Viewing a device pointer on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view(ptr_type *input, const size_t rows, const size_t cols, - const size_t stride, UCL_Device &dev) + const size_t stride, UCL_Device &dev) { view(input,rows,cols,stride); } /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * - Viewing a device pointer on the host is not supported **/ template inline void view(ptr_type *input, const size_t cols, UCL_Device &dev) { view(input,1,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported **/ + * - Viewing a device container on the host is not supported **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, const size_t cols) { @@ -246,76 +246,76 @@ class UCL_H_Vec : public UCL_BaseMat { _host_view(*this,input,_row_bytes); #endif } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device container on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * - Viewing a device container on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t rows, - const size_t cols, const size_t stride) + const size_t cols, const size_t stride) { view_offset(offset,input,rows,cols); } /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template inline void view_offset(const size_t offset,ucl_type &input,const size_t cols) { view_offset(offset,input,1,cols); } - + /// Do not allocate memory, instead use an existing allocation from Geryon /** This function must be passed a Geryon vector or matrix container. * No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs + * allocating container when using CUDA APIs * - If a matrix is used a input, all elements (including padding) - * will be used for view - * - Viewing a device container on the host is not supported **/ + * will be used for view + * - Viewing a device container on the host is not supported **/ template - inline void view_offset(const size_t offset, ucl_type &input) + inline void view_offset(const size_t offset, ucl_type &input) { view_offset(offset,input,input.rows()*input.row_size()-offset); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported **/ template inline void view_offset(const size_t offset,ptr_type *input,const size_t rows, const size_t cols, UCL_Device &dev) { view(input+offset,rows,cols,dev); } - + /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported - * \param stride Number of _elements_ between the start of each row **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported + * \param stride Number of _elements_ between the start of each row **/ template inline void view_offset(const size_t offset,ptr_type *input,const size_t rows, - const size_t cols,const size_t stride,UCL_Device &dev) + const size_t cols,const size_t stride,UCL_Device &dev) { view(input+offset,rows,cols,stride,dev); } /// Do not allocate memory, instead use an existing allocation /** - No memory is freed when the object is destructed. * - The view does not prevent the memory from being freed by the - * allocating container when using CUDA APIs - * - Viewing a device pointer on the host is not supported **/ + * allocating container when using CUDA APIs + * - Viewing a device pointer on the host is not supported **/ template - inline void view_offset(const size_t offset, ptr_type *input, + inline void view_offset(const size_t offset, ptr_type *input, const size_t cols, UCL_Device &dev) { view(input+offset,1,cols,dev); } - + /// Free memory and set size to 0 - inline void clear() + inline void clear() { _host_free(*this); _kind=UCL_VIEW; _cols=0; } /// Resize the allocation to contain cols elements @@ -324,7 +324,7 @@ class UCL_H_Vec : public UCL_BaseMat { assert(_kind!=UCL_VIEW); _row_bytes=cols*sizeof(numtyp); int err=_host_resize(*this,_row_bytes); - + if (err!=UCL_SUCCESS) { #ifndef UCL_NO_EXIT std::cerr << "UCL Error: Could not allocate " << _row_bytes @@ -340,7 +340,7 @@ class UCL_H_Vec : public UCL_BaseMat { _end=_array+cols; return err; } - + /// Resize (only if bigger) the allocation to contain cols elements /** \note Cannot be used on views **/ inline int resize_ib(const int cols) @@ -348,7 +348,7 @@ class UCL_H_Vec : public UCL_BaseMat { /// Set each element to zero inline void zero() { _host_zero(_array,row_bytes()); } - + /// Set first n elements to zero inline void zero(const int n) { _host_zero(_array,n*sizeof(numtyp)); } @@ -373,35 +373,35 @@ class UCL_H_Vec : public UCL_BaseMat { inline size_t row_bytes() const { return _row_bytes; } /// Get the size in bytes of 1 element inline int element_size() const { return sizeof(numtyp); } - + /// Get element at index i inline numtyp & operator[](const int i) { return _array[i]; } /// Get element at index i inline const numtyp & operator[](const int i) const { return _array[i]; } - /// 2D access (row should always be 0) - inline numtyp & operator()(const int row, const int col) + /// 2D access (row should always be 0) + inline numtyp & operator()(const int row, const int col) { return _array[col]; } - /// 2D access (row should always be 0) + /// 2D access (row should always be 0) inline const numtyp & operator()(const int row, const int col) const { return _array[col]; } - + /// Returns pointer to memory pointer for allocation on host inline numtyp ** host_ptr() { return &_array; } - + /// Return the offset (in elements) from begin() pointer where data starts /** \note Always 0 for host matrices and CUDA APIs **/ inline size_t offset() const { return 0; } /// Return the offset (in bytes) from begin() pointer where data starts /** \note Always 0 for host matrices and CUDA APIs **/ inline size_t byteoff() const { return 0; } - + #ifdef _OCL_MAT /// For OpenCL, returns a reference to the cl_mem object inline device_ptr & cbegin() { return _carray; } /// For OpenCL, returns a reference to the cl_mem object inline const device_ptr & cbegin() const { return _carray; } #endif - + private: numtyp *_array, *_end; size_t _row_bytes, _cols; diff --git a/lib/gpu/geryon/ucl_matrix.h b/lib/gpu/geryon/ucl_matrix.h index 301325b454..b93d1c7f68 100644 --- a/lib/gpu/geryon/ucl_matrix.h +++ b/lib/gpu/geryon/ucl_matrix.h @@ -34,25 +34,25 @@ class UCL_Matrix { ROW_MAJOR = 1, VECTOR = 0 }; - typedef hosttype data_type; + typedef hosttype data_type; /// Host Allocation UCL_H_Mat host; - + /// Device Allocation UCL_D_Mat device; UCL_Matrix() { } ~UCL_Matrix() { } - + /// Construct with specied number of rows and columns /** \sa alloc() **/ - UCL_Matrix(const size_t rows, const size_t cols, UCL_Device &acc, + UCL_Matrix(const size_t rows, const size_t cols, UCL_Device &acc, const enum UCL_MEMOPT kind1=UCL_READ_WRITE, const enum UCL_MEMOPT kind2=UCL_READ_WRITE) { _ucl_s_obj_help< ucl_same_type::ans >:: alloc(host,device,_buffer,rows,cols,acc,kind1,kind2); } - + /// Set up host matrix with specied # of rows/cols and reserve memory /** The kind1 parameter controls memory access from the host * - UCL_READ_WRITE - Specify that you will read and write from host @@ -74,7 +74,7 @@ class UCL_Matrix { const enum UCL_MEMOPT kind2=UCL_READ_WRITE) { return _ucl_s_obj_help< ucl_same_type::ans >:: alloc(host,device,_buffer,rows,cols,cq,kind1,kind2); } - + /// Set up host matrix with specied # of rows/cols and reserve memory /** The kind1 parameter controls memory access from the host * - UCL_READ_WRITE - Specify that you will read and write from host @@ -92,9 +92,9 @@ class UCL_Matrix { const enum UCL_MEMOPT kind2=UCL_READ_WRITE) { return _ucl_s_obj_help< ucl_same_type::ans >:: alloc(host,device,_buffer,rows,cols,acc,kind1,kind2); } - + /// Free memory and set size to 0 - inline void clear() + inline void clear() { host.clear(); device.clear(); } /// Resize the allocation to contain cols elements @@ -106,10 +106,10 @@ class UCL_Matrix { return _ucl_s_obj_help< ucl_same_type::ans >:: dev_resize(device,host,_buffer,rows,cols); } - + /// Resize (only if bigger) the allocation to contain cols elements inline int resize_ib(const int new_rows, const int new_cols) - { if (new_rows>rows() || new_cols>cols()) return resize(new_rows,new_cols); + { if (new_rows>rows() || new_cols>cols()) return resize(new_rows,new_cols); else return UCL_SUCCESS; } /// Set each element to zero (asynchronously on device) @@ -118,14 +118,14 @@ class UCL_Matrix { inline void zero(const int n) { zero(n,cq()); } /// Set each element to zero (asynchronously on device) inline void zero(command_queue &cq) { - host.zero(); + host.zero(); if (device.kind()!=UCL_VIEW) device.zero(cq); else if (_buffer.numel()>0) _buffer.zero(); } /// Set first n elements to zero (asynchronously on device) - inline void zero(const int n, command_queue &cq) { - host.zero(n); - if (device.kind()!=UCL_VIEW) device.zero(n,cq); + inline void zero(const int n, command_queue &cq) { + host.zero(n); + if (device.kind()!=UCL_VIEW) device.zero(n,cq); else if (_buffer.numel()>0) _buffer.zero(); } @@ -136,26 +136,26 @@ class UCL_Matrix { /// Get the number of columns inline size_t cols() const { return host.cols(); } /// Get the memory usage (bytes) of the s-object (including any buffers) - inline size_t host_mem_usage() + inline size_t host_mem_usage() { return host.row_bytes()*host.rows()+_buffer.row_bytes()*_buffer.rows(); } /// Get the memory usage (bytes) of the s-object (including any buffers) - inline size_t device_mem_usage() + inline size_t device_mem_usage() { return device.row_bytes()*device.rows(); } - + /// Get element at index i inline hosttype & operator[](const int i) { return host[i]; } /// Get element at index i inline const hosttype & operator[](const int i) const { return host[i]; } - /// 2D access (row should always be 0) - inline hosttype & operator()(const int row, const int col) + /// 2D access (row should always be 0) + inline hosttype & operator()(const int row, const int col) { return host(row,col); } - /// 2D access (row should always be 0) + /// 2D access (row should always be 0) inline const hosttype & operator()(const int row, const int col) const { return host(row,col); } - + /// Returns pointer to memory pointer for allocation on host inline hosttype ** host_ptr() { return host.host_ptr(); } - + /// Return the default command queue/stream associated with this data inline command_queue & cq() { return host.cq(); } /// Change the default command queue associated with this data @@ -172,7 +172,7 @@ class UCL_Matrix { /// Update the allocation on the host asynchronously - inline void update_host() + inline void update_host() { _ucl_s_obj_help< ucl_same_type::ans >:: copy(host,device,_buffer,true); } /// Update the allocation on the host (true for asynchronous copy) @@ -202,7 +202,7 @@ class UCL_Matrix { /// Update the allocation on the device asynchronously - inline void update_device() + inline void update_device() { _ucl_s_obj_help< ucl_same_type::ans >:: copy(device,host,_buffer,true); } /// Update the allocation on the device (true for asynchronous copy) diff --git a/lib/gpu/geryon/ucl_nv_kernel.h b/lib/gpu/geryon/ucl_nv_kernel.h index bdba8ff7ae..437631ec3a 100644 --- a/lib/gpu/geryon/ucl_nv_kernel.h +++ b/lib/gpu/geryon/ucl_nv_kernel.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -53,9 +53,9 @@ typedef struct _double4 double4; #define BLOCK_SIZE_Y blockDim.y #define __kernel extern "C" __global__ #define __local __shared__ -#define __global +#define __global #define atom_add atomicAdd -#define ucl_inline static __inline__ __device__ +#define ucl_inline static __inline__ __device__ #endif diff --git a/lib/gpu/geryon/ucl_print.h b/lib/gpu/geryon/ucl_print.h index 87b3d3d7ff..98ae8a8c06 100644 --- a/lib/gpu/geryon/ucl_print.h +++ b/lib/gpu/geryon/ucl_print.h @@ -17,10 +17,10 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ - + // Only allow this file to be included by nvc_memory.h and ocl_memory.h #ifdef UCL_PRINT_ALLOW @@ -40,7 +40,7 @@ template <> struct _ucl_print<1> { } template static inline void p(mat_type &mat, const size_t rows, const size_t cols, - std::ostream &out, const std::string delim, + std::ostream &out, const std::string delim, const std::string row_delim) { int offset=0; int row_size=cols; @@ -58,12 +58,12 @@ template <> struct _ucl_print<1> { } template static inline void p(const mat_type &mat,const size_t rows,const size_t cols, - std::ostream &out,const std::string delim, + std::ostream &out,const std::string delim, const std::string row_delim, UCL_Device &dev) { - p(mat,rows,cols,out,delim,row_delim); + p(mat,rows,cols,out,delim,row_delim); } }; - + template struct _ucl_print { template static inline void p(mat_type &mat, const size_t n, std::ostream &out, @@ -83,7 +83,7 @@ template struct _ucl_print { } template static inline void p(mat_type &mat, const size_t rows, const size_t cols, - std::ostream &out, const std::string delim, + std::ostream &out, const std::string delim, const std::string row_delim) { UCL_H_Vec temp; temp.alloc(mat.rows()*mat.cols(),mat); @@ -91,12 +91,12 @@ template struct _ucl_print { ucl_copy(temp,mat,rows*cols,false); else ucl_copy(temp,mat,rows,cols,false); - _ucl_print<1>::p(temp,rows,cols,out,delim,row_delim); + _ucl_print<1>::p(temp,rows,cols,out,delim,row_delim); } template - static inline void p(const mat_type &mat, const size_t rows, + static inline void p(const mat_type &mat, const size_t rows, const size_t cols,std::ostream &out, - const std::string delim, + const std::string delim, const std::string row_delim, UCL_Device &dev) { UCL_H_Vec temp; temp.alloc(mat.rows()*mat.cols(),dev); @@ -104,9 +104,9 @@ template struct _ucl_print { ucl_copy(temp,mat,rows*cols,false); else ucl_copy(temp,mat,rows,cols,false); - _ucl_print<1>::p(temp,rows,cols,out,delim,row_delim); + _ucl_print<1>::p(temp,rows,cols,out,delim,row_delim); } -}; +}; // ------------------------------------------------------------------------- // - Non-const routines that do not require a device object @@ -123,13 +123,13 @@ inline void ucl_print(mat_type &mat, const size_t n, std::ostream &out, } _ucl_print::p(mat,n,out,delim); } - + /// Outputs n elements of mat delimited by a space template inline void ucl_print(mat_type &mat, const size_t n, std::ostream &out) { ucl_print(mat,n,out," "); } - + /// Outputs n elements of mat delimited by a space to standard out template inline void ucl_print(mat_type &mat, const size_t n) { @@ -139,8 +139,8 @@ inline void ucl_print(mat_type &mat, const size_t n) { /// Outputs upper left rows and cols of mat delimited by the string delim template inline void ucl_print(mat_type &mat, const size_t rows, const size_t cols, - std::ostream &out, const std::string delim, - const std::string row_delim) { + std::ostream &out, const std::string delim, + const std::string row_delim) { if (rows*cols>mat.numel()) { std::cerr << "Attempted to ucl_print " << rows*cols << " elements of matrix " << "that only has " << mat.numel() << " elements."; @@ -148,17 +148,17 @@ inline void ucl_print(mat_type &mat, const size_t rows, const size_t cols, } _ucl_print::p(mat,rows,cols,out,delim,row_delim); } - + /// Outputs upper left rows and cols of mat delimited by a space template inline void ucl_print(mat_type &mat, const size_t rows, const size_t cols, std::ostream &out) { ucl_print(mat,rows,cols,out," ","\n"); } - + /// Outputs upper left rows and cols of mat delimited by a space to std out template -inline void ucl_print(mat_type &mat, const size_t rows, +inline void ucl_print(mat_type &mat, const size_t rows, const size_t cols) { ucl_print(mat,rows,cols,std::cout," ","\n"); } @@ -177,7 +177,7 @@ inline void ucl_print(mat_type &mat, std::ostream &out) { else ucl_print(mat,mat.rows(),mat.cols(),out," ","\n"); } - + // ------------------------------------------------------------------------- // - Const routines that do not require a device object // ------------------------------------------------------------------------- @@ -193,14 +193,14 @@ inline void ucl_print(const mat_type &mat, const size_t n, std::ostream &out, } _ucl_print::p(mat,n,out,delim,dev); } - + /// Outputs n elements of mat delimited by a space template inline void ucl_print(const mat_type &mat, const size_t n, std::ostream &out, UCL_Device &dev) { ucl_print(mat,n,out," ",dev); } - + /// Outputs n elements of mat delimited by a space to standard out template inline void ucl_print(const mat_type &mat, const size_t n, @@ -211,7 +211,7 @@ inline void ucl_print(const mat_type &mat, const size_t n, /// Outputs upper left rows and cols of mat delimited by the string delim template inline void ucl_print(const mat_type &mat,const size_t rows,const size_t cols, - std::ostream &out, const std::string delim, + std::ostream &out, const std::string delim, const std::string row_delim, UCL_Device &dev) { if (rows*cols>mat.numel()) { std::cerr << "Attempted to ucl_print " << rows*cols << " elements of matrix " @@ -220,17 +220,17 @@ inline void ucl_print(const mat_type &mat,const size_t rows,const size_t cols, } _ucl_print::p(mat,rows,cols,out,delim,row_delim,dev); } - + /// Outputs upper left rows and cols of mat delimited by a space template inline void ucl_print(const mat_type &mat,const size_t rows,const size_t cols, std::ostream &out, UCL_Device &dev) { ucl_print(mat,rows,cols,out," ","\n",dev); } - + /// Outputs upper left rows and cols of mat delimited by a space to std out template -inline void ucl_print(const mat_type &mat, const size_t rows, +inline void ucl_print(const mat_type &mat, const size_t rows, const size_t cols, UCL_Device &dev) { ucl_print(mat,rows,cols,std::cout," ","\n",dev); } @@ -256,27 +256,27 @@ inline void ucl_print(const mat_type &mat, std::ostream &out, UCL_Device &dev) { template inline std::ostream & operator << (std::ostream &out, UCL_H_Vec &mat) - { ucl_print(mat,out); return out; } + { ucl_print(mat,out); return out; } template inline std::ostream & operator << (std::ostream &out, UCL_H_Mat &mat) - { ucl_print(mat,out); return out; } + { ucl_print(mat,out); return out; } template inline std::ostream & operator << (std::ostream &out, UCL_D_Vec &mat) - { ucl_print(mat,out); return out; } + { ucl_print(mat,out); return out; } template inline std::ostream & operator << (std::ostream &out, UCL_D_Mat &mat) - { ucl_print(mat,out); return out; } + { ucl_print(mat,out); return out; } template inline std::ostream & operator << (std::ostream &out, UCL_Vector &mat) - { ucl_print(mat.host,out); return out; } + { ucl_print(mat.host,out); return out; } template inline std::ostream & operator << (std::ostream &out, UCL_Matrix &mat) - { ucl_print(mat.host,out); return out; } + { ucl_print(mat.host,out); return out; } #endif diff --git a/lib/gpu/geryon/ucl_s_obj_help.h b/lib/gpu/geryon/ucl_s_obj_help.h index 0b8c0251c1..a10f3cdb3f 100644 --- a/lib/gpu/geryon/ucl_s_obj_help.h +++ b/lib/gpu/geryon/ucl_s_obj_help.h @@ -3,7 +3,7 @@ ------------------- W. Michael Brown - Helper routines for allocating memory for s-objects and performing + Helper routines for allocating memory for s-objects and performing host/device updates. (Different routines depending on whether the same type is used on the host and device). @@ -141,29 +141,29 @@ template <> struct _ucl_s_obj_help<1> { } template - static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, + static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, const bool async) { ucl_copy(dst,src,cols,async); } template - static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, + static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, command_queue &cq) { ucl_copy(dst,src,cols,cq); } template - static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, + static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, t3 &buffer, const bool async) { ucl_copy(dst,src,rows,cols,async); } template - static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, + static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, t3 &buffer, command_queue &cq) { ucl_copy(dst,src,rows,cols,cq); } - + template static inline int dev_resize(t1 &device, t2 &host, t3 &buff,const int cols) { if (device.kind()==UCL_VIEW) { @@ -181,7 +181,7 @@ template <> struct _ucl_s_obj_help<1> { } template - static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, + static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, const int cols) { if (device.kind()==UCL_VIEW) { device.view(host); @@ -255,7 +255,7 @@ template struct _ucl_s_obj_help { e1=_buffer.alloc(cols,cq,kind1); if (e1!=UCL_SUCCESS) return e1; - return device.alloc(cols,cq,kind2); + return device.alloc(cols,cq,kind2); } } @@ -314,7 +314,7 @@ template struct _ucl_s_obj_help { e1=_buffer.alloc(rows,cols,cq,kind1); if (e1!=UCL_SUCCESS) return e1; - return device.alloc(rows,cols,cq,kind2); + return device.alloc(rows,cols,cq,kind2); } } @@ -329,25 +329,25 @@ template struct _ucl_s_obj_help { } template - static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, + static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, const bool async) { ucl_cast_copy(dst,src,cols,buffer,async); } template - static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, + static inline void copy(t1 &dst, t2 &src, const int cols, t3 &buffer, command_queue &cq) { ucl_cast_copy(dst,src,cols,buffer,cq); } - + template - static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, + static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, t3 &buffer, const bool async) { ucl_cast_copy(dst,src,rows,cols,buffer,async); } template - static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, + static inline void copy(t1 &dst, t2 &src, const int rows, const int cols, t3 &buffer, command_queue &cq) { ucl_cast_copy(dst,src,rows,cols,buffer,cq); } @@ -373,7 +373,7 @@ template struct _ucl_s_obj_help { } template - static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, + static inline int dev_resize(t1 &device, t2 &host, t3 &buff, const int rows, const int cols) { int err=buff.resize(rows,cols); if (err!=UCL_SUCCESS) diff --git a/lib/gpu/geryon/ucl_types.h b/lib/gpu/geryon/ucl_types.h index 46be4bcb06..cb3dce8430 100644 --- a/lib/gpu/geryon/ucl_types.h +++ b/lib/gpu/geryon/ucl_types.h @@ -17,7 +17,7 @@ /* ----------------------------------------------------------------------- Copyright (2010) 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 + certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ @@ -26,65 +26,65 @@ // Assign an integer id based on the data type: (int, float, double, etc) template struct _UCL_DATA_ID; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=1 }; - static inline const char * name() { return "double"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=double"; } + static inline const char * name() { return "double"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=double"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=2 }; - static inline const char * name() { return "float"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=float"; } + static inline const char * name() { return "float"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=float"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=3 }; - static inline const char * name() { return "unsigned"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned"; } + static inline const char * name() { return "unsigned"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=4 }; - static inline const char * name() { return "int"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=int"; } + static inline const char * name() { return "int"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=int"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=5 }; - static inline const char * name() { return "char"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=char"; } + static inline const char * name() { return "char"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=char"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=6 }; - static inline const char * name() { return "unsigned char"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned char"; } + static inline const char * name() { return "unsigned char"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned char"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=7 }; - static inline const char * name() { return "short"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=short"; } + static inline const char * name() { return "short"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=short"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=8 }; - static inline const char * name() { return "unsigned short"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned short"; } + static inline const char * name() { return "unsigned short"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned short"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=9 }; - static inline const char * name() { return "long"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=long"; } + static inline const char * name() { return "long"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=long"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=10 }; - static inline const char * name() { return "unsigned long"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned long"; } + static inline const char * name() { return "unsigned long"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=unsigned long"; } }; -template <> struct _UCL_DATA_ID { +template <> struct _UCL_DATA_ID { enum { id=11 }; - static inline const char * name() { return "long double"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=long double"; } + static inline const char * name() { return "long double"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=long double"; } }; -template struct _UCL_DATA_ID { +template struct _UCL_DATA_ID { enum { id=0 }; - static inline const char * name() { return "error_type"; } - static inline const char * numtyp_flag() { return "-D NUMTYP=error_type"; } + static inline const char * name() { return "error_type"; } + static inline const char * numtyp_flag() { return "-D NUMTYP=error_type"; } }; // Host memory allocation types @@ -97,7 +97,7 @@ enum UCL_MEMOPT { UCL_NOT_SPECIFIED }; -enum UCL_DEVICE_TYPE { +enum UCL_DEVICE_TYPE { UCL_DEFAULT, ///< Unknown device type UCL_CPU, ///< Device is a CPU UCL_GPU, ///< Device is a GPU @@ -111,7 +111,7 @@ enum UCL_ERROR_FLAG { UCL_FUNCTION_NOT_FOUND, ///< Kernel function not found UCL_COMPILE_ERROR, ///< Error compiling kernel UCL_MEMORY_ERROR -}; +}; template const char * ucl_template_name() { return _UCL_DATA_ID::name(); } diff --git a/lib/gpu/geryon/ucl_vector.h b/lib/gpu/geryon/ucl_vector.h index 89f1528969..7fe2604de6 100644 --- a/lib/gpu/geryon/ucl_vector.h +++ b/lib/gpu/geryon/ucl_vector.h @@ -34,25 +34,25 @@ class UCL_Vector { ROW_MAJOR = 1, VECTOR = 1 }; - typedef hosttype data_type; + typedef hosttype data_type; /// Host Allocation UCL_H_Vec host; - + /// Device Allocation UCL_D_Vec device; - + UCL_Vector() { } ~UCL_Vector() { } /// Construct with n columns /** \sa alloc() **/ - UCL_Vector(const size_t cols, UCL_Device &acc, + UCL_Vector(const size_t cols, UCL_Device &acc, const enum UCL_MEMOPT kind1=UCL_READ_WRITE, const enum UCL_MEMOPT kind2=UCL_READ_WRITE) { _ucl_s_obj_help< ucl_same_type::ans >:: alloc(host,device,_buffer,cols,acc,kind1,kind2); } - + /// Set up the vector with 'cols' columns and reserve memory /** The kind1 parameter controls memory access from the host * - UCL_READ_WRITE - Specify that you will read and write from host @@ -89,12 +89,12 @@ class UCL_Vector { * \return UCL_SUCCESS if the memory allocation is successful **/ inline int alloc(const size_t cols, UCL_Device &acc, const enum UCL_MEMOPT kind1=UCL_READ_WRITE, - const enum UCL_MEMOPT kind2=UCL_READ_WRITE) + const enum UCL_MEMOPT kind2=UCL_READ_WRITE) { return _ucl_s_obj_help< ucl_same_type::ans >:: alloc(host,device,_buffer,cols,acc,kind1,kind2); } - + /// Free memory and set size to 0 - inline void clear() + inline void clear() { host.clear(); device.clear(); } /// Resize the allocation to contain cols elements @@ -106,7 +106,7 @@ class UCL_Vector { return _ucl_s_obj_help< ucl_same_type::ans >:: dev_resize(device,host,_buffer,cols); } - + /// Resize (only if bigger) the allocation to contain cols elements inline int resize_ib(const int new_cols) { if (new_cols>cols()) return resize(new_cols); else return UCL_SUCCESS; } @@ -117,14 +117,14 @@ class UCL_Vector { inline void zero(const int n) { zero(n,cq()); } /// Set each element to zero (asynchronously on device) inline void zero(command_queue &cq) { - host.zero(); + host.zero(); if (device.kind()!=UCL_VIEW) device.zero(cq); else if (_buffer.numel()>0) _buffer.zero(); } /// Set first n elements to zero (asynchronously on device) - inline void zero(const int n, command_queue &cq) { - host.zero(n); - if (device.kind()!=UCL_VIEW) device.zero(n,cq); + inline void zero(const int n, command_queue &cq) { + host.zero(n); + if (device.kind()!=UCL_VIEW) device.zero(n,cq); else if (_buffer.numel()>0) _buffer.zero(); } @@ -135,27 +135,27 @@ class UCL_Vector { /// Get the number of columns inline size_t cols() const { return host.cols(); } /// Get the memory usage (bytes) of the s-object (including any buffers) - inline size_t host_mem_usage() + inline size_t host_mem_usage() { return host.row_bytes()+_buffer.row_bytes(); } /// Get the memory usage (bytes) of the s-object (including any buffers) - inline size_t device_mem_usage() + inline size_t device_mem_usage() { return device.row_bytes(); } - - + + /// Get element at index i inline hosttype & operator[](const int i) { return host[i]; } /// Get element at index i inline const hosttype & operator[](const int i) const { return host[i]; } - /// 2D access (row should always be 0) - inline hosttype & operator()(const int row, const int col) + /// 2D access (row should always be 0) + inline hosttype & operator()(const int row, const int col) { return host[col]; } - /// 2D access (row should always be 0) + /// 2D access (row should always be 0) inline const hosttype & operator()(const int row, const int col) const { return host[col]; } - + /// Returns pointer to memory pointer for allocation on host inline hosttype ** host_ptr() { return host.host_ptr(); } - + /// Return the default command queue/stream associated with this data inline command_queue & cq() { return host.cq(); } /// Change the default command queue associated with this data @@ -172,7 +172,7 @@ class UCL_Vector { /// Update the allocation on the host asynchronously - inline void update_host() + inline void update_host() { _ucl_s_obj_help< ucl_same_type::ans >:: copy(host,device,_buffer,true); } /// Update the allocation on the host (true for asynchronous copy) @@ -202,7 +202,7 @@ class UCL_Vector { /// Update the allocation on the device asynchronously - inline void update_device() + inline void update_device() { _ucl_s_obj_help< ucl_same_type::ans >:: copy(device,host,_buffer,true); } /// Update the allocation on the device (true for asynchronous copy) diff --git a/lib/gpu/lal_answer.cpp b/lib/gpu/lal_answer.cpp index dd0b5d2424..bd8c7ef843 100644 --- a/lib/gpu/lal_answer.cpp +++ b/lib/gpu/lal_answer.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -24,7 +24,7 @@ AnswerT::Answer() : _allocated(false),_eflag(false),_vflag(false), } template -int AnswerT::bytes_per_atom() const { +int AnswerT::bytes_per_atom() const { int bytes=11*sizeof(acctyp); if (_rot) bytes+=4*sizeof(acctyp); @@ -38,19 +38,19 @@ bool AnswerT::alloc(const int inum) { _max_local=static_cast(static_cast(inum)*1.10); bool success=true; - + _ans_fields=4; if (_rot) _ans_fields+=4; - + // --------------------------- Device allocations success=success && (engv.alloc(_ev_fields*_max_local,*dev,UCL_READ_ONLY, UCL_READ_WRITE)==UCL_SUCCESS); success=success && (force.alloc(_ans_fields*_max_local,*dev,UCL_READ_ONLY, UCL_READ_WRITE)==UCL_SUCCESS); _gpu_bytes=engv.device.row_bytes()+force.device.row_bytes(); - - _allocated=true; + + _allocated=true; return success; } @@ -69,21 +69,21 @@ bool AnswerT::init(const int inum, const bool charge, const bool rot, if (_charge) _e_fields++; _ev_fields=6+_e_fields; - + // Initialize atom and nbor data int ef_inum=inum; if (ef_inum==0) ef_inum=1000; - + // Initialize timers for the selected device time_answer.init(*dev); time_answer.zero(); _time_cast=0.0; _time_cpu_idle=0.0; - + return success && alloc(ef_inum); } - + template bool AnswerT::add_fields(const bool charge, const bool rot) { bool realloc=false; @@ -127,15 +127,15 @@ void AnswerT::clear() { template double AnswerT::host_memory_usage() const { int atom_bytes=4; - if (_charge) + if (_charge) atom_bytes+=1; - if (_rot) + if (_rot) atom_bytes+=4; int ans_bytes=atom_bytes+_ev_fields; return ans_bytes*(_max_local)*sizeof(acctyp)+ sizeof(Answer); } - + template void AnswerT::copy_answers(const bool eflag, const bool vflag, const bool ef_atom, const bool vf_atom) { @@ -144,8 +144,8 @@ void AnswerT::copy_answers(const bool eflag, const bool vflag, _vflag=vflag; _ef_atom=ef_atom; _vf_atom=vf_atom; - - int csize=_ev_fields; + + int csize=_ev_fields; if (!eflag) csize-=_e_fields; if (!vflag) @@ -180,7 +180,7 @@ double AnswerT::energy_virial(double *eatom, double **vatom, for (int i=0; i<_inum; i++) evdwl+=engv[i]; if (_ef_atom) - if (_ilist==NULL) + if (_ilist==NULL) for (int i=0; i<_inum; i++) eatom[i]+=engv[i]; else @@ -196,18 +196,18 @@ double AnswerT::energy_virial(double *eatom, double **vatom, if (_vf_atom) if (_ilist==NULL) { int ii=0; - for (int i=vstart; i -int AtomT::bytes_per_atom() const { +int AtomT::bytes_per_atom() const { int id_space=0; if (_gpu_nbor==1) id_space=2; @@ -51,7 +51,7 @@ bool AtomT::alloc(const int nall) { _max_atoms=static_cast(static_cast(nall)*1.10); bool success=true; - + // Ignore host/device transfers? _host_view=false; if (dev->shared_memory() && sizeof(numtyp)==sizeof(double)) { @@ -60,11 +60,11 @@ bool AtomT::alloc(const int nall) { assert(0==1); #endif } - + // Allocate storage for CUDPP sort #ifdef USE_CUDPP if (_gpu_nbor==1) { - CUDPPResult result = cudppPlan(&sort_plan, sort_config, _max_atoms, 1, 0); + CUDPPResult result = cudppPlan(&sort_plan, sort_config, _max_atoms, 1, 0); if (CUDPP_SUCCESS != result) return false; } @@ -110,7 +110,7 @@ bool AtomT::alloc(const int nall) { } else { success=success && (host_particle_id.alloc(_max_atoms,*dev, UCL_WRITE_ONLY)==UCL_SUCCESS); - success=success && + success=success && (host_cell_id.alloc(_max_atoms,*dev,UCL_NOT_PINNED)==UCL_SUCCESS); } if (_gpu_nbor==2 && _host_view) @@ -124,8 +124,8 @@ bool AtomT::alloc(const int nall) { gpu_bytes+=x.device.row_bytes(); if (gpu_bytes>_max_gpu_bytes) _max_gpu_bytes=gpu_bytes; - - _allocated=true; + + _allocated=true; return success; } @@ -135,7 +135,7 @@ bool AtomT::add_fields(const bool charge, const bool rot, bool success=true; // Ignore host/device transfers? int gpu_bytes=0; - + if (charge && _charge==false) { _charge=true; _other=true; @@ -179,7 +179,7 @@ bool AtomT::add_fields(const bool charge, const bool rot, _gpu_nbor=gpu_nbor; #ifdef USE_CUDPP if (_gpu_nbor==1) { - CUDPPResult result = cudppPlan(&sort_plan, sort_config, _max_atoms, 1, 0); + CUDPPResult result = cudppPlan(&sort_plan, sort_config, _max_atoms, 1, 0); if (CUDPP_SUCCESS != result) return false; } @@ -198,9 +198,9 @@ bool AtomT::add_fields(const bool charge, const bool rot, } else { success=success && (host_particle_id.alloc(_max_atoms,*dev, UCL_WRITE_ONLY)==UCL_SUCCESS); - success=success && + success=success && (host_cell_id.alloc(_max_atoms,*dev,UCL_NOT_PINNED)==UCL_SUCCESS); - } + } } return success; @@ -230,7 +230,7 @@ bool AtomT::init(const int nall, const bool charge, const bool rot, int ef_nall=nall; if (ef_nall==0) ef_nall=2000; - + // Initialize timers for the selected device time_pos.init(*dev); time_q.init(*dev); @@ -241,14 +241,14 @@ bool AtomT::init(const int nall, const bool charge, const bool rot, time_quat.zero(); time_vel.zero(); _time_cast=0.0; - + #ifdef GPU_CAST compile_kernels(*dev); #endif - + return success && alloc(ef_nall); } - + template void AtomT::clear_resize() { if (!_allocated) @@ -274,7 +274,7 @@ void AtomT::clear_resize() { #ifdef USE_CUDPP if (_gpu_nbor==1) cudppDestroyPlan(sort_plan); #endif - + if (_gpu_nbor==2) { host_particle_id.clear(); host_cell_id.clear(); @@ -305,21 +305,21 @@ void AtomT::clear() { template double AtomT::host_memory_usage() const { int atom_bytes=4; - if (_charge) + if (_charge) atom_bytes+=1; - if (_rot) + if (_rot) atom_bytes+=4; - if (_vel) + if (_vel) atom_bytes+=4; return _max_atoms*atom_bytes*sizeof(numtyp)+sizeof(Atom); } - + // Sort arrays for neighbor list calculation template void AtomT::sort_neighbor(const int num_atoms) { #ifdef USE_CUDPP - CUDPPResult result = cudppSort(sort_plan, (unsigned *)dev_cell_id.begin(), - (int *)dev_particle_id.begin(), + CUDPPResult result = cudppSort(sort_plan, (unsigned *)dev_cell_id.begin(), + (int *)dev_particle_id.begin(), 8*sizeof(unsigned), num_atoms); if (CUDPP_SUCCESS != result) { printf("Error in cudppSort\n"); diff --git a/lib/gpu/lal_atom.cu b/lib/gpu/lal_atom.cu index 2a78719ffb..28ff31c566 100644 --- a/lib/gpu/lal_atom.cu +++ b/lib/gpu/lal_atom.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -17,9 +17,9 @@ #include "lal_preprocessor.h" #endif -__kernel void kernel_cast_x(__global numtyp4 *restrict x_type, +__kernel void kernel_cast_x(__global numtyp4 *restrict x_type, const __global double *restrict x, - const __global int *restrict type, + const __global int *restrict type, const int nall) { int ii=GLOBAL_ID_X; diff --git a/lib/gpu/lal_atom.h b/lib/gpu/lal_atom.h index 23112fe712..1b4e17d972 100644 --- a/lib/gpu/lal_atom.h +++ b/lib/gpu/lal_atom.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -57,19 +57,19 @@ class Atom { /// Set number of local+ghost atoms for future copy operations inline void nall(const int n) { _nall=n; } - + /// Memory usage per atom in this class - int bytes_per_atom() const; + int bytes_per_atom() const; /// Clear any previous data and set up for a new LAMMPS run /** \param rot True if atom storage needs quaternions * \param gpu_nbor 0 if neighboring will be performed on host * gpu_nbor 1 if neighboring will be performed on device * gpu_nbor 2 if binning on host and neighboring on device **/ - bool init(const int nall, const bool charge, const bool rot, - UCL_Device &dev, const int gpu_nbor=0, const bool bonds=false, + bool init(const int nall, const bool charge, const bool rot, + UCL_Device &dev, const int gpu_nbor=0, const bool bonds=false, const bool vel=false); - + /// Check if we have enough device storage and realloc if not /** Returns true if resized with any call during this timestep **/ inline bool resize(const int nall, bool &success) { @@ -81,7 +81,7 @@ class Atom { } return _resized; } - + /// If already initialized by another LAMMPS style, add fields as necessary /** \param rot True if atom storage needs quaternions * \param gpu_nbor 0 if neighboring will be performed on host @@ -89,28 +89,28 @@ class Atom { * gpu_nbor 2 if binning on host and neighboring on device **/ bool add_fields(const bool charge, const bool rot, const int gpu_nbor, const bool bonds, const bool vel=false); - + /// Returns true if GPU is using charges bool charge() { return _charge; } - + /// Returns true if GPU is using quaternions bool quaternion() { return _rot; } - + /// Returns true if GPU is using velocities bool velocity() { return _vel; } /// Only free matrices of length inum or nall for resizing void clear_resize(); - + /// Free all memory on host and device void clear(); - + /// Return the total amount of host memory used by class in bytes double host_memory_usage() const; /// Sort arrays for neighbor list calculation on device void sort_neighbor(const int num_atoms); - + /// Add copy times to timers inline void acc_timers() { time_pos.add_to_total(); @@ -150,18 +150,18 @@ class Atom { total+=time_vel.total_seconds(); time_vel.zero_total(); } - + return total+_time_transfer/1000.0; } - + /// Return the total time for data cast/pack /** Zeros the time so that atom times are only included once **/ - inline double cast_time() + inline double cast_time() { double t=_time_cast; _time_cast=0.0; return t; } /// Pack LAMMPS atom type constants into matrix and copy to device template - inline void type_pack1(const int n, const int m_size, + inline void type_pack1(const int n, const int m_size, UCL_D_Vec &dev_v, UCL_H_Vec &buffer, t1 **one) { int ii=0; @@ -215,7 +215,7 @@ class Atom { view.view((dev_typ*)buffer.begin(),m_size*m_size,*dev); ucl_copy(dev_v,view,false); } - + /// Pack LAMMPS atom type constants (4) into 4 vectors and copy to device template inline void type_pack4(const int n, const int m_size, @@ -239,7 +239,7 @@ class Atom { /// Pack LAMMPS atom "self" type constants into 2 vectors and copy to device template - inline void self_pack2(const int n, UCL_D_Vec &dev_v, + inline void self_pack2(const int n, UCL_D_Vec &dev_v, UCL_H_Vec &buffer, t1 **one, t2 **two) { for (int i=0; i(one[i][i]); @@ -279,7 +279,7 @@ class Atom { /// Copy positions and types to device asynchronously /** Copies nall() elements **/ - inline void add_x_data(double **host_ptr, int *host_type) { + inline void add_x_data(double **host_ptr, int *host_type) { time_pos.start(); if (_x_avail==false) { #ifdef GPU_CAST @@ -376,7 +376,7 @@ class Atom { /// Copy velocities and tags to device asynchronously /** Copies nall() elements **/ - inline void add_v_data(double **host_ptr, tagint *host_tag) { + inline void add_v_data(double **host_ptr, tagint *host_tag) { time_vel.start(); if (_v_avail==false) { #ifdef GPU_CAST @@ -407,8 +407,8 @@ class Atom { inline void add_transfer_time(double t) { _time_transfer+=t; } /// Return number of bytes used on device - inline double max_gpu_bytes() - { double m=_max_gpu_bytes; _max_gpu_bytes=0.0; return m; } + inline double max_gpu_bytes() + { double m=_max_gpu_bytes; _max_gpu_bytes=0.0; return m; } /// Returns true if the device is addressing memory on the host inline bool host_view() { return _host_view; } @@ -422,7 +422,7 @@ class Atom { /// Quaterions UCL_Vector quat; /// Velocities - UCL_Vector v; + UCL_Vector v; #ifdef GPU_CAST UCL_Vector x_cast; @@ -436,7 +436,7 @@ class Atom { /// Atom tag information for device nbor builds UCL_D_Vec dev_tag; - + /// Cell list identifiers for hybrid nbor builds UCL_H_Vec host_cell_id; /// Cell list identifiers for hybrid nbor builds @@ -444,7 +444,7 @@ class Atom { /// Device timers UCL_Timer time_pos, time_q, time_quat, time_vel; - + /// Geryon device UCL_Device *dev; @@ -456,19 +456,19 @@ class Atom { #endif bool _compiled; - + // True if data has been copied to device already bool _x_avail, _q_avail, _quat_avail, _v_avail, _resized; bool alloc(const int nall); - + bool _allocated, _rot, _charge, _bonds, _vel, _other; int _max_atoms, _nall, _gpu_nbor; bool _host_view; double _time_cast, _time_transfer; - + double _max_gpu_bytes; - + #ifdef USE_CUDPP CUDPPConfiguration sort_config; CUDPPHandle sort_plan; diff --git a/lib/gpu/lal_balance.h b/lib/gpu/lal_balance.h index cf09cf86fb..e90e94bee1 100644 --- a/lib/gpu/lal_balance.h +++ b/lib/gpu/lal_balance.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -44,7 +44,7 @@ class Balance { _init_done=false; } } - + /// Return the timestep since initialization inline int timestep() { return _timestep; } @@ -96,7 +96,7 @@ class Balance { inline void stop_timer() { if (_measure_this_step) { _device_time.stop(); } } /// Calculate the new host/device split based on the cpu and device times - /** \note Only does calculation every _HD_BALANCE_EVERY timesteps + /** \note Only does calculation every _HD_BALANCE_EVERY timesteps (and first 10) **/ inline void balance(const double cpu_time); @@ -105,13 +105,13 @@ class Balance { balance(cpu_time); return get_gpu_count(ago,inum_full); } - + private: Device *_device; UCL_Timer _device_time; bool _init_done; int _gpu_nbor; - + bool _load_balance; double _actual_split, _avg_split, _desired_split, _max_split; int _avg_count; @@ -123,15 +123,15 @@ class Balance { #define BalanceT Balance template -void BalanceT::init(Device *gpu, +void BalanceT::init(Device *gpu, const int gpu_nbor, const double split) { clear(); _gpu_nbor=gpu_nbor; _init_done=true; - + _device=gpu; _device_time.init(*gpu->gpu); - + if (split<0.0) { _load_balance=true; _desired_split=0.90; @@ -163,7 +163,7 @@ int BalanceT::get_gpu_count(const int ago, const int inum_full) { _timestep++; return _inum; } - + template void BalanceT::balance(const double cpu_time) { if (_measure_this_step) { diff --git a/lib/gpu/lal_base_atomic.cpp b/lib/gpu/lal_base_atomic.cpp index 191f218bd8..e59dae1a6f 100644 --- a/lib/gpu/lal_base_atomic.cpp +++ b/lib/gpu/lal_base_atomic.cpp @@ -9,10 +9,10 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ - + #include "lal_base_atomic.h" using namespace LAMMPS_AL; #define BaseAtomicT BaseAtomic @@ -63,13 +63,13 @@ int BaseAtomicT::init_atomic(const int nlocal, const int nall, _nbor_data=&(nbor->dev_packed); } else _nbor_data=&(nbor->dev_nbor); - + int success=device->init(*ans,false,false,nlocal,host_nlocal,nall,nbor, maxspecial,_gpu_host,max_nbors,cell_size,false, _threads_per_atom); if (success!=0) return success; - + ucl_device=device->gpu; atom=&device->atom; @@ -139,7 +139,7 @@ int * BaseAtomicT::reset_nbors(const int nall, const int inum, int *ilist, double bytes=ans->gpu_bytes()+nbor->gpu_bytes(); if (bytes>_max_an_bytes) _max_an_bytes=bytes; - + return ilist; } @@ -188,7 +188,7 @@ void BaseAtomicT::compute(const int f_ago, const int inum_full, zero_timers(); return; } - + int ago=hd_balancer.ago_first(f_ago); int inum=hd_balancer.balance(ago,inum_full,cpu_time); ans->inum(inum); @@ -217,7 +217,7 @@ template int ** BaseAtomicT::compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, - int **nspecial, tagint **special, const bool eflag, + int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, @@ -230,12 +230,12 @@ int ** BaseAtomicT::compute(const int ago, const int inum_full, zero_timers(); return NULL; } - + hd_balancer.balance(cpu_time); int inum=hd_balancer.get_gpu_count(ago,inum_full); ans->inum(inum); host_start=inum; - + // Build neighbor list on GPU if necessary if (ago==0) { build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, @@ -255,7 +255,7 @@ int ** BaseAtomicT::compute(const int ago, const int inum_full, ans->copy_answers(eflag,vflag,eatom,vatom); device->add_ans_object(ans); hd_balancer.stop_timer(); - + return nbor->host_jlist.begin()-host_start; } diff --git a/lib/gpu/lal_base_atomic.h b/lib/gpu/lal_base_atomic.h index eaf55f46e2..e3e9829abc 100644 --- a/lib/gpu/lal_base_atomic.h +++ b/lib/gpu/lal_base_atomic.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -41,7 +41,7 @@ class BaseAtomic { * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device * \param k_name name for the kernel for force calculation - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -49,8 +49,8 @@ class BaseAtomic { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init_atomic(const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, - const double gpu_split, FILE *screen, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, const void *pair_program, const char *k_name); /// Estimate the overhead for GPU context changes and CPU driver @@ -80,7 +80,7 @@ class BaseAtomic { * \note host_inum is 0 if the host is performing neighboring * \note nlocal+host_inum=total number local particles * \note olist_size=0 **/ - inline void resize_local(const int inum, const int host_inum, + inline void resize_local(const int inum, const int host_inum, const int max_nbors, bool &success) { nbor->resize(inum,host_inum,max_nbors,success); } @@ -119,7 +119,7 @@ class BaseAtomic { /// Build neighbor list on device void build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success); /// Pair loop with host neighboring @@ -133,19 +133,19 @@ class BaseAtomic { int * compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success); /// Pair loop with device neighboring int ** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success); - // -------------------------- DEVICE DATA ------------------------- + // -------------------------- DEVICE DATA ------------------------- /// Device Properties and Atom and Neighbor storage Device *device; diff --git a/lib/gpu/lal_base_charge.cpp b/lib/gpu/lal_base_charge.cpp index e7fe2b62f4..c6341f7d57 100644 --- a/lib/gpu/lal_base_charge.cpp +++ b/lib/gpu/lal_base_charge.cpp @@ -10,7 +10,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -64,7 +64,7 @@ int BaseChargeT::init_atomic(const int nlocal, const int nall, _nbor_data=&(nbor->dev_packed); } else _nbor_data=&(nbor->dev_nbor); - + int success=device->init(*ans,true,false,nlocal,host_nlocal,nall,nbor, maxspecial,_gpu_host,max_nbors,cell_size,false, _threads_per_atom); @@ -153,7 +153,7 @@ template inline void BaseChargeT::build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, + double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success) { success=true; @@ -192,7 +192,7 @@ void BaseChargeT::compute(const int f_ago, const int inum_full, zero_timers(); return; } - + int ago=hd_balancer.ago_first(f_ago); int inum=hd_balancer.balance(ago,inum_full,cpu_time); ans->inum(inum); @@ -226,7 +226,7 @@ template int** BaseChargeT::compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, - int **nspecial, tagint **special, const bool eflag, + int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, @@ -240,12 +240,12 @@ int** BaseChargeT::compute(const int ago, const int inum_full, zero_timers(); return NULL; } - + hd_balancer.balance(cpu_time); int inum=hd_balancer.get_gpu_count(ago,inum_full); ans->inum(inum); host_start=inum; - + // Build neighbor list on GPU if necessary if (ago==0) { build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, @@ -271,7 +271,7 @@ int** BaseChargeT::compute(const int ago, const int inum_full, ans->copy_answers(eflag,vflag,eatom,vatom); device->add_ans_object(ans); hd_balancer.stop_timer(); - + return nbor->host_jlist.begin()-host_start; } diff --git a/lib/gpu/lal_base_charge.h b/lib/gpu/lal_base_charge.h index e791507432..64c19554b9 100644 --- a/lib/gpu/lal_base_charge.h +++ b/lib/gpu/lal_base_charge.h @@ -10,7 +10,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -42,7 +42,7 @@ class BaseCharge { * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device * \param k_name name for the kernel for force calculation - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -83,7 +83,7 @@ class BaseCharge { * \note host_inum is 0 if the host is performing neighboring * \note nlocal+host_inum=total number local particles * \note olist_size=0 **/ - inline void resize_local(const int inum, const int host_inum, + inline void resize_local(const int inum, const int host_inum, const int max_nbors, bool &success) { nbor->resize(inum,host_inum,max_nbors,success); } @@ -137,12 +137,12 @@ class BaseCharge { int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, double *charge, double *boxlo, double *prd); - // -------------------------- DEVICE DATA ------------------------- + // -------------------------- DEVICE DATA ------------------------- /// Device Properties and Atom and Neighbor storage Device *device; diff --git a/lib/gpu/lal_base_dipole.cpp b/lib/gpu/lal_base_dipole.cpp index 12e3b20d96..478f0092c7 100644 --- a/lib/gpu/lal_base_dipole.cpp +++ b/lib/gpu/lal_base_dipole.cpp @@ -10,7 +10,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -65,7 +65,7 @@ int BaseDipoleT::init_atomic(const int nlocal, const int nall, _nbor_data=&(nbor->dev_packed); } else _nbor_data=&(nbor->dev_nbor); - + int success=device->init(*ans,true,true,nlocal,host_nlocal,nall,nbor, maxspecial,_gpu_host,max_nbors,cell_size,false, _threads_per_atom); @@ -155,7 +155,7 @@ template inline void BaseDipoleT::build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, + double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success) { success=true; @@ -194,7 +194,7 @@ void BaseDipoleT::compute(const int f_ago, const int inum_full, zero_timers(); return; } - + int ago=hd_balancer.ago_first(f_ago); int inum=hd_balancer.balance(ago,inum_full,cpu_time); ans->inum(inum); @@ -230,12 +230,12 @@ template int** BaseDipoleT::compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, - int **nspecial, tagint **special, const bool eflag, + int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, - double *host_q, double **host_mu, + double *host_q, double **host_mu, double *boxlo, double *prd) { acc_timers(); if (inum_full==0) { @@ -245,12 +245,12 @@ int** BaseDipoleT::compute(const int ago, const int inum_full, zero_timers(); return NULL; } - + hd_balancer.balance(cpu_time); int inum=hd_balancer.get_gpu_count(ago,inum_full); ans->inum(inum); host_start=inum; - + // Build neighbor list on GPU if necessary if (ago==0) { build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, @@ -279,7 +279,7 @@ int** BaseDipoleT::compute(const int ago, const int inum_full, ans->copy_answers(eflag,vflag,eatom,vatom); device->add_ans_object(ans); hd_balancer.stop_timer(); - + return nbor->host_jlist.begin()-host_start; } diff --git a/lib/gpu/lal_base_dipole.h b/lib/gpu/lal_base_dipole.h index 2e495c8747..b51c4303cf 100644 --- a/lib/gpu/lal_base_dipole.h +++ b/lib/gpu/lal_base_dipole.h @@ -10,7 +10,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -40,7 +40,7 @@ class BaseDipole { * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device * \param k_name name for the kernel for force calculation - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -82,7 +82,7 @@ class BaseDipole { * \note host_inum is 0 if the host is performing neighboring * \note nlocal+host_inum=total number local particles * \note olist_size=0 **/ - inline void resize_local(const int inum, const int host_inum, + inline void resize_local(const int inum, const int host_inum, const int max_nbors, bool &success) { nbor->resize(inum,host_inum,max_nbors,success); } @@ -136,12 +136,12 @@ class BaseDipole { int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, double *charge, double **mu, double *boxlo, double *prd); - // -------------------------- DEVICE DATA ------------------------- + // -------------------------- DEVICE DATA ------------------------- /// Device Properties and Atom and Neighbor storage Device *device; diff --git a/lib/gpu/lal_base_dpd.cpp b/lib/gpu/lal_base_dpd.cpp index 0efb68a9fb..941f463b14 100644 --- a/lib/gpu/lal_base_dpd.cpp +++ b/lib/gpu/lal_base_dpd.cpp @@ -64,7 +64,7 @@ int BaseDPDT::init_atomic(const int nlocal, const int nall, _nbor_data=&(nbor->dev_packed); } else _nbor_data=&(nbor->dev_nbor); - + int success=device->init(*ans,false,false,nlocal,host_nlocal,nall,nbor, maxspecial,_gpu_host,max_nbors,cell_size,false, _threads_per_atom,true); @@ -153,7 +153,7 @@ template inline void BaseDPDT::build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, + double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success) { success=true; @@ -182,7 +182,7 @@ void BaseDPDT::compute(const int f_ago, const int inum_full, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, - bool &success, tagint *tag, double **host_v, + bool &success, tagint *tag, double **host_v, const double dtinvsqrt, const int seed, const int timestep, const int nlocal, double *boxlo, double *prd) { acc_timers(); @@ -193,7 +193,7 @@ void BaseDPDT::compute(const int f_ago, const int inum_full, zero_timers(); return; } - + int ago=hd_balancer.ago_first(f_ago); int inum=hd_balancer.balance(ago,inum_full,cpu_time); ans->inum(inum); @@ -228,12 +228,12 @@ template int** BaseDPDT::compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, - int **nspecial, tagint **special, const bool eflag, + int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, - double **host_v, const double dtinvsqrt, + double **host_v, const double dtinvsqrt, const int seed, const int timestep, double *boxlo, double *prd) { acc_timers(); @@ -244,12 +244,12 @@ int** BaseDPDT::compute(const int ago, const int inum_full, zero_timers(); return NULL; } - + hd_balancer.balance(cpu_time); int inum=hd_balancer.get_gpu_count(ago,inum_full); ans->inum(inum); host_start=inum; - + // Build neighbor list on GPU if necessary if (ago==0) { build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, @@ -276,7 +276,7 @@ int** BaseDPDT::compute(const int ago, const int inum_full, ans->copy_answers(eflag,vflag,eatom,vatom); device->add_ans_object(ans); hd_balancer.stop_timer(); - + return nbor->host_jlist.begin()-host_start; } diff --git a/lib/gpu/lal_base_dpd.h b/lib/gpu/lal_base_dpd.h index 97640ed40e..7a75282d0a 100644 --- a/lib/gpu/lal_base_dpd.h +++ b/lib/gpu/lal_base_dpd.h @@ -40,7 +40,7 @@ class BaseDPD { * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device * \param k_name name for the kernel for force calculation - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -81,7 +81,7 @@ class BaseDPD { * \note host_inum is 0 if the host is performing neighboring * \note nlocal+host_inum=total number local particles * \note olist_size=0 **/ - inline void resize_local(const int inum, const int host_inum, + inline void resize_local(const int inum, const int host_inum, const int max_nbors, bool &success) { nbor->resize(inum,host_inum,max_nbors,success); } @@ -129,20 +129,20 @@ class BaseDPD { int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *tag, - double **v, const double dtinvsqrt, const int seed, + double **v, const double dtinvsqrt, const int seed, const int timestep, const int nlocal, double *boxlo, double *prd); /// Pair loop with device neighboring int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, double **v, const double dtinvsqrt, const int seed, const int timestep, double *boxlo, double *prd); - // -------------------------- DEVICE DATA ------------------------- + // -------------------------- DEVICE DATA ------------------------- /// Device Properties and Atom and Neighbor storage Device *device; diff --git a/lib/gpu/lal_base_ellipsoid.cpp b/lib/gpu/lal_base_ellipsoid.cpp index 4200c02e1c..8918a3140c 100644 --- a/lib/gpu/lal_base_ellipsoid.cpp +++ b/lib/gpu/lal_base_ellipsoid.cpp @@ -70,7 +70,7 @@ int BaseEllipsoidT::init_base(const int nlocal, const int nall, _gpu_host=1; _threads_per_atom=device->threads_per_atom(); - + int success=device->init(*ans,false,true,nlocal,host_nlocal,nall,nbor, maxspecial,_gpu_host,max_nbors,cell_size,true, 1); @@ -113,7 +113,7 @@ int BaseEllipsoidT::init_base(const int nlocal, const int nall, return -8; if (_multiple_forms && gpu_nbor!=0) return -9; - + if (_multiple_forms) ans->force.zero(); @@ -142,7 +142,7 @@ void BaseEllipsoidT::clear_base() { // Output any timing information output_times(); host_olist.clear(); - + if (_compiled) { k_nbor_fast.clear(); k_nbor.clear(); @@ -156,7 +156,7 @@ void BaseEllipsoidT::clear_base() { delete lj_program; _compiled=false; } - + time_nbor1.clear(); time_ellipsoid.clear(); time_nbor2.clear(); @@ -230,7 +230,7 @@ void BaseEllipsoidT::output_times() { if (times[6]>0) fprintf(screen,"Device Overhead: %.4f s.\n",times[6]/replica_size); fprintf(screen,"Average split: %.4f.\n",avg_split); - fprintf(screen,"Threads / atom: %d.\n",_threads_per_atom); + fprintf(screen,"Threads / atom: %d.\n",_threads_per_atom); fprintf(screen,"Max Mem / Proc: %.2f MB.\n",max_mb); fprintf(screen,"CPU Driver_Time: %.4f s.\n",times[7]/replica_size); fprintf(screen,"CPU Idle_Time: %.4f s.\n",times[8]/replica_size); @@ -241,10 +241,10 @@ void BaseEllipsoidT::output_times() { } // --------------------------------------------------------------------------- -// Pack neighbors to limit thread divergence for lj-lj and ellipse +// Pack neighbors to limit thread divergence for lj-lj and ellipse // --------------------------------------------------------------------------- template -void BaseEllipsoidT::pack_nbors(const int GX, const int BX, const int start, +void BaseEllipsoidT::pack_nbors(const int GX, const int BX, const int start, const int inum, const int form_low, const int form_high, const bool shared_types, int ntypes) { @@ -264,18 +264,18 @@ void BaseEllipsoidT::pack_nbors(const int GX, const int BX, const int start, // Copy neighbor list from host // --------------------------------------------------------------------------- template -void BaseEllipsoidT::reset_nbors(const int nall, const int inum, +void BaseEllipsoidT::reset_nbors(const int nall, const int inum, const int osize, int *ilist, int *numj, int *type, int **firstneigh, bool &success) { success=true; - + int mn=nbor->max_nbor_loop(osize,numj,ilist); resize_atom(nall,success); resize_local(inum,0,mn,osize,success); if (!success) return; - + if (_multiple_forms) { int p=0; for (int i=0; i inline void BaseEllipsoidT::build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, double *sublo, - double *subhi, tagint *tag, + double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success) { success=true; @@ -354,7 +354,7 @@ int* BaseEllipsoidT::compute(const int f_ago, const int inum_full, zero_timers(); return NULL; } - + int ago=hd_balancer.ago_first(f_ago); int inum=hd_balancer.balance(ago,inum_full,cpu_time); ans->inum(inum); @@ -394,7 +394,7 @@ int** BaseEllipsoidT::compute(const int ago, const int inum_full, const int nall double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double **host_quat) { @@ -410,7 +410,7 @@ int** BaseEllipsoidT::compute(const int ago, const int inum_full, const int nall ans->inum(inum); _last_ellipse=std::min(inum,_max_last_ellipse); host_start=inum; - + // Build neighbor list on GPU if necessary if (ago==0) { build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, @@ -419,7 +419,7 @@ int** BaseEllipsoidT::compute(const int ago, const int inum_full, const int nall return NULL; atom->cast_quat_data(host_quat[0]); hd_balancer.start_timer(); - } else { + } else { atom->cast_x_data(host_x,host_type); atom->cast_quat_data(host_quat[0]); hd_balancer.start_timer(); @@ -444,9 +444,9 @@ double BaseEllipsoidT::host_memory_usage_base() const { } template -void BaseEllipsoidT::compile_kernels(UCL_Device &dev, +void BaseEllipsoidT::compile_kernels(UCL_Device &dev, const void *ellipsoid_string, - const void *lj_string, + const void *lj_string, const char *kname, const bool e_s) { if (_compiled) return; diff --git a/lib/gpu/lal_base_ellipsoid.h b/lib/gpu/lal_base_ellipsoid.h index e289430f43..7deeccbf44 100644 --- a/lib/gpu/lal_base_ellipsoid.h +++ b/lib/gpu/lal_base_ellipsoid.h @@ -42,7 +42,7 @@ class BaseEllipsoid { * \param gpu_split fraction of particles handled by device * \param ellipsoid_sphere true if ellipsoid-sphere case handled separately * \param k_name name for the kernel for force calculation - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -68,7 +68,7 @@ class BaseEllipsoid { quat_tex.bind_float(atom->quat,4); lj_pos_tex.bind_float(atom->x,4); lj_quat_tex.bind_float(atom->quat,4); - } + } } /// Check if there is enough storage for neighbors and realloc if not @@ -78,7 +78,7 @@ class BaseEllipsoid { * \param olist_size size of list of particles from CPU neighboring * \note host_inum is 0 if the host is performing neighboring * \note if GPU is neighboring nlocal+host_inum=total number local particles - * \note if CPU is neighboring olist_size=total number of local particles + * \note if CPU is neighboring olist_size=total number of local particles * \note if GPU is neighboring olist_size=0 **/ inline void resize_local(const int nlocal, const int host_inum, const int max_nbors, const int olist_size, @@ -101,7 +101,7 @@ class BaseEllipsoid { /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear_base(); - + /// Output any timing information void output_times(); @@ -130,7 +130,7 @@ class BaseEllipsoid { ans->acc_timers(); } } - + /// Zero timers inline void zero_timers() { time_nbor1.zero(); @@ -148,9 +148,9 @@ class BaseEllipsoid { ans->zero_timers(); } - /// Pack neighbors to limit thread divergence for lj-lj and ellipse + /// Pack neighbors to limit thread divergence for lj-lj and ellipse void pack_nbors(const int GX, const int BX, const int start, const int inum, - const int form_low, const int form_high, + const int form_low, const int form_high, const bool shared_types, int ntypes); /// Copy neighbor list from host @@ -174,17 +174,17 @@ class BaseEllipsoid { int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, double **host_quat); /// Build neighbor list on accelerator - void build_nbor_list(const int inum, const int host_inum, const int nall, + void build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, bool &success); - - // -------------------------- DEVICE DATA ------------------------- + + // -------------------------- DEVICE DATA ------------------------- /// Device Properties and Atom and Neighbor storage Device *device; @@ -207,7 +207,7 @@ class BaseEllipsoid { /// Atom Data Atom *atom; - // --------------------------- TYPE DATA -------------------------- + // --------------------------- TYPE DATA -------------------------- /// cut_form.x = cutsq, cut_form.y = form UCL_D_Vec cut_form; @@ -240,7 +240,7 @@ class BaseEllipsoid { double _gpu_overhead, _driver_overhead; UCL_D_Vec *_nbor_data; - // True if we want to use fast GB-sphere or sphere-sphere calculations + // True if we want to use fast GB-sphere or sphere-sphere calculations bool _multiple_forms; int **_host_form; int _last_ellipse, _max_last_ellipse; diff --git a/lib/gpu/lal_base_three.cpp b/lib/gpu/lal_base_three.cpp index c41aad7b58..14f642e55b 100644 --- a/lib/gpu/lal_base_three.cpp +++ b/lib/gpu/lal_base_three.cpp @@ -12,7 +12,7 @@ begin : Tue April 2, 2013 email : brownw@ornl.gov ***************************************************************************/ - + #include "lal_base_three.h" using namespace LAMMPS_AL; #define BaseThreeT BaseThree @@ -45,7 +45,7 @@ int BaseThreeT::bytes_per_atom_atomic(const int max_nbors) const { #ifdef THREE_CONCURRENT b+=ans2->bytes_per_atom(); #endif - return b; + return b; } template @@ -62,6 +62,7 @@ int BaseThreeT::init_three(const int nlocal, const int nall, gpu_nbor=1; else if (device->gpu_mode()==Device::GPU_HYB_NEIGH) gpu_nbor=2; + _gpu_nbor=gpu_nbor; int _gpu_host=0; int host_nlocal=hd_balancer.first_host_count(nlocal,gpu_split,gpu_nbor); @@ -76,7 +77,7 @@ int BaseThreeT::init_three(const int nlocal, const int nall, _nbor_data=&(nbor->dev_nbor); if (_threads_per_atom*_threads_per_atom>device->warp_size()) return -10; - + int success=device->init(*ans,false,false,nlocal,host_nlocal,nall,nbor, maxspecial,_gpu_host,max_nbors,cell_size,false, _threads_per_atom); @@ -93,7 +94,7 @@ int BaseThreeT::init_three(const int nlocal, const int nall, return -3; ans2->cq(_end_command_queue); #endif - + _block_pair=device->pair_block_size(); _block_size=device->block_ellipse(); compile_kernels(*ucl_device,pair_program,k_two,k_three_center,k_three_end); @@ -111,7 +112,7 @@ int BaseThreeT::init_three(const int nlocal, const int nall, #ifdef THREE_CONCURRENT _max_an_bytes+=ans2->gpu_bytes(); #endif - + return 0; } @@ -158,7 +159,7 @@ void BaseThreeT::clear_atomic() { // --------------------------------------------------------------------------- template int * BaseThreeT::reset_nbors(const int nall, const int inum, const int nlist, - int *ilist, int *numj, int **firstneigh, + int *ilist, int *numj, int **firstneigh, bool &success) { success=true; @@ -168,7 +169,12 @@ int * BaseThreeT::reset_nbors(const int nall, const int inum, const int nlist, if (!success) return NULL; - nbor->get_host3(nall,nlist,ilist,numj,firstneigh,block_size()); + // originally the requirement that nall == nlist was enforced + // to allow direct indexing neighbors of neighbors after re-arrangement +// nbor->get_host3(nall,nlist,ilist,numj,firstneigh,block_size()); + + // now the requirement is removed, allowing to work within pair hybrid + nbor->get_host(nlist,ilist,numj,firstneigh,block_size()); double bytes=ans->gpu_bytes()+nbor->gpu_bytes(); #ifdef THREE_CONCURRENT @@ -176,7 +182,7 @@ int * BaseThreeT::reset_nbors(const int nall, const int inum, const int nlist, #endif if (bytes>_max_an_bytes) _max_an_bytes=bytes; - + return ilist; } @@ -185,11 +191,11 @@ int * BaseThreeT::reset_nbors(const int nall, const int inum, const int nlist, // --------------------------------------------------------------------------- template inline int BaseThreeT::build_nbor_list(const int inum, const int host_inum, - const int nall, double **host_x, - int *host_type, double *sublo, - double *subhi, tagint *tag, - int **nspecial, tagint **special, - bool &success) { + const int nall, double **host_x, + int *host_type, double *sublo, + double *subhi, tagint *tag, + int **nspecial, tagint **special, + bool &success) { success=true; resize_atom(inum,nall,success); resize_local(nall,host_inum,nbor->max_nbors(),success); @@ -214,11 +220,11 @@ inline int BaseThreeT::build_nbor_list(const int inum, const int host_inum, // Copy nbor list from host if necessary and then calculate forces, virials,.. // --------------------------------------------------------------------------- template -void BaseThreeT::compute(const int f_ago, const int nlocal, const int nall, +void BaseThreeT::compute(const int f_ago, const int inum_full, const int nall, const int nlist, double **host_x, int *host_type, - int *ilist, int *numj, int **firstneigh, + int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, - const bool vatom, int &host_start, + const bool vatom, int &host_start, const double cpu_time, bool &success) { acc_timers(); if (nlist==0) { @@ -228,9 +234,9 @@ void BaseThreeT::compute(const int f_ago, const int nlocal, const int nall, zero_timers(); return; } - + int ago=hd_balancer.ago_first(f_ago); - int inum=hd_balancer.balance(ago,nlocal,cpu_time); + int inum=hd_balancer.balance(ago,inum_full,cpu_time); ans->inum(inum); #ifdef THREE_CONCURRENT ans2->inum(inum); @@ -270,7 +276,7 @@ template int ** BaseThreeT::compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, - int **nspecial, tagint **special, const bool eflag, + int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, @@ -283,7 +289,7 @@ int ** BaseThreeT::compute(const int ago, const int inum_full, zero_timers(); return NULL; } - + hd_balancer.balance(cpu_time); int inum=hd_balancer.get_gpu_count(ago,inum_full); ans->inum(inum); @@ -291,7 +297,7 @@ int ** BaseThreeT::compute(const int ago, const int inum_full, ans2->inum(inum); #endif host_start=inum; - + // Build neighbor list on GPU if necessary if (ago==0) { build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, @@ -321,7 +327,7 @@ int ** BaseThreeT::compute(const int ago, const int inum_full, device->add_ans_object(ans2); #endif hd_balancer.stop_timer(); - + return nbor->host_jlist.begin()-host_start; } @@ -352,7 +358,7 @@ void BaseThreeT::compile_kernels(UCL_Device &dev, const void *pair_str, k_three_end.cq(ucl_device->cq(_end_command_queue)); k_three_end_vatom.cq(ucl_device->cq(_end_command_queue)); #endif - + _compiled=true; } diff --git a/lib/gpu/lal_base_three.h b/lib/gpu/lal_base_three.h index 0af290469a..4f27ecdf92 100644 --- a/lib/gpu/lal_base_three.h +++ b/lib/gpu/lal_base_three.h @@ -44,7 +44,7 @@ class BaseThree { * \param gpu_split fraction of particles handled by device * \param k_two name for the kernel for 2-body force calculation * \param k_three name for the kernel for 3-body force calculation - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -53,8 +53,8 @@ class BaseThree { * - -5 Double precision is not supported on card * - -10 if invalid thread_per_atom setting **/ int init_three(const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, - const double gpu_split, FILE *screen, + const int maxspecial, const double cell_size, + const double gpu_split, FILE *screen, const void *pair_program, const char *k_two, const char *k_three_center, const char *k_three_end); @@ -88,7 +88,7 @@ class BaseThree { * \note host_inum is 0 if the host is performing neighboring * \note nlocal+host_inum=total number local particles * \note olist_size=0 **/ - inline void resize_local(const int inum, const int host_inum, + inline void resize_local(const int inum, const int host_inum, const int max_nbors, bool &success) { nbor->resize(inum,host_inum,max_nbors,success); } @@ -133,33 +133,33 @@ class BaseThree { /// Build neighbor list on device int build_nbor_list(const int inum, const int host_inum, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success); /// Pair loop with host neighboring - void compute(const int f_ago, const int inum_full, const int nall, + void compute(const int f_ago, const int inum_full, const int nall, const int nlist, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success); /// Pair loop with device neighboring - int * compute(const int ago, const int inum_full, const int nall, + int * compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success); /// Pair loop with device neighboring int ** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success); - // -------------------------- DEVICE DATA ------------------------- + // -------------------------- DEVICE DATA ------------------------- /// Device Properties and Atom and Neighbor storage Device *device; @@ -186,7 +186,7 @@ class BaseThree { Answer *ans; #ifdef THREE_CONCURRENT Answer *ans2; - #endif + #endif // --------------------------- NBOR DATA ---------------------------- @@ -205,15 +205,16 @@ class BaseThree { protected: bool _compiled; int _block_pair, _block_size, _threads_per_atom, _end_command_queue; + int _gpu_nbor; double _max_bytes, _max_an_bytes; double _gpu_overhead, _driver_overhead; UCL_D_Vec *_nbor_data; - void compile_kernels(UCL_Device &dev, const void *pair_string, + void compile_kernels(UCL_Device &dev, const void *pair_string, const char *k_two, const char *k_three_center, const char *k_three_end); - virtual void loop(const bool _eflag, const bool _vflag, + virtual void loop(const bool _eflag, const bool _vflag, const int evatom) = 0; }; diff --git a/lib/gpu/lal_beck.cpp b/lib/gpu/lal_beck.cpp index 062c095957..165a02b71a 100644 --- a/lib/gpu/lal_beck.cpp +++ b/lib/gpu/lal_beck.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,17 +33,17 @@ BeckT::Beck() : BaseAtomic(), _allocated(false) { } template -BeckT::~Beck() { +BeckT::~Beck() { clear(); } - + template int BeckT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int BeckT::init(const int ntypes, +int BeckT::init(const int ntypes, double **host_cutsq, double **host_aa, double **host_alpha, double **host_beta, double **host_AA, double **host_BB, @@ -126,7 +126,7 @@ void BeckT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); diff --git a/lib/gpu/lal_beck.cu b/lib/gpu/lal_beck.cu index 7ccefd8859..7d72128b5f 100644 --- a/lib/gpu/lal_beck.cu +++ b/lib/gpu/lal_beck.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,7 +24,7 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_beck(const __global numtyp4 *restrict x_, +__kernel void k_beck(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict beck1, const __global numtyp4 *restrict beck2, const int lj_types, @@ -50,20 +50,20 @@ __kernel void k_beck(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -133,7 +133,7 @@ __kernel void k_beck_fast(const __global numtyp4 *restrict x_, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 beck1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 beck2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; @@ -143,7 +143,7 @@ __kernel void k_beck_fast(const __global numtyp4 *restrict x_, beck1[tid]=beck1_in[tid]; beck2[tid]=beck2_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -152,7 +152,7 @@ __kernel void k_beck_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_beck.h b/lib/gpu/lal_beck.h index fa56db2402..db26bebeb0 100644 --- a/lib/gpu/lal_beck.h +++ b/lib/gpu/lal_beck.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Beck : public BaseAtomic { public: Beck(); - ~Beck(); + ~Beck(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -41,8 +41,8 @@ class Beck : public BaseAtomic { double **host_aa, double **host_alpha, double **host_beta, double **host_AA, double **host_BB, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -67,7 +67,7 @@ class Beck : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_beck_ext.cpp b/lib/gpu/lal_beck_ext.cpp index 28ca0df346..226c2d477b 100644 --- a/lib/gpu/lal_beck_ext.cpp +++ b/lib/gpu/lal_beck_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -77,7 +77,7 @@ int beck_gpu_init(const int ntypes, double **cutsq, double **aa, cell_size, gpu_split, screen); BLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,8 +102,8 @@ int ** beck_gpu_compute_n(const int ago, const int inum_full, return BLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void beck_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_born.cpp b/lib/gpu/lal_born.cpp index 55cb24d3b0..7c1ed944d3 100644 --- a/lib/gpu/lal_born.cpp +++ b/lib/gpu/lal_born.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,10 +33,10 @@ BornT::Born() : BaseAtomic(), _allocated(false) { } template -BornT::~Born() { +BornT::~Born() { clear(); } - + template int BornT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -44,12 +44,12 @@ int BornT::bytes_per_atom(const int max_nbors) const { template int BornT::init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_born1, double **host_born2, + double **host_rhoinv, double **host_born1, double **host_born2, double **host_born3, double **host_a, double **host_c, double **host_d, double **host_sigma, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -80,7 +80,7 @@ int BornT::init(const int ntypes, double **host_cutsq, coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_a,host_c, - host_d,host_offset); + host_d,host_offset); cutsq_sigma.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack2(ntypes,lj_types,cutsq_sigma,host_write,host_cutsq, @@ -102,18 +102,18 @@ void BornT::reinit(const int ntypes, double **host_rhoinv, double **host_born1, double **host_born2, double **host_born3, double **host_a, double **host_c, double **host_d, double **host_offset) { - + // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,coeff1,host_write,host_rhoinv, host_born1,host_born2,host_born3); this->atom->type_pack4(ntypes,_lj_types,coeff2,host_write,host_a,host_c, - host_d,host_offset); + host_d,host_offset); } template @@ -151,7 +151,7 @@ void BornT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -169,7 +169,7 @@ void BornT::loop(const bool _eflag, const bool _vflag) { } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &coeff1, &coeff2, - &cutsq_sigma, &_lj_types, &sp_lj, + &cutsq_sigma, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, diff --git a/lib/gpu/lal_born.cu b/lib/gpu/lal_born.cu index 5f917be846..0ca7fea5fe 100644 --- a/lib/gpu/lal_born.cu +++ b/lib/gpu/lal_born.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,16 +24,16 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_born(const __global numtyp4 *restrict x_, +__kernel void k_born(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, - const __global numtyp4 *restrict coeff2, + const __global numtyp4 *restrict coeff2, const __global numtyp2 *restrict cutsq_sigma, - const int lj_types, - const __global numtyp *restrict sp_lj_in, + const int lj_types, + const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -51,20 +51,20 @@ __kernel void k_born(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv + coeff2[mtype].z*r2inv*r6inv; - energy+=factor_lj*(e-coeff2[mtype].w); + energy+=factor_lj*(e-coeff2[mtype].w); } if (vflag>0) { virial[0] += delx*delx*force; @@ -113,20 +113,20 @@ __kernel void k_born(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_born_fast(const __global numtyp4 *restrict x_, +__kernel void k_born_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1_in, - const __global numtyp4 *restrict coeff2_in, + const __global numtyp4 *restrict coeff2_in, const __global numtyp2 *restrict cutsq_sigma, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; @@ -137,7 +137,7 @@ __kernel void k_born_fast(const __global numtyp4 *restrict x_, if (eflag>0) coeff2[tid]=coeff2_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -146,7 +146,7 @@ __kernel void k_born_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv + coeff2[mtype].z*r2inv*r6inv; - energy+=factor_lj*(e-coeff2[mtype].w); + energy+=factor_lj*(e-coeff2[mtype].w); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_born.h b/lib/gpu/lal_born.h index 6fed6461d2..685f4d87a9 100644 --- a/lib/gpu/lal_born.h +++ b/lib/gpu/lal_born.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Born : public BaseAtomic { public: Born(); - ~Born(); + ~Born(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -38,20 +38,20 @@ class Born : public BaseAtomic { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_born1, double **host_born2, + double **host_rhoinv, double **host_born1, double **host_born2, double **host_born3, double **host_a, double **host_c, - double **host_d, double **host_sigma, + double **host_d, double **host_sigma, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); - + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_rhoinv, double **host_born1, double **host_born2, double **host_born3, double **host_a, double **host_c, double **host_d, double **host_offset); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -77,7 +77,7 @@ class Born : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_born_coul_long.cpp b/lib/gpu/lal_born_coul_long.cpp index 94becf8c69..68695c4938 100644 --- a/lib/gpu/lal_born_coul_long.cpp +++ b/lib/gpu/lal_born_coul_long.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -37,17 +37,17 @@ template BornCoulLongT::~BornCoulLongT() { clear(); } - + template int BornCoulLongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int BornCoulLongT::init(const int ntypes, double **host_cutsq, double **host_rhoinv, - double **host_born1, double **host_born2, double **host_born3, - double **host_a, double **host_c, double **host_d, - double **host_sigma, double **host_offset, +int BornCoulLongT::init(const int ntypes, double **host_cutsq, double **host_rhoinv, + double **host_born1, double **host_born2, double **host_born3, + double **host_a, double **host_c, double **host_d, + double **host_sigma, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -84,12 +84,12 @@ int BornCoulLongT::init(const int ntypes, double **host_cutsq, double **host_rho coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_a,host_c, - host_d,host_offset); - + host_d,host_offset); + cutsq_sigma.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,cutsq_sigma,host_write,host_cutsq, host_cut_ljsq,host_sigma); - + sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { host_write[i]=host_special_lj[i]; @@ -142,7 +142,7 @@ void BornCoulLongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -157,15 +157,15 @@ void BornCoulLongT::loop(const bool _eflag, const bool _vflag) { &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, - &cutsq_sigma, &_cut_coulsq, &_qqrd2e, + &cutsq_sigma, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, + this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->atom->q, + &nbor_pitch, &this->atom->q, &cutsq_sigma, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_born_coul_long.cu b/lib/gpu/lal_born_coul_long.cu index 3d74f2087a..4cb4ea448f 100644 --- a/lib/gpu/lal_born_coul_long.cu +++ b/lib/gpu/lal_born_coul_long.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -29,19 +29,19 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_born_long(const __global numtyp4 *restrict x_, +__kernel void k_born_long(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, const __global numtyp4 *restrict coeff2, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, - const __global numtyp4 *restrict cutsq_sigma, + const __global numtyp4 *restrict cutsq_sigma, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { int tid, ii, offset; @@ -64,14 +64,14 @@ __kernel void k_born_long(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { - if (rsq < cut_coulsq) - e_coul += prefactor*(_erfc-factor_coul); - if (rsq < coeff1[mtype].w) { - numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv - + coeff2[mtype].z*r2inv*r6inv; - energy+=factor_lj*(e-coeff2[mtype].w); - } - } - if (vflag>0) { - virial[0] += delx*delx*force; - virial[1] += dely*dely*force; - virial[2] += delz*delz*force; - virial[3] += delx*dely*force; - virial[4] += delx*delz*force; - virial[5] += dely*delz*force; - } - } - - } // for nbor - store_answers_q(f,energy,e_coul,virial,ii,inum,tid,t_per_atom,offset,eflag, - vflag,ans,engv); - } // if ii -} - -__kernel void k_born_long_fast(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict coeff1_in, - const __global numtyp4 *restrict coeff2_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, - const __global numtyp *restrict q_, - const __global numtyp4 *restrict cutsq_sigma, - const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp g_ewald, const int t_per_atom) { - int tid, ii, offset; - atom_info(t_per_atom,ii,tid,offset); - - __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; - __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; - __local numtyp sp_lj[8]; - if (tid<8) - sp_lj[tid]=sp_lj_in[tid]; - if (tid0) - coeff2[tid]=coeff2_in[tid]; - } - - acctyp energy=(acctyp)0; - acctyp e_coul=(acctyp)0; - acctyp4 f; - f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; - acctyp virial[6]; - for (int i=0; i<6; i++) - virial[i]=(acctyp)0; - - __syncthreads(); - - if (ii0) { + if (rsq < cut_coulsq) + e_coul += prefactor*(_erfc-factor_coul); + if (rsq < coeff1[mtype].w) { + numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv + + coeff2[mtype].z*r2inv*r6inv; + energy+=factor_lj*(e-coeff2[mtype].w); + } + } + if (vflag>0) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + + } // for nbor + store_answers_q(f,energy,e_coul,virial,ii,inum,tid,t_per_atom,offset,eflag, + vflag,ans,engv); + } // if ii +} + +__kernel void k_born_long_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict coeff1_in, + const __global numtyp4 *restrict coeff2_in, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp *restrict q_, + const __global numtyp4 *restrict cutsq_sigma, + const numtyp cut_coulsq, const numtyp qqrd2e, + const numtyp g_ewald, const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[8]; + if (tid<8) + sp_lj[tid]=sp_lj_in[tid]; + if (tid0) + coeff2[tid]=coeff2_in[tid]; + } + + acctyp energy=(acctyp)0; + acctyp e_coul=(acctyp)0; + acctyp4 f; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + acctyp virial[6]; + for (int i=0; i<6; i++) + virial[i]=(acctyp)0; + + __syncthreads(); + + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, double **host_cutsq, double **host_rhoinv, - double **host_born1, double **host_born2, double **host_born3, - double **host_a, double **host_c, double **host_d, + int init(const int ntypes, double **host_cutsq, double **host_rhoinv, + double **host_born1, double **host_born2, double **host_born3, + double **host_a, double **host_c, double **host_d, double **host_sigma, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald); @@ -59,12 +59,12 @@ class BornCoulLong : public BaseCharge { // --------------------------- TYPE DATA -------------------------- - /// coeff1.x = rhoinv, coeff1.y = born1, coeff1.z = born2, + /// coeff1.x = rhoinv, coeff1.y = born1, coeff1.z = born2, /// coeff1.w = born3 UCL_D_Vec coeff1; /// coeff2.x = a, coeff2.y = c, coeff2.z = d, coeff2.w = offset UCL_D_Vec coeff2; - /// cutsq_sigma.x = cutsq, cutsq_sigma.y = cutsq_lj, + /// cutsq_sigma.x = cutsq, cutsq_sigma.y = cutsq_lj, /// cutsq_sigma.z = sigma UCL_D_Vec cutsq_sigma; /// Special LJ values [0-3] and Special Coul values [4-7] @@ -73,7 +73,7 @@ class BornCoulLong : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq, _qqrd2e, _g_ewald; diff --git a/lib/gpu/lal_born_coul_long_ext.cpp b/lib/gpu/lal_born_coul_long_ext.cpp index 382e9a2b2c..feb7472e74 100644 --- a/lib/gpu/lal_born_coul_long_ext.cpp +++ b/lib/gpu/lal_born_coul_long_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -30,9 +30,9 @@ static BornCoulLong BORNCLMF; int borncl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, double **host_born1, double **host_born2, double **host_born3, double **host_a, double **host_c, double **host_d, - double **sigma, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, int &gpu_mode, + double **sigma, double **offset, double *special_lj, + const int inum, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, double **host_cut_ljsq, double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald) { @@ -58,10 +58,10 @@ int borncl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, int init_ok=0; if (world_me==0) - init_ok=BORNCLMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, - host_born3, host_a, host_c, host_d, sigma, offset, - special_lj, inum, nall, 300, maxspecial, cell_size, - gpu_split, screen, host_cut_ljsq, host_cut_coulsq, + init_ok=BORNCLMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, + host_born3, host_a, host_c, host_d, sigma, offset, + special_lj, inum, nall, 300, maxspecial, cell_size, + gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); BORNCLMF.device->world_barrier(); @@ -78,14 +78,14 @@ int borncl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=BORNCLMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, - host_born3, host_a, host_c, host_d, sigma, offset, - special_lj, inum, nall, 300, maxspecial, cell_size, - gpu_split, screen, host_cut_ljsq, host_cut_coulsq, + init_ok=BORNCLMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, + host_born3, host_a, host_c, host_d, sigma, offset, + special_lj, inum, nall, 300, maxspecial, cell_size, + gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); BORNCLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,7 +102,7 @@ void borncl_gpu_clear() { int** borncl_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -112,8 +112,8 @@ int** borncl_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void borncl_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_born_coul_wolf.cpp b/lib/gpu/lal_born_coul_wolf.cpp index 7615c1dd53..7ebd7b744f 100644 --- a/lib/gpu/lal_born_coul_wolf.cpp +++ b/lib/gpu/lal_born_coul_wolf.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -37,17 +37,17 @@ template BornCoulWolfT::~BornCoulWolfT() { clear(); } - + template int BornCoulWolfT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int BornCoulWolfT::init(const int ntypes, double **host_cutsq, double **host_rhoinv, - double **host_born1, double **host_born2, double **host_born3, - double **host_a, double **host_c, double **host_d, - double **host_sigma, double **host_offset, +int BornCoulWolfT::init(const int ntypes, double **host_cutsq, double **host_rhoinv, + double **host_born1, double **host_born2, double **host_born3, + double **host_a, double **host_c, double **host_d, + double **host_sigma, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -84,12 +84,12 @@ int BornCoulWolfT::init(const int ntypes, double **host_cutsq, double **host_rho coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_a,host_c, - host_d,host_offset); - + host_d,host_offset); + cutsq_sigma.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,cutsq_sigma,host_write,host_cutsq, host_cut_ljsq,host_sigma); - + sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { host_write[i]=host_special_lj[i]; @@ -144,7 +144,7 @@ void BornCoulWolfT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -157,17 +157,17 @@ void BornCoulWolfT::loop(const bool _eflag, const bool _vflag) { &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, - &cutsq_sigma, &_cut_coulsq, &_qqrd2e, - &_alf, &_e_shift, &_f_shift, + &cutsq_sigma, &_cut_coulsq, &_qqrd2e, + &_alf, &_e_shift, &_f_shift, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq_sigma, &_cut_coulsq, - &_qqrd2e, &_alf, &_e_shift, &_f_shift, + &_qqrd2e, &_alf, &_e_shift, &_f_shift, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_born_coul_wolf.cu b/lib/gpu/lal_born_coul_wolf.cu index e7706b408a..0dc7d08c63 100644 --- a/lib/gpu/lal_born_coul_wolf.cu +++ b/lib/gpu/lal_born_coul_wolf.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -31,21 +31,21 @@ texture q_tex; #define MY_PIS (acctyp)1.77245385090551602729 -__kernel void k_born_wolf(const __global numtyp4 *restrict x_, +__kernel void k_born_wolf(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, - const __global numtyp4 *restrict coeff2, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict coeff2, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, - const __global numtyp4 *restrict cutsq_sigma, + const __global numtyp4 *restrict cutsq_sigma, const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp alf, const numtyp e_shift, + const numtyp alf, const numtyp e_shift, const numtyp f_shift, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -67,20 +67,20 @@ __kernel void k_born_wolf(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { - acctyp e_self = -((acctyp)0.5*e_shift + alf/MY_PIS) * + acctyp e_self = -((acctyp)0.5*e_shift + alf/MY_PIS) * qtmp*qtmp*qqrd2e/(acctyp)t_per_atom; e_coul += (acctyp)2.0*e_self; } @@ -108,12 +108,12 @@ __kernel void k_born_wolf(const __global numtyp4 *restrict x_, numtyp forcecoul, forceborn, force, r6inv, prefactor; numtyp v_sh = (numtyp)0.0; numtyp rexp = (numtyp)0.0; - + if (rsq < cutsq_sigma[mtype].y) { // cut_ljsq numtyp r = ucl_sqrt(rsq); rexp = ucl_exp((cutsq_sigma[mtype].z-r)*coeff1[mtype].x); r6inv = r2inv*r2inv*r2inv; - forceborn = (coeff1[mtype].y*r*rexp - coeff1[mtype].z*r6inv + forceborn = (coeff1[mtype].y*r*rexp - coeff1[mtype].z*r6inv + coeff1[mtype].w*r2inv*r6inv)*factor_lj; } else forceborn = (numtyp)0.0; @@ -147,7 +147,7 @@ __kernel void k_born_wolf(const __global numtyp4 *restrict x_, numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv + coeff2[mtype].z*r2inv*r6inv; energy+=factor_lj*(e-coeff2[mtype].w); - } + } } if (vflag>0) { virial[0] += delx*delx*force; @@ -165,20 +165,20 @@ __kernel void k_born_wolf(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_born_wolf_fast(const __global numtyp4 *restrict x_, +__kernel void k_born_wolf_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1_in, - const __global numtyp4 *restrict coeff2_in, + const __global numtyp4 *restrict coeff2_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const __global numtyp *restrict q_, const __global numtyp4 *restrict cutsq_sigma, const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp alf, const numtyp e_shift, + const numtyp alf, const numtyp e_shift, const numtyp f_shift, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -193,7 +193,7 @@ __kernel void k_born_wolf_fast(const __global numtyp4 *restrict x_, if (eflag>0) coeff2[tid]=coeff2_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -201,23 +201,23 @@ __kernel void k_born_wolf_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { - acctyp e_self = -((acctyp)0.5*e_shift + alf/MY_PIS) * + acctyp e_self = -((acctyp)0.5*e_shift + alf/MY_PIS) * qtmp*qtmp*qqrd2e/(acctyp)t_per_atom; e_coul += (acctyp)2.0*e_self; } @@ -244,12 +244,12 @@ __kernel void k_born_wolf_fast(const __global numtyp4 *restrict x_, numtyp forcecoul, forceborn, force, r6inv, prefactor; numtyp v_sh = (numtyp)0.0; numtyp rexp = (numtyp)0.0; - + if (rsq < cutsq_sigma[mtype].y) { numtyp r = ucl_sqrt(rsq); rexp = ucl_exp((cutsq_sigma[mtype].z-r)*coeff1[mtype].x); r6inv = r2inv*r2inv*r2inv; - forceborn = (coeff1[mtype].y*r*rexp - coeff1[mtype].z*r6inv + forceborn = (coeff1[mtype].y*r*rexp - coeff1[mtype].z*r6inv + coeff1[mtype].w*r2inv*r6inv)*factor_lj; } else forceborn = (numtyp)0.0; diff --git a/lib/gpu/lal_born_coul_wolf.h b/lib/gpu/lal_born_coul_wolf.h index 9e02d23233..4b2406b989 100644 --- a/lib/gpu/lal_born_coul_wolf.h +++ b/lib/gpu/lal_born_coul_wolf.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -30,19 +30,19 @@ class BornCoulWolf : public BaseCharge { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, double **host_cutsq, double **host_rhoinv, - double **host_born1, double **host_born2, double **host_born3, - double **host_a, double **host_c, double **host_d, + int init(const int ntypes, double **host_cutsq, double **host_rhoinv, + double **host_born1, double **host_born2, double **host_born3, + double **host_a, double **host_c, double **host_d, double **host_sigma, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double alf, const double e_shift, @@ -60,12 +60,12 @@ class BornCoulWolf : public BaseCharge { // --------------------------- TYPE DATA -------------------------- - /// coeff1.x = rhoinv, coeff1.y = born1, coeff1.z = born2, + /// coeff1.x = rhoinv, coeff1.y = born1, coeff1.z = born2, /// coeff1.w = born3 UCL_D_Vec coeff1; /// coeff2.x = a, coeff2.y = c, coeff2.z = d, coeff2.w = offset UCL_D_Vec coeff2; - /// cutsq_sigma.x = cutsq, cutsq_sigma.y = cutsq_lj, + /// cutsq_sigma.x = cutsq, cutsq_sigma.y = cutsq_lj, /// cutsq_sigma.z = sigma UCL_D_Vec cutsq_sigma; /// Special LJ values [0-3] and Special Coul values [4-7] @@ -74,7 +74,7 @@ class BornCoulWolf : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq,_qqrd2e,_alf,_e_shift,_f_shift; diff --git a/lib/gpu/lal_born_coul_wolf_ext.cpp b/lib/gpu/lal_born_coul_wolf_ext.cpp index b56c526119..254b1c905b 100644 --- a/lib/gpu/lal_born_coul_wolf_ext.cpp +++ b/lib/gpu/lal_born_coul_wolf_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -28,7 +28,7 @@ static BornCoulWolf BORNCWMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int borncw_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, - double **host_born1, double **host_born2, double **host_born3, + double **host_born1, double **host_born2, double **host_born3, double **host_a, double **host_c, double **host_d, double **sigma, double **offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, @@ -60,9 +60,9 @@ int borncw_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, if (world_me==0) init_ok=BORNCWMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, host_born3, host_a, host_c, host_d, sigma, - offset, special_lj, inum, nall, 300, + offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, - host_cut_coulsq, host_special_coul, qqrd2e, + host_cut_coulsq, host_special_coul, qqrd2e, alf, e_shift, f_shift); BORNCWMF.device->world_barrier(); @@ -79,15 +79,15 @@ int borncw_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=BORNCWMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, - host_born3, host_a, host_c, host_d, sigma, - offset, special_lj, inum, nall, 300, + init_ok=BORNCWMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, + host_born3, host_a, host_c, host_d, sigma, + offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, - host_cut_coulsq, host_special_coul, qqrd2e, + host_cut_coulsq, host_special_coul, qqrd2e, alf, e_shift, f_shift); BORNCWMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -104,7 +104,7 @@ void borncw_gpu_clear() { int** borncw_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -114,8 +114,8 @@ int** borncw_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void borncw_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_born_ext.cpp b/lib/gpu/lal_born_ext.cpp index 6bd51e6d68..b1ebf5804c 100644 --- a/lib/gpu/lal_born_ext.cpp +++ b/lib/gpu/lal_born_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -28,9 +28,9 @@ static Born BORNMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int born_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, - double **host_born1, double **host_born2, - double **host_born3, double **host_a, double **host_c, - double **host_d, double **sigma, + double **host_born1, double **host_born2, + double **host_born3, double **host_a, double **host_c, + double **host_d, double **sigma, double **offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { @@ -56,7 +56,7 @@ int born_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, int init_ok=0; if (world_me==0) - init_ok=BORNMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, + init_ok=BORNMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, host_born3, host_a, host_c, host_d, sigma, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -75,13 +75,13 @@ int born_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=BORNMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, - host_born3, host_a, host_c, host_d, sigma, + init_ok=BORNMF.init(ntypes, cutsq, host_rhoinv, host_born1, host_born2, + host_born3, host_a, host_c, host_d, sigma, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); BORNMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,24 +102,24 @@ void born_gpu_reinit(const int ntypes, double **host_rhoinv, int world_me=BORNMF.device->world_me(); int gpu_rank=BORNMF.device->gpu_rank(); int procs_per_gpu=BORNMF.device->procs_per_gpu(); - + if (world_me==0) BORNMF.reinit(ntypes, host_rhoinv, host_born1, host_born2, host_born3, host_a, host_c, host_d, offset); - + BORNMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } } void born_gpu_clear() { - BORNMF.clear(); + BORNMF.clear(); } int ** born_gpu_compute_n(const int ago, const int inum_full, @@ -132,8 +132,8 @@ int ** born_gpu_compute_n(const int ago, const int inum_full, return BORNMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void born_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_buck.cpp b/lib/gpu/lal_buck.cpp index f66759ee3a..0da4068d51 100644 --- a/lib/gpu/lal_buck.cpp +++ b/lib/gpu/lal_buck.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,10 +33,10 @@ BuckT::Buck() : BaseAtomic(), _allocated(false) { } template -BuckT::~Buck() { +BuckT::~Buck() { clear(); } - + template int BuckT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -44,11 +44,11 @@ int BuckT::bytes_per_atom(const int max_nbors) const { template int BuckT::init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_rhoinv, double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -79,7 +79,7 @@ int BuckT::init(const int ntypes, double **host_cutsq, coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_a,host_c, - host_offset); + host_offset); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -95,14 +95,14 @@ template void BuckT::reinit(const int ntypes, double **host_cutsq, double **host_rhoinv, double **host_buck1, double **host_buck2, double **host_a, double **host_c, double **host_offset) { - + // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,coeff1,host_write,host_rhoinv, host_buck1,host_buck2,host_cutsq); this->atom->type_pack4(ntypes,_lj_types,coeff2,host_write,host_a,host_c, @@ -143,7 +143,7 @@ void BuckT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -154,13 +154,13 @@ void BuckT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &coeff1, &coeff2, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &this->ans->force, &this->ans->engv, &eflag, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_buck.cu b/lib/gpu/lal_buck.cu index 955547e598..c1e1c7d7e2 100644 --- a/lib/gpu/lal_buck.cu +++ b/lib/gpu/lal_buck.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,15 +24,15 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_buck(const __global numtyp4 *restrict x_, +__kernel void k_buck(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, - const __global numtyp4 *restrict coeff2, - const int lj_types, + const __global numtyp4 *restrict coeff2, + const int lj_types, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -50,20 +50,20 @@ __kernel void k_buck(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv; - energy+=factor_lj*(e-coeff2[mtype].z); + energy+=factor_lj*(e-coeff2[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; @@ -111,19 +111,19 @@ __kernel void k_buck(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_buck_fast(const __global numtyp4 *restrict x_, +__kernel void k_buck_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1_in, - const __global numtyp4 *restrict coeff2_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict coeff2_in, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; @@ -134,7 +134,7 @@ __kernel void k_buck_fast(const __global numtyp4 *restrict x_, if (eflag>0) coeff2[tid]=coeff2_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -143,7 +143,7 @@ __kernel void k_buck_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv; - energy+=factor_lj*(e-coeff2[mtype].z); + energy+=factor_lj*(e-coeff2[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_buck.h b/lib/gpu/lal_buck.h index ebcd72d990..3b84066355 100644 --- a/lib/gpu/lal_buck.h +++ b/lib/gpu/lal_buck.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Buck : public BaseAtomic { public: Buck(); - ~Buck(); + ~Buck(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -38,18 +38,18 @@ class Buck : public BaseAtomic { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_rhoinv, double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_cutsq, double **host_rhoinv, double **host_buck1, double **host_buck2, double **host_a, double **host_c, double **host_offset); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -72,7 +72,7 @@ class Buck : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_buck_coul.cpp b/lib/gpu/lal_buck_coul.cpp index bec640e7a6..e4f829fc5c 100644 --- a/lib/gpu/lal_buck_coul.cpp +++ b/lib/gpu/lal_buck_coul.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,10 +33,10 @@ BuckCoulT::BuckCoul() : BaseCharge(), _allocated(false) { } template -BuckCoulT::~BuckCoul() { +BuckCoulT::~BuckCoul() { clear(); } - + template int BuckCoulT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -44,11 +44,11 @@ int BuckCoulT::bytes_per_atom(const int max_nbors) const { template int BuckCoulT::init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_rhoinv, double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen, double **host_cut_ljsq, double **host_cut_coulsq, double *host_special_coul, const double qqrd2e) { @@ -81,21 +81,21 @@ int BuckCoulT::init(const int ntypes, double **host_cutsq, coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_a,host_c, - host_offset); - + host_offset); + cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,cutsq,host_write,host_cutsq, host_cut_ljsq, host_cut_coulsq); - + sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { host_write[i]=host_special_lj[i]; host_write[i+4]=host_special_coul[i]; } ucl_copy(sp_lj,host_write,8,false); - + _qqrd2e = qqrd2e; - + _allocated=true; this->_max_bytes=coeff1.row_bytes()+coeff2.row_bytes()+sp_lj.row_bytes(); return 0; @@ -135,7 +135,7 @@ void BuckCoulT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -147,12 +147,12 @@ void BuckCoulT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &coeff1, &coeff2, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, &this->atom->q, + &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &this->_threads_per_atom); diff --git a/lib/gpu/lal_buck_coul.cu b/lib/gpu/lal_buck_coul.cu index 87604a02ea..6f0d414825 100644 --- a/lib/gpu/lal_buck_coul.cu +++ b/lib/gpu/lal_buck_coul.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -29,19 +29,19 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_buck_coul(const __global numtyp4 *restrict x_, +__kernel void k_buck_coul(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, - const __global numtyp4 *restrict coeff2, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict coeff2, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_ , - const __global numtyp4 *restrict cutsq, + const __global numtyp4 *restrict cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -63,21 +63,21 @@ __kernel void k_buck_coul(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) coeff2[tid]=coeff2_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -180,7 +180,7 @@ __kernel void k_buck_coul_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_buck_coul.h b/lib/gpu/lal_buck_coul.h index e4bf59107c..3f8428bfe1 100644 --- a/lib/gpu/lal_buck_coul.h +++ b/lib/gpu/lal_buck_coul.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class BuckCoul : public BaseCharge { public: BuckCoul(); - ~BuckCoul(); + ~BuckCoul(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -38,11 +38,11 @@ class BuckCoul : public BaseCharge { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_rhoinv, double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, double **host_cut_coulsq, double *host_special_coul, const double qqrd2e); @@ -71,11 +71,11 @@ class BuckCoul : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; - + numtyp _qqrd2e; - + private: bool _allocated; void loop(const bool _eflag, const bool _vflag); diff --git a/lib/gpu/lal_buck_coul_ext.cpp b/lib/gpu/lal_buck_coul_ext.cpp index dd696fc6bb..e5a5e1315b 100644 --- a/lib/gpu/lal_buck_coul_ext.cpp +++ b/lib/gpu/lal_buck_coul_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -28,8 +28,8 @@ static BuckCoul BUCKCMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int buckc_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, - double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, @@ -57,9 +57,9 @@ int buckc_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, int init_ok=0; if (world_me==0) - init_ok=BUCKCMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, + init_ok=BUCKCMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, host_a, host_c, offset, special_lj, inum, nall, 300, - maxspecial, cell_size, gpu_split, screen, + maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e); @@ -77,14 +77,14 @@ int buckc_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=BUCKCMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, + init_ok=BUCKCMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, host_a, host_c, offset, special_lj, inum, nall, 300, - maxspecial, cell_size, gpu_split, screen, + maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e); BUCKCMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -96,12 +96,12 @@ int buckc_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, } void buckc_gpu_clear() { - BUCKCMF.clear(); + BUCKCMF.clear(); } int ** buckc_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -111,8 +111,8 @@ int ** buckc_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void buckc_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_buck_coul_long.cpp b/lib/gpu/lal_buck_coul_long.cpp index 4aa720132a..81faada116 100644 --- a/lib/gpu/lal_buck_coul_long.cpp +++ b/lib/gpu/lal_buck_coul_long.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template BuckCoulLongT::~BuckCoulLongT() { clear(); } - + template int BuckCoulLongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,8 +45,8 @@ int BuckCoulLongT::bytes_per_atom(const int max_nbors) const { template int BuckCoulLongT::init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_buck1, double **host_buck2, - double **host_a, double **host_c, double **host_offset, + double **host_rhoinv, double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -83,11 +83,11 @@ int BuckCoulLongT::init(const int ntypes, double **host_cutsq, coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_a,host_c, - host_offset); - + host_offset); + cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,cutsq,host_write,host_cutsq); - + sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { host_write[i]=host_special_lj[i]; @@ -139,7 +139,7 @@ void BuckCoulLongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -150,16 +150,16 @@ void BuckCoulLongT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &coeff1, &coeff2, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, - &cutsq, &_cut_coulsq, &_qqrd2e, + &cutsq, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &coeff1, &coeff2, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->q, &cutsq, + &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_buck_coul_long.cu b/lib/gpu/lal_buck_coul_long.cu index fc68d12471..da3237a31f 100644 --- a/lib/gpu/lal_buck_coul_long.cu +++ b/lib/gpu/lal_buck_coul_long.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -29,19 +29,19 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_buck_coul_long(const __global numtyp4 *restrict x_, +__kernel void k_buck_coul_long(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, - const __global numtyp4 *restrict coeff2, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict coeff2, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, - const __global numtyp *restrict cutsq, + const __global numtyp *restrict cutsq, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { int tid, ii, offset; @@ -64,14 +64,14 @@ __kernel void k_buck_coul_long(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { - if (rsq < cut_coulsq) - e_coul += prefactor*(_erfc-factor_coul); - if (rsq < coeff1[mtype].w) { - numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv; - energy+=factor_lj*(e-coeff2[mtype].z); - } - } - if (vflag>0) { - virial[0] += delx*delx*force; - virial[1] += dely*dely*force; - virial[2] += delz*delz*force; - virial[3] += delx*dely*force; - virial[4] += delx*delz*force; - virial[5] += dely*delz*force; - } - } - - } // for nbor - store_answers_q(f,energy,e_coul,virial,ii,inum,tid,t_per_atom,offset,eflag, - vflag,ans,engv); - } // if ii -} - -__kernel void k_buck_coul_long_fast(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict coeff1_in, - const __global numtyp4 *restrict coeff2_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const __global numtyp *restrict q_, - const __global numtyp *restrict cutsq, - const numtyp cut_coulsq, - const numtyp qqrd2e, const numtyp g_ewald, - const int t_per_atom) { - int tid, ii, offset; - atom_info(t_per_atom,ii,tid,offset); - - __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; - __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; - __local numtyp sp_lj[8]; - if (tid<8) - sp_lj[tid]=sp_lj_in[tid]; - if (tid0) - coeff2[tid]=coeff2_in[tid]; - } - - acctyp energy=(acctyp)0; - acctyp e_coul=(acctyp)0; - acctyp4 f; - f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; - acctyp virial[6]; - for (int i=0; i<6; i++) - virial[i]=(acctyp)0; - - __syncthreads(); - - if (ii0) { + if (rsq < cut_coulsq) + e_coul += prefactor*(_erfc-factor_coul); + if (rsq < coeff1[mtype].w) { + numtyp e=coeff2[mtype].x*rexp - coeff2[mtype].y*r6inv; + energy+=factor_lj*(e-coeff2[mtype].z); + } + } + if (vflag>0) { + virial[0] += delx*delx*force; + virial[1] += dely*dely*force; + virial[2] += delz*delz*force; + virial[3] += delx*dely*force; + virial[4] += delx*delz*force; + virial[5] += dely*delz*force; + } + } + + } // for nbor + store_answers_q(f,energy,e_coul,virial,ii,inum,tid,t_per_atom,offset,eflag, + vflag,ans,engv); + } // if ii +} + +__kernel void k_buck_coul_long_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict coeff1_in, + const __global numtyp4 *restrict coeff2_in, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp *restrict q_, + const __global numtyp *restrict cutsq, + const numtyp cut_coulsq, + const numtyp qqrd2e, const numtyp g_ewald, + const int t_per_atom) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[8]; + if (tid<8) + sp_lj[tid]=sp_lj_in[tid]; + if (tid0) + coeff2[tid]=coeff2_in[tid]; + } + + acctyp energy=(acctyp)0; + acctyp e_coul=(acctyp)0; + acctyp4 f; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + acctyp virial[6]; + for (int i=0; i<6; i++) + virial[i]=(acctyp)0; + + __syncthreads(); + + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -38,11 +38,11 @@ class BuckCoulLong : public BaseCharge { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double **host_rhoinv, double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_rhoinv, double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald); @@ -71,7 +71,7 @@ class BuckCoulLong : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq, _qqrd2e, _g_ewald; diff --git a/lib/gpu/lal_buck_coul_long_ext.cpp b/lib/gpu/lal_buck_coul_long_ext.cpp index 9c0c331ee1..28a89746b3 100644 --- a/lib/gpu/lal_buck_coul_long_ext.cpp +++ b/lib/gpu/lal_buck_coul_long_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -28,7 +28,7 @@ static BuckCoulLong BUCKCLMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int buckcl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, - double **host_buck1, double **host_buck2, + double **host_buck1, double **host_buck2, double **host_a, double **host_c, double **offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, @@ -58,8 +58,8 @@ int buckcl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, int init_ok=0; if (world_me==0) - init_ok=BUCKCLMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, - host_a, host_c, offset, special_lj, inum, nall, 300, + init_ok=BUCKCLMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, + host_a, host_c, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); @@ -77,13 +77,13 @@ int buckcl_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=BUCKCLMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, - host_a, host_c, offset, special_lj, inum, nall, 300, + init_ok=BUCKCLMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, + host_a, host_c, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); BUCKCLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -100,7 +100,7 @@ void buckcl_gpu_clear() { int** buckcl_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -110,8 +110,8 @@ int** buckcl_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void buckcl_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_buck_ext.cpp b/lib/gpu/lal_buck_ext.cpp index 75c88e8dbe..336aab6d4c 100644 --- a/lib/gpu/lal_buck_ext.cpp +++ b/lib/gpu/lal_buck_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -28,8 +28,8 @@ static Buck BUCKMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int buck_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, - double **host_buck1, double **host_buck2, - double **host_a, double **host_c, + double **host_buck1, double **host_buck2, + double **host_a, double **host_c, double **offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { @@ -55,7 +55,7 @@ int buck_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, int init_ok=0; if (world_me==0) - init_ok=BUCKMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, + init_ok=BUCKMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, host_a, host_c, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -73,12 +73,12 @@ int buck_gpu_init(const int ntypes, double **cutsq, double **host_rhoinv, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=BUCKMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, + init_ok=BUCKMF.init(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, host_a, host_c, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); BUCKMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -98,24 +98,24 @@ void buck_gpu_reinit(const int ntypes, double **cutsq, double **host_rhoinv, int world_me=BUCKMF.device->world_me(); int gpu_rank=BUCKMF.device->gpu_rank(); int procs_per_gpu=BUCKMF.device->procs_per_gpu(); - + if (world_me==0) BUCKMF.reinit(ntypes, cutsq, host_rhoinv, host_buck1, host_buck2, host_a, host_c, offset); - + BUCKMF.device->world_barrier(); for (int i=0; igpu_barrier(); } } void buck_gpu_clear() { - BUCKMF.clear(); + BUCKMF.clear(); } int ** buck_gpu_compute_n(const int ago, const int inum_full, @@ -128,8 +128,8 @@ int ** buck_gpu_compute_n(const int ago, const int inum_full, return BUCKMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void buck_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_cg_cmm.cpp b/lib/gpu/lal_cg_cmm.cpp index 96455888f0..d361e32b09 100644 --- a/lib/gpu/lal_cg_cmm.cpp +++ b/lib/gpu/lal_cg_cmm.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -33,23 +33,23 @@ CGCMMT::CGCMM() : BaseAtomic(), _allocated(false) { } template -CGCMMT::~CGCMM() { +CGCMMT::~CGCMM() { clear(); } - + template int CGCMMT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int CGCMMT::init(const int ntypes, double **host_cutsq, - int **host_cg_type, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, +int CGCMMT::init(const int ntypes, double **host_cutsq, + int **host_cg_type, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -75,12 +75,12 @@ int CGCMMT::init(const int ntypes, double **host_cutsq, host_write[i]=0.0; lj1.alloc(cmm_types*cmm_types,*(this->ucl_device),UCL_READ_ONLY); - this->atom->type_pack4(ntypes,cmm_types,lj1,host_write,host_cutsq, + this->atom->type_pack4(ntypes,cmm_types,lj1,host_write,host_cutsq, host_cg_type,host_lj1,host_lj2); lj3.alloc(cmm_types*cmm_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,cmm_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -126,7 +126,7 @@ void CGCMMT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -138,7 +138,7 @@ void CGCMMT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); diff --git a/lib/gpu/lal_cg_cmm.cu b/lib/gpu/lal_cg_cmm.cu index 8f89f74d22..70d2ab6092 100644 --- a/lib/gpu/lal_cg_cmm.cu +++ b/lib/gpu/lal_cg_cmm.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -24,15 +24,15 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_cg_cmm(const __global numtyp4 *restrict x_, +__kernel void k_cg_cmm(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, + const __global numtyp4 *restrict lj3, + const int lj_types, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -50,20 +50,20 @@ __kernel void k_cg_cmm(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii class CGCMM : public BaseAtomic { public: CGCMM(); - ~CGCMM(); + ~CGCMM(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,7 +40,7 @@ class CGCMM : public BaseAtomic { int init(const int ntypes, double **host_cutsq, int **host_cg_type, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); @@ -66,7 +66,7 @@ class CGCMM : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _cmm_types; private: diff --git a/lib/gpu/lal_cg_cmm_ext.cpp b/lib/gpu/lal_cg_cmm_ext.cpp index 0d2c3d8fbf..b6fc110b15 100644 --- a/lib/gpu/lal_cg_cmm_ext.cpp +++ b/lib/gpu/lal_cg_cmm_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -28,9 +28,9 @@ static CGCMM CMMMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int cmm_gpu_init(const int ntypes, double **cutsq, int **cg_types, - double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { CMMMF.clear(); @@ -55,7 +55,7 @@ int cmm_gpu_init(const int ntypes, double **cutsq, int **cg_types, int init_ok=0; if (world_me==0) - init_ok=CMMMF.init(ntypes,cutsq,cg_types,host_lj1,host_lj2,host_lj3, + init_ok=CMMMF.init(ntypes,cutsq,cg_types,host_lj1,host_lj2,host_lj3, host_lj4, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -78,7 +78,7 @@ int cmm_gpu_init(const int ntypes, double **cutsq, int **cg_types, maxspecial, cell_size, gpu_split, screen); CMMMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -103,8 +103,8 @@ int** cmm_gpu_compute_n(const int ago, const int inum_full, return CMMMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void cmm_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_cg_cmm_long.cpp b/lib/gpu/lal_cg_cmm_long.cpp index 92e6bd04b5..14b5b7622c 100644 --- a/lib/gpu/lal_cg_cmm_long.cpp +++ b/lib/gpu/lal_cg_cmm_long.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -37,22 +37,22 @@ template CGCMMLongT::~CGCMMLong() { clear(); } - + template int CGCMMLongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int CGCMMLongT::init(const int ntypes, double **host_cutsq, - int **host_cg_type, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, +int CGCMMLongT::init(const int ntypes, double **host_cutsq, + int **host_cg_type, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen, - double **host_cut_ljsq, + double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald) { @@ -137,7 +137,7 @@ void CGCMMLongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -149,13 +149,13 @@ void CGCMMLongT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, &this->atom->q, - &_cut_coulsq, &_qqrd2e, &_g_ewald, + &vflag, &ainum, &nbor_pitch, &this->atom->q, + &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); diff --git a/lib/gpu/lal_cg_cmm_long.cu b/lib/gpu/lal_cg_cmm_long.cu index ae8b6cda47..f6942d1809 100644 --- a/lib/gpu/lal_cg_cmm_long.cu +++ b/lib/gpu/lal_cg_cmm_long.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -29,12 +29,12 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_, +__kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, + const __global numtyp4 *restrict lj3, + const int lj_types, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, @@ -70,7 +70,7 @@ __kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; numtyp qtmp; fetch(qtmp,i,q_tex); int itype=ix.w; @@ -136,7 +136,7 @@ __kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_, if (rsq < lj1[mtype].y) { energy += factor_lj*inv1*(lj3[mtype].y*inv2-lj3[mtype].z)- lj3[mtype].w; - } + } } if (vflag>0) { virial[0] += delx*delx*force; @@ -154,17 +154,17 @@ __kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_cg_cmm_long_fast(const __global numtyp4 *restrict x_, +__kernel void k_cg_cmm_long_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global numtyp4 *restrict lj3_in, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, - const __global numtyp *restrict q_, + const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { int tid, ii, offset; @@ -179,7 +179,7 @@ __kernel void k_cg_cmm_long_fast(const __global numtyp4 *restrict x_, lj1[tid]=lj1_in[tid]; lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -187,16 +187,16 @@ __kernel void k_cg_cmm_long_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_cg_cmm_long.h b/lib/gpu/lal_cg_cmm_long.h index bde5c79c74..aa0cbfbaf0 100644 --- a/lib/gpu/lal_cg_cmm_long.h +++ b/lib/gpu/lal_cg_cmm_long.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ class CGCMMLong : public BaseCharge { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,8 +40,8 @@ class CGCMMLong : public BaseCharge { int init(const int ntypes, double **host_cutsq, int ** cg_type, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald); @@ -58,7 +58,7 @@ class CGCMMLong : public BaseCharge { // --------------------------- TYPE DATA -------------------------- - /// lj1.x = cutsq, lj1.y = cutsq_vdw, lj1.z = lj1, lj1.w = lj2, + /// lj1.x = cutsq, lj1.y = cutsq_vdw, lj1.z = lj1, lj1.w = lj2, UCL_D_Vec lj1; /// lj3.x = cg_type, lj3.y = lj3, lj3.z = lj4, lj3.w = offset UCL_D_Vec lj3; @@ -68,7 +68,7 @@ class CGCMMLong : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq, _qqrd2e, _g_ewald; diff --git a/lib/gpu/lal_cg_cmm_long_ext.cpp b/lib/gpu/lal_cg_cmm_long_ext.cpp index 966588bf9b..ee0a0269e5 100644 --- a/lib/gpu/lal_cg_cmm_long_ext.cpp +++ b/lib/gpu/lal_cg_cmm_long_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -28,9 +28,9 @@ static CGCMMLong CMMLMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int cmml_gpu_init(const int ntypes, double **cutsq, int **cg_type, - double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, double **host_cut_ljsq, double host_cut_coulsq, double *host_special_coul, const double qqrd2e, @@ -58,7 +58,7 @@ int cmml_gpu_init(const int ntypes, double **cutsq, int **cg_type, int init_ok=0; if (world_me==0) init_ok=CMMLMF.init(ntypes, cutsq, cg_type, host_lj1, host_lj2, host_lj3, - host_lj4, offset, special_lj, inum, nall, 300, + host_lj4, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e,g_ewald); @@ -82,7 +82,7 @@ int cmml_gpu_init(const int ntypes, double **cutsq, int **cg_type, host_cut_ljsq, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); CMMLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -99,7 +99,7 @@ void cmml_gpu_clear() { int** cmml_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -109,8 +109,8 @@ int** cmml_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q,boxlo,prd); -} - +} + void cmml_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_charmm_long.cpp b/lib/gpu/lal_charmm_long.cpp index 157072dc22..9cd032b3c6 100644 --- a/lib/gpu/lal_charmm_long.cpp +++ b/lib/gpu/lal_charmm_long.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template CHARMMLongT::~CHARMMLong() { clear(); } - + template int CHARMMLongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,9 +45,9 @@ int CHARMMLongT::bytes_per_atom(const int max_nbors) const { template int CHARMMLongT::init(const int ntypes, - double host_cut_bothsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, + double host_cut_bothsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -144,7 +144,7 @@ void CHARMMLongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -153,17 +153,17 @@ void CHARMMLongT::loop(const bool _eflag, const bool _vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_fast.set_size(GX,BX); - this->k_pair_fast.run(&this->atom->x, &ljd, &sp_lj, + this->k_pair_fast.run(&this->atom->x, &ljd, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_g_ewald, &_denom_lj, - &_cut_bothsq, &_cut_ljsq, &_cut_lj_innersq, + &_cut_bothsq, &_cut_ljsq, &_cut_lj_innersq, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &lj1, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_g_ewald, &_denom_lj, diff --git a/lib/gpu/lal_charmm_long.cu b/lib/gpu/lal_charmm_long.cu index dde50da300..244131f833 100644 --- a/lib/gpu/lal_charmm_long.cu +++ b/lib/gpu/lal_charmm_long.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -31,14 +31,14 @@ texture q_tex; __kernel void k_charmm_long(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const int lj_types, + const int lj_types, const __global numtyp *restrict sp_lj, const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const numtyp denom_lj, @@ -61,7 +61,7 @@ __kernel void k_charmm_long(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; numtyp qtmp; fetch(qtmp,i,q_tex); int itype=ix.w; @@ -93,7 +93,7 @@ __kernel void k_charmm_long(const __global numtyp4 *restrict x_, force_lj = factor_lj*r6inv*(lj1[mtype].x*r6inv-lj1[mtype].y); if (rsq > cut_lj_innersq) { switch1 = (cut_ljsq-rsq); - numtyp switch2 = (numtyp)12.0*rsq*switch1*(rsq-cut_lj_innersq)/ + numtyp switch2 = (numtyp)12.0*rsq*switch1*(rsq-cut_lj_innersq)/ denom_lj; switch1 *= switch1; switch1 *= (cut_ljsq+(numtyp)2.0*rsq-(numtyp)3.0*cut_lj_innersq)/ @@ -130,7 +130,7 @@ __kernel void k_charmm_long(const __global numtyp4 *restrict x_, if (rsq > cut_lj_innersq) e *= switch1; energy+=factor_lj*e; - } + } } if (vflag>0) { virial[0] += delx*delx*force; @@ -148,19 +148,19 @@ __kernel void k_charmm_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_charmm_long_fast(const __global numtyp4 *restrict x_, +__kernel void k_charmm_long_fast(const __global numtyp4 *restrict x_, const __global numtyp2 *restrict ljd_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const numtyp denom_lj, - const numtyp cut_bothsq, const numtyp cut_ljsq, + const numtyp cut_bothsq, const numtyp cut_ljsq, const numtyp cut_lj_innersq, const int t_per_atom) { int tid, ii, offset; @@ -174,7 +174,7 @@ __kernel void k_charmm_long_fast(const __global numtyp4 *restrict x_, ljd[tid]=ljd_in[tid]; if (tid+BLOCK_BIO_PAIR cut_lj_innersq) { switch1 = (cut_ljsq-rsq); - numtyp switch2 = (numtyp)12.0*rsq*switch1*(rsq-cut_lj_innersq)/ + numtyp switch2 = (numtyp)12.0*rsq*switch1*(rsq-cut_lj_innersq)/ denom_lj; switch1 *= switch1; switch1 *= (cut_ljsq+(numtyp)2.0*rsq-(numtyp)3.0*cut_lj_innersq)/ diff --git a/lib/gpu/lal_charmm_long.h b/lib/gpu/lal_charmm_long.h index 201a5c3694..011083db13 100644 --- a/lib/gpu/lal_charmm_long.h +++ b/lib/gpu/lal_charmm_long.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ class CHARMMLong : public BaseCharge { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,12 +40,12 @@ class CHARMMLong : public BaseCharge { int init(const int ntypes, double host_cut_bothsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald, - const double cut_lj_innersq, const double denom_lj, + const double cut_lj_innersq, const double denom_lj, double **epsilon, double **sigma, const bool mix_arithmetic); /// Clear all host and device data @@ -70,7 +70,7 @@ class CHARMMLong : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e, _g_ewald, _denom_lj; diff --git a/lib/gpu/lal_charmm_long_ext.cpp b/lib/gpu/lal_charmm_long_ext.cpp index 807988a3e8..e24c650be4 100644 --- a/lib/gpu/lal_charmm_long_ext.cpp +++ b/lib/gpu/lal_charmm_long_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -87,7 +87,7 @@ int crml_gpu_init(const int ntypes, double cut_bothsq, double **host_lj1, sigma, mix_arithmetic); CRMLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -104,7 +104,7 @@ void crml_gpu_clear() { int** crml_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -114,14 +114,14 @@ int** crml_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void crml_gpu_compute(const int ago, const int inum_full, - const int nall, double **host_x, int *host_type, + const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, - const bool eflag, const bool vflag, const bool eatom, + const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, - bool &success, double *host_q, const int nlocal, + bool &success, double *host_q, const int nlocal, double *boxlo, double *prd) { CRMLMF.compute(ago,inum_full,nall,host_x,host_type,ilist,numj,firstneigh, eflag,vflag,eatom,vatom,host_start,cpu_time,success,host_q, diff --git a/lib/gpu/lal_colloid.cpp b/lib/gpu/lal_colloid.cpp index 28045217d3..fb2b643e5e 100644 --- a/lib/gpu/lal_colloid.cpp +++ b/lib/gpu/lal_colloid.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,23 +33,23 @@ ColloidT::Colloid() : BaseAtomic(), _allocated(false) { } template -ColloidT::~Colloid() { +ColloidT::~Colloid() { clear(); } - + template int ColloidT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int ColloidT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, - double *host_special_lj, double **host_a12, - double **host_a1, double **host_a2, - double **host_d1, double **host_d2, +int ColloidT::init(const int ntypes, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, + double *host_special_lj, double **host_a12, + double **host_a1, double **host_a2, + double **host_d1, double **host_d2, double **host_sigma3, double **host_sigma6, int **host_form, const int nlocal, const int nall, const int max_nbors, @@ -97,7 +97,7 @@ int ColloidT::init(const int ntypes, UCL_H_Vec dview_form(lj_types*lj_types,*(this->ucl_device), UCL_WRITE_ONLY); for (int i=0; iucl_device),UCL_READ_ONLY); for (int i=0; i(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -170,9 +170,9 @@ void ColloidT::loop(const bool _eflag, const bool _vflag) { } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &colloid1, &colloid2, &form, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, &vflag, + &colloid1, &colloid2, &form, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_colloid.cu b/lib/gpu/lal_colloid.cu index a4d6c8bf33..28a9809b19 100644 --- a/lib/gpu/lal_colloid.cu +++ b/lib/gpu/lal_colloid.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,18 +24,18 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_colloid(const __global numtyp4 *restrict x_, +__kernel void k_colloid(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global numtyp4 *restrict colloid1, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global numtyp4 *restrict colloid1, const __global numtyp4 *restrict colloid2, - const __global int *form, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *form, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -53,20 +53,20 @@ __kernel void k_colloid(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -176,22 +176,22 @@ __kernel void k_colloid(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_colloid_fast(const __global numtyp4 *restrict x_, +__kernel void k_colloid_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, - const __global numtyp4 *restrict colloid1_in, + const __global numtyp4 *restrict colloid1_in, const __global numtyp4 *restrict colloid2_in, - const __global int *form_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const __global int *form_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 colloid1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; @@ -208,7 +208,7 @@ __kernel void k_colloid_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -217,7 +217,7 @@ __kernel void k_colloid_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_colloid.h b/lib/gpu/lal_colloid.h index 416beabcdf..dfbd4dbadd 100644 --- a/lib/gpu/lal_colloid.h +++ b/lib/gpu/lal_colloid.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Colloid : public BaseAtomic { public: Colloid(); - ~Colloid(); + ~Colloid(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,11 +40,11 @@ class Colloid : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - double **host_a12, double **host_a1, double **host_a2, - double **host_d1, double **host_d2, double **host_sigma3, - double **host_sigma6, int **host_form, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + double **host_a12, double **host_a1, double **host_a2, + double **host_d1, double **host_d2, double **host_sigma3, + double **host_sigma6, int **host_form, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -65,7 +65,7 @@ class Colloid : public BaseAtomic { UCL_D_Vec lj3; /// colloid1.x = a12, colloid1.y = a1, colloid1.z = a2 UCL_D_Vec colloid1; - /// colloid2.x = d1, colloid2.y = d2, colloid2.z = sigma3, + /// colloid2.x = d1, colloid2.y = d2, colloid2.z = sigma3, /// colloid2.w = sigma6 UCL_D_Vec colloid2; /// form @@ -76,7 +76,7 @@ class Colloid : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_colloid_ext.cpp b/lib/gpu/lal_colloid_ext.cpp index ea83cb6417..8e1b18e72f 100644 --- a/lib/gpu/lal_colloid_ext.cpp +++ b/lib/gpu/lal_colloid_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -29,9 +29,9 @@ static Colloid COLLMF; // --------------------------------------------------------------------------- int colloid_gpu_init(const int ntypes, double **cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, - double **offset, double *special_lj, - double **host_a12, double **host_a1, double **host_a2, - double **host_d1, double **host_d2, double **host_sigma3, + double **offset, double *special_lj, + double **host_a12, double **host_a1, double **host_a2, + double **host_d1, double **host_d2, double **host_sigma3, double **host_sigma6, int **host_form, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { @@ -57,9 +57,9 @@ int colloid_gpu_init(const int ntypes, double **cutsq, double **host_lj1, int init_ok=0; if (world_me==0) - init_ok=COLLMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, + init_ok=COLLMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, special_lj, host_a12, host_a1, - host_a2, host_d1, host_d2, host_sigma3, + host_a2, host_d1, host_d2, host_sigma3, host_sigma6, host_form, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -78,13 +78,13 @@ int colloid_gpu_init(const int ntypes, double **cutsq, double **host_lj1, } if (gpu_rank==i && world_me!=0) init_ok=COLLMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, - offset, special_lj, host_a12, host_a1, host_a2, - host_d1, host_d2, host_sigma3, host_sigma6, host_form, + offset, special_lj, host_a12, host_a1, host_a2, + host_d1, host_d2, host_sigma3, host_sigma6, host_form, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); COLLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -109,8 +109,8 @@ int ** colloid_gpu_compute_n(const int ago, const int inum_full, return COLLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void colloid_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_coul.cpp b/lib/gpu/lal_coul.cpp index 53fb3dae82..a06a29e610 100644 --- a/lib/gpu/lal_coul.cpp +++ b/lib/gpu/lal_coul.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndtrung@umich.edu ***************************************************************************/ @@ -37,7 +37,7 @@ template CoulT::~Coul() { clear(); } - + template int CoulT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -75,7 +75,7 @@ int CoulT::init(const int ntypes, double **host_scale, double **host_cutsq, scale.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,scale,host_write,host_scale); - + cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,cutsq,host_write,host_cutsq); @@ -97,10 +97,10 @@ void CoulT::reinit(const int ntypes, double **host_scale) { // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack1(ntypes,_lj_types,scale,host_write,host_scale); } @@ -138,7 +138,7 @@ void CoulT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -149,14 +149,14 @@ void CoulT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &scale, &sp_cl, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &scale, &_lj_types, &sp_cl, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_coul.cu b/lib/gpu/lal_coul.cu index e955922a7c..503e674c81 100644 --- a/lib/gpu/lal_coul.cu +++ b/lib/gpu/lal_coul.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : ndtrung@umich.edu // ***************************************************************************/ @@ -33,14 +33,14 @@ __kernel void k_coul(const __global numtyp4 *restrict x_, const __global numtyp *restrict scale, const int lj_types, const __global numtyp *restrict sp_cl_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, - const __global numtyp *restrict q_, - const __global numtyp *restrict cutsq, + const int nbor_pitch, + const __global numtyp *restrict q_, + const __global numtyp *restrict cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -50,7 +50,7 @@ __kernel void k_coul(const __global numtyp4 *restrict x_, sp_cl[1]=sp_cl_in[1]; sp_cl[2]=sp_cl_in[2]; sp_cl[3]=sp_cl_in[3]; - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -58,13 +58,13 @@ __kernel void k_coul(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -39,13 +39,13 @@ class Coul : public BaseCharge { * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_scale, double **host_cutsq, double *host_special_coul, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, const double qqrd2e); - + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_scale); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -68,7 +68,7 @@ class Coul : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e; diff --git a/lib/gpu/lal_coul_debye.cpp b/lib/gpu/lal_coul_debye.cpp index 990dff6db9..9098aeacb1 100644 --- a/lib/gpu/lal_coul_debye.cpp +++ b/lib/gpu/lal_coul_debye.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndtrung@umich.edu ***************************************************************************/ @@ -37,7 +37,7 @@ template CoulDebyeT::~CoulDebye() { clear(); } - + template int CoulDebyeT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -87,7 +87,7 @@ int CoulDebyeT::init(const int ntypes, double **host_scale, _qqrd2e=qqrd2e; _kappa=kappa; - + _allocated=true; this->_max_bytes=cutsq.row_bytes()+scale.row_bytes()+sp_cl.row_bytes(); return 0; @@ -98,10 +98,10 @@ void CoulDebyeT::reinit(const int ntypes, double **host_scale) { // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack1(ntypes,_lj_types,scale,host_write,host_scale); } @@ -139,7 +139,7 @@ void CoulDebyeT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -156,9 +156,9 @@ void CoulDebyeT::loop(const bool _eflag, const bool _vflag) { } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &scale, &_lj_types, &sp_cl, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->q, &cutsq, + &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &_kappa, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_coul_debye.cu b/lib/gpu/lal_coul_debye.cu index 0e4c0ea2d0..464a1b18de 100644 --- a/lib/gpu/lal_coul_debye.cu +++ b/lib/gpu/lal_coul_debye.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : ndtrung@umich.edu // ***************************************************************************/ @@ -31,16 +31,16 @@ texture q_tex; __kernel void k_coul_debye(const __global numtyp4 *restrict x_, const __global numtyp *restrict scale, - const int lj_types, + const int lj_types, const __global numtyp *restrict sp_cl_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp *restrict q_ , - const __global numtyp *restrict cutsq, + const __global numtyp *restrict cutsq, const numtyp qqrd2e, const numtyp kappa, const int t_per_atom) { int tid, ii, offset; @@ -59,27 +59,27 @@ __kernel void k_coul_debye(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -39,14 +39,14 @@ class CoulDebye : public BaseCharge { * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_scale, double **host_cutsq, double *host_special_coul, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, const double qqrd2e, const double kappa); - + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_scale); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -69,7 +69,7 @@ class CoulDebye : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e,_kappa; diff --git a/lib/gpu/lal_coul_debye_ext.cpp b/lib/gpu/lal_coul_debye_ext.cpp index ced08b63e4..af9156c24c 100644 --- a/lib/gpu/lal_coul_debye_ext.cpp +++ b/lib/gpu/lal_coul_debye_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndtrung@umich.edu ***************************************************************************/ @@ -75,7 +75,7 @@ int cdebye_gpu_init(const int ntypes, double **host_scale, double **cutsq, maxspecial, cell_size, gpu_split, screen, qqrd2e, kappa); CDEMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -93,16 +93,16 @@ void cdebye_gpu_reinit(const int ntypes, double **host_scale) { int world_me=CDEMF.device->world_me(); int gpu_rank=CDEMF.device->gpu_rank(); int procs_per_gpu=CDEMF.device->procs_per_gpu(); - + if (world_me==0) CDEMF.reinit(ntypes, host_scale); - + CDEMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } } @@ -123,8 +123,8 @@ int** cdebye_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void cdebye_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_coul_dsf.cpp b/lib/gpu/lal_coul_dsf.cpp index ca81d32b2d..32c4342fbe 100644 --- a/lib/gpu/lal_coul_dsf.cpp +++ b/lib/gpu/lal_coul_dsf.cpp @@ -37,18 +37,18 @@ template CoulDSFT::~CoulDSF() { clear(); } - + template int CoulDSFT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int CoulDSFT::init(const int ntypes, const int nlocal, const int nall, - const int max_nbors, const int maxspecial, +int CoulDSFT::init(const int ntypes, const int nlocal, const int nall, + const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen, const double host_cut_coulsq, double *host_special_coul, - const double qqrd2e, const double e_shift, const double f_shift, + const double qqrd2e, const double e_shift, const double f_shift, const double alpha) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -123,7 +123,7 @@ void CoulDSFT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -134,15 +134,15 @@ void CoulDSFT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_e_shift, &_f_shift, &_alpha, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, + this->k_pair.run(&this->atom->x, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_e_shift, &_f_shift, &_alpha, &this->_threads_per_atom); diff --git a/lib/gpu/lal_coul_dsf.cu b/lib/gpu/lal_coul_dsf.cu index fc5bf5f138..82c44cd382 100644 --- a/lib/gpu/lal_coul_dsf.cu +++ b/lib/gpu/lal_coul_dsf.cu @@ -31,18 +31,18 @@ texture q_tex; #define MY_PIS (acctyp)1.77245385090551602729 -__kernel void k_coul_dsf(const __global numtyp4 *restrict x_, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, +__kernel void k_coul_dsf(const __global numtyp4 *restrict x_, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_ , const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp e_shift, const numtyp f_shift, + const numtyp e_shift, const numtyp f_shift, const numtyp alpha, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -60,19 +60,19 @@ __kernel void k_coul_dsf(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { - acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * + acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * qtmp*qtmp*qqrd2e/(acctyp)t_per_atom; e_coul += (acctyp)2.0*e_self; } @@ -102,9 +102,9 @@ __kernel void k_coul_dsf(const __global numtyp4 *restrict x_, numtyp erfcd = ucl_exp(-alpha*alpha*rsq); numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*alpha*r); erfcc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * erfcd; - forcecoul = prefactor * (erfcc + (numtyp)2.0*alpha/MY_PIS*r*erfcd + + forcecoul = prefactor * (erfcc + (numtyp)2.0*alpha/MY_PIS*r*erfcd + rsq*f_shift-factor_coul); - + force = forcecoul * r2inv; f.x+=delx*force; @@ -131,17 +131,17 @@ __kernel void k_coul_dsf(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_coul_dsf_fast(const __global numtyp4 *restrict x_, +__kernel void k_coul_dsf_fast(const __global numtyp4 *restrict x_, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp e_shift, const numtyp f_shift, + const numtyp e_shift, const numtyp f_shift, const numtyp alpha, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -149,7 +149,7 @@ __kernel void k_coul_dsf_fast(const __global numtyp4 *restrict x_, __local numtyp sp_lj[4]; if (tid<4) sp_lj[tid]=sp_lj_in[tid]; - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -157,25 +157,25 @@ __kernel void k_coul_dsf_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { - acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * + acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * qtmp*qtmp*qqrd2e/(acctyp)t_per_atom; e_coul += (acctyp)2.0*e_self; } - + for ( ; nbor { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, const int nlocal, const int nall, - const int max_nbors, const int maxspecial, + int init(const int ntypes, const int nlocal, const int nall, + const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, const double host_cut_coulsq, double *host_special_coul, - const double qqrd2e, const double e_shift, const double f_shift, + const double qqrd2e, const double e_shift, const double f_shift, const double alpha); /// Clear all host and device data @@ -62,7 +62,7 @@ class CoulDSF : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e; diff --git a/lib/gpu/lal_coul_dsf_ext.cpp b/lib/gpu/lal_coul_dsf_ext.cpp index e65a090a16..026dd924c9 100644 --- a/lib/gpu/lal_coul_dsf_ext.cpp +++ b/lib/gpu/lal_coul_dsf_ext.cpp @@ -27,11 +27,11 @@ static CoulDSF CDMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int cdsf_gpu_init(const int ntypes, const int inum, const int nall, +int cdsf_gpu_init(const int ntypes, const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, - const double host_cut_coulsq, double *host_special_coul, - const double qqrd2e, const double e_shift, const double f_shift, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double e_shift, const double f_shift, const double alpha) { CDMF.clear(); gpu_mode=CDMF.device->gpu_mode(); @@ -55,8 +55,8 @@ int cdsf_gpu_init(const int ntypes, const int inum, const int nall, int init_ok=0; if (world_me==0) - init_ok=CDMF.init(ntypes, inum, nall, 300, maxspecial, cell_size, - gpu_split, screen, host_cut_coulsq, host_special_coul, + init_ok=CDMF.init(ntypes, inum, nall, 300, maxspecial, cell_size, + gpu_split, screen, host_cut_coulsq, host_special_coul, qqrd2e, e_shift, f_shift, alpha); CDMF.device->world_barrier(); @@ -73,12 +73,12 @@ int cdsf_gpu_init(const int ntypes, const int inum, const int nall, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=CDMF.init(ntypes, inum, nall, 300, maxspecial, cell_size, - gpu_split, screen, host_cut_coulsq, host_special_coul, + init_ok=CDMF.init(ntypes, inum, nall, 300, maxspecial, cell_size, + gpu_split, screen, host_cut_coulsq, host_special_coul, qqrd2e, e_shift, f_shift, alpha); CDMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -95,7 +95,7 @@ void cdsf_gpu_clear() { int** cdsf_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -105,8 +105,8 @@ int** cdsf_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void cdsf_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_coul_ext.cpp b/lib/gpu/lal_coul_ext.cpp index 291546d5b1..f03d8fcdfc 100644 --- a/lib/gpu/lal_coul_ext.cpp +++ b/lib/gpu/lal_coul_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndtrung@umich.edu ***************************************************************************/ @@ -75,7 +75,7 @@ int coul_gpu_init(const int ntypes, double **host_scale, maxspecial, cell_size, gpu_split, screen, qqrd2e); COULMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -93,16 +93,16 @@ void coul_gpu_reinit(const int ntypes, double **host_scale) { int world_me=COULMF.device->world_me(); int gpu_rank=COULMF.device->gpu_rank(); int procs_per_gpu=COULMF.device->procs_per_gpu(); - + if (world_me==0) COULMF.reinit(ntypes, host_scale); - + COULMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } } @@ -113,7 +113,7 @@ void coul_gpu_clear() { int** coul_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -123,8 +123,8 @@ int** coul_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void coul_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_coul_long.cpp b/lib/gpu/lal_coul_long.cpp index d6e16a9668..b4c6a44d2f 100644 --- a/lib/gpu/lal_coul_long.cpp +++ b/lib/gpu/lal_coul_long.cpp @@ -36,7 +36,7 @@ template CoulLongT::~CoulLong() { clear(); } - + template int CoulLongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -51,7 +51,7 @@ int CoulLongT::init(const int ntypes, double **host_scale, const double qqrd2e, const double g_ewald) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, - gpu_split,_screen,coul_long,"k_coul_long"); + gpu_split,_screen,coul_long,"k_coul_long"); if (success!=0) return success; @@ -67,13 +67,13 @@ int CoulLongT::init(const int ntypes, double **host_scale, // Allocate a host write buffer for data initialization UCL_H_Vec host_write(lj_types*lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; iucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,scale,host_write,host_scale); - + sp_cl.alloc(4,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { host_write[i]=host_special_coul[i]; @@ -129,7 +129,7 @@ void CoulLongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -141,13 +141,13 @@ void CoulLongT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &scale, &sp_cl, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, - &eflag, &vflag, &ainum, &nbor_pitch, + &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &scale, &_lj_types, &sp_cl, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); diff --git a/lib/gpu/lal_coul_long.cu b/lib/gpu/lal_coul_long.cu index 12bbbee7d2..365195e00c 100644 --- a/lib/gpu/lal_coul_long.cu +++ b/lib/gpu/lal_coul_long.cu @@ -123,16 +123,16 @@ texture q_tex; #endif -__kernel void k_coul_long(const __global numtyp4 *restrict x_, +__kernel void k_coul_long(const __global numtyp4 *restrict x_, const __global numtyp *restrict scale, const int lj_types, - const __global numtyp *restrict sp_cl_in, + const __global numtyp *restrict sp_cl_in, const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { @@ -216,15 +216,15 @@ __kernel void k_coul_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_coul_long_fast(const __global numtyp4 *restrict x_, +__kernel void k_coul_long_fast(const __global numtyp4 *restrict x_, const __global numtyp *restrict scale_in, const __global numtyp *restrict sp_cl_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, + __global acctyp4 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { diff --git a/lib/gpu/lal_coul_long.h b/lib/gpu/lal_coul_long.h index 52ed60111b..d12198fccc 100644 --- a/lib/gpu/lal_coul_long.h +++ b/lib/gpu/lal_coul_long.h @@ -30,7 +30,7 @@ class CoulLong : public BaseCharge { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,13 +40,13 @@ class CoulLong : public BaseCharge { int init(const int ntypes, double **scale, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, - const double gpu_split, FILE *screen, - const double host_cut_coulsq, double *host_special_coul, - const double qqrd2e, const double g_ewald); - + const double gpu_split, FILE *screen, + const double host_cut_coulsq, double *host_special_coul, + const double qqrd2e, const double g_ewald); + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **scale); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); diff --git a/lib/gpu/lal_coul_long_ext.cpp b/lib/gpu/lal_coul_long_ext.cpp index 5552dc2437..06c102b2d1 100644 --- a/lib/gpu/lal_coul_long_ext.cpp +++ b/lib/gpu/lal_coul_long_ext.cpp @@ -95,16 +95,16 @@ void cl_gpu_reinit(const int ntypes, double **host_scale) { int world_me=CLMF.device->world_me(); int gpu_rank=CLMF.device->gpu_rank(); int procs_per_gpu=CLMF.device->procs_per_gpu(); - + if (world_me==0) CLMF.reinit(ntypes, host_scale); - + CLMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } } @@ -114,28 +114,28 @@ void cl_gpu_clear() { } int** cl_gpu_compute_n(const int ago, const int inum_full, - const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, - int **ilist, int **jnum, const double cpu_time, - bool &success, double *host_q, double *boxlo, - double *prd) { + const int nall, double **host_x, int *host_type, + double *sublo, double *subhi, tagint *tag, int **nspecial, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, + bool &success, double *host_q, double *boxlo, + double *prd) { return CLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, - subhi, tag, nspecial, special, eflag, vflag, eatom, - vatom, host_start, ilist, jnum, cpu_time, success, - host_q, boxlo, prd); + subhi, tag, nspecial, special, eflag, vflag, eatom, + vatom, host_start, ilist, jnum, cpu_time, success, + host_q, boxlo, prd); } void cl_gpu_compute(const int ago, const int inum_full, const int nall, - double **host_x, int *host_type, int *ilist, int *numj, - int **firstneigh, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, - const double cpu_time, bool &success, double *host_q, - const int nlocal, double *boxlo, double *prd) { + double **host_x, int *host_type, int *ilist, int *numj, + int **firstneigh, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + const double cpu_time, bool &success, double *host_q, + const int nlocal, double *boxlo, double *prd) { CLMF.compute(ago,inum_full,nall,host_x,host_type,ilist,numj, - firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success, - host_q,nlocal,boxlo,prd); + firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success, + host_q,nlocal,boxlo,prd); } double cl_gpu_bytes() { diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index f326657e31..e95f2b30ef 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -45,8 +45,8 @@ DeviceT::~Device() { template int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, - const int last_gpu, const int gpu_mode, - const double p_split, const int nthreads, + const int last_gpu, const int gpu_mode, + const double p_split, const int nthreads, const int t_per_atom, const double cell_size, char *ocl_vendor, const int block_pair) { _nthreads=nthreads; @@ -83,8 +83,8 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, MPI_Allgather(&node_name,MPI_MAX_PROCESSOR_NAME,MPI_CHAR,&node_names, MPI_MAX_PROCESSOR_NAME,MPI_CHAR,_comm_world); std::string node_string=std::string(node_name); - - // Get the number of procs per node + + // Get the number of procs per node std::map name_map; std::map::iterator np; for (int i=0; i<_world_size; i++) { @@ -104,12 +104,12 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, split_id=split_num; split_num++; } - + // Set up a per node communicator and find rank within MPI_Comm node_comm; - MPI_Comm_split(_comm_world, split_id, 0, &node_comm); + MPI_Comm_split(_comm_world, split_id, 0, &node_comm); int node_rank; - MPI_Comm_rank(node_comm,&node_rank); + MPI_Comm_rank(node_comm,&node_rank); // set the device ID _procs_per_gpu=static_cast(ceil(static_cast(procs_per_node)/ @@ -120,7 +120,7 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, _time_device=true; if (_procs_per_gpu>1) _time_device=false; - + // Set up a per device communicator MPI_Comm_split(node_comm,my_gpu,0,&_comm_gpu); MPI_Comm_rank(_comm_gpu,&_gpu_rank); @@ -128,12 +128,12 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, gpu=new UCL_Device(); if (my_gpu>=gpu->num_devices()) return -2; - + #ifndef CUDA_PROXY if (_procs_per_gpu>1 && gpu->sharing_supported(my_gpu)==false) return -7; #endif - + if (gpu->set(my_gpu)!=UCL_SUCCESS) return -6; @@ -144,7 +144,7 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, if (set_ocl_params(ocl_vendor)!=0) return -11; - + int flag=0; for (int i=0; i<_procs_per_gpu; i++) { if (_gpu_rank==i) @@ -162,7 +162,7 @@ int DeviceT::set_ocl_params(char *ocl_vendor) { s_vendor=ocl_vendor; if (s_vendor=="none") s_vendor="generic"; - + if (s_vendor=="kepler") { _ocl_vendor_name="NVIDIA Kepler"; #if defined (__APPLE__) || defined(MACOSX) @@ -170,19 +170,19 @@ int DeviceT::set_ocl_params(char *ocl_vendor) { #else _ocl_vendor_string="-DKEPLER_OCL"; #endif - } else if (s_vendor=="fermi") { + } else if (s_vendor=="fermi") { _ocl_vendor_name="NVIDIA Fermi"; _ocl_vendor_string="-DFERMI_OCL"; - } else if (s_vendor=="cypress") { + } else if (s_vendor=="cypress") { _ocl_vendor_name="AMD Cypress"; _ocl_vendor_string="-DCYPRESS_OCL"; - } else if (s_vendor=="phi") { + } else if (s_vendor=="phi") { _ocl_vendor_name="Intel Phi"; _ocl_vendor_string="-DPHI_OCL"; - } else if (s_vendor=="intel") { + } else if (s_vendor=="intel") { _ocl_vendor_name="Intel CPU"; _ocl_vendor_string="-DINTEL_OCL"; - } else if (s_vendor=="generic") { + } else if (s_vendor=="generic") { _ocl_vendor_name="GENERIC"; _ocl_vendor_string="-DGENERIC_OCL"; } else { @@ -220,10 +220,10 @@ int DeviceT::set_ocl_params(char *ocl_vendor) { template int DeviceT::init(Answer &ans, const bool charge, - const bool rot, const int nlocal, + const bool rot, const int nlocal, const int host_nlocal, const int nall, Neighbor *nbor, const int maxspecial, - const int gpu_host, const int max_nbors, + const int gpu_host, const int max_nbors, const double cell_size, const bool pre_cut, const int threads_per_atom, const bool vel) { if (!_device_init) @@ -254,7 +254,7 @@ int DeviceT::init(Answer &ans, const bool charge, // Initialize atom and nbor data if (!atom.init(nall,charge,rot,*gpu,gpu_nbor,gpu_nbor>0 && maxspecial>0,vel)) return -3; - + _data_in_estimate++; if (charge) _data_in_estimate++; @@ -272,12 +272,12 @@ int DeviceT::init(Answer &ans, const bool charge, if (!atom.add_fields(charge,rot,gpu_nbor,gpu_nbor>0 && maxspecial,vel)) return -3; } - + if (!ans.init(ef_nlocal,charge,rot,*gpu)) return -3; if (!nbor->init(&_neighbor_shared,ef_nlocal,host_nlocal,max_nbors,maxspecial, - *gpu,gpu_nbor,gpu_host,pre_cut, _block_cell_2d, + *gpu,gpu_nbor,gpu_host,pre_cut, _block_cell_2d, _block_cell_id, _block_nbor_build, threads_per_atom, _warp_size, _time_device, compile_string())) return -3; @@ -294,7 +294,7 @@ template int DeviceT::init(Answer &ans, const int nlocal, const int nall) { if (!_device_init) - return -1; + return -1; if (sizeof(acctyp)==sizeof(double) && gpu->double_precision()==false) return -5; @@ -361,7 +361,7 @@ void DeviceT::init_message(FILE *screen, const char *name, if (i==first_gpu) sname=gpu->name(i)+", "+toa(gpu->cus(i))+" CUs, "+fs+ toa(gpu->gigabytes(i))+" GB, "+toa(gpu->clock_rate(i))+" GHZ ("; - else + else sname=gpu->name(i)+", "+toa(gpu->cus(i))+" CUs, "+ toa(gpu->clock_rate(i))+" GHZ ("; if (sizeof(PRECISION)==4) { @@ -381,7 +381,7 @@ void DeviceT::init_message(FILE *screen, const char *name, } template -void DeviceT::estimate_gpu_overhead(const int kernel_calls, +void DeviceT::estimate_gpu_overhead(const int kernel_calls, double &gpu_overhead, double &gpu_driver_overhead) { UCL_H_Vec *host_data_in=NULL, *host_data_out=NULL; @@ -394,38 +394,38 @@ void DeviceT::estimate_gpu_overhead(const int kernel_calls, dev_data_in=new UCL_D_Vec[_data_in_estimate]; timers_in=new UCL_Timer[_data_in_estimate]; } - + if (_data_out_estimate>0) { host_data_out=new UCL_H_Vec[_data_out_estimate]; dev_data_out=new UCL_D_Vec[_data_out_estimate]; timers_out=new UCL_Timer[_data_out_estimate]; } - + if (kernel_calls>0) { kernel_data=new UCL_D_Vec[kernel_calls]; timers_kernel=new UCL_Timer[kernel_calls]; } - + for (int i=0; i<_data_in_estimate; i++) { host_data_in[i].alloc(1,*gpu); dev_data_in[i].alloc(1,*gpu); timers_in[i].init(*gpu); - } - + } + for (int i=0; i<_data_out_estimate; i++) { host_data_out[i].alloc(1,*gpu); dev_data_out[i].alloc(1,*gpu); timers_out[i].init(*gpu); - } - + } + for (int i=0; isync(); gpu_barrier(); @@ -439,7 +439,7 @@ void DeviceT::estimate_gpu_overhead(const int kernel_calls, ucl_copy(dev_data_in[i],host_data_in[i],true); timers_in[i].stop(); } - + for (int i=0; i0) { delete [] host_data_out; delete [] dev_data_out; delete [] timers_out; } - + if (kernel_calls>0) { delete [] kernel_data; delete [] timers_kernel; } -} +} template -void DeviceT::output_times(UCL_Timer &time_pair, Answer &ans, - Neighbor &nbor, const double avg_split, +void DeviceT::output_times(UCL_Timer &time_pair, Answer &ans, + Neighbor &nbor, const double avg_split, const double max_bytes, const double gpu_overhead, - const double driver_overhead, + const double driver_overhead, const int threads_per_atom, FILE *screen) { double single[9], times[9]; int post_final=0; @@ -557,14 +557,14 @@ void DeviceT::output_times(UCL_Timer &time_pair, Answer &ans, } template -void DeviceT::output_kspace_times(UCL_Timer &time_in, +void DeviceT::output_kspace_times(UCL_Timer &time_in, UCL_Timer &time_out, UCL_Timer &time_map, UCL_Timer &time_rho, UCL_Timer &time_interp, - Answer &ans, - const double max_bytes, - const double cpu_time, + Answer &ans, + const double max_bytes, + const double cpu_time, const double idle_time, FILE *screen) { double single[8], times[8]; @@ -650,8 +650,8 @@ int DeviceT::compile_kernels() { int flag=0; if (_compiled) - return flag; - + return flag; + dev_program=new UCL_Program(*gpu); int success=dev_program->load_string(device,compile_string().c_str()); if (success!=UCL_SUCCESS) @@ -664,7 +664,7 @@ int DeviceT::compile_kernels() { k_info.set_size(1,1); k_info.run(&gpu_lib_data); gpu_lib_data.update_host(false); - + _ptx_arch=static_cast(gpu_lib_data[0])/100.0; #ifndef USE_OPENCL if (_ptx_arch>gpu->arch() || floor(_ptx_arch)arch())) @@ -705,7 +705,7 @@ int DeviceT::compile_kernels() { if (_threads_per_charge & (_threads_per_charge - 1)) _threads_per_charge=1; - return flag; + return flag; } template @@ -718,12 +718,12 @@ template class Device; Device global_device; int lmp_init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, - const int last_gpu, const int gpu_mode, + const int last_gpu, const int gpu_mode, const double particle_split, const int nthreads, - const int t_per_atom, const double cell_size, + const int t_per_atom, const double cell_size, char *opencl_vendor, const int block_pair) { return global_device.init_device(world,replica,first_gpu,last_gpu,gpu_mode, - particle_split,nthreads,t_per_atom, + particle_split,nthreads,t_per_atom, cell_size,opencl_vendor,block_pair); } diff --git a/lib/gpu/lal_device.cu b/lib/gpu/lal_device.cu index 28b58f7760..6761b23fbb 100644 --- a/lib/gpu/lal_device.cu +++ b/lib/gpu/lal_device.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -17,10 +17,10 @@ #include "lal_preprocessor.h" #endif -__kernel void kernel_zero(__global int *restrict mem, +__kernel void kernel_zero(__global int *restrict mem, int numel) { int ii=GLOBAL_ID_X; - + if (ii class PPPM; template class Device { public: Device(); - ~Device(); - + ~Device(); + /// Initialize the device for use by this process /** Sets up a per-device MPI communicator for load balancing and initializes - * the device (>=first_gpu and <=last_gpu) that this proc will be using + * the device (>=first_gpu and <=last_gpu) that this proc will be using * Returns: * - 0 if successfull * - -2 if GPU not found * - -4 if GPU library not compiled for GPU * - -6 if GPU could not be initialized for use - * - -7 if accelerator sharing is not currently allowed on system + * - -7 if accelerator sharing is not currently allowed on system * - -11 if vendor_string has the wrong number of parameters **/ - int init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, - const int last_gpu, const int gpu_mode, + int init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu, + const int last_gpu, const int gpu_mode, const double particle_split, const int nthreads, - const int t_per_atom, const double cell_size, + const int t_per_atom, const double cell_size, char *vendor_string, const int block_pair); /// Initialize the device for Atom and Neighbor storage @@ -62,9 +62,9 @@ class Device { * 1 if gpu_nbor is true, and host needs a half nbor list, * 2 if gpu_nbor is true, and host needs a full nbor list * \param max_nbors Initial number of rows in the neighbor matrix - * \param cell_size cutoff+skin + * \param cell_size cutoff+skin * \param pre_cut True if cutoff test will be performed in separate kernel - * than the force kernel + * than the force kernel * \param threads_per_atom value to be used by the neighbor list only * * Returns: @@ -113,25 +113,25 @@ class Device { /// Returns true if double precision is supported on card inline bool double_precision() { return gpu->double_precision(); } - + /// Output a message with timing information - void output_times(UCL_Timer &time_pair, Answer &ans, - Neighbor &nbor, const double avg_split, + void output_times(UCL_Timer &time_pair, Answer &ans, + Neighbor &nbor, const double avg_split, const double max_bytes, const double gpu_overhead, - const double driver_overhead, + const double driver_overhead, const int threads_per_atom, FILE *screen); /// Output a message with timing information void output_kspace_times(UCL_Timer &time_in, UCL_Timer &time_out, UCL_Timer & time_map, UCL_Timer & time_rho, - UCL_Timer &time_interp, - Answer &ans, + UCL_Timer &time_interp, + Answer &ans, const double max_bytes, const double cpu_time, const double cpu_idle_time, FILE *screen); /// Clear all memory on host and device associated with atom and nbor data void clear(); - + /// Clear all memory on host and device void clear_device(); @@ -149,24 +149,24 @@ class Device { while (ans_queue.empty()==false) { evdw+=ans_queue.front()->get_answers(f,tor,eatom,vatom,virial,ecoul); ans_queue.pop(); - } + } return evdw; } return 0.0; } /// Start timer on host - inline void start_host_timer() + inline void start_host_timer() { _cpu_full=MPI_Wtime(); _host_timer_started=true; } - + /// Stop timer on host - inline void stop_host_timer() { + inline void stop_host_timer() { if (_host_timer_started) { - _cpu_full=MPI_Wtime()-_cpu_full; + _cpu_full=MPI_Wtime()-_cpu_full; _host_timer_started=false; } } - + /// Return host time inline double host_time() { return _cpu_full; } @@ -239,8 +239,8 @@ class Device { /// Number of threads executing concurrently on same multiproc inline int warp_size() const { return _warp_size; } - // -------------------- SHARED DEVICE ROUTINES -------------------- - // Perform asynchronous zero of integer array + // -------------------- SHARED DEVICE ROUTINES -------------------- + // Perform asynchronous zero of integer array void zero(UCL_D_Vec &mem, const int numel) { int num_blocks=static_cast(ceil(static_cast(numel)/ _block_pair)); @@ -248,25 +248,25 @@ class Device { k_zero.run(&mem,&numel); } - // -------------------------- DEVICE DATA ------------------------- + // -------------------------- DEVICE DATA ------------------------- /// Geryon Device UCL_Device *gpu; enum{GPU_FORCE, GPU_NEIGH, GPU_HYB_NEIGH}; - // --------------------------- ATOM DATA -------------------------- + // --------------------------- ATOM DATA -------------------------- /// Atom Data Atom atom; // --------------------------- NBOR DATA ---------------------------- - + /// Neighbor Data NeighborShared _neighbor_shared; // ------------------------ LONG RANGE DATA ------------------------- - + // Long Range Data int _long_range_precompute; PPPM *pppm_single; @@ -282,7 +282,7 @@ class Device { pppm_double->precompute(ago,nlocal,nall,host_x,host_type,success,charge, boxlo,prd); } - + inline std::string compile_string() { return _ocl_compile_string; } private: @@ -290,7 +290,7 @@ class Device { int _init_count; bool _device_init, _host_timer_started, _time_device; MPI_Comm _comm_world, _comm_replica, _comm_gpu; - int _procs_per_gpu, _gpu_rank, _world_me, _world_size, _replica_me, + int _procs_per_gpu, _gpu_rank, _world_me, _world_size, _replica_me, _replica_size; int _gpu_mode, _first_device, _last_device, _nthreads; double _particle_split; @@ -310,10 +310,10 @@ class Device { int compile_kernels(); int _data_in_estimate, _data_out_estimate; - + std::string _ocl_vendor_name, _ocl_vendor_string, _ocl_compile_string; int set_ocl_params(char *); - + template inline std::string toa(const t& in) { std::ostringstream o; diff --git a/lib/gpu/lal_dipole_lj.cpp b/lib/gpu/lal_dipole_lj.cpp index e96e15eaf9..c97b76c820 100644 --- a/lib/gpu/lal_dipole_lj.cpp +++ b/lib/gpu/lal_dipole_lj.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template DipoleLJT::~DipoleLJ() { clear(); } - + template int DipoleLJT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,8 +45,8 @@ int DipoleLJT::bytes_per_atom(const int max_nbors) const { template int DipoleLJT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, @@ -138,7 +138,7 @@ void DipoleLJT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -151,7 +151,7 @@ void DipoleLJT::loop(const bool _eflag, const bool _vflag) { &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->q, + &ainum, &nbor_pitch, &this->atom->q, &this->atom->quat, &cutsq, &_qqrd2e, &this->_threads_per_atom); } else { @@ -160,8 +160,8 @@ void DipoleLJT::loop(const bool _eflag, const bool _vflag) { &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->atom->q, - &this->atom->quat, &cutsq, + &nbor_pitch, &this->atom->q, + &this->atom->quat, &cutsq, &_qqrd2e, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_dipole_lj.cu b/lib/gpu/lal_dipole_lj.cu index b6483d1ef8..745bdb7f27 100644 --- a/lib/gpu/lal_dipole_lj.cu +++ b/lib/gpu/lal_dipole_lj.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -132,17 +132,17 @@ texture mu_tex; #endif -__kernel void k_dipole_lj(const __global numtyp4 *restrict x_, +__kernel void k_dipole_lj(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, const __global numtyp4 *restrict mu_, const __global numtyp *restrict cutsq, @@ -171,14 +171,14 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii (numtyp)0.0 && muj.w > (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; - r7inv = r5inv*r2inv; + r7inv = r5inv*r2inv; pdotp = mui.x*muj.x + mui.y*muj.y + mui.z*muj.z; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; @@ -251,7 +251,7 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, forcecoul.x += pre1*delx + pre2*mui.x + pre3*muj.x; forcecoul.y += pre1*dely + pre2*mui.y + pre3*muj.y; forcecoul.z += pre1*delz + pre2*mui.z + pre3*muj.z; - + numtyp crossx = pre4 * (mui.y*muj.z - mui.z*muj.y); numtyp crossy = pre4 * (mui.z*muj.x - mui.x*muj.z); numtyp crossz = pre4 * (mui.x*muj.y - mui.y*muj.x); @@ -263,12 +263,12 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, // dipole-charge if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; pre1 = (numtyp)3.0*qj*r5inv * pidotr; pre2 = qj*r3inv; - + forcecoul.x += pre2*mui.x - pre1*delx; forcecoul.y += pre2*mui.y - pre1*dely; forcecoul.z += pre2*mui.z - pre1*delz; @@ -276,7 +276,7 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, ticoul.y += pre2 * (mui.z*delx - mui.x*delz); ticoul.z += pre2 * (mui.x*dely - mui.y*delx); } - + // charge-dipole if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) { r3inv = r2inv*rinv; @@ -284,7 +284,7 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; pre1 = (numtyp)3.0*qtmp*r5inv * pjdotr; pre2 = qtmp*r3inv; - + forcecoul.x += pre1*delx - pre2*muj.x; forcecoul.y += pre1*dely - pre2*muj.y; forcecoul.z += pre1*delz - pre2*muj.z; @@ -306,12 +306,12 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, tor.z+=fq*ticoul.z; if (eflag>0) { - acctyp e = (acctyp)0.0; + acctyp e = (acctyp)0.0; if (rsq < lj1[mtype].w) { e = qtmp*qj*rinv; if (mui.w > (numtyp)0.0 && muj.w > (numtyp)0.0) e += r3inv*pdotp - (numtyp)3.0*r5inv*pidotr*pjdotr; - if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) + if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) e += -qj*r3inv*pidotr; if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) e += qtmp*r3inv*pjdotr; @@ -322,7 +322,7 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, if (rsq < lj1[mtype].z) { e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); energy+=factor_lj*(e-lj3[mtype].z); - } + } } if (vflag>0) { virial[0] += delx*force.x; @@ -340,19 +340,19 @@ __kernel void k_dipole_lj(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, +__kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const __global numtyp *restrict q_, const __global numtyp4 *restrict mu_, - const __global numtyp *restrict _cutsq, + const __global numtyp *restrict _cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -369,7 +369,7 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -381,16 +381,16 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii (numtyp)0.0 && muj.w > (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; r7inv = r5inv*r2inv; pdotp = mui.x*muj.x + mui.y*muj.y + mui.z*muj.z; @@ -463,7 +463,7 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, forcecoul.x += pre1*delx + pre2*mui.x + pre3*muj.x; forcecoul.y += pre1*dely + pre2*mui.y + pre3*muj.y; forcecoul.z += pre1*delz + pre2*mui.z + pre3*muj.z; - + numtyp crossx = pre4 * (mui.y*muj.z - mui.z*muj.y); numtyp crossy = pre4 * (mui.z*muj.x - mui.x*muj.z); numtyp crossz = pre4 * (mui.x*muj.y - mui.y*muj.x); @@ -474,13 +474,13 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, } // dipole-charge - if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) { + if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) { r3inv = r2inv*rinv; r5inv = r3inv*r2inv; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; pre1 = (numtyp)3.0*qj*r5inv * pidotr; pre2 = qj*r3inv; - + forcecoul.x += pre2*mui.x - pre1*delx; forcecoul.y += pre2*mui.y - pre1*dely; forcecoul.z += pre2*mui.z - pre1*delz; @@ -488,7 +488,7 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, ticoul.y += pre2 * (mui.z*delx - mui.x*delz); ticoul.z += pre2 * (mui.x*dely - mui.y*delx); } - + // charge-dipole if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) { r3inv = r2inv*rinv; @@ -496,7 +496,7 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; pre1 = (numtyp)3.0*qtmp*r5inv * pjdotr; pre2 = qtmp*r3inv; - + forcecoul.x += pre1*delx - pre2*muj.x; forcecoul.y += pre1*dely - pre2*muj.y; forcecoul.z += pre1*delz - pre2*muj.z; @@ -519,12 +519,12 @@ __kernel void k_dipole_lj_fast(const __global numtyp4 *restrict x_, tor.z+=fq*ticoul.z; if (eflag>0) { - acctyp e = (acctyp)0; + acctyp e = (acctyp)0; if (rsq < lj1[mtype].w) { e = qtmp*qj*rinv; if (mui.w > (numtyp)0.0 && muj.w > (numtyp)0.0) e += r3inv*pdotp - (numtyp)3.0*r5inv*pidotr*pjdotr; - if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) + if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) e += -qj*r3inv*pidotr; if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) e += qtmp*r3inv*pjdotr; diff --git a/lib/gpu/lal_dipole_lj.h b/lib/gpu/lal_dipole_lj.h index b08b7a8669..615784ee8b 100644 --- a/lib/gpu/lal_dipole_lj.h +++ b/lib/gpu/lal_dipole_lj.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ class DipoleLJ : public BaseDipole { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,7 +40,7 @@ class DipoleLJ : public BaseDipole { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, double **host_cut_coulsq, double *host_special_coul, @@ -70,7 +70,7 @@ class DipoleLJ : public BaseDipole { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e; diff --git a/lib/gpu/lal_dipole_lj_ext.cpp b/lib/gpu/lal_dipole_lj_ext.cpp index 55bbe0b804..76722a20b4 100644 --- a/lib/gpu/lal_dipole_lj_ext.cpp +++ b/lib/gpu/lal_dipole_lj_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -81,7 +81,7 @@ int dpl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e); DPLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -98,18 +98,18 @@ void dpl_gpu_clear() { int** dpl_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, - bool &success, double *host_q, double **host_mu, + bool &success, double *host_q, double **host_mu, double *boxlo, double *prd) { return DPLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, host_mu, boxlo, prd); -} - +} + void dpl_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_dipole_lj_sf.cpp b/lib/gpu/lal_dipole_lj_sf.cpp index 5a145dc762..a33f38084f 100644 --- a/lib/gpu/lal_dipole_lj_sf.cpp +++ b/lib/gpu/lal_dipole_lj_sf.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template DipoleLJSFT::~DipoleLJSF() { clear(); } - + template int DipoleLJSFT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,8 +45,8 @@ int DipoleLJSFT::bytes_per_atom(const int max_nbors) const { template int DipoleLJSFT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, @@ -138,7 +138,7 @@ void DipoleLJSFT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -151,17 +151,17 @@ void DipoleLJSFT::loop(const bool _eflag, const bool _vflag) { &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->q, + &ainum, &nbor_pitch, &this->atom->q, &this->atom->quat, &cutsq, &_qqrd2e, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, &this->nbor->dev_nbor, - &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->q, - &this->atom->quat, &cutsq, + &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, + &ainum, &nbor_pitch, &this->atom->q, + &this->atom->quat, &cutsq, &_qqrd2e, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_dipole_lj_sf.cu b/lib/gpu/lal_dipole_lj_sf.cu index 8469ed9ac9..9847e84823 100644 --- a/lib/gpu/lal_dipole_lj_sf.cu +++ b/lib/gpu/lal_dipole_lj_sf.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -133,20 +133,20 @@ texture mu_tex; #endif -__kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, +__kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_ , const __global numtyp4 *restrict mu_, - const __global numtyp *restrict cutsq, + const __global numtyp *restrict cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -172,14 +172,14 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii (numtyp)0.0 && muj.w > (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; - + pdotp = mui.x*muj.x + mui.y*muj.y + mui.z*muj.z; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; - + afac = (numtyp)1.0 - rsq*rsq * rcutcoul2inv*rcutcoul2inv; pre1 = afac * (pdotp - (numtyp)3.0*r2inv*pidotr*pjdotr); aforcecoul.x = pre1*delx; aforcecoul.y = pre1*dely; aforcecoul.z = pre1*delz; - + bfac = (numtyp)1.0-(numtyp)4.0*rsq*ucl_sqrt(rsq)*rcutcoul2inv*ucl_sqrt(rcutcoul2inv)+ (numtyp)3.0*rsq*rsq*rcutcoul2inv*rcutcoul2inv; presf = (numtyp)2.0*r2inv*pidotr*pjdotr; bforcecoul.x = bfac * (pjdotr*mui.x+pidotr*muj.x-presf*delx); bforcecoul.y = bfac * (pjdotr*mui.y+pidotr*muj.y-presf*dely); bforcecoul.z = bfac * (pjdotr*mui.z+pidotr*muj.z-presf*delz); - + forcecoul.x += (numtyp)3.0*r5inv*(aforcecoul.x + bforcecoul.x); forcecoul.y += (numtyp)3.0*r5inv*(aforcecoul.y + bforcecoul.y); forcecoul.z += (numtyp)3.0*r5inv*(aforcecoul.z + bforcecoul.z); - + pre2 = (numtyp)3.0*bfac*r5inv*pjdotr; pre4 = -bfac*r3inv; numtyp crossx = pre4 * (mui.y*muj.z - mui.z*muj.y); numtyp crossy = pre4 * (mui.z*muj.x - mui.x*muj.z); numtyp crossz = pre4 * (mui.x*muj.y - mui.y*muj.x); - + ticoul.x += crossx + pre2 * (mui.y*delz - mui.z*dely); ticoul.y += crossy + pre2 * (mui.z*delx - mui.x*delz); ticoul.z += crossz + pre2 * (mui.x*dely - mui.y*delx); @@ -285,12 +285,12 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, // dipole-charge if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; rcutcoul2inv=ucl_recip(lj1[mtype].w); pre1 = (numtyp)3.0*qj*r5inv * pidotr*((numtyp)1.0-rsq*rcutcoul2inv); - pqfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + + pqfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + (numtyp)2.0*rsq*ucl_sqrt(rsq)*rcutcoul2inv*ucl_sqrt(rcutcoul2inv); pre2 = qj*r3inv * pqfac; @@ -301,7 +301,7 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, ticoul.y += pre2 * (mui.z*delx - mui.x*delz); ticoul.z += pre2 * (mui.x*dely - mui.y*delx); } - + // charge-dipole if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) { r3inv = r2inv*rinv; @@ -309,10 +309,10 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; rcutcoul2inv=ucl_recip(lj1[mtype].w); pre1 = (numtyp)3.0*qtmp*r5inv * pjdotr*((numtyp)1.0-rsq*rcutcoul2inv); - qpfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + + qpfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + (numtyp)2.0*rsq*ucl_sqrt(rsq)*rcutcoul2inv*ucl_sqrt(rcutcoul2inv); pre2 = qtmp*r3inv * qpfac; - + forcecoul.x += pre1*delx - pre2*muj.x; forcecoul.y += pre1*dely - pre2*muj.y; forcecoul.z += pre1*delz - pre2*muj.z; @@ -334,13 +334,13 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, tor.z+=fq*ticoul.z; if (eflag>0) { - acctyp e = (acctyp)0.0; + acctyp e = (acctyp)0.0; if (rsq < lj1[mtype].w) { numtyp fac = (numtyp)1.0-ucl_sqrt(rsq*rcutcoul2inv); e = qtmp*qj*rinv*fac*fac; if (mui.w > (numtyp)0.0 && muj.w > (numtyp)0.0) e += bfac* (r3inv*pdotp - (numtyp)3.0*r5inv*pidotr*pjdotr); - if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) + if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) e += -qj*r3inv*pidotr * pqfac; if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) e += qtmp*r3inv*pjdotr * qpfac; @@ -350,12 +350,12 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, if (rsq < lj1[mtype].z) { e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y) + - rcutlj6inv*((numtyp)6.0*lj3[mtype].x*rcutlj6inv - + rcutlj6inv*((numtyp)6.0*lj3[mtype].x*rcutlj6inv - (numtyp)3.0*lj3[mtype].y)*rsq*rcutlj2inv + - rcutlj6inv*((numtyp)(-7.0)*lj3[mtype].x*rcutlj6inv + + rcutlj6inv*((numtyp)(-7.0)*lj3[mtype].x*rcutlj6inv + (numtyp)4.0*lj3[mtype].y); energy+=factor_lj*e; - } + } } if (vflag>0) { virial[0] += delx*force.x; @@ -372,19 +372,19 @@ __kernel void k_dipole_lj_sf(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, +__kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const __global numtyp *restrict q_, const __global numtyp4 *restrict mu_, - const __global numtyp *restrict _cutsq, + const __global numtyp *restrict _cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; @@ -402,7 +402,7 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -414,16 +414,16 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii (numtyp)0.0 && muj.w > (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; - + pdotp = mui.x*muj.x + mui.y*muj.y + mui.z*muj.z; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; - + afac = (numtyp)1.0 - rsq*rsq * rcutcoul2inv*rcutcoul2inv; pre1 = afac * (pdotp - (numtyp)3.0*r2inv*pidotr*pjdotr); aforcecoul.x = pre1*delx; aforcecoul.y = pre1*dely; aforcecoul.z = pre1*delz; - + bfac = (numtyp)1.0-(numtyp)4.0*rsq*ucl_sqrt(rsq)*rcutcoul2inv*ucl_sqrt(rcutcoul2inv)+ (numtyp)3.0*rsq*rsq*rcutcoul2inv*rcutcoul2inv; presf = (numtyp)2.0*r2inv*pidotr*pjdotr; bforcecoul.x = bfac * (pjdotr*mui.x+pidotr*muj.x-presf*delx); bforcecoul.y = bfac * (pjdotr*mui.y+pidotr*muj.y-presf*dely); bforcecoul.z = bfac * (pjdotr*mui.z+pidotr*muj.z-presf*delz); - + forcecoul.x += (numtyp)3.0*r5inv*(aforcecoul.x + bforcecoul.x); forcecoul.y += (numtyp)3.0*r5inv*(aforcecoul.y + bforcecoul.y); forcecoul.z += (numtyp)3.0*r5inv*(aforcecoul.z + bforcecoul.z); - + pre2 = (numtyp)3.0*bfac*r5inv*pjdotr; pre4 = -bfac*r3inv; @@ -529,11 +529,11 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, // dipole-charge if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) { - r3inv = r2inv*rinv; + r3inv = r2inv*rinv; r5inv = r3inv*r2inv; pidotr = mui.x*delx + mui.y*dely + mui.z*delz; pre1 = (numtyp)3.0*qj*r5inv * pidotr*((numtyp)1.0-rsq*rcutcoul2inv); - pqfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + + pqfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + (numtyp)2.0*rsq*ucl_sqrt(rsq)*rcutcoul2inv*ucl_sqrt(rcutcoul2inv); pre2 = qj*r3inv * pqfac; @@ -544,7 +544,7 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, ticoul.y += pre2 * (mui.z*delx - mui.x*delz); ticoul.z += pre2 * (mui.x*dely - mui.y*delx); } - + // charge-dipole if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) { r3inv = r2inv*rinv; @@ -552,10 +552,10 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, pjdotr = muj.x*delx + muj.y*dely + muj.z*delz; pre1 = (numtyp)3.0*qtmp*r5inv * pjdotr*((numtyp)1.0-rsq*rcutcoul2inv); - qpfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + + qpfac = (numtyp)1.0 - (numtyp)3.0*rsq*rcutcoul2inv + (numtyp)2.0*rsq*ucl_sqrt(rsq)*rcutcoul2inv*ucl_sqrt(rcutcoul2inv); pre2 = qtmp*r3inv * qpfac; - + forcecoul.x += pre1*delx - pre2*muj.x; forcecoul.y += pre1*dely - pre2*muj.y; forcecoul.z += pre1*delz - pre2*muj.z; @@ -577,13 +577,13 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, tor.z+=fq*ticoul.z; if (eflag>0) { - acctyp e = (acctyp)0.0; + acctyp e = (acctyp)0.0; if (rsq < lj1[mtype].w) { numtyp fac = (numtyp)1.0-ucl_sqrt(rsq*rcutcoul2inv); e = qtmp*qj*rinv*fac*fac; if (mui.w > (numtyp)0.0 && muj.w > (numtyp)0.0) e += bfac* (r3inv*pdotp - (numtyp)3.0*r5inv*pidotr*pjdotr); - if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) + if (mui.w > (numtyp)0.0 && qj != (numtyp)0.0) e += -qj*r3inv*pidotr * pqfac; if (muj.w > (numtyp)0.0 && qtmp != (numtyp)0.0) e += qtmp*r3inv*pjdotr * qpfac; @@ -593,12 +593,12 @@ __kernel void k_dipole_lj_sf_fast(const __global numtyp4 *restrict x_, if (rsq < lj1[mtype].z) { e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y) + - rcutlj6inv*((numtyp)6.0*lj3[mtype].x*rcutlj6inv - + rcutlj6inv*((numtyp)6.0*lj3[mtype].x*rcutlj6inv - (numtyp)3.0*lj3[mtype].y)*rsq*rcutlj2inv + - rcutlj6inv*((numtyp)(-7.0)*lj3[mtype].x*rcutlj6inv + + rcutlj6inv*((numtyp)(-7.0)*lj3[mtype].x*rcutlj6inv + (numtyp)4.0*lj3[mtype].y); energy+=factor_lj*e; - } + } } if (vflag>0) { virial[0] += delx*force.x; diff --git a/lib/gpu/lal_dipole_lj_sf.h b/lib/gpu/lal_dipole_lj_sf.h index 83cea4c2a4..20357385a2 100644 --- a/lib/gpu/lal_dipole_lj_sf.h +++ b/lib/gpu/lal_dipole_lj_sf.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ class DipoleLJSF : public BaseDipole { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,7 +40,7 @@ class DipoleLJSF : public BaseDipole { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, double **host_cut_coulsq, double *host_special_coul, @@ -70,7 +70,7 @@ class DipoleLJSF : public BaseDipole { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e; diff --git a/lib/gpu/lal_dipole_lj_sf_ext.cpp b/lib/gpu/lal_dipole_lj_sf_ext.cpp index 8abf78c903..68b935ff38 100644 --- a/lib/gpu/lal_dipole_lj_sf_ext.cpp +++ b/lib/gpu/lal_dipole_lj_sf_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -81,7 +81,7 @@ int dplsf_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e); DPLSFMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -98,18 +98,18 @@ void dplsf_gpu_clear() { int** dplsf_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, - bool &success, double *host_q, double **host_mu, + bool &success, double *host_q, double **host_mu, double *boxlo, double *prd) { return DPLSFMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, host_mu, boxlo, prd); -} - +} + void dplsf_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_dpd.cpp b/lib/gpu/lal_dpd.cpp index 3736f89323..4f6f2d641f 100644 --- a/lib/gpu/lal_dpd.cpp +++ b/lib/gpu/lal_dpd.cpp @@ -33,23 +33,23 @@ DPDT::DPD() : BaseDPD(), _allocated(false) { } template -DPDT::~DPD() { +DPDT::~DPD() { clear(); } - + template int DPDT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int DPDT::init(const int ntypes, - double **host_cutsq, double **host_a0, - double **host_gamma, double **host_sigma, +int DPDT::init(const int ntypes, + double **host_cutsq, double **host_a0, + double **host_gamma, double **host_sigma, double **host_cut, double *host_special_lj, - const bool tstat_only, - const int nlocal, const int nall, - const int max_nbors, const int maxspecial, + const bool tstat_only, + const int nlocal, const int nall, + const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen) { int success; @@ -76,7 +76,7 @@ int DPDT::init(const int ntypes, coeff.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_a0,host_gamma, - host_sigma,host_cut); + host_sigma,host_cut); UCL_H_Vec host_rsq(lj_types*lj_types,*(this->ucl_device), UCL_WRITE_ONLY); @@ -90,7 +90,7 @@ int DPDT::init(const int ntypes, _tstat_only = 0; if (tstat_only) _tstat_only=1; - + _allocated=true; this->_max_bytes=coeff.row_bytes()+cutsq.row_bytes()+sp_lj.row_bytes(); return 0; @@ -130,7 +130,7 @@ void DPDT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -147,8 +147,8 @@ void DPDT::loop(const bool _eflag, const bool _vflag) { &this->_tstat_only, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &coeff, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &coeff, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->v, &cutsq, &this->_dtinvsqrt, &this->_seed, &this->_timestep, &this->_tstat_only, @@ -164,7 +164,7 @@ void DPDT::update_coeff(int ntypes, double **host_a0, double **host_gamma, UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); this->atom->type_pack4(ntypes,_lj_types,coeff,host_write,host_a0,host_gamma, - host_sigma,host_cut); + host_sigma,host_cut); } - + template class DPD; diff --git a/lib/gpu/lal_dpd.cu b/lib/gpu/lal_dpd.cu index 209bc0233e..e32404ff5c 100644 --- a/lib/gpu/lal_dpd.cu +++ b/lib/gpu/lal_dpd.cu @@ -37,7 +37,7 @@ texture vel_tex; #define _USE_UNIFORM_SARU_LCG #endif -// References: +// References: // 1. Y. Afshar, F. Schmid, A. Pishevar, S. Worley, Comput. Phys. Comm. 184 (2013), 1119–1128. // 2. C. L. Phillips, J. A. Anderson, S. C. Glotzer, Comput. Phys. Comm. 230 (2011), 7191-7201. // PRNG period = 3666320093*2^32 ~ 2^64 ~ 10^19 @@ -49,9 +49,9 @@ texture vel_tex; #define TWO_N32 0.232830643653869628906250e-9f /* 2^-32 */ // specifically implemented for steps = 1; high = 1.0; low = -1.0 -// returns uniformly distributed random numbers u in [-1.0;1.0] -// using the inherent LCG, then multiply u with sqrt(3) to "match" -// with a normal random distribution. +// returns uniformly distributed random numbers u in [-1.0;1.0] +// using the inherent LCG, then multiply u with sqrt(3) to "match" +// with a normal random distribution. // Afshar et al. mutlplies u in [-0.5;0.5] with sqrt(12) // Curly brackets to make variables local to the scope. #ifdef _USE_UNIFORM_SARU_LCG @@ -80,8 +80,8 @@ texture vel_tex; #endif // specifically implemented for steps = 1; high = 1.0; low = -1.0 -// returns uniformly distributed random numbers u in [-1.0;1.0] using TEA8 -// then multiply u with sqrt(3) to "match" with a normal random distribution +// returns uniformly distributed random numbers u in [-1.0;1.0] using TEA8 +// then multiply u with sqrt(3) to "match" with a normal random distribution // Afshar et al. mutlplies u in [-0.5;0.5] with sqrt(12) #ifdef _USE_UNIFORM_SARU_TEA8 #define SQRT3 (numtyp)1.7320508075688772935274463 @@ -119,7 +119,7 @@ texture vel_tex; #endif // specifically implemented for steps = 1; high = 1.0; low = -1.0 -// returns two uniformly distributed random numbers r1 and r2 in [-1.0;1.0], +// returns two uniformly distributed random numbers r1 and r2 in [-1.0;1.0], // and uses the polar method (Marsaglia's) to transform to a normal random value // This is used to compared with CPU DPD using RandMars::gaussian() #ifdef _USE_GAUSSIAN_SARU_LCG @@ -160,20 +160,20 @@ texture vel_tex; randnum = r2*fac; \ } #endif - -__kernel void k_dpd(const __global numtyp4 *restrict x_, + +__kernel void k_dpd(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff, - const int lj_types, - const __global numtyp *restrict sp_lj, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + const int lj_types, + const __global numtyp *restrict sp_lj, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp4 *restrict v_, const __global numtyp *restrict cutsq, - const numtyp dtinvsqrt, const int seed, + const numtyp dtinvsqrt, const int seed, const int timestep, const int tstat_only, const int t_per_atom) { int tid, ii, offset; @@ -185,13 +185,13 @@ __kernel void k_dpd(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii tag2) { tag1 = jtag; tag2 = itag; } - - numtyp randnum = (numtyp)0.0; + + numtyp randnum = (numtyp)0.0; saru(tag1, tag2, seed, timestep, randnum); // conservative force = a0 * wd, or 0 if tstat only @@ -244,7 +244,7 @@ __kernel void k_dpd(const __global numtyp4 *restrict x_, force -= coeff[mtype].y*wd*wd*dot*rinv; force += coeff[mtype].z*wd*randnum*dtinvsqrt; force*=factor_dpd*rinv; - + f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; @@ -254,7 +254,7 @@ __kernel void k_dpd(const __global numtyp4 *restrict x_, // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); // eng shifted to 0.0 at cutoff numtyp e = (numtyp)0.5*coeff[mtype].x*coeff[mtype].w * wd*wd; - energy+=factor_dpd*e; + energy+=factor_dpd*e; } if (vflag>0) { virial[0] += delx*delx*force; @@ -272,23 +272,23 @@ __kernel void k_dpd(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_dpd_fast(const __global numtyp4 *restrict x_, +__kernel void k_dpd_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff_in, - const __global numtyp *restrict sp_lj_in, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp4 *restrict v_, const __global numtyp *restrict cutsq, - const numtyp dtinvsqrt, const int seed, + const numtyp dtinvsqrt, const int seed, const int timestep, const int tstat_only, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -296,7 +296,7 @@ __kernel void k_dpd_fast(const __global numtyp4 *restrict x_, if (tid tag2) { tag1 = jtag; tag2 = itag; } - - numtyp randnum = (numtyp)0.0; + + numtyp randnum = (numtyp)0.0; saru(tag1, tag2, seed, timestep, randnum); // conservative force = a0 * wd, or 0 if tstat only @@ -364,7 +364,7 @@ __kernel void k_dpd_fast(const __global numtyp4 *restrict x_, force -= coeff[mtype].y*wd*wd*dot*rinv; force += coeff[mtype].z*wd*randnum*dtinvsqrt; force*=factor_dpd*rinv; - + f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; @@ -374,7 +374,7 @@ __kernel void k_dpd_fast(const __global numtyp4 *restrict x_, // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]); // eng shifted to 0.0 at cutoff numtyp e = (numtyp)0.5*coeff[mtype].x*coeff[mtype].w * wd*wd; - energy+=factor_dpd*e; + energy+=factor_dpd*e; } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_dpd.h b/lib/gpu/lal_dpd.h index 449d7b1d8c..42ef854522 100644 --- a/lib/gpu/lal_dpd.h +++ b/lib/gpu/lal_dpd.h @@ -24,23 +24,23 @@ template class DPD : public BaseDPD { public: DPD(); - ~DPD(); + ~DPD(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, double **host_cutsq, double **host_a0, + int init(const int ntypes, double **host_cutsq, double **host_a0, double **host_gamma, double **host_sigma, double **host_cut, double *host_special_lj, bool tstat_only, const int nlocal, - const int nall, const int max_nbors, const int maxspecial, + const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -52,11 +52,11 @@ class DPD : public BaseDPD { /// Total host memory used by library for pair style double host_memory_usage() const; - + /// Update coeff if needed (tstat only) void update_coeff(int ntypes, double **host_a0, double **host_gamma, double **host_sigma, double **host_cut); - + // --------------------------- TYPE DATA -------------------------- /// coeff.x = a0, coeff.y = gamma, coeff.z = sigma, coeff.w = cut @@ -70,12 +70,12 @@ class DPD : public BaseDPD { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; - + /// Only used for thermostat int _tstat_only; - + private: bool _allocated; void loop(const bool _eflag, const bool _vflag); diff --git a/lib/gpu/lal_dpd_ext.cpp b/lib/gpu/lal_dpd_ext.cpp index 327074d087..26bbb660b8 100644 --- a/lib/gpu/lal_dpd_ext.cpp +++ b/lib/gpu/lal_dpd_ext.cpp @@ -54,7 +54,7 @@ int dpd_gpu_init(const int ntypes, double **cutsq, double **host_a0, int init_ok=0; if (world_me==0) - init_ok=DPDMF.init(ntypes, cutsq, host_a0, host_gamma, host_sigma, + init_ok=DPDMF.init(ntypes, cutsq, host_a0, host_gamma, host_sigma, host_cut, special_lj, tstat_only, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -72,12 +72,12 @@ int dpd_gpu_init(const int ntypes, double **cutsq, double **host_a0, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=DPDMF.init(ntypes, cutsq, host_a0, host_gamma, host_sigma, + init_ok=DPDMF.init(ntypes, cutsq, host_a0, host_gamma, host_sigma, host_cut, special_lj, tstat_only, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); DPDMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -95,25 +95,25 @@ void dpd_gpu_clear() { int ** dpd_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, - double **host_v, const double dtinvsqrt, + double **host_v, const double dtinvsqrt, const int seed, const int timestep, double *boxlo, double *prd) { return DPDMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, - vatom, host_start, ilist, jnum, cpu_time, success, + vatom, host_start, ilist, jnum, cpu_time, success, host_v, dtinvsqrt, seed, timestep, boxlo, prd); -} - +} + void dpd_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, tagint *tag, - double **host_v, const double dtinvsqrt, - const int seed, const int timestep, + double **host_v, const double dtinvsqrt, + const int seed, const int timestep, const int nlocal, double *boxlo, double *prd) { DPDMF.compute(ago, inum_full, nall, host_x, host_type, ilist, numj, firstneigh, eflag, vflag, eatom, vatom, host_start, cpu_time, success, diff --git a/lib/gpu/lal_eam.cpp b/lib/gpu/lal_eam.cpp index c856a8e667..b83972f4db 100644 --- a/lib/gpu/lal_eam.cpp +++ b/lib/gpu/lal_eam.cpp @@ -9,10 +9,10 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov nguyentd@ornl.gov ***************************************************************************/ - + #if defined(USE_OPENCL) #include "eam_cl.h" #elif defined(USE_CUDART) @@ -33,7 +33,7 @@ using namespace LAMMPS_AL; extern Device device; template -EAMT::EAM() : BaseAtomic(), +EAMT::EAM() : BaseAtomic(), _compiled_energy(false), _allocated(false) { } @@ -41,46 +41,46 @@ template EAMT::~EAM() { clear(); } - + template int EAMT::init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, - double ***host_frho_spline, double rdr, double rdrho, + double ***host_frho_spline, double rdr, double rdrho, double rhomax, int nrhor, int nrho, int nz2r, int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, - const double gpu_split, FILE *_screen) + const int maxspecial, const double cell_size, + const double gpu_split, FILE *_screen) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, gpu_split,_screen,eam,"k_eam"); - + if (success!=0) return success; - + // allocate fp - + int ef_nall=nall; if (ef_nall==0) ef_nall=2000; _max_fp_size=static_cast(static_cast(ef_nall)*1.10); _fp.alloc(_max_fp_size,*(this->ucl_device),UCL_READ_WRITE,UCL_READ_WRITE); - + k_energy.set_function(*(this->pair_program),"k_energy"); k_energy_fast.set_function(*(this->pair_program),"k_energy_fast"); fp_tex.get_texture(*(this->pair_program),"fp_tex"); fp_tex.bind_float(_fp,1); _compiled_energy = true; - + // Initialize timers for selected GPU time_pair2.init(*(this->ucl_device)); time_pair2.zero(); - + time_fp1.init(*(this->ucl_device)); time_fp1.zero(); - + time_fp2.init(*(this->ucl_device)); time_fp2.zero(); @@ -93,7 +93,7 @@ int EAMT::init(const int ntypes, double host_cutforcesq, int **host_type2rhor, lj_types=max_shared_types; shared_types=true; } - + _ntypes=lj_types; _cutforcesq=host_cutforcesq; _rdr=rdr; @@ -104,26 +104,26 @@ int EAMT::init(const int ntypes, double host_cutforcesq, int **host_type2rhor, _nz2r=nz2r; _nfrho=nfrho; _nr=nr; - + UCL_H_Vec dview_type(lj_types*lj_types,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; iucl_device),UCL_READ_ONLY); - + for (int i=0; i dview_type2frho(lj_types,*(this->ucl_device), UCL_WRITE_ONLY); @@ -136,7 +136,7 @@ int EAMT::init(const int ntypes, double host_cutforcesq, int **host_type2rhor, // pack frho_spline UCL_H_Vec dview_frho_spline(nfrho*(nrho+1),*(this->ucl_device), UCL_WRITE_ONLY); - + for (int ix=0; ix dview_rhor_spline(nrhor*(nr+1),*(this->ucl_device), UCL_WRITE_ONLY); - + for (int ix=0; ix dview_z2r_spline(nz2r*(nr+1),*(this->ucl_device), UCL_WRITE_ONLY); - + for (int ix=0; ixucl_device),UCL_READ_ONLY); ucl_copy(z2r_spline1,dview_z2r_spline,false); z2r_spline1_tex.get_texture(*(this->pair_program),"z2r_sp1_tex"); z2r_spline1_tex.bind_float(z2r_spline1,4); - + for (int ix=0; ixucl_device),UCL_READ_ONLY); ucl_copy(z2r_spline2,dview_z2r_spline,false); z2r_spline2_tex.get_texture(*(this->pair_program),"z2r_sp2_tex"); @@ -241,7 +241,7 @@ void EAMT::clear() { if (!_allocated) return; _allocated=false; - + type2rhor_z2r.clear(); type2frho.clear(); rhor_spline1.clear(); @@ -250,13 +250,13 @@ void EAMT::clear() { frho_spline2.clear(); z2r_spline1.clear(); z2r_spline2.clear(); - + _fp.clear(); - + time_pair2.clear(); time_fp1.clear(); time_fp2.clear(); - + if (_compiled_energy) { k_energy_fast.clear(); k_energy.clear(); @@ -283,20 +283,20 @@ void EAMT::compute(const int f_ago, const int inum_full, const int nlocal, int &host_start, const double cpu_time, bool &success, void **fp_ptr) { this->acc_timers(); - + if (this->device->time_device()) { // Put time from the second part to the total time_pair this->time_pair.add_time_to_total(time_pair2.time()); - + // Add transfer time from device -> host after part 1 this->atom->add_transfer_time(time_fp1.time()); - + // Add transfer time from host -> device before part 2 this->atom->add_transfer_time(time_fp2.time()); } - + // ------------------- Resize FP Array for EAM -------------------- - + if (nall>_max_fp_size) { _max_fp_size=static_cast(static_cast(nall)*1.10); _fp.resize(_max_fp_size); @@ -313,7 +313,7 @@ void EAMT::compute(const int f_ago, const int inum_full, const int nlocal, this->zero_timers(); return; } - + int ago=this->hd_balancer.ago_first(f_ago); int inum=this->hd_balancer.balance(ago,inum_full,cpu_time); this->ans->inum(inum); @@ -326,7 +326,7 @@ void EAMT::compute(const int f_ago, const int inum_full, const int nlocal, if (!success) return; } - + this->atom->cast_x_data(host_x,host_type); this->atom->add_x_data(host_x,host_type); @@ -345,36 +345,36 @@ void EAMT::compute(const int f_ago, const int inum_full, const int nlocal, // --------------------------------------------------------------------------- template int** EAMT::compute(const int ago, const int inum_full, const int nall, - double **host_x, int *host_type, double *sublo, + double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, - const double cpu_time, bool &success, int &inum, + const double cpu_time, bool &success, int &inum, void **fp_ptr) { this->acc_timers(); - + if (this->device->time_device()) { // Put time from the second part to the total time_pair this->time_pair.add_time_to_total(time_pair2.time()); - + // Add transfer time from device -> host after part 1 this->atom->add_transfer_time(time_fp1.time()); - + // Add transfer time from host -> device before part 2 this->atom->add_transfer_time(time_fp2.time()); } // ------------------- Resize FP Array for EAM -------------------- - + if (nall>_max_fp_size) { _max_fp_size=static_cast(static_cast(nall)*1.10); _fp.resize(_max_fp_size); fp_tex.bind_float(_fp,1); - } - *fp_ptr=_fp.host.begin(); + } + *fp_ptr=_fp.host.begin(); // ----------------------------------------------------------------- - + if (inum_full==0) { host_start=0; // Make sure textures are correct if realloc by a different hybrid style @@ -382,14 +382,14 @@ int** EAMT::compute(const int ago, const int inum_full, const int nall, this->zero_timers(); return NULL; } - + // load balance, returning the atom count on the device (inum) this->hd_balancer.balance(cpu_time); inum=this->hd_balancer.get_gpu_count(ago,inum_full); this->ans->inum(inum); host_start=inum; - - // Build neighbor list on GPU if necessary + + // Build neighbor list on GPU if necessary if (ago==0) { this->build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, success); @@ -403,14 +403,14 @@ int** EAMT::compute(const int ago, const int inum_full, const int nall, *jnum=this->nbor->host_acc.begin(); loop(eflag,vflag); - + // copy fp from device to host for comm _nlocal=inum_full; time_fp1.start(); _fp.update_host(inum_full,true); time_fp1.stop(); time_fp1.sync_stop(); - + return this->nbor->host_jlist.begin()-host_start; } @@ -420,20 +420,20 @@ int** EAMT::compute(const int ago, const int inum_full, const int nall, template void EAMT::compute2(int *ilist, const bool eflag, const bool vflag, const bool eatom, const bool vatom) { - if (this->ans->inum()==0) + if (this->ans->inum()==0) return; - + this->hd_balancer.start_timer(); time_fp2.start(); this->add_fp_data(); time_fp2.stop(); - + loop2(eflag,vflag); if (ilist == NULL) this->ans->copy_answers(eflag,vflag,eatom,vatom); else this->ans->copy_answers(eflag,vflag,eatom,vatom, ilist); - + this->device->add_ans_object(this->ans); this->hd_balancer.stop_timer(); } @@ -455,27 +455,27 @@ void EAMT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); int ainum=this->ans->inum(); int nbor_pitch=this->nbor->nbor_pitch(); this->time_pair.start(); - + if (shared_types) { this->k_energy_fast.set_size(GX,BX); this->k_energy_fast.run(&this->atom->x, &type2rhor_z2r, &type2frho, - &rhor_spline2, &frho_spline1,&frho_spline2, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &rhor_spline2, &frho_spline1,&frho_spline2, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &_fp, &this->ans->engv, &eflag, &ainum, &nbor_pitch, &_ntypes, &_cutforcesq, &_rdr, &_rdrho, &_rhomax, &_nrho, &_nr, &this->_threads_per_atom); } else { this->k_energy.set_size(GX,BX); this->k_energy.run(&this->atom->x, &type2rhor_z2r, &type2frho, - &rhor_spline2, &frho_spline1, &frho_spline2, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), &_fp, + &rhor_spline2, &frho_spline1, &frho_spline2, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &_fp, &this->ans->engv,&eflag, &ainum, &nbor_pitch, &_ntypes, &_cutforcesq, &_rdr, &_rdrho, &_rhomax, &_nrho, &_nr, &this->_threads_per_atom); @@ -501,25 +501,25 @@ void EAMT::loop2(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); int ainum=this->ans->inum(); int nbor_pitch=this->nbor->nbor_pitch(); this->time_pair2.start(); - + if (shared_types) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &_fp, &type2rhor_z2r, - &rhor_spline1, &z2r_spline1, &z2r_spline2, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &rhor_spline1, &z2r_spline1, &z2r_spline2, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &_cutforcesq, &_rdr, &_nr, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &_fp, &type2rhor_z2r, &rhor_spline1, + this->k_pair.run(&this->atom->x, &_fp, &type2rhor_z2r, &rhor_spline1, &z2r_spline1, &z2r_spline2, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, diff --git a/lib/gpu/lal_eam.cu b/lib/gpu/lal_eam.cu index 054b3ca6db..13440b7d45 100644 --- a/lib/gpu/lal_eam.cu +++ b/lib/gpu/lal_eam.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov nguyentd@ornl.gov // ***************************************************************************/ @@ -82,7 +82,7 @@ texture z2r_sp2_tex; engv[ii]=energy; \ } \ } - + #define store_answers_eam(f, energy, virial, ii, inum, tid, t_per_atom, \ offset, elag, vflag, ans, engv) \ if (t_per_atom>1) { \ @@ -188,37 +188,37 @@ texture z2r_sp2_tex; #endif -__kernel void k_energy(const __global numtyp4 *restrict x_, +__kernel void k_energy(const __global numtyp4 *restrict x_, const __global int2 *restrict type2rhor_z2r, - const __global int *restrict type2frho, - const __global numtyp4 *restrict rhor_spline2, + const __global int *restrict type2frho, + const __global numtyp4 *restrict rhor_spline2, const __global numtyp4 *restrict frho_spline1, const __global numtyp4 *restrict frho_spline2, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global numtyp *restrict fp_, - __global acctyp *restrict engv, + __global numtyp *restrict fp_, + __global acctyp *restrict engv, const int eflag, const int inum, const int nbor_pitch, - const int ntypes, const numtyp cutforcesq, - const numtyp rdr, const numtyp rdrho, + const int ntypes, const numtyp cutforcesq, + const numtyp rdr, const numtyp rdrho, const numtyp rhomax, const int nrho, const int nr, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + acctyp rho = (acctyp)0; acctyp energy = (acctyp)0; - + if (ii { public: EAM(); ~EAM(); - + /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -41,11 +41,11 @@ class EAM : public BaseAtomic { int init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, double rdr, - double rdrho, double rhomax, int nrhor, int nrho, int nz2r, - int nfrho, int nr, const int nlocal, const int nall, + double rdrho, double rhomax, int nrhor, int nrho, int nz2r, + int nfrho, int nr, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen); - + // Copy charges to device asynchronously inline void add_fp_data() { int nghost=this->atom->nall()-_nlocal; @@ -57,7 +57,7 @@ class EAM : public BaseAtomic { ucl_copy(dev_view,host_view,nghost,true); } } - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -67,7 +67,7 @@ class EAM : public BaseAtomic { /// Total host memory used by library for pair style double host_memory_usage() const; - + /// Pair loop with host neighboring void compute(const int f_ago, const int inum_full, const int, const int nall, double **host_x, int *host_type, int *ilist, int *numj, @@ -75,23 +75,23 @@ class EAM : public BaseAtomic { const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, void **fp_ptr); - + /// Pair loop with device neighboring int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, int &inum, void **fp_ptr); /// Pair loop with host neighboring - void compute2(int *ilist, const bool eflag, const bool vflag, + void compute2(int *ilist, const bool eflag, const bool vflag, const bool eatom, const bool vatom); - + // ------------------------- DEVICE KERNELS ------------------------- UCL_Kernel k_energy, k_energy_fast; - + // --------------------------- TEXTURES ----------------------------- UCL_Texture fp_tex; UCL_Texture rhor_spline1_tex, rhor_spline2_tex; @@ -99,37 +99,37 @@ class EAM : public BaseAtomic { UCL_Texture z2r_spline1_tex, z2r_spline2_tex; // --------------------------- DEVICE DATA -------------------------- - + /// Device Timers UCL_Timer time_pair2, time_fp1, time_fp2; - + // --------------------------- TYPE DATA -------------------------- - + UCL_D_Vec type2rhor_z2r; UCL_D_Vec type2frho; - + UCL_D_Vec z2r_spline1, z2r_spline2; UCL_D_Vec frho_spline1, frho_spline2; UCL_D_Vec rhor_spline1, rhor_spline2; - + numtyp _cutforcesq,_rdr,_rdrho, _rhomax; - + int _nfrho,_nrhor,_nrho,_nz2r,_nr; - + /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - - /// Number of atom types + + /// Number of atom types int _ntypes; - + int _max_fp_size; - + /// True of energy kernels are compiled bool _compiled_energy; - + /// Per-atom arrays UCL_Vector _fp; - + protected: bool _allocated; int _nlocal; diff --git a/lib/gpu/lal_eam_alloy_ext.cpp b/lib/gpu/lal_eam_alloy_ext.cpp index 282f93afeb..9209ed5c26 100644 --- a/lib/gpu/lal_eam_alloy_ext.cpp +++ b/lib/gpu/lal_eam_alloy_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov nguyentd@ornl.gov ***************************************************************************/ @@ -27,14 +27,14 @@ static EAM EAMALMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, +int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, - double rdr, double rdrho, double rhomax, int nrhor, - int nrho, int nz2r, int nfrho, int nr, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + double rdr, double rdrho, double rhomax, int nrhor, + int nrho, int nz2r, int nfrho, int nr, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, int &fp_size) { EAMALMF.clear(); gpu_mode=EAMALMF.device->gpu_mode(); @@ -46,11 +46,11 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, int procs_per_gpu=EAMALMF.device->procs_per_gpu(); // disable host/device split for now - if (gpu_split != 1.0) + if (gpu_split != 1.0) return -8; - + fp_size=sizeof(PRECISION); - + EAMALMF.device->init_message(screen,"eam/alloy",first_gpu,last_gpu); bool message=false; @@ -66,7 +66,7 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, if (world_me==0) init_ok=EAMALMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, + host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -86,12 +86,12 @@ int eam_alloy_gpu_init(const int ntypes, double host_cutforcesq, if (gpu_rank==i && world_me!=0) init_ok=EAMALMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, + host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, 300, maxspecial, cell_size, gpu_split, screen); EAMALMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -108,7 +108,7 @@ void eam_alloy_gpu_clear() { int ** eam_alloy_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -117,10 +117,10 @@ int ** eam_alloy_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, inum, fp_ptr); -} +} -void eam_alloy_gpu_compute(const int ago, const int inum_full, const int nlocal, - const int nall, double **host_x, int *host_type, +void eam_alloy_gpu_compute(const int ago, const int inum_full, const int nlocal, + const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, diff --git a/lib/gpu/lal_eam_ext.cpp b/lib/gpu/lal_eam_ext.cpp index d56f750e2f..1b5602f808 100644 --- a/lib/gpu/lal_eam_ext.cpp +++ b/lib/gpu/lal_eam_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov nguyentd@ornl.gov ***************************************************************************/ @@ -27,14 +27,14 @@ static EAM EAMMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int eam_gpu_init(const int ntypes, double host_cutforcesq, +int eam_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, - double rdr, double rdrho, double rhomax, int nrhor, - int nrho, int nz2r, int nfrho, int nr, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + double rdr, double rdrho, double rhomax, int nrhor, + int nrho, int nz2r, int nfrho, int nr, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, int &fp_size) { EAMMF.clear(); gpu_mode=EAMMF.device->gpu_mode(); @@ -46,11 +46,11 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, int procs_per_gpu=EAMMF.device->procs_per_gpu(); // disable host/device split for now - if (gpu_split != 1.0) + if (gpu_split != 1.0) return -8; - + fp_size=sizeof(PRECISION); - + EAMMF.device->init_message(screen,"eam",first_gpu,last_gpu); bool message=false; @@ -66,7 +66,7 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, if (world_me==0) init_ok=EAMMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, + host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -86,12 +86,12 @@ int eam_gpu_init(const int ntypes, double host_cutforcesq, if (gpu_rank==i && world_me!=0) init_ok=EAMMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, + host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, 300, maxspecial, cell_size, gpu_split, screen); EAMMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -108,7 +108,7 @@ void eam_gpu_clear() { int ** eam_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -117,10 +117,10 @@ int ** eam_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, inum, fp_ptr); -} +} -void eam_gpu_compute(const int ago, const int inum_full, const int nlocal, - const int nall, double **host_x, int *host_type, +void eam_gpu_compute(const int ago, const int inum_full, const int nlocal, + const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, diff --git a/lib/gpu/lal_eam_fs_ext.cpp b/lib/gpu/lal_eam_fs_ext.cpp index 4992f3ab98..b9e25466aa 100644 --- a/lib/gpu/lal_eam_fs_ext.cpp +++ b/lib/gpu/lal_eam_fs_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov nguyentd@ornl.gov ***************************************************************************/ @@ -27,14 +27,14 @@ static EAM EAMFSMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, +int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, int **host_type2rhor, int **host_type2z2r, int *host_type2frho, double ***host_rhor_spline, double ***host_z2r_spline, double ***host_frho_spline, - double rdr, double rdrho, double rhomax, int nrhor, - int nrho, int nz2r, int nfrho, int nr, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + double rdr, double rdrho, double rhomax, int nrhor, + int nrho, int nz2r, int nfrho, int nr, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, int &fp_size) { EAMFSMF.clear(); gpu_mode=EAMFSMF.device->gpu_mode(); @@ -46,11 +46,11 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, int procs_per_gpu=EAMFSMF.device->procs_per_gpu(); // disable host/device split for now - if (gpu_split != 1.0) + if (gpu_split != 1.0) return -8; - + fp_size=sizeof(PRECISION); - + EAMFSMF.device->init_message(screen,"eam/fs",first_gpu,last_gpu); bool message=false; @@ -66,7 +66,7 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, if (world_me==0) init_ok=EAMFSMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, + host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -86,12 +86,12 @@ int eam_fs_gpu_init(const int ntypes, double host_cutforcesq, if (gpu_rank==i && world_me!=0) init_ok=EAMFSMF.init(ntypes, host_cutforcesq, host_type2rhor, host_type2z2r, host_type2frho, host_rhor_spline, host_z2r_spline, - host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, + host_frho_spline, rdr, rdrho, rhomax, nrhor, nrho, nz2r, nfrho, nr, nlocal, nall, 300, maxspecial, cell_size, gpu_split, screen); EAMFSMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -108,7 +108,7 @@ void eam_fs_gpu_clear() { int ** eam_fs_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -117,10 +117,10 @@ int ** eam_fs_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, inum, fp_ptr); -} +} -void eam_fs_gpu_compute(const int ago, const int inum_full, const int nlocal, - const int nall, double **host_x, int *host_type, +void eam_fs_gpu_compute(const int ago, const int inum_full, const int nlocal, + const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, diff --git a/lib/gpu/lal_ellipsoid_extra.h b/lib/gpu/lal_ellipsoid_extra.h index b33f087212..71668f5e02 100644 --- a/lib/gpu/lal_ellipsoid_extra.h +++ b/lib/gpu/lal_ellipsoid_extra.h @@ -245,8 +245,8 @@ ucl_inline void gpu_cross3(const numtyp *v1, const numtyp *v2, numtyp *ans) ucl_inline numtyp gpu_det3(const numtyp m[9]) { - numtyp ans = m[0]*m[4]*m[8] - m[0]*m[5]*m[7] - - m[3]*m[1]*m[8] + m[3]*m[2]*m[7] + + numtyp ans = m[0]*m[4]*m[8] - m[0]*m[5]*m[7] - + m[3]*m[1]*m[8] + m[3]*m[2]*m[7] + m[6]*m[1]*m[5] - m[6]*m[2]*m[4]; return ans; }; @@ -255,7 +255,7 @@ ucl_inline numtyp gpu_det3(const numtyp m[9]) diagonal matrix times a full matrix ------------------------------------------------------------------------- */ -ucl_inline void gpu_diag_times3(const numtyp4 shape, const numtyp m[9], +ucl_inline void gpu_diag_times3(const numtyp4 shape, const numtyp m[9], numtyp ans[9]) { ans[0] = shape.x*m[0]; @@ -421,7 +421,7 @@ ucl_inline void gpu_mldivide3(const numtyp m[9], const numtyp *v, numtyp *ans, t = aug[9]/aug[5]; aug[10]-=t*aug[6]; aug[11]-=t*aug[7]; - + if (aug[10] == (numtyp)0.0) *error_flag=2; @@ -440,11 +440,11 @@ ucl_inline void gpu_mldivide3(const numtyp m[9], const numtyp *v, numtyp *ans, quat = [w i j k] ------------------------------------------------------------------------- */ -ucl_inline void gpu_quat_to_mat_trans(__global const numtyp4 *qif, const int qi, +ucl_inline void gpu_quat_to_mat_trans(__global const numtyp4 *qif, const int qi, numtyp mat[9]) { numtyp4 q; fetch4(q,qi,quat_tex); - + numtyp w2 = q.x*q.x; numtyp i2 = q.y*q.y; numtyp j2 = q.z*q.z; @@ -463,7 +463,7 @@ ucl_inline void gpu_quat_to_mat_trans(__global const numtyp4 *qif, const int qi, mat[1] = twoij+twokw; mat[4] = w2-i2+j2-k2; mat[7] = twojk-twoiw; - + mat[2] = twoik-twojw; mat[5] = twojk+twoiw; mat[8] = w2-i2-j2+k2; @@ -561,7 +561,7 @@ ucl_inline void gpu_rotation_generator_z(const numtyp m[9], numtyp ans[9]) ------------------------------------------------------------------------- */ ucl_inline void gpu_times_column3(const numtyp m[9], const numtyp v[3], - numtyp ans[3]) + numtyp ans[3]) { ans[0] = m[0]*v[0] + m[1]*v[1] + m[2]*v[2]; ans[1] = m[3]*v[0] + m[4]*v[1] + m[5]*v[2]; diff --git a/lib/gpu/lal_ellipsoid_nbor.cu b/lib/gpu/lal_ellipsoid_nbor.cu index 30d864aecc..cac77f5dd3 100644 --- a/lib/gpu/lal_ellipsoid_nbor.cu +++ b/lib/gpu/lal_ellipsoid_nbor.cu @@ -29,14 +29,14 @@ texture pos_tex; // -- Only unpack neighbors matching the specified inclusive range of forms // -- Only unpack neighbors within cutoff // --------------------------------------------------------------------------- -__kernel void kernel_nbor(const __global numtyp4 *restrict x_, - const __global numtyp2 *restrict cut_form, - const int ntypes, +__kernel void kernel_nbor(const __global numtyp4 *restrict x_, + const __global numtyp2 *restrict cut_form, + const int ntypes, __global int *dev_nbor, - const int nbor_pitch, const int start, const int inum, - const __global int *dev_ij, + const int nbor_pitch, const int start, const int inum, + const __global int *dev_ij, const int form_low, const int form_high) { - + // ii indexes the two interacting particles in gi int ii=GLOBAL_ID_X+start; @@ -47,11 +47,11 @@ __kernel void kernel_nbor(const __global numtyp4 *restrict x_, nbor+=nbor_pitch; int nbor_end=nbor+fast_mul(numj,nbor_pitch); int packed=ii+nbor_pitch+nbor_pitch; - + numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int iw=ix.w; int itype=fast_mul(iw,ntypes); - int newj=0; + int newj=0; for ( ; nbor=form_low && form[mtype]<=form_high) { // Compute r12; numtyp rsq=jx.x-ix.x; diff --git a/lib/gpu/lal_gauss.cpp b/lib/gpu/lal_gauss.cpp index 342ec4ecda..1ef215d7ff 100644 --- a/lib/gpu/lal_gauss.cpp +++ b/lib/gpu/lal_gauss.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,19 +33,19 @@ GaussT::Gauss() : BaseAtomic(), _allocated(false) { } template -GaussT::~Gauss() { +GaussT::~Gauss() { clear(); } - + template int GaussT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int GaussT::init(const int ntypes, - double **host_cutsq, double **host_a, - double **host_b, double **host_offset, +int GaussT::init(const int ntypes, + double **host_cutsq, double **host_a, + double **host_b, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -75,7 +75,7 @@ int GaussT::init(const int ntypes, gauss1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,gauss1,host_write,host_a,host_b, - host_cutsq,host_offset); + host_cutsq,host_offset); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -94,12 +94,12 @@ void GaussT::reinit(const int ntypes, double **host_cutsq, double **host_a, // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,gauss1,host_write,host_a,host_b, - host_cutsq,host_offset); + host_cutsq,host_offset); } template @@ -135,7 +135,7 @@ void GaussT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); diff --git a/lib/gpu/lal_gauss.cu b/lib/gpu/lal_gauss.cu index 6accf36a06..98e71ea413 100644 --- a/lib/gpu/lal_gauss.cu +++ b/lib/gpu/lal_gauss.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,14 +24,14 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_gauss(const __global numtyp4 *restrict x_, +__kernel void k_gauss(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict gauss1, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -49,20 +49,20 @@ __kernel void k_gauss(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { - numtyp e=-(gauss1[mtype].x*ucl_exp(-gauss1[mtype].y*rsq) - + numtyp e=-(gauss1[mtype].x*ucl_exp(-gauss1[mtype].y*rsq) - gauss1[mtype].w); - energy+=factor_lj*e; + energy+=factor_lj*e; } if (vflag>0) { virial[0] += delx*delx*force; @@ -108,18 +108,18 @@ __kernel void k_gauss(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_gauss_fast(const __global numtyp4 *restrict x_, +__kernel void k_gauss_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict gauss1_in, - const __global numtyp *restrict sp_lj_in, + const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 gauss1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -127,7 +127,7 @@ __kernel void k_gauss_fast(const __global numtyp4 *restrict x_, if (tid0) { - numtyp e=-(gauss1[mtype].x*ucl_exp(-gauss1[mtype].y*rsq) - + numtyp e=-(gauss1[mtype].x*ucl_exp(-gauss1[mtype].y*rsq) - gauss1[mtype].w); - energy+=factor_lj*e; + energy+=factor_lj*e; } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_gauss.h b/lib/gpu/lal_gauss.h index 1fd58adae5..d023310c6d 100644 --- a/lib/gpu/lal_gauss.h +++ b/lib/gpu/lal_gauss.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Gauss : public BaseAtomic { public: Gauss(); - ~Gauss(); + ~Gauss(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -38,16 +38,16 @@ class Gauss : public BaseAtomic { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, - double **host_a, double **host_b, double **host_offset, + double **host_a, double **host_b, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); - + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_cutsq, double **host_a, double **host_b, double **host_offset); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -68,7 +68,7 @@ class Gauss : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_gauss_ext.cpp b/lib/gpu/lal_gauss_ext.cpp index 7c15a12591..7fa4b68870 100644 --- a/lib/gpu/lal_gauss_ext.cpp +++ b/lib/gpu/lal_gauss_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -27,9 +27,9 @@ static Gauss GLMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int gauss_gpu_init(const int ntypes, double **cutsq, double **host_a, - double **host_b, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, +int gauss_gpu_init(const int ntypes, double **cutsq, double **host_a, + double **host_b, double **offset, double *special_lj, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { GLMF.clear(); @@ -54,7 +54,7 @@ int gauss_gpu_init(const int ntypes, double **cutsq, double **host_a, int init_ok=0; if (world_me==0) - init_ok=GLMF.init(ntypes, cutsq, host_a, host_b, + init_ok=GLMF.init(ntypes, cutsq, host_a, host_b, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -77,7 +77,7 @@ int gauss_gpu_init(const int ntypes, double **cutsq, double **host_a, cell_size, gpu_split, screen); GLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -96,16 +96,16 @@ void gauss_gpu_reinit(const int ntypes, double **cutsq, double **host_a, int world_me=GLMF.device->world_me(); int gpu_rank=GLMF.device->gpu_rank(); int procs_per_gpu=GLMF.device->procs_per_gpu(); - + if (world_me==0) GLMF.reinit(ntypes, cutsq, host_a, host_b, offset); - + GLMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } } @@ -124,8 +124,8 @@ int ** gauss_gpu_compute_n(const int ago, const int inum_full, return GLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void gauss_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_gayberne.cpp b/lib/gpu/lal_gayberne.cpp index 1d38810ae8..ba15af672e 100644 --- a/lib/gpu/lal_gayberne.cpp +++ b/lib/gpu/lal_gayberne.cpp @@ -37,21 +37,21 @@ GayBerneT::GayBerne() : BaseEllipsoid(), } template -GayBerneT::~GayBerne() { +GayBerneT::~GayBerne() { clear(); } - + template int GayBerneT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom(max_nbors); } template -int GayBerneT::init(const int ntypes, const double gamma, - const double upsilon, const double mu, - double **host_shape, double **host_well, - double **host_cutsq, double **host_sigma, - double **host_epsilon, double *host_lshape, +int GayBerneT::init(const int ntypes, const double gamma, + const double upsilon, const double mu, + double **host_shape, double **host_well, + double **host_cutsq, double **host_sigma, + double **host_epsilon, double *host_lshape, int **h_form, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, const double *host_special_lj, @@ -84,27 +84,27 @@ int GayBerneT::init(const int ntypes, const double gamma, sigma_epsilon.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack2(ntypes,lj_types,sigma_epsilon,host_write, - host_sigma,host_epsilon); + host_sigma,host_epsilon); this->cut_form.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack2(ntypes,lj_types,this->cut_form,host_write, - host_cutsq,h_form); + host_cutsq,h_form); lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq,h_form); + host_cutsq,h_form); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); dev_error.alloc(1,*(this->ucl_device),UCL_WRITE_ONLY); dev_error.zero(); - + // Allocate, cast and asynchronous memcpy of constant data // Copy data for bonded interactions gamma_upsilon_mu.alloc(7,*(this->ucl_device),UCL_READ_ONLY); - host_write[0]=static_cast(gamma); + host_write[0]=static_cast(gamma); host_write[1]=static_cast(upsilon); host_write[2]=static_cast(mu); host_write[3]=static_cast(host_special_lj[0]); @@ -117,7 +117,7 @@ int GayBerneT::init(const int ntypes, const double gamma, UCL_H_Vec d_view; d_view.view(host_lshape,lshape.numel(),*(this->ucl_device)); ucl_copy(lshape,d_view,false); - + // Copy shape, well, sigma, epsilon, and cutsq onto GPU // - cast if necessary shape.alloc(ntypes,*(this->ucl_device),UCL_READ_ONLY); @@ -138,7 +138,7 @@ int GayBerneT::init(const int ntypes, const double gamma, } view4.view((numtyp4*)host_write.begin(),well.numel(),*(this->ucl_device)); ucl_copy(well,view4,false); - + _allocated=true; this->_max_bytes=sigma_epsilon.row_bytes()+this->cut_form.row_bytes()+ lj1.row_bytes()+lj3.row_bytes()+gamma_upsilon_mu.row_bytes()+ @@ -155,7 +155,7 @@ void GayBerneT::clear() { UCL_H_Vec err_flag(1,*(this->ucl_device)); ucl_copy(err_flag,dev_error,false); if (err_flag[0] == 2) - std::cerr << "BAD MATRIX INVERSION IN FORCE COMPUTATION.\n"; + std::cerr << "BAD MATRIX INVERSION IN FORCE COMPUTATION.\n"; err_flag.clear(); _allocated=false; @@ -170,7 +170,7 @@ void GayBerneT::clear() { well.clear(); lshape.clear(); gamma_upsilon_mu.clear(); - + this->clear_base(); } @@ -196,7 +196,7 @@ void GayBerneT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=0, NGX; int stride=this->nbor->nbor_pitch(); int ainum=this->ans->inum(); @@ -209,17 +209,17 @@ void GayBerneT::loop(const bool _eflag, const bool _vflag) { (BX/this->_threads_per_atom))); NGX=static_cast(ceil(static_cast(this->_last_ellipse)/BX)); this->pack_nbors(NGX,BX, 0, this->_last_ellipse,ELLIPSE_SPHERE, - ELLIPSE_ELLIPSE,_shared_types,_lj_types); + ELLIPSE_ELLIPSE,_shared_types,_lj_types); this->time_nbor1.stop(); this->time_ellipsoid.start(); this->k_ellipsoid.set_size(GX,BX); - this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, + this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, &this->shape, &this->well, &this->gamma_upsilon_mu, - &this->sigma_epsilon, &this->_lj_types, - &this->lshape, &this->nbor->dev_nbor, &stride, + &this->sigma_epsilon, &this->_lj_types, + &this->lshape, &this->nbor->dev_nbor, &stride, &this->ans->force, &ainum, &this->ans->engv, - &this->dev_error, &eflag, &vflag, + &this->dev_error, &eflag, &vflag, &this->_last_ellipse, &this->_threads_per_atom); this->time_ellipsoid.stop(); @@ -242,18 +242,18 @@ void GayBerneT::loop(const bool _eflag, const bool _vflag) { NGX=static_cast(ceil(static_cast(this->ans->inum()- this->_last_ellipse)/BX)); this->pack_nbors(NGX,BX,this->_last_ellipse,this->ans->inum(), - SPHERE_ELLIPSE,SPHERE_ELLIPSE,_shared_types,_lj_types); + SPHERE_ELLIPSE,SPHERE_ELLIPSE,_shared_types,_lj_types); this->time_nbor2.stop(); this->time_ellipsoid2.start(); this->k_sphere_ellipsoid.set_size(GX,BX); this->k_sphere_ellipsoid.run(&this->atom->x, &this->atom->quat, - &this->shape, &this->well, - &this->gamma_upsilon_mu, - &this->sigma_epsilon, &this->_lj_types, - &this->lshape, &this->nbor->dev_nbor, - &stride, &this->ans->force, - &this->ans->engv, &this->dev_error, + &this->shape, &this->well, + &this->gamma_upsilon_mu, + &this->sigma_epsilon, &this->_lj_types, + &this->lshape, &this->nbor->dev_nbor, + &stride, &this->ans->force, + &this->ans->engv, &this->dev_error, &eflag, &vflag, &this->_last_ellipse, &ainum, &this->_threads_per_atom); this->time_ellipsoid2.stop(); @@ -264,28 +264,28 @@ void GayBerneT::loop(const bool _eflag, const bool _vflag) { this->ans->force.zero(); this->ans->engv.zero(); this->time_nbor1.stop(); - this->time_ellipsoid.start(); + this->time_ellipsoid.start(); this->time_ellipsoid.stop(); this->time_nbor2.start(); this->time_nbor2.stop(); this->time_ellipsoid2.start(); this->time_ellipsoid2.stop(); } - + // ------------ LJ --------------- this->time_lj.start(); if (this->_last_ellipseans->inum()) { if (this->_shared_types) { this->k_lj_fast.set_size(GX,BX); - this->k_lj_fast.run(&this->atom->x, &this->lj1, &this->lj3, - &this->gamma_upsilon_mu, &stride, + this->k_lj_fast.run(&this->atom->x, &this->lj1, &this->lj3, + &this->gamma_upsilon_mu, &stride, &this->nbor->dev_packed, &this->ans->force, - &this->ans->engv, &this->dev_error, &eflag, + &this->ans->engv, &this->dev_error, &eflag, &vflag, &this->_last_ellipse, &ainum, &this->_threads_per_atom); } else { this->k_lj.set_size(GX,BX); - this->k_lj.run(&this->atom->x, &this->lj1, &this->lj3, + this->k_lj.run(&this->atom->x, &this->lj1, &this->lj3, &this->_lj_types, &this->gamma_upsilon_mu, &stride, &this->nbor->dev_packed, &this->ans->force, &this->ans->engv, &this->dev_error, &eflag, @@ -300,12 +300,12 @@ void GayBerneT::loop(const bool _eflag, const bool _vflag) { NGX=static_cast(ceil(static_cast(this->ans->inum())/BX)); this->time_nbor1.start(); this->pack_nbors(NGX, BX, 0, this->ans->inum(),SPHERE_SPHERE, - ELLIPSE_ELLIPSE,_shared_types,_lj_types); + ELLIPSE_ELLIPSE,_shared_types,_lj_types); this->time_nbor1.stop(); - this->time_ellipsoid.start(); + this->time_ellipsoid.start(); this->k_ellipsoid.set_size(GX,BX); - this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, - &this->shape, &this->well, &this->gamma_upsilon_mu, + this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, + &this->shape, &this->well, &this->gamma_upsilon_mu, &this->sigma_epsilon, &this->_lj_types, &this->lshape, &this->nbor->dev_nbor, &stride, &this->ans->force, &ainum, &this->ans->engv, &this->dev_error, diff --git a/lib/gpu/lal_gayberne.cu b/lib/gpu/lal_gayberne.cu index 1a7e69eeba..dc6e00ec82 100644 --- a/lib/gpu/lal_gayberne.cu +++ b/lib/gpu/lal_gayberne.cu @@ -17,93 +17,93 @@ #include "lal_ellipsoid_extra.h" #endif -ucl_inline void compute_eta_torque(numtyp m[9],numtyp m2[9], const numtyp4 shape, +ucl_inline void compute_eta_torque(numtyp m[9],numtyp m2[9], const numtyp4 shape, numtyp ans[9]) { numtyp den = m[3]*m[2]*m[7]-m[0]*m[5]*m[7]- m[2]*m[6]*m[4]+m[1]*m[6]*m[5]- m[3]*m[1]*m[8]+m[0]*m[4]*m[8]; den = ucl_recip(den); - + ans[0] = shape.x*(m[5]*m[1]*m2[2]+(numtyp)2.0*m[4]*m[8]*m2[0]- - m[4]*m2[2]*m[2]-(numtyp)2.0*m[5]*m2[0]*m[7]+ - m2[1]*m[2]*m[7]-m2[1]*m[1]*m[8]- - m[3]*m[8]*m2[1]+m[6]*m[5]*m2[1]+ - m[3]*m2[2]*m[7]-m2[2]*m[6]*m[4])*den; - + m[4]*m2[2]*m[2]-(numtyp)2.0*m[5]*m2[0]*m[7]+ + m2[1]*m[2]*m[7]-m2[1]*m[1]*m[8]- + m[3]*m[8]*m2[1]+m[6]*m[5]*m2[1]+ + m[3]*m2[2]*m[7]-m2[2]*m[6]*m[4])*den; + ans[1] = shape.x*(m[2]*m2[0]*m[7]-m[8]*m2[0]*m[1]+ - (numtyp)2.0*m[0]*m[8]*m2[1]-m[0]*m2[2]*m[5]- - (numtyp)2.0*m[6]*m[2]*m2[1]+m2[2]*m[3]*m[2]- - m[8]*m[3]*m2[0]+m[6]*m2[0]*m[5]+ - m[6]*m2[2]*m[1]-m2[2]*m[0]*m[7])*den; - + (numtyp)2.0*m[0]*m[8]*m2[1]-m[0]*m2[2]*m[5]- + (numtyp)2.0*m[6]*m[2]*m2[1]+m2[2]*m[3]*m[2]- + m[8]*m[3]*m2[0]+m[6]*m2[0]*m[5]+ + m[6]*m2[2]*m[1]-m2[2]*m[0]*m[7])*den; + ans[2] = shape.x*(m[1]*m[5]*m2[0]-m[2]*m2[0]*m[4]- - m[0]*m[5]*m2[1]+m[3]*m[2]*m2[1]- - m2[1]*m[0]*m[7]-m[6]*m[4]*m2[0]+ - (numtyp)2.0*m[4]*m[0]*m2[2]-(numtyp)2.0*m[3]*m2[2]*m[1]+ - m[3]*m[7]*m2[0]+m[6]*m2[1]*m[1])*den; - + m[0]*m[5]*m2[1]+m[3]*m[2]*m2[1]- + m2[1]*m[0]*m[7]-m[6]*m[4]*m2[0]+ + (numtyp)2.0*m[4]*m[0]*m2[2]-(numtyp)2.0*m[3]*m2[2]*m[1]+ + m[3]*m[7]*m2[0]+m[6]*m2[1]*m[1])*den; + ans[3] = shape.y*(-m[4]*m2[5]*m[2]+(numtyp)2.0*m[4]*m[8]*m2[3]+ - m[5]*m[1]*m2[5]-(numtyp)2.0*m[5]*m2[3]*m[7]+ - m2[4]*m[2]*m[7]-m2[4]*m[1]*m[8]- - m[3]*m[8]*m2[4]+m[6]*m[5]*m2[4]- - m2[5]*m[6]*m[4]+m[3]*m2[5]*m[7])*den; - + m[5]*m[1]*m2[5]-(numtyp)2.0*m[5]*m2[3]*m[7]+ + m2[4]*m[2]*m[7]-m2[4]*m[1]*m[8]- + m[3]*m[8]*m2[4]+m[6]*m[5]*m2[4]- + m2[5]*m[6]*m[4]+m[3]*m2[5]*m[7])*den; + ans[4] = shape.y*(m[2]*m2[3]*m[7]-m[1]*m[8]*m2[3]+ - (numtyp)2.0*m[8]*m[0]*m2[4]-m2[5]*m[0]*m[5]- - (numtyp)2.0*m[6]*m2[4]*m[2]-m[3]*m[8]*m2[3]+ - m[6]*m[5]*m2[3]+m[3]*m2[5]*m[2]- - m[0]*m2[5]*m[7]+m2[5]*m[1]*m[6])*den; - + (numtyp)2.0*m[8]*m[0]*m2[4]-m2[5]*m[0]*m[5]- + (numtyp)2.0*m[6]*m2[4]*m[2]-m[3]*m[8]*m2[3]+ + m[6]*m[5]*m2[3]+m[3]*m2[5]*m[2]- + m[0]*m2[5]*m[7]+m2[5]*m[1]*m[6])*den; + ans[5] = shape.y*(m[1]*m[5]*m2[3]-m[2]*m2[3]*m[4]- - m[0]*m[5]*m2[4]+m[3]*m[2]*m2[4]+ - (numtyp)2.0*m[4]*m[0]*m2[5]-m[0]*m2[4]*m[7]+ - m[1]*m[6]*m2[4]-m2[3]*m[6]*m[4]- - (numtyp)2.0*m[3]*m[1]*m2[5]+m[3]*m2[3]*m[7])*den; - + m[0]*m[5]*m2[4]+m[3]*m[2]*m2[4]+ + (numtyp)2.0*m[4]*m[0]*m2[5]-m[0]*m2[4]*m[7]+ + m[1]*m[6]*m2[4]-m2[3]*m[6]*m[4]- + (numtyp)2.0*m[3]*m[1]*m2[5]+m[3]*m2[3]*m[7])*den; + ans[6] = shape.z*(-m[4]*m[2]*m2[8]+m[1]*m[5]*m2[8]+ - (numtyp)2.0*m[4]*m2[6]*m[8]-m[1]*m2[7]*m[8]+ - m[2]*m[7]*m2[7]-(numtyp)2.0*m2[6]*m[7]*m[5]- - m[3]*m2[7]*m[8]+m[5]*m[6]*m2[7]- - m[4]*m[6]*m2[8]+m[7]*m[3]*m2[8])*den; - + (numtyp)2.0*m[4]*m2[6]*m[8]-m[1]*m2[7]*m[8]+ + m[2]*m[7]*m2[7]-(numtyp)2.0*m2[6]*m[7]*m[5]- + m[3]*m2[7]*m[8]+m[5]*m[6]*m2[7]- + m[4]*m[6]*m2[8]+m[7]*m[3]*m2[8])*den; + ans[7] = shape.z*-(m[1]*m[8]*m2[6]-m[2]*m2[6]*m[7]- - (numtyp)2.0*m2[7]*m[0]*m[8]+m[5]*m2[8]*m[0]+ - (numtyp)2.0*m2[7]*m[2]*m[6]+m[3]*m2[6]*m[8]- - m[3]*m[2]*m2[8]-m[5]*m[6]*m2[6]+ - m[0]*m2[8]*m[7]-m2[8]*m[1]*m[6])*den; - + (numtyp)2.0*m2[7]*m[0]*m[8]+m[5]*m2[8]*m[0]+ + (numtyp)2.0*m2[7]*m[2]*m[6]+m[3]*m2[6]*m[8]- + m[3]*m[2]*m2[8]-m[5]*m[6]*m2[6]+ + m[0]*m2[8]*m[7]-m2[8]*m[1]*m[6])*den; + ans[8] = shape.z*(m[1]*m[5]*m2[6]-m[2]*m2[6]*m[4]- - m[0]*m[5]*m2[7]+m[3]*m[2]*m2[7]- - m[4]*m[6]*m2[6]-m[7]*m2[7]*m[0]+ - (numtyp)2.0*m[4]*m2[8]*m[0]+m[7]*m[3]*m2[6]+ - m[6]*m[1]*m2[7]-(numtyp)2.0*m2[8]*m[3]*m[1])*den; + m[0]*m[5]*m2[7]+m[3]*m[2]*m2[7]- + m[4]*m[6]*m2[6]-m[7]*m2[7]*m[0]+ + (numtyp)2.0*m[4]*m2[8]*m[0]+m[7]*m[3]*m2[6]+ + m[6]*m[1]*m2[7]-(numtyp)2.0*m2[8]*m[3]*m[1])*den; } __kernel void k_gayberne(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict q, - const __global numtyp4 *restrict shape, - const __global numtyp4 *restrict well, - const __global numtyp *restrict gum, - const __global numtyp2 *restrict sig_eps, - const int ntypes, - const __global numtyp *restrict lshape, - const __global int *dev_nbor, - const int stride, - __global acctyp4 *restrict ans, - const int astride, - __global acctyp *restrict engv, - __global int *restrict err_flag, + const __global numtyp4 *restrict shape, + const __global numtyp4 *restrict well, + const __global numtyp *restrict gum, + const __global numtyp2 *restrict sig_eps, + const int ntypes, + const __global numtyp *restrict lshape, + const __global int *dev_nbor, + const int stride, + __global acctyp4 *restrict ans, + const int astride, + __global acctyp *restrict engv, + __global int *restrict err_flag, const int eflag, const int vflag, const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); __local numtyp sp_lj[4]; - sp_lj[0]=gum[3]; - sp_lj[1]=gum[4]; - sp_lj[2]=gum[5]; - sp_lj[3]=gum[6]; + sp_lj[0]=gum[3]; + sp_lj[1]=gum[4]; + sp_lj[2]=gum[5]; + sp_lj[3]=gum[6]; acctyp energy=(acctyp)0; acctyp4 f; @@ -124,7 +124,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info_e(dev_nbor,stride,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); int itype=ix.w; numtyp a1[9], b1[9], g1[9]; @@ -159,7 +159,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, numtyp a2[9]; gpu_quat_to_mat_trans(q,j,a2); - + numtyp u_r, dUr[3], tUr[3], eta, teta[3]; { // Compute U_r, dUr, eta, and teta // Compute g12 @@ -173,7 +173,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, } { // Compute U_r and dUr - + // Compute kappa numtyp kappa[3]; gpu_mldivide3(g12,r12,kappa,err_flag); @@ -189,7 +189,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, kappa[2]*=ir; // energy - + // compute u_r and dUr numtyp uslj_rsq; { @@ -203,7 +203,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, kappa[0]*=r; kappa[1]*=r; kappa[2]*=r; - + int mtype=fast_mul(ntypes,itype)+jtype; numtyp sigma = sig_eps[mtype].x; numtyp epsilon = sig_eps[mtype].y; @@ -235,14 +235,14 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, } } } - + // Compute eta { eta = (numtyp)2.0*lshape[itype]*lshape[jtype]; numtyp det_g12 = gpu_det3(g12); eta = ucl_powr(eta/det_g12,gum[1]); } - + // Compute teta numtyp temp[9], tempv[3], tempv2[3]; compute_eta_torque(g12,a1,ishape,temp); @@ -255,7 +255,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, teta[0] = tempv2[0]; teta[1] = tempv2[1]; teta[2] = tempv2[2]; - + tempv[0] = temp1*temp[3]; tempv[1] = temp1*temp[4]; tempv[2] = temp1*temp[5]; @@ -272,7 +272,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, teta[1] += tempv2[1]; teta[2] += tempv2[2]; } - + numtyp chi, dchi[3], tchi[3]; { // Compute chi and dchi @@ -355,7 +355,7 @@ __kernel void k_gayberne(const __global numtyp4 *restrict x_, tor.x+=temp1*tchi[0]+temp2*teta[0]+temp3*tUr[0]; tor.y+=temp1*tchi[1]+temp2*teta[1]+temp3*tUr[1]; tor.z+=temp1*tchi[2]+temp2*teta[2]+temp3*tUr[2]; - + } // for nbor store_answers_t(f,tor,energy,virial,ii,astride,tid,t_per_atom,offset,eflag, vflag,ans,engv); diff --git a/lib/gpu/lal_gayberne.h b/lib/gpu/lal_gayberne.h index dacaf74282..8792f1f1db 100644 --- a/lib/gpu/lal_gayberne.h +++ b/lib/gpu/lal_gayberne.h @@ -25,14 +25,14 @@ template class GayBerne : public BaseEllipsoid { public: GayBerne(); - ~GayBerne(); + ~GayBerne(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin - * \param gpu_split fraction of particles handled by device + * \param gpu_split fraction of particles handled by device * \return false if there is not sufficient memory or device init prob - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -41,18 +41,18 @@ class GayBerne : public BaseEllipsoid { * - -5 Double precision is not supported on card **/ int init(const int ntypes, const double gamma, const double upsilon, const double mu, double **host_shape, - double **host_well, double **host_cutsq, double **host_sigma, + double **host_well, double **host_cutsq, double **host_sigma, double **host_epsilon, double *host_lshape, int **h_form, - double **host_lj1, double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, - const double *host_special_lj, const int nlocal, const int nall, + double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, + const double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); - + /// Returns memory usage on device per atom int bytes_per_atom(const int max_nbors) const; @@ -61,8 +61,8 @@ class GayBerne : public BaseEllipsoid { /// Device Error Flag - Set if a bad matrix inversion occurs UCL_D_Vec dev_error; - - // --------------------------- TYPE DATA -------------------------- + + // --------------------------- TYPE DATA -------------------------- /// lj1.x = lj1, lj1.y = lj2, lj1.z = cutsq, lj1.w = form UCL_D_Vec lj1; @@ -72,12 +72,12 @@ class GayBerne : public BaseEllipsoid { UCL_D_Vec sigma_epsilon; // 0 - gamma, 1-upsilon, 2-mu, 3-special_lj[0], 4-special_lj[1], ... UCL_D_Vec gamma_upsilon_mu; - + /// If atom type constants fit in shared memory, use fast kernels bool _shared_types; int _lj_types; - - // --------------------------- ATOM DATA -------------------------- + + // --------------------------- ATOM DATA -------------------------- /// Aspherical Const Data for Atoms UCL_D_Vec shape, well; diff --git a/lib/gpu/lal_gayberne_ext.cpp b/lib/gpu/lal_gayberne_ext.cpp index e674fb376b..451550e7ef 100644 --- a/lib/gpu/lal_gayberne_ext.cpp +++ b/lib/gpu/lal_gayberne_ext.cpp @@ -33,7 +33,7 @@ int gb_gpu_init(const int ntypes, const double gamma, double **epsilon, double *host_lshape, int **form, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { GBMF.clear(); @@ -58,16 +58,16 @@ int gb_gpu_init(const int ntypes, const double gamma, int init_ok=0; if (world_me==0) - init_ok=GBMF.init(ntypes, gamma, upsilon, mu, shape, well, cutsq, - sigma, epsilon, host_lshape, form, host_lj1, - host_lj2, host_lj3, host_lj4, offset, special_lj, + init_ok=GBMF.init(ntypes, gamma, upsilon, mu, shape, well, cutsq, + sigma, epsilon, host_lshape, form, host_lj1, + host_lj2, host_lj3, host_lj4, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); GBMF.device->world_barrier(); if (message) fprintf(screen,"Done.\n"); - + for (int i=0; igpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -105,8 +105,8 @@ void gb_gpu_clear() { int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, double **host_quat); @@ -117,8 +117,8 @@ int** gb_gpu_compute_n(const int ago, const int inum_full, const int nall, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double **host_quat) { - return GBMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, - tag, nspecial, special, eflag, vflag, eatom, vatom, + return GBMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, + tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_quat); } diff --git a/lib/gpu/lal_gayberne_lj.cu b/lib/gpu/lal_gayberne_lj.cu index 9b33b5f7f3..7925b72784 100644 --- a/lib/gpu/lal_gayberne_lj.cu +++ b/lib/gpu/lal_gayberne_lj.cu @@ -18,30 +18,30 @@ #endif __kernel void k_gayberne_sphere_ellipsoid(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict q, + const __global numtyp4 *restrict q, const __global numtyp4 *restrict shape, - const __global numtyp4 *restrict well, - const __global numtyp *restrict gum, + const __global numtyp4 *restrict well, + const __global numtyp *restrict gum, const __global numtyp2 *restrict sig_eps, - const int ntypes, + const int ntypes, const __global numtyp *restrict lshape, - const __global int *dev_nbor, + const __global int *dev_nbor, const int stride, - __global acctyp4 *restrict ans, + __global acctyp4 *restrict ans, __global acctyp *restrict engv, - __global int *restrict err_flag, + __global int *restrict err_flag, const int eflag, const int vflag, - const int start, const int inum, + const int start, const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); ii+=start; __local numtyp sp_lj[4]; - sp_lj[0]=gum[3]; - sp_lj[1]=gum[4]; - sp_lj[2]=gum[5]; - sp_lj[3]=gum[6]; + sp_lj[0]=gum[3]; + sp_lj[1]=gum[4]; + sp_lj[2]=gum[5]; + sp_lj[3]=gum[6]; acctyp energy=(acctyp)0; acctyp4 f; @@ -58,16 +58,16 @@ __kernel void k_gayberne_sphere_ellipsoid(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info_e(dev_nbor,stride,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); int itype=ix.w; - + numtyp oner=shape[itype].x; numtyp one_well=well[itype].x; - + numtyp factor_lj; for ( ; nbor0) { numtyp e=r6inv*(lj3[ii].x*r6inv-lj3[ii].y); - energy+=factor_lj*(e-lj3[ii].z); + energy+=factor_lj*(e-lj3[ii].z); } if (vflag>0) { virial[0] += delx*delx*force; @@ -332,33 +332,33 @@ __kernel void k_gayberne_lj(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_gayberne_lj_fast(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, - const __global numtyp *restrict gum, - const int stride, +__kernel void k_gayberne_lj_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1_in, + const __global numtyp4 *restrict lj3_in, + const __global numtyp *restrict gum, + const int stride, const __global int *dev_ij, - __global acctyp4 *restrict ans, + __global acctyp4 *restrict ans, __global acctyp *restrict engv, - __global int *restrict err_flag, - const int eflag, const int vflag, - const int start, const int inum, + __global int *restrict err_flag, + const int eflag, const int vflag, + const int start, const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); ii+=start; - __local numtyp sp_lj[4]; + __local numtyp sp_lj[4]; __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; if (tid<4) - sp_lj[tid]=gum[tid+3]; + sp_lj[tid]=gum[tid+3]; if (tid0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; @@ -367,9 +367,9 @@ __kernel void k_gayberne_lj_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_lj.cpp b/lib/gpu/lal_lj.cpp index 6c6e145319..978b33e5d7 100644 --- a/lib/gpu/lal_lj.cpp +++ b/lib/gpu/lal_lj.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -33,20 +33,20 @@ LJT::LJ() : BaseAtomic(), _allocated(false) { } template -LJT::~LJ() { +LJT::~LJ() { clear(); } - + template int LJT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int LJT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, +int LJT::init(const int ntypes, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -76,11 +76,11 @@ int LJT::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq); + host_cutsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -99,10 +99,10 @@ void LJT::reinit(const int ntypes, double **host_cutsq, double **host_lj1, // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,lj1,host_write,host_lj1,host_lj2, host_cutsq); this->atom->type_pack4(ntypes,_lj_types,lj3,host_write,host_lj3,host_lj4, @@ -143,7 +143,7 @@ void LJT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -155,12 +155,12 @@ void LJT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_lj.cu b/lib/gpu/lal_lj.cu index 9569cb0fd7..5838ac95cf 100644 --- a/lib/gpu/lal_lj.cu +++ b/lib/gpu/lal_lj.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -24,15 +24,15 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_lj(const __global numtyp4 *restrict x_, +__kernel void k_lj(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -44,19 +44,19 @@ __kernel void k_lj(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; @@ -101,19 +101,19 @@ __kernel void k_lj(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, - const __global numtyp *restrict sp_lj_in, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const __global numtyp4 *restrict lj3_in, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; @@ -124,7 +124,7 @@ __kernel void k_lj_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -133,7 +133,7 @@ __kernel void k_lj_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_lj.h b/lib/gpu/lal_lj.h index 63a3e8a6c9..01ce85c8ea 100644 --- a/lib/gpu/lal_lj.h +++ b/lib/gpu/lal_lj.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class LJ : public BaseAtomic { public: LJ(); - ~LJ(); + ~LJ(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,15 +40,15 @@ class LJ : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); - + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -71,7 +71,7 @@ class LJ : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_lj96.cpp b/lib/gpu/lal_lj96.cpp index 70e46b9fe1..191f211ae4 100644 --- a/lib/gpu/lal_lj96.cpp +++ b/lib/gpu/lal_lj96.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -36,7 +36,7 @@ template LJ96T::~LJ96() { clear(); } - + template int LJ96T::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -44,9 +44,9 @@ int LJ96T::bytes_per_atom(const int max_nbors) const { template int LJ96T::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -76,11 +76,11 @@ int LJ96T::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq); + host_cutsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -126,7 +126,7 @@ void LJ96T::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -138,7 +138,7 @@ void LJ96T::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); diff --git a/lib/gpu/lal_lj96.cu b/lib/gpu/lal_lj96.cu index b219b8bf0d..3bb7750022 100644 --- a/lib/gpu/lal_lj96.cu +++ b/lib/gpu/lal_lj96.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -26,13 +26,13 @@ texture pos_tex; __kernel void k_lj96(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -50,20 +50,20 @@ __kernel void k_lj96(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r3inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; @@ -109,15 +109,15 @@ __kernel void k_lj96(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj96_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj96_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -132,30 +132,30 @@ __kernel void k_lj96_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r3inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_lj96.h b/lib/gpu/lal_lj96.h index 7d51e287d3..3fdea5265e 100644 --- a/lib/gpu/lal_lj96.h +++ b/lib/gpu/lal_lj96.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ class LJ96 : public BaseAtomic { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,8 +40,8 @@ class LJ96 : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -66,7 +66,7 @@ class LJ96 : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_lj96_ext.cpp b/lib/gpu/lal_lj96_ext.cpp index 14c32ef95e..5c4a58c5e8 100644 --- a/lib/gpu/lal_lj96_ext.cpp +++ b/lib/gpu/lal_lj96_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -77,7 +77,7 @@ int lj96_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split, screen); LJ96MF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,8 +102,8 @@ int** lj96_gpu_compute_n(const int ago, const int inum_full, return LJ96MF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void lj96_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_class2_long.cpp b/lib/gpu/lal_lj_class2_long.cpp index ef59843c4a..497e5989ad 100644 --- a/lib/gpu/lal_lj_class2_long.cpp +++ b/lib/gpu/lal_lj_class2_long.cpp @@ -38,7 +38,7 @@ template LJClass2LongT::~LJClass2Long() { clear(); } - + template int LJClass2LongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -46,8 +46,8 @@ int LJClass2LongT::bytes_per_atom(const int max_nbors) const { template int LJClass2LongT::init(const int ntypes, double **host_cutsq, - double **host_lj1, double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, + double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -80,11 +80,11 @@ int LJClass2LongT::init(const int ntypes, double **host_cutsq, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq, host_cut_ljsq); + host_cutsq, host_cut_ljsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { @@ -136,7 +136,7 @@ void LJClass2LongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -145,11 +145,11 @@ void LJClass2LongT::loop(const bool _eflag, const bool _vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_fast.set_size(GX,BX); - this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, + this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, - &_cut_coulsq, &_qqrd2e, &_g_ewald, + &_cut_coulsq, &_qqrd2e, &_g_ewald, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); diff --git a/lib/gpu/lal_lj_class2_long.cu b/lib/gpu/lal_lj_class2_long.cu index e16de3a327..41ceca35d7 100644 --- a/lib/gpu/lal_lj_class2_long.cu +++ b/lib/gpu/lal_lj_class2_long.cu @@ -32,15 +32,15 @@ texture q_tex; __kernel void k_lj_class2_long(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, const __global numtyp4 *restrict lj3, - const int lj_types, + const int lj_types, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const __global numtyp *restrict q_, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { int tid, ii, offset; @@ -63,14 +63,14 @@ __kernel void k_lj_class2_long(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -147,20 +147,20 @@ __kernel void k_lj_class2_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_class2_long_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_class2_long_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const __global numtyp *restrict q_, - const numtyp cut_coulsq, + const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp g_ewald, + const numtyp g_ewald, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -175,7 +175,7 @@ __kernel void k_lj_class2_long_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -183,16 +183,16 @@ __kernel void k_lj_class2_long_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,8 +40,8 @@ class LJClass2Long : public BaseCharge { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald); @@ -68,7 +68,7 @@ class LJClass2Long : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq, _qqrd2e, _g_ewald; diff --git a/lib/gpu/lal_lj_class2_long_ext.cpp b/lib/gpu/lal_lj_class2_long_ext.cpp index 4bb3aad7ad..6ed15126d9 100644 --- a/lib/gpu/lal_lj_class2_long_ext.cpp +++ b/lib/gpu/lal_lj_class2_long_ext.cpp @@ -82,7 +82,7 @@ int c2cl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); C2CLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -99,7 +99,7 @@ void c2cl_gpu_clear() { int** c2cl_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -109,8 +109,8 @@ int** c2cl_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void c2cl_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_coul.cpp b/lib/gpu/lal_lj_coul.cpp index 8030f3cfc2..a8255318bd 100644 --- a/lib/gpu/lal_lj_coul.cpp +++ b/lib/gpu/lal_lj_coul.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template LJCoulT::~LJCoul() { clear(); } - + template int LJCoulT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,9 +45,9 @@ int LJCoulT::bytes_per_atom(const int max_nbors) const { template int LJCoulT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -79,11 +79,11 @@ int LJCoulT::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cut_ljsq, host_cut_coulsq); + host_cut_ljsq, host_cut_coulsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,cutsq,host_write,host_cutsq); @@ -138,7 +138,7 @@ void LJCoulT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -149,14 +149,14 @@ void LJCoulT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_lj_coul.cu b/lib/gpu/lal_lj_coul.cu index 364203db22..5c7f0da46f 100644 --- a/lib/gpu/lal_lj_coul.cu +++ b/lib/gpu/lal_lj_coul.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -29,19 +29,19 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_lj_coul(const __global numtyp4 *restrict x_, +__kernel void k_lj_coul(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, + const __global numtyp4 *restrict lj3, + const int lj_types, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, - const __global numtyp *restrict q_, - const __global numtyp *restrict cutsq, + const int nbor_pitch, + const __global numtyp *restrict q_, + const __global numtyp *restrict cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -63,14 +63,14 @@ __kernel void k_lj_coul(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -140,16 +140,16 @@ __kernel void k_lj_coul(const __global numtyp4 *restrict x_, __kernel void k_lj_coul_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const __global numtyp *restrict q_, - const __global numtyp *restrict _cutsq, + const __global numtyp *restrict _cutsq, const numtyp qqrd2e, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -166,7 +166,7 @@ __kernel void k_lj_coul_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -174,16 +174,16 @@ __kernel void k_lj_coul_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,7 +40,7 @@ class LJCoul : public BaseCharge { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, double **host_cut_coulsq, double *host_special_coul, @@ -70,7 +70,7 @@ class LJCoul : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e; diff --git a/lib/gpu/lal_lj_coul_debye.cpp b/lib/gpu/lal_lj_coul_debye.cpp index 135a4dfd9d..92167f314f 100644 --- a/lib/gpu/lal_lj_coul_debye.cpp +++ b/lib/gpu/lal_lj_coul_debye.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template LJCoulDebyeT::~LJCoulDebye() { clear(); } - + template int LJCoulDebyeT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,9 +45,9 @@ int LJCoulDebyeT::bytes_per_atom(const int max_nbors) const { template int LJCoulDebyeT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -80,11 +80,11 @@ int LJCoulDebyeT::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cut_ljsq, host_cut_coulsq); + host_cut_ljsq, host_cut_coulsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,cutsq,host_write,host_cutsq); @@ -98,7 +98,7 @@ int LJCoulDebyeT::init(const int ntypes, _qqrd2e=qqrd2e; _kappa=kappa; - + _allocated=true; this->_max_bytes=lj1.row_bytes()+lj3.row_bytes()+cutsq.row_bytes()+ sp_lj.row_bytes(); @@ -140,7 +140,7 @@ void LJCoulDebyeT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -157,9 +157,9 @@ void LJCoulDebyeT::loop(const bool _eflag, const bool _vflag) { } else { this->k_pair.set_size(GX,BX); this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, &this->atom->q, &cutsq, + &ainum, &nbor_pitch, &this->atom->q, &cutsq, &_qqrd2e, &_kappa, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_lj_coul_debye.cu b/lib/gpu/lal_lj_coul_debye.cu index 308504c6c8..91b105b3da 100644 --- a/lib/gpu/lal_lj_coul_debye.cu +++ b/lib/gpu/lal_lj_coul_debye.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -29,19 +29,19 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_lj_debye(const __global numtyp4 *restrict x_, +__kernel void k_lj_debye(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp *restrict q_ , - const __global numtyp *restrict cutsq, + const __global numtyp *restrict cutsq, const numtyp qqrd2e, const numtyp kappa, const int t_per_atom) { int tid, ii, offset; @@ -64,14 +64,14 @@ __kernel void k_lj_debye(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -147,15 +147,15 @@ __kernel void k_lj_debye(const __global numtyp4 *restrict x_, __kernel void k_lj_debye_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, - const __global numtyp *restrict q_, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, + const __global numtyp *restrict q_, const __global numtyp *restrict _cutsq, const numtyp qqrd2e, const numtyp kappa, const int t_per_atom) { @@ -174,7 +174,7 @@ __kernel void k_lj_debye_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -182,16 +182,16 @@ __kernel void k_lj_debye_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,7 +40,7 @@ class LJCoulDebye : public BaseCharge { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, double **host_cut_coulsq, double *host_special_coul, @@ -70,7 +70,7 @@ class LJCoulDebye : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e,_kappa; diff --git a/lib/gpu/lal_lj_coul_debye_ext.cpp b/lib/gpu/lal_lj_coul_debye_ext.cpp index 67f5a0075f..3a0a3593e7 100644 --- a/lib/gpu/lal_lj_coul_debye_ext.cpp +++ b/lib/gpu/lal_lj_coul_debye_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,7 +33,7 @@ int ljcd_gpu_init(const int ntypes, double **cutsq, double **host_lj1, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, double **host_cut_ljsq, double **host_cut_coulsq, - double *host_special_coul, const double qqrd2e, + double *host_special_coul, const double qqrd2e, const double kappa) { LJCDMF.clear(); gpu_mode=LJCDMF.device->gpu_mode(); @@ -82,7 +82,7 @@ int ljcd_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e, kappa); LJCDMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -99,7 +99,7 @@ void ljcd_gpu_clear() { int** ljcd_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -109,8 +109,8 @@ int** ljcd_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void ljcd_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_coul_ext.cpp b/lib/gpu/lal_lj_coul_ext.cpp index 3b5cc09805..b803101b9e 100644 --- a/lib/gpu/lal_lj_coul_ext.cpp +++ b/lib/gpu/lal_lj_coul_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -81,7 +81,7 @@ int ljc_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e); LJCMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -98,7 +98,7 @@ void ljc_gpu_clear() { int** ljc_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -108,8 +108,8 @@ int** ljc_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void ljc_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_coul_long.cpp b/lib/gpu/lal_lj_coul_long.cpp index 03f32a5fd0..29d648bed2 100644 --- a/lib/gpu/lal_lj_coul_long.cpp +++ b/lib/gpu/lal_lj_coul_long.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template LJCoulLongT::~LJCoulLong() { clear(); } - + template int LJCoulLongT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,9 +45,9 @@ int LJCoulLongT::bytes_per_atom(const int max_nbors) const { template int LJCoulLongT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, - double **host_lj4, double **host_offset, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, + double **host_lj4, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -80,11 +80,11 @@ int LJCoulLongT::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq, host_cut_ljsq); + host_cutsq, host_cut_ljsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { @@ -109,10 +109,10 @@ void LJCoulLongT::reinit(const int ntypes, double **host_cutsq, double **host_lj // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,lj1,host_write,host_lj1,host_lj2, host_cutsq, host_cut_ljsq); this->atom->type_pack4(ntypes,_lj_types,lj3,host_write,host_lj3,host_lj4, @@ -153,7 +153,7 @@ void LJCoulLongT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -162,7 +162,7 @@ void LJCoulLongT::loop(const bool _eflag, const bool _vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_fast.set_size(GX,BX); - this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, + this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, diff --git a/lib/gpu/lal_lj_coul_long.cu b/lib/gpu/lal_lj_coul_long.cu index e0aa2e8a58..0e25bb2dbc 100644 --- a/lib/gpu/lal_lj_coul_long.cu +++ b/lib/gpu/lal_lj_coul_long.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -29,17 +29,17 @@ texture q_tex; #define q_tex q_ #endif -__kernel void k_lj_coul_long(const __global numtyp4 *restrict x_, +__kernel void k_lj_coul_long(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const numtyp g_ewald, const int t_per_atom) { @@ -63,14 +63,14 @@ __kernel void k_lj_coul_long(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -145,14 +145,14 @@ __kernel void k_lj_coul_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_coul_long_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_coul_long_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, + const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp *restrict q_, @@ -171,7 +171,7 @@ __kernel void k_lj_coul_long_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -179,16 +179,16 @@ __kernel void k_lj_coul_long_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,8 +40,8 @@ class LJCoulLong : public BaseCharge { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, const double g_ewald); @@ -73,7 +73,7 @@ class LJCoulLong : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq, _qqrd2e, _g_ewald; diff --git a/lib/gpu/lal_lj_coul_long_ext.cpp b/lib/gpu/lal_lj_coul_long_ext.cpp index dc93365f22..6f8b5c9fe1 100644 --- a/lib/gpu/lal_lj_coul_long_ext.cpp +++ b/lib/gpu/lal_lj_coul_long_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -82,7 +82,7 @@ int ljcl_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, qqrd2e, g_ewald); LJCLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,15 +102,15 @@ void ljcl_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, int world_me=LJCLMF.device->world_me(); int gpu_rank=LJCLMF.device->gpu_rank(); int procs_per_gpu=LJCLMF.device->procs_per_gpu(); - + if (world_me==0) - LJCLMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, + LJCLMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, host_cut_ljsq); LJCLMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } @@ -122,7 +122,7 @@ void ljcl_gpu_clear() { int** ljcl_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -132,8 +132,8 @@ int** ljcl_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void ljcl_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_coul_msm.cpp b/lib/gpu/lal_lj_coul_msm.cpp index dd045b7970..1358de9ee1 100644 --- a/lib/gpu/lal_lj_coul_msm.cpp +++ b/lib/gpu/lal_lj_coul_msm.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -37,7 +37,7 @@ template LJCoulMSMT::~LJCoulMSM() { clear(); } - + template int LJCoulMSMT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,8 +45,8 @@ int LJCoulMSMT::bytes_per_atom(const int max_nbors) const { template int LJCoulMSMT::init(const int ntypes, - double **host_cutsq, double **host_lj1, - double **host_lj2, double **host_lj3, + double **host_cutsq, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, double **host_gcons, double **host_dgcons, double **host_offset, double *host_special_lj, const int nlocal, @@ -81,11 +81,11 @@ int LJCoulMSMT::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq, host_cut_ljsq); + host_cutsq, host_cut_ljsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); // pack gcons and dgcons int nrows, ncols; @@ -93,11 +93,11 @@ int LJCoulMSMT::init(const int ntypes, ncols = 7; UCL_H_Vec dview_gcons(nrows*ncols,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int ix=0; ixucl_device),UCL_READ_ONLY); ucl_copy(gcons,dview_gcons,false); gcons_tex.get_texture(*(this->pair_program),"gcons_tex"); @@ -107,11 +107,11 @@ int LJCoulMSMT::init(const int ntypes, ncols = 6; UCL_H_Vec dview_dgcons(nrows*ncols,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int ix=0; ixucl_device),UCL_READ_ONLY); ucl_copy(dgcons,dview_dgcons,false); dgcons_tex.get_texture(*(this->pair_program),"dgcons_tex"); @@ -170,7 +170,7 @@ void LJCoulMSMT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -179,7 +179,7 @@ void LJCoulMSMT::loop(const bool _eflag, const bool _vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_fast.set_size(GX,BX); - this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &gcons, &dgcons, &sp_lj, + this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &gcons, &dgcons, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, diff --git a/lib/gpu/lal_lj_coul_msm.cu b/lib/gpu/lal_lj_coul_msm.cu index 0c7c3cdace..3f73c6f47d 100644 --- a/lib/gpu/lal_lj_coul_msm.cu +++ b/lib/gpu/lal_lj_coul_msm.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -80,19 +80,19 @@ ucl_inline numtyp dgamma(const numtyp rho, const int order, return ((numtyp)-1.0/rho/rho); } -__kernel void k_lj_coul_msm(const __global numtyp4 *restrict x_, +__kernel void k_lj_coul_msm(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, const __global numtyp4 *restrict lj3, const __global numtyp *restrict gcons, const __global numtyp *restrict dgcons, const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, const int order, const int t_per_atom) { @@ -116,20 +116,20 @@ __kernel void k_lj_coul_msm(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { virial[0] += delx*delx*force; @@ -199,7 +199,7 @@ __kernel void k_lj_coul_msm(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_coul_msm_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_coul_msm_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict gcons, @@ -227,7 +227,7 @@ __kernel void k_lj_coul_msm_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -235,16 +235,16 @@ __kernel void k_lj_coul_msm_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -41,8 +41,8 @@ class LJCoulMSM : public BaseCharge { double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_gcons, double **host_dgcons, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const int order, const double qqrd2e); @@ -65,14 +65,14 @@ class LJCoulMSM : public BaseCharge { UCL_D_Vec lj3; /// Special LJ values [0-3] and Special Coul values [4-7] UCL_D_Vec sp_lj; - + UCL_D_Vec gcons, dgcons; UCL_Texture gcons_tex, dgcons_tex; - + /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _cut_coulsq, _qqrd2e; diff --git a/lib/gpu/lal_lj_coul_msm_ext.cpp b/lib/gpu/lal_lj_coul_msm_ext.cpp index ecf3254cf9..bf520e4dc5 100644 --- a/lib/gpu/lal_lj_coul_msm_ext.cpp +++ b/lib/gpu/lal_lj_coul_msm_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -84,7 +84,7 @@ int ljcm_gpu_init(const int ntypes, double **cutsq, double **host_lj1, host_cut_coulsq, host_special_coul, order, qqrd2e); LJCMLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -101,7 +101,7 @@ void ljcm_gpu_clear() { int** ljcm_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -111,8 +111,8 @@ int** ljcm_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void ljcm_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_cubic.cpp b/lib/gpu/lal_lj_cubic.cpp index 25f83166e1..21ea22845c 100644 --- a/lib/gpu/lal_lj_cubic.cpp +++ b/lib/gpu/lal_lj_cubic.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndactrung@gmail.com ***************************************************************************/ @@ -33,21 +33,21 @@ LJCubicT::LJCubic() : BaseAtomic(), _allocated(false) { } template -LJCubicT::~LJCubic() { +LJCubicT::~LJCubic() { clear(); } - + template int LJCubicT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int LJCubicT::init(const int ntypes, +int LJCubicT::init(const int ntypes, double **host_cutsq, double **host_cut_inner_sq, - double **host_cut_inner, double **host_sigma, - double **host_epsilon, double **host_lj1, - double **host_lj2, double **host_lj3, double **host_lj4, + double **host_cut_inner, double **host_sigma, + double **host_epsilon, double **host_lj1, + double **host_lj2, double **host_lj3, double **host_lj4, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -77,11 +77,11 @@ int LJCubicT::init(const int ntypes, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq); + host_cutsq); lj2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj2,host_write,host_cut_inner_sq, - host_cut_inner,host_sigma,host_epsilon); + host_cut_inner,host_sigma,host_epsilon); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack2(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4); @@ -132,7 +132,7 @@ void LJCubicT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -144,12 +144,12 @@ void LJCubicT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &lj1, &lj2, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj2, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &lj1, &lj2, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_lj_cubic.cu b/lib/gpu/lal_lj_cubic.cu index 420689383f..a4b1992f33 100644 --- a/lib/gpu/lal_lj_cubic.cu +++ b/lib/gpu/lal_lj_cubic.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : ndactrung@gmail.com // ***************************************************************************/ @@ -31,16 +31,16 @@ texture pos_tex; #define _DPHIDS (numtyp)2.6899009 // gradient at s #define _A3 (numtyp)27.93357 // cubic coefficient -__kernel void k_lj_cubic(const __global numtyp4 *restrict x_, +__kernel void k_lj_cubic(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, const __global numtyp4 *restrict lj2, - const __global numtyp2 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + const __global numtyp2 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -52,19 +52,19 @@ __kernel void k_lj_cubic(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e; - if (rsq <= lj2[mtype].x) + if (rsq <= lj2[mtype].x) e = r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); else e = lj2[mtype].w*(_PHIS + _DPHIDS*t - _A3*t*t*t/6.0); - energy+=factor_lj*e; + energy+=factor_lj*e; } if (vflag>0) { virial[0] += delx*delx*force; @@ -122,20 +122,20 @@ __kernel void k_lj_cubic(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_cubic_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_cubic_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, const __global numtyp4 *restrict lj2_in, - const __global numtyp2 *restrict lj3_in, - const __global numtyp *restrict sp_lj_in, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const __global numtyp2 *restrict lj3_in, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 lj2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp2 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; @@ -148,7 +148,7 @@ __kernel void k_lj_cubic_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -157,7 +157,7 @@ __kernel void k_lj_cubic_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii0) { numtyp e; - if (rsq <= lj2[mtype].x) + if (rsq <= lj2[mtype].x) e = r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); else e = lj2[mtype].w*(_PHIS + _DPHIDS*t - _A3*t*t*t/6.0); - energy+=factor_lj*e; + energy+=factor_lj*e; } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_lj_cubic.h b/lib/gpu/lal_lj_cubic.h index 0fefc727eb..818fb3581b 100644 --- a/lib/gpu/lal_lj_cubic.h +++ b/lib/gpu/lal_lj_cubic.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndactrung@gmail.com ***************************************************************************/ @@ -24,13 +24,13 @@ template class LJCubic : public BaseAtomic { public: LJCubic(); - ~LJCubic(); + ~LJCubic(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -39,11 +39,11 @@ class LJCubic : public BaseAtomic { * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, double **host_cut_inner_sq, double **host_cut_inner, double **host_sigma, double **host_epsilon, - double **host_lj1, double **host_lj2, double **host_lj3, - double **host_lj4, double *host_special_lj, const int nlocal, - const int nall, const int max_nbors, const int maxspecial, + double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj4, double *host_special_lj, const int nlocal, + const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -68,7 +68,7 @@ class LJCubic : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_lj_cubic_ext.cpp b/lib/gpu/lal_lj_cubic_ext.cpp index 518f706781..efbcee0a9f 100644 --- a/lib/gpu/lal_lj_cubic_ext.cpp +++ b/lib/gpu/lal_lj_cubic_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndactrung@gmail.com ***************************************************************************/ @@ -27,11 +27,11 @@ static LJCubic LJCubicLMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int ljcb_gpu_init(const int ntypes, double **cutsq, double **cut_inner_sq, +int ljcb_gpu_init(const int ntypes, double **cutsq, double **cut_inner_sq, double **cut_inner, double **sigma, double **epsilon, - double **host_lj1, double **host_lj2, double **host_lj3, - double **host_lj4, double *special_lj, - const int inum, const int nall, const int max_nbors, + double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj4, double *special_lj, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { LJCubicLMF.clear(); @@ -81,7 +81,7 @@ int ljcb_gpu_init(const int ntypes, double **cutsq, double **cut_inner_sq, cell_size, gpu_split, screen); LJCubicLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -106,8 +106,8 @@ int ** ljcb_gpu_compute_n(const int ago, const int inum_full, return LJCubicLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void ljcb_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_dsf.cpp b/lib/gpu/lal_lj_dsf.cpp index 1b8fdeabb0..1efac3e821 100644 --- a/lib/gpu/lal_lj_dsf.cpp +++ b/lib/gpu/lal_lj_dsf.cpp @@ -37,22 +37,22 @@ template LJDSFT::~LJDSF() { clear(); } - + template int LJDSFT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int LJDSFT::init(const int ntypes, double **host_cutsq, double **host_lj1, +int LJDSFT::init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, - double **host_offset, double *host_special_lj, + double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, - const double e_shift, const double f_shift, + const double e_shift, const double f_shift, const double alpha) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -84,11 +84,11 @@ int LJDSFT::init(const int ntypes, double **host_cutsq, double **host_lj1, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cut_ljsq, host_cutsq); + host_cut_ljsq, host_cutsq); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); sp_lj.alloc(8,*(this->ucl_device),UCL_READ_ONLY); for (int i=0; i<4; i++) { @@ -138,7 +138,7 @@ void LJDSFT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -149,15 +149,15 @@ void LJDSFT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_e_shift, &_f_shift, &_alpha, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->atom->q, &_cut_coulsq, &_qqrd2e, &_e_shift, &_f_shift, &_alpha, &this->_threads_per_atom); diff --git a/lib/gpu/lal_lj_dsf.cu b/lib/gpu/lal_lj_dsf.cu index 5e0cd4aca9..323576fe77 100644 --- a/lib/gpu/lal_lj_dsf.cu +++ b/lib/gpu/lal_lj_dsf.cu @@ -31,20 +31,20 @@ texture q_tex; #define MY_PIS (acctyp)1.77245385090551602729 -__kernel void k_lj_dsf(const __global numtyp4 *restrict x_, +__kernel void k_lj_dsf(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, - const int nbor_pitch, + const int nbor_pitch, const __global numtyp *restrict q_ , const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp e_shift, const numtyp f_shift, + const numtyp e_shift, const numtyp f_shift, const numtyp alpha, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -66,20 +66,20 @@ __kernel void k_lj_dsf(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { - acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * + acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * qtmp*qtmp*qqrd2e/(acctyp)t_per_atom; e_coul += (acctyp)2.0*e_self; } @@ -119,7 +119,7 @@ __kernel void k_lj_dsf(const __global numtyp4 *restrict x_, numtyp erfcd = ucl_exp(-alpha*alpha*rsq); numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*alpha*r); erfcc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * erfcd; - forcecoul = prefactor * (erfcc + (numtyp)2.0*alpha/MY_PIS*r*erfcd + + forcecoul = prefactor * (erfcc + (numtyp)2.0*alpha/MY_PIS*r*erfcd + rsq*f_shift-factor_coul); } else forcecoul = (numtyp)0.0; @@ -156,19 +156,19 @@ __kernel void k_lj_dsf(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_dsf_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_dsf_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, const __global numtyp4 *restrict lj3_in, const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const __global numtyp *restrict q_, const numtyp cut_coulsq, const numtyp qqrd2e, - const numtyp e_shift, const numtyp f_shift, + const numtyp e_shift, const numtyp f_shift, const numtyp alpha, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -183,7 +183,7 @@ __kernel void k_lj_dsf_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp e_coul=(acctyp)0; acctyp4 f; @@ -191,23 +191,23 @@ __kernel void k_lj_dsf_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { - acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * + acctyp e_self = -((acctyp)0.5*e_shift + alpha/MY_PIS) * qtmp*qtmp*qqrd2e/(acctyp)t_per_atom; e_coul += (acctyp)2.0*e_self; } @@ -246,7 +246,7 @@ __kernel void k_lj_dsf_fast(const __global numtyp4 *restrict x_, numtyp erfcd = ucl_exp(-alpha*alpha*rsq); numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*alpha*r); erfcc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * erfcd; - forcecoul = prefactor * (erfcc + (numtyp)2.0*alpha/MY_PIS*r*erfcd + + forcecoul = prefactor * (erfcc + (numtyp)2.0*alpha/MY_PIS*r*erfcd + rsq*f_shift-factor_coul); } else forcecoul = (numtyp)0.0; diff --git a/lib/gpu/lal_lj_dsf.h b/lib/gpu/lal_lj_dsf.h index 5badf543c4..0195898ca4 100644 --- a/lib/gpu/lal_lj_dsf.h +++ b/lib/gpu/lal_lj_dsf.h @@ -30,7 +30,7 @@ class LJDSF : public BaseCharge { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,11 +40,11 @@ class LJDSF : public BaseCharge { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, + const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, - const double qqrd2e, const double e_shift, const double f_shift, + const double qqrd2e, const double e_shift, const double f_shift, const double alpha); /// Clear all host and device data @@ -69,7 +69,7 @@ class LJDSF : public BaseCharge { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; numtyp _qqrd2e; diff --git a/lib/gpu/lal_lj_dsf_ext.cpp b/lib/gpu/lal_lj_dsf_ext.cpp index 719a792d7f..25802e7544 100644 --- a/lib/gpu/lal_lj_dsf_ext.cpp +++ b/lib/gpu/lal_lj_dsf_ext.cpp @@ -34,7 +34,7 @@ int ljd_gpu_init(const int ntypes, double **cutsq, double **host_lj1, const double cell_size, int &gpu_mode, FILE *screen, double **host_cut_ljsq, const double host_cut_coulsq, double *host_special_coul, const double qqrd2e, - const double e_shift, const double f_shift, + const double e_shift, const double f_shift, const double alpha) { LJDMF.clear(); gpu_mode=LJDMF.device->gpu_mode(); @@ -85,7 +85,7 @@ int ljd_gpu_init(const int ntypes, double **cutsq, double **host_lj1, f_shift, alpha); LJDMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,7 +102,7 @@ void ljd_gpu_clear() { int** ljd_gpu_compute_n(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, - double *sublo, double *subhi, tagint *tag, int **nspecial, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, @@ -112,8 +112,8 @@ int** ljd_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_q, boxlo, prd); -} - +} + void ljd_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_lj_expand.cpp b/lib/gpu/lal_lj_expand.cpp index 03526bc095..34a4d71c0b 100644 --- a/lib/gpu/lal_lj_expand.cpp +++ b/lib/gpu/lal_lj_expand.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ibains@nvidia.com ***************************************************************************/ @@ -36,7 +36,7 @@ template LJExpandT::~LJExpand() { clear(); } - + template int LJExpandT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -76,11 +76,11 @@ int LJExpandT::init(const int ntypes, double **host_cutsq, lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq, host_shift); + host_cutsq, host_shift); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -97,17 +97,17 @@ void LJExpandT::reinit(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double **host_shift) { - + // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,lj1,host_write,host_lj1,host_lj2, host_cutsq, host_shift); - + this->atom->type_pack4(ntypes,_lj_types,lj3,host_write,host_lj3,host_lj4, host_offset); } @@ -146,7 +146,7 @@ void LJExpandT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -155,15 +155,15 @@ void LJExpandT::loop(const bool _eflag, const bool _vflag) { this->time_pair.start(); if (shared_types) { this->k_pair_fast.set_size(GX,BX); - this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, + this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &this->ans->force, &this->ans->engv, &eflag, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_lj_expand.cu b/lib/gpu/lal_lj_expand.cu index 6b79db2323..9281ad27bd 100644 --- a/lib/gpu/lal_lj_expand.cu +++ b/lib/gpu/lal_lj_expand.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : ibains@nvidia.com // ***************************************************************************/ @@ -26,15 +26,15 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_lj_expand(const __global numtyp4 *restrict x_, +__kernel void k_lj_expand(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -52,20 +52,20 @@ __kernel void k_lj_expand(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; @@ -113,15 +113,15 @@ __kernel void k_lj_expand(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_expand_fast(const __global numtyp4 *restrict x_, +__kernel void k_lj_expand_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, + const __global numtyp4 *restrict lj3_in, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -136,30 +136,30 @@ __kernel void k_lj_expand_fast(const __global numtyp4 *restrict x_, if (eflag>0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(numtyp)0; - + __syncthreads(); - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_lj_expand.h b/lib/gpu/lal_lj_expand.h index 0d0ae0b2e6..a732a3a686 100644 --- a/lib/gpu/lal_lj_expand.h +++ b/lib/gpu/lal_lj_expand.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ibains@nvidia.com ***************************************************************************/ @@ -30,7 +30,7 @@ class LJExpand : public BaseAtomic { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,15 +40,15 @@ class LJExpand : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double **host_shift, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); - + /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, double **host_shift); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -71,7 +71,7 @@ class LJExpand : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_lj_expand_ext.cpp b/lib/gpu/lal_lj_expand_ext.cpp index 5303149d1f..94a57192b9 100644 --- a/lib/gpu/lal_lj_expand_ext.cpp +++ b/lib/gpu/lal_lj_expand_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ibains@nvidia.com ***************************************************************************/ @@ -30,7 +30,7 @@ static LJExpand LJEMF; int lje_gpu_init(const int ntypes, double **cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **offset, double **shift, double *special_lj, - const int inum, const int nall, const int max_nbors, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { LJEMF.clear(); @@ -78,7 +78,7 @@ int lje_gpu_init(const int ntypes, double **cutsq, double **host_lj1, cell_size, gpu_split,screen); LJEMF.device->world_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -98,12 +98,12 @@ int lje_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, int world_me=LJEMF.device->world_me(); int gpu_rank=LJEMF.device->gpu_rank(); int procs_per_gpu=LJEMF.device->procs_per_gpu(); - + if (world_me==0) LJEMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, shift); LJEMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -97,11 +97,11 @@ void ljl_gpu_reinit(const int ntypes, double **cutsq, double **host_lj1, int world_me=LJLMF.device->world_me(); int gpu_rank=LJLMF.device->gpu_rank(); int procs_per_gpu=LJLMF.device->procs_per_gpu(); - + if (world_me==0) LJLMF.reinit(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset); LJLMF.device->world_barrier(); - + for (int i=0; i LJGROMACST::~LJGROMACS() { clear(); } - + template int LJGROMACST::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -47,11 +47,11 @@ template int LJGROMACST::init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen, double **host_ljsw1, double **host_ljsw2, double **host_ljsw3, - double **host_ljsw4, double **host_ljsw5, + double **host_ljsw4, double **host_ljsw5, double **cut_inner, double **cut_inner_sq) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -134,7 +134,7 @@ void LJGROMACST::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -146,16 +146,16 @@ void LJGROMACST::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &ljsw, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &ljsw, &_lj_types, + this->k_pair.run(&this->atom->x, &lj1, &lj3, &ljsw, &_lj_types, &sp_lj, &this->nbor->dev_nbor, - &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, - &eflag, &vflag, &ainum, &nbor_pitch, + &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, + &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } this->time_pair.stop(); diff --git a/lib/gpu/lal_lj_gromacs.cu b/lib/gpu/lal_lj_gromacs.cu index f20d8634a5..93dc3d9456 100644 --- a/lib/gpu/lal_lj_gromacs.cu +++ b/lib/gpu/lal_lj_gromacs.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -35,8 +35,8 @@ __kernel void k_lj_gromacs(const __global numtyp4 *restrict x_, const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -59,7 +59,7 @@ __kernel void k_lj_gromacs(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; @@ -83,7 +83,7 @@ __kernel void k_lj_gromacs(const __global numtyp4 *restrict x_, if (rsq lj1[mtype].w) { @@ -91,7 +91,7 @@ __kernel void k_lj_gromacs(const __global numtyp4 *restrict x_, t = r - lj3[mtype].z; numtyp fswitch = r*t*t*(ljsw[mtype].x + ljsw[mtype].y*t); force_lj += fswitch; - } + } force = factor_lj*force_lj * r2inv; @@ -149,22 +149,22 @@ __kernel void k_lj_gromacs_fast(const __global numtyp4 *restrict x_, lj3[tid]=lj3_in[tid]; ljsw[tid]=ljsw_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii lj1[mtype].w) { @@ -196,7 +196,7 @@ __kernel void k_lj_gromacs_fast(const __global numtyp4 *restrict x_, t = r - lj3[mtype].z; numtyp fswitch = r*t*t*(ljsw[mtype].x + ljsw[mtype].y*t); force_lj += fswitch; - } + } force = factor_lj*force_lj * r2inv; diff --git a/lib/gpu/lal_lj_gromacs.h b/lib/gpu/lal_lj_gromacs.h index dc949be4a9..1e0f72dafc 100644 --- a/lib/gpu/lal_lj_gromacs.h +++ b/lib/gpu/lal_lj_gromacs.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ class LJGROMACS : public BaseAtomic { /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,11 +40,11 @@ class LJGROMACS : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, double **host_ljsw1, double **host_ljsw2, double **host_ljsw3, - double **host_ljsw4, double **host_ljsw5, + double **host_ljsw4, double **host_ljsw5, double **cut_inner, double **cut_inner_sq); /// Clear all host and device data @@ -71,7 +71,7 @@ class LJGROMACS : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_lj_gromacs_ext.cpp b/lib/gpu/lal_lj_gromacs_ext.cpp index b5eb0038b7..53b93bfdff 100644 --- a/lib/gpu/lal_lj_gromacs_ext.cpp +++ b/lib/gpu/lal_lj_gromacs_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,7 +33,7 @@ int ljgrm_gpu_init(const int ntypes, double **cutsq, double **host_lj1, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen, double **host_ljsw1, double **host_ljsw2, double **host_ljsw3, - double **host_ljsw4, double **host_ljsw5, + double **host_ljsw4, double **host_ljsw5, double **cut_inner, double **cut_inner_sq) { LJGRMMF.clear(); gpu_mode=LJGRMMF.device->gpu_mode(); @@ -59,7 +59,7 @@ int ljgrm_gpu_init(const int ntypes, double **cutsq, double **host_lj1, if (world_me==0) LJGRMMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, special_lj, inum, nall, 300, maxspecial, cell_size, - gpu_split, screen, host_ljsw1, host_ljsw2, host_ljsw3, + gpu_split, screen, host_ljsw1, host_ljsw2, host_ljsw3, host_ljsw4, host_ljsw5, cut_inner, cut_inner_sq); LJGRMMF.device->world_barrier(); @@ -78,11 +78,11 @@ int ljgrm_gpu_init(const int ntypes, double **cutsq, double **host_lj1, if (gpu_rank==i && world_me!=0) init_ok=LJGRMMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, special_lj, inum, nall, 300, maxspecial, cell_size, - gpu_split, screen, host_ljsw1, host_ljsw2, host_ljsw3, + gpu_split, screen, host_ljsw1, host_ljsw2, host_ljsw3, host_ljsw4, host_ljsw5, cut_inner, cut_inner_sq); LJGRMMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -107,8 +107,8 @@ int ** ljgrm_gpu_compute_n(const int ago, const int inum_full, return LJGRMMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void ljgrm_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, @@ -118,7 +118,7 @@ void ljgrm_gpu_compute(const int ago, const int inum_full, const int nall, firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success); } - + double ljgrm_gpu_bytes() { return LJGRMMF.host_memory_usage(); } diff --git a/lib/gpu/lal_mie.cpp b/lib/gpu/lal_mie.cpp index 2ab7cb8d14..1510275047 100644 --- a/lib/gpu/lal_mie.cpp +++ b/lib/gpu/lal_mie.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,17 +33,17 @@ MieT::Mie() : BaseAtomic(), _allocated(false) { } template -MieT::~Mie() { +MieT::~Mie() { clear(); } - + template int MieT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int MieT::init(const int ntypes, double **host_cutsq, +int MieT::init(const int ntypes, double **host_cutsq, double **host_mie1, double **host_mie2, double **host_mie3, double **host_mie4, double **host_gamA, double **host_gamR, @@ -76,12 +76,12 @@ int MieT::init(const int ntypes, double **host_cutsq, mie1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,mie1,host_write,host_mie1,host_mie2, - host_gamA,host_gamR); + host_gamA,host_gamR); mie3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,mie3,host_write,host_mie3,host_mie4, - host_offset,host_cutsq); - + host_offset,host_cutsq); + UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); dview.view(host_special_lj,4,*(this->ucl_device)); @@ -126,7 +126,7 @@ void MieT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); diff --git a/lib/gpu/lal_mie.cu b/lib/gpu/lal_mie.cu index 4d718897eb..33018566eb 100644 --- a/lib/gpu/lal_mie.cu +++ b/lib/gpu/lal_mie.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,15 +24,15 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_mie(const __global numtyp4 *restrict x_, +__kernel void k_mie(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict mie1, const __global numtyp4 *restrict mie3, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -50,20 +50,20 @@ __kernel void k_mie(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii class Mie : public BaseAtomic { public: Mie(); - ~Mie(); + ~Mie(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -41,8 +41,8 @@ class Mie : public BaseAtomic { double **host_mie1, double **host_mie2, double **host_mie3, double **host_mie4, double **host_gamA, double **host_gamR, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -67,7 +67,7 @@ class Mie : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_mie_ext.cpp b/lib/gpu/lal_mie_ext.cpp index d7c4187a42..9b03903c4f 100644 --- a/lib/gpu/lal_mie_ext.cpp +++ b/lib/gpu/lal_mie_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -81,7 +81,7 @@ int mie_gpu_init(const int ntypes, double **cutsq, double **host_mie1, cell_size, gpu_split, screen); MLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -106,8 +106,8 @@ int ** mie_gpu_compute_n(const int ago, const int inum_full, return MLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void mie_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_morse.cpp b/lib/gpu/lal_morse.cpp index ddf7d843e6..cbdf928863 100644 --- a/lib/gpu/lal_morse.cpp +++ b/lib/gpu/lal_morse.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -33,20 +33,20 @@ MorseT::Morse() : BaseAtomic(), _allocated(false) { } template -MorseT::~Morse() { +MorseT::~Morse() { clear(); } - + template int MorseT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int MorseT::init(const int ntypes, - double **host_cutsq, double **host_morse1, - double **host_r0, double **host_alpha, - double **host_d0, double **host_offset, +int MorseT::init(const int ntypes, + double **host_cutsq, double **host_morse1, + double **host_r0, double **host_alpha, + double **host_d0, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -125,7 +125,7 @@ void MorseT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -135,14 +135,14 @@ void MorseT::loop(const bool _eflag, const bool _vflag) { if (shared_types) { this->k_pair_fast.set_size(GX,BX); this->k_pair_fast.run(&this->atom->x, &mor1, &mor2, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &mor1, &mor2, &_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &mor1, &mor2, &_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } diff --git a/lib/gpu/lal_morse.cu b/lib/gpu/lal_morse.cu index 2015c71cb2..0a14071d19 100644 --- a/lib/gpu/lal_morse.cu +++ b/lib/gpu/lal_morse.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -26,13 +26,13 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_morse(const __global numtyp4 *restrict x_, +__kernel void k_morse(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict mor1, - const __global numtyp2 *restrict mor2, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp2 *restrict mor2, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, @@ -59,13 +59,13 @@ __kernel void k_morse(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; numtyp factor_lj; for ( ; nbor0) { numtyp e=mor2[mtype].x*(dexp*dexp - 2.0*dexp) - mor2[mtype].y; - energy+=e*factor_lj; + energy+=e*factor_lj; } if (vflag>0) { virial[0] += delx*delx*force; @@ -111,15 +111,15 @@ __kernel void k_morse(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_morse_fast(const __global numtyp4 *restrict x_, +__kernel void k_morse_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict mor1_in, - const __global numtyp2 *restrict mor2_in, + const __global numtyp2 *restrict mor2_in, const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); @@ -134,30 +134,30 @@ __kernel void k_morse_fast(const __global numtyp4 *restrict x_, if (eflag>0) mor2[tid]=mor2_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { numtyp e=mor2[mtype].x*(dm-dexp)-mor2[mtype].y; - energy+=e*factor_lj; + energy+=e*factor_lj; } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_morse.h b/lib/gpu/lal_morse.h index e64852f315..ef80fb4235 100644 --- a/lib/gpu/lal_morse.h +++ b/lib/gpu/lal_morse.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Morse : public BaseAtomic { public: Morse(); - ~Morse(); + ~Morse(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,8 +40,8 @@ class Morse : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_morse1, double **host_r0, double **host_alpha, double **host_d0, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -66,7 +66,7 @@ class Morse : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _types; private: diff --git a/lib/gpu/lal_morse_ext.cpp b/lib/gpu/lal_morse_ext.cpp index 3994473fd3..0338bc07a8 100644 --- a/lib/gpu/lal_morse_ext.cpp +++ b/lib/gpu/lal_morse_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -28,9 +28,9 @@ static Morse MORMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int mor_gpu_init(const int ntypes, double **cutsq, - double **host_lj1, double **host_lj2, double **host_lj3, + double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { MORMF.clear(); @@ -55,7 +55,7 @@ int mor_gpu_init(const int ntypes, double **cutsq, int init_ok=0; if (world_me==0) - init_ok=MORMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, + init_ok=MORMF.init(ntypes, cutsq, host_lj1, host_lj2, host_lj3, host_lj4, offset, special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -78,7 +78,7 @@ int mor_gpu_init(const int ntypes, double **cutsq, cell_size, gpu_split, screen); MORMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -103,8 +103,8 @@ int** mor_gpu_compute_n(const int ago, const int inum_full, return MORMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void mor_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index 074eaa842b..0a9933a6c0 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -10,7 +10,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov, penwang@nvidia.com ***************************************************************************/ @@ -32,13 +32,13 @@ int Neighbor::bytes_per_atom(const int max_nbors) const { } bool Neighbor::init(NeighborShared *shared, const int inum, - const int host_inum, const int max_nbors, - const int maxspecial, UCL_Device &devi, - const int gpu_nbor, const int gpu_host, + const int host_inum, const int max_nbors, + const int maxspecial, UCL_Device &devi, + const int gpu_nbor, const int gpu_host, const bool pre_cut, const int block_cell_2d, const int block_cell_id, const int block_nbor_build, const int threads_per_atom, const int warp_size, - const bool time_device, + const bool time_device, const std::string compile_flags) { clear(); @@ -56,10 +56,10 @@ bool Neighbor::init(NeighborShared *shared, const int inum, _gpu_host=false; else if (gpu_host==1) _gpu_host=true; - else + else // Not yet implemented assert(0==1); - + if (pre_cut || gpu_nbor==0) _alloc_packed=true; else @@ -71,7 +71,7 @@ bool Neighbor::init(NeighborShared *shared, const int inum, _packed_permissions=UCL_READ_ONLY; bool success=true; - + // Initialize timers for the selected GPU _nbor_time_avail=false; time_nbor.init(*dev); @@ -88,7 +88,7 @@ bool Neighbor::init(NeighborShared *shared, const int inum, _max_atoms=static_cast(static_cast(inum)*1.10); if (_max_atoms==0) _max_atoms=1000; - + _max_host=static_cast(static_cast(host_inum)*1.10); _max_nbors=(max_nbors/threads_per_atom+1)*threads_per_atom; @@ -102,21 +102,21 @@ bool Neighbor::init(NeighborShared *shared, const int inum, alloc(success); if (!success) return false; - + if (_use_packing==false) _shared->compile_kernels(devi,gpu_nbor,compile_flags); return success; } -void Neighbor::alloc(bool &success) { +void Neighbor::alloc(bool &success) { dev_nbor.clear(); host_acc.clear(); int nt=_max_atoms+_max_host; - if (_use_packing==false || _gpu_nbor>0) - success=success && + if (_use_packing==false || _gpu_nbor>0) + success=success && (dev_nbor.alloc((_max_nbors+2)*_max_atoms,*dev)==UCL_SUCCESS); - else + else success=success && (dev_nbor.alloc(3*_max_atoms,*dev, UCL_READ_ONLY)==UCL_SUCCESS); success=success && (host_acc.alloc(nt*2,*dev, @@ -127,14 +127,17 @@ void Neighbor::alloc(bool &success) { dev_packed.clear(); success=success && (dev_packed.alloc((_max_nbors+2)*_max_atoms,*dev, _packed_permissions)==UCL_SUCCESS); - _c_bytes+=dev_packed.row_bytes(); - } + dev_acc.clear(); + success=success && (dev_acc.alloc(_max_atoms,*dev, + UCL_READ_WRITE)==UCL_SUCCESS); + _c_bytes+=dev_packed.row_bytes()+dev_acc.row_bytes(); + } if (_max_host>0) { nbor_host.clear(); dev_numj_host.clear(); host_ilist.clear(); host_jlist.clear(); - + success=(nbor_host.alloc(_max_nbors*_max_host,*dev,UCL_READ_WRITE, UCL_READ_WRITE)==UCL_SUCCESS) && success; success=success && (dev_numj_host.alloc(_max_host,*dev, @@ -152,7 +155,7 @@ void Neighbor::alloc(bool &success) { for (int i=0; i<_max_host; i++) { host_jlist[i]=ptr; ptr+=_max_nbors; - } + } _c_bytes+=nbor_host.device.row_bytes()+dev_numj_host.row_bytes(); } else { // Some OpenCL implementations return errors for NULL pointers as args @@ -176,7 +179,7 @@ void Neighbor::alloc(bool &success) { _allocated=true; } - + void Neighbor::clear() { _gpu_bytes=0.0; _cell_bytes=0.0; @@ -194,6 +197,7 @@ void Neighbor::clear() { host_packed.clear(); host_acc.clear(); + dev_acc.clear(); dev_nbor.clear(); nbor_host.clear(); dev_packed.clear(); @@ -219,13 +223,13 @@ double Neighbor::host_memory_usage() const { host_ilist.row_bytes()+host_jlist.row_bytes(); else return 0; - } else + } else return host_packed.row_bytes()*host_packed.rows()+host_acc.row_bytes()+ sizeof(Neighbor); } void Neighbor::get_host(const int inum, int *ilist, int *numj, - int **firstneigh, const int block_size) { + int **firstneigh, const int block_size) { _nbor_time_avail=true; time_nbor.start(); @@ -242,7 +246,7 @@ void Neighbor::get_host(const int inum, int *ilist, int *numj, int dev_count=0; int *h_ptr=host_packed.begin(); _nbor_pitch=inum; - + for (int ii=0; ii acc_view; acc_view.view_offset(inum,dev_nbor,inum*2); ucl_copy(acc_view,host_acc,true); + + UCL_H_Vec host_view; + host_view.alloc(_max_atoms,*dev,UCL_READ_WRITE); + for (int ii=0; ii(ceil(static_cast(inum)*_threads_per_atom/ @@ -294,7 +307,7 @@ void Neighbor::get_host(const int inum, int *ilist, int *numj, // inum=nlocal is forced to be true to allow direct indexing of neighbors of // neighbors void Neighbor::get_host3(const int inum, const int nlist, int *ilist, int *numj, - int **firstneigh, const int block_size) { + int **firstneigh, const int block_size) { _nbor_time_avail=true; time_nbor.start(); @@ -311,7 +324,7 @@ void Neighbor::get_host3(const int inum, const int nlist, int *ilist, int *numj, int dev_count=0; int *h_ptr=host_packed.begin(); _nbor_pitch=inum; - + if (nlist!=inum) host_acc.zero(inum); @@ -322,7 +335,7 @@ void Neighbor::get_host3(const int inum, const int nlist, int *ilist, int *numj, host_acc[i+inum]=acc_count; acc_count+=nj; } - + for (int i=0; i(ceil(static_cast(inum)*_threads_per_atom/ @@ -366,7 +379,7 @@ void Neighbor::get_host3(const int inum, const int nlist, int *ilist, int *numj, template void Neighbor::resize_max_neighbors(const int maxn, bool &success) { - if (maxn>_max_nbors) { + if (maxn>_max_nbors) { int mn=static_cast(static_cast(maxn)*1.10); mn=(mn/_threads_per_atom+1)*_threads_per_atom; success=success && (dev_nbor.resize((mn+1)*_max_atoms)==UCL_SUCCESS); @@ -377,7 +390,7 @@ void Neighbor::resize_max_neighbors(const int maxn, bool &success) { for (int i=0; i<_max_host; i++) { host_jlist[i]=ptr; ptr+=mn; - } + } _gpu_bytes+=nbor_host.row_bytes(); } else { nbor_host.device.view(dev_nbor); @@ -393,8 +406,8 @@ void Neighbor::resize_max_neighbors(const int maxn, bool &success) { template void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, - const int nall, Atom &atom, - double *sublo, double *subhi, tagint *tag, + const int nall, Atom &atom, + double *sublo, double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success, int &mn) { _nbor_time_avail=true; @@ -409,7 +422,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, ncell_3d = ncellx * ncelly * ncellz; if (ncell_3d+1>_ncells) { cell_counts.clear(); - + if (_gpu_nbor==2) { if (_ncells>0) delete [] cell_iter; @@ -419,7 +432,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, cell_counts.device.clear(); cell_counts.device.alloc(ncell_3d+1,dev_nbor); } - + _ncells=ncell_3d+1; _cell_bytes=cell_counts.device.row_bytes(); } @@ -445,17 +458,17 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const int g2x=static_cast(ceil(static_cast(_maxspecial)/b2x)); const int g2y=static_cast(ceil(static_cast(nt)/b2y)); _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); - _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt); + _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt); time_transpose.stop(); } - + // If binning on CPU, do this now if (_gpu_nbor==2) { double stime = MPI_Wtime(); int *cell_id=atom.host_cell_id.begin(); int *particle_id=atom.host_particle_id.begin(); - - // Build cell list on CPU + + // Build cell list on CPU cell_counts.host.zero(); double i_cell_size=1.0/_cell_size; @@ -475,12 +488,12 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, int iz = static_cast(pz*i_cell_size+1); iz = std::max(iz,_cells_in_cutoff); iz = std::min(iz,ncellz-offset_hi); - + int id = ix+iy*ncellx+iz*ncellx*ncelly; cell_id[i] = id; cell_counts[id+1]++; } - + for (int i=nt; i(pz*i_cell_size+1); iz = std::max(iz,0); iz = std::min(iz,ncellz-1); - + int id = ix+iy*ncellx+iz*ncellx*ncelly; cell_id[i] = id; cell_counts[id+1]++; } - + mn=0; for (int i=0; i<_ncells; i++) mn=std::max(mn,cell_counts[i]); @@ -531,7 +544,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, ucl_copy(atom.dev_particle_id,atom.host_particle_id,true); time_hybrid2.stop(); _bin_time+=MPI_Wtime()-stime; - } + } time_kernel.start(); @@ -547,7 +560,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const numtyp sublo1=static_cast(sublo[1]); const numtyp sublo2=static_cast(sublo[2]); _shared->k_cell_id.set_size(GX,neigh_block); - _shared->k_cell_id.run(&atom.x, &atom.dev_cell_id, + _shared->k_cell_id.run(&atom.x, &atom.dev_cell_id, &atom.dev_particle_id, &sublo0, &sublo1, &sublo2, &i_cell_size, &ncellx, &ncelly, &ncellz, &nt, &nall, &_cells_in_cutoff); @@ -556,10 +569,10 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, /* calculate cell count */ _shared->k_cell_counts.set_size(GX,neigh_block); - _shared->k_cell_counts.run(&atom.dev_cell_id, &cell_counts, &nall, + _shared->k_cell_counts.run(&atom.dev_cell_id, &cell_counts, &nall, &ncell_3d); - } - + } + /* build the neighbor list */ const int cell_block=_block_nbor_build; _shared->k_build_nbor.set_size(ncellx-ghost_cells,(ncelly-ghost_cells)* @@ -579,7 +592,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, host_offset.view_offset(inum,host_acc,nt-inum); ucl_copy(host_offset,dev_numj_host,nt-inum,true); } - + if (_gpu_nbor!=2) { host_acc.sync(); mn=host_acc[0]; @@ -587,7 +600,7 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, mn=std::max(mn,host_acc[i]); set_nbor_block_size(mn); - if (mn>_max_nbors) { + if (mn>_max_nbors) { resize_max_neighbors(mn,success); if (!success) return; @@ -599,13 +612,13 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, return; } } - + if (_maxspecial>0) { const int GX2=static_cast(ceil(static_cast (nt*_threads_per_atom)/cell_block)); _shared->k_special.set_size(GX2,cell_block); _shared->k_special.run(&dev_nbor, &nbor_host, &dev_numj_host, - &atom.dev_tag, &dev_nspecial, &dev_special, + &atom.dev_tag, &dev_nspecial, &dev_special, &inum, &nt, &_max_nbors, &_threads_per_atom); } time_kernel.stop(); diff --git a/lib/gpu/lal_neighbor.h b/lib/gpu/lal_neighbor.h index 7653291bbb..05168834c6 100644 --- a/lib/gpu/lal_neighbor.h +++ b/lib/gpu/lal_neighbor.h @@ -10,7 +10,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov, penwang@nvidia.com ***************************************************************************/ @@ -28,12 +28,12 @@ class Neighbor { public: Neighbor() : _allocated(false), _use_packing(false), _ncells(0) {} ~Neighbor() { clear(); } - + /// Determine whether neighbor unpacking should be used - /** If false, twice as much memory is reserved to allow unpacking neighbors by + /** If false, twice as much memory is reserved to allow unpacking neighbors by * atom for coalesced access. **/ void packing(const bool use_packing) { _use_packing=use_packing; } - + /// Clear any old data and setup for new LAMMPS run /** \param inum Initial number of particles whose neighbors stored on device * \param host_inum Initial number of particles whose nbors copied to host @@ -45,20 +45,20 @@ class Neighbor { * 1 if gpu_nbor is true, and host needs a half nbor list, * 2 if gpu_nbor is true, and host needs a full nbor list * \param pre_cut True if cutoff test will be performed in separate kernel - * than the force kernel + * than the force kernel * \param threads_per_atom Number of threads used per atom for force - * calculation + * calculation * \param compile_flags Flags for JIT compiling **/ bool init(NeighborShared *shared, const int inum, const int host_inum, const int max_nbors, const int maxspecial, UCL_Device &dev, const int gpu_nbor, const int gpu_host, const bool pre_cut, - const int block_cell_2d, const int block_cell_id, + const int block_cell_2d, const int block_cell_id, const int block_nbor_build, const int threads_per_atom, - const int warp_size, const bool time_device, + const int warp_size, const bool time_device, const std::string compile_flags); /// Set the size of the cutoff+skin - inline void cell_size(const double size, const double cutoff) { + inline void cell_size(const double size, const double cutoff) { _cell_size=size; _cutoff=cutoff; if (cutoff>size) @@ -66,7 +66,7 @@ class Neighbor { else _cells_in_cutoff=1; } - + /// Get the size of the cutoff+skin inline double cell_size() const { return _cell_size; } @@ -88,7 +88,7 @@ class Neighbor { * \param host_inum Number of particles whose nbors will be copied to host * \param max_nbor Current max number of neighbors for a particle * \param success False if insufficient memory **/ - inline void resize(const int inum, const int host_inum, const int max_nbor, + inline void resize(const int inum, const int host_inum, const int max_nbor, bool &success) { if (inum>_max_atoms || max_nbor>_max_nbors || host_inum>_max_host) { _max_atoms=static_cast(static_cast(inum)*1.10); @@ -124,40 +124,40 @@ class Neighbor { /// Free all memory on host and device void clear(); - + /// Bytes per atom used on device int bytes_per_atom(const int max_nbors) const; - + /// Total host memory used by class double host_memory_usage() const; - + /// Returns the type of neighboring: /** - 0 if neighboring will be performed on host * - 1 if neighboring will be performed on device * - 2 if binning on host and neighboring on device **/ inline int gpu_nbor() const { return _gpu_nbor; } - + /// Make a copy of unpacked nbor lists in the packed storage area (for gb) - inline void copy_unpacked(const int inum, const int maxj) + inline void copy_unpacked(const int inum, const int maxj) { ucl_copy(dev_packed,dev_nbor,inum*(maxj+2),true); } - /// Copy neighbor list from host (first time or from a rebuild) - void get_host(const int inum, int *ilist, int *numj, + /// Copy neighbor list from host (first time or from a rebuild) + void get_host(const int inum, int *ilist, int *numj, int **firstneigh, const int block_size); - - /// Copy neighbor list from host for 3-body (first time or from a rebuild) - void get_host3(const int inum, const int nlist, int *ilist, int *numj, + + /// Copy neighbor list from host for 3-body (first time or from a rebuild) + void get_host3(const int inum, const int nlist, int *ilist, int *numj, int **firstneigh, const int block_size); - + /// Return the stride in elements for each nbor row inline int nbor_pitch() const { return _nbor_pitch; } - + /// Return the maximum number of atoms that can currently be stored inline int max_atoms() const { return _max_atoms; } /// Return the maximum number of nbors for a particle based on current alloc inline int max_nbors() const { return _max_nbors; } - + /// Return the time spent binning on the CPU for hybrid neighbor builds inline double bin_time() const { return _bin_time; } @@ -171,9 +171,9 @@ class Neighbor { /// Build nbor list on the device template - void build_nbor_list(double **x, const int inum, const int host_inum, + void build_nbor_list(double **x, const int inum, const int host_inum, const int nall, Atom &atom, double *sublo, - double *subhi, tagint *tag, int **nspecial, tagint **special, + double *subhi, tagint *tag, int **nspecial, tagint **special, bool &success, int &max_nbors); /// Return the number of bytes used on device @@ -184,7 +184,7 @@ class Neighbor { return res; } - + // ------------------------------- Data ------------------------------- /// Device neighbor matrix @@ -199,6 +199,8 @@ class Neighbor { UCL_H_Vec host_packed; /// Host storage for nbor counts (row 1) & accumulated neighbor counts (row2) UCL_H_Vec host_acc; + /// Device storage for accessing atom indices from the neighbor list (3-body) + UCL_D_Vec dev_acc; // ----------------- Data for GPU Neighbor Calculation --------------- @@ -219,7 +221,7 @@ class Neighbor { /// Device timers UCL_Timer time_nbor, time_kernel, time_hybrid1, time_hybrid2, time_transpose; - + private: NeighborShared *_shared; UCL_Device *dev; @@ -231,14 +233,14 @@ class Neighbor { double _gpu_bytes, _c_bytes, _cell_bytes; void alloc(bool &success); - + int _block_cell_2d, _block_cell_id, _max_block_nbor_build, _block_nbor_build; int _ncells, _threads_per_atom, _total_atoms; int _cells_in_cutoff; template inline void resize_max_neighbors(const int maxn, bool &success); - + int _warp_size; inline void set_nbor_block_size(const int mn) { int desired=mn/(2*_warp_size); diff --git a/lib/gpu/lal_neighbor_cpu.cu b/lib/gpu/lal_neighbor_cpu.cu index 384b88d9de..d005eb9f97 100644 --- a/lib/gpu/lal_neighbor_cpu.cu +++ b/lib/gpu/lal_neighbor_cpu.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -17,7 +17,7 @@ #include "lal_preprocessor.h" #endif -__kernel void kernel_unpack(__global int *dev_nbor, +__kernel void kernel_unpack(__global int *dev_nbor, const __global int *dev_ij, const int inum, const int t_per_atom) { int tid=THREAD_ID_X; @@ -33,7 +33,7 @@ __kernel void kernel_unpack(__global int *dev_nbor, list+=offset; nbor+=fast_mul(ii,t_per_atom-1)+offset; int stride=fast_mul(t_per_atom,inum); - + for ( ; list pos_tex; texture pos_tex; #endif -__kernel void calc_cell_id(const numtyp4 *restrict pos, - unsigned *restrict cell_id, +__kernel void calc_cell_id(const numtyp4 *restrict pos, + unsigned *restrict cell_id, int *restrict particle_id, - numtyp boxlo0, numtyp boxlo1, numtyp boxlo2, - numtyp i_cell_size, int ncellx, int ncelly, - int ncellz, int inum, int nall, + numtyp boxlo0, numtyp boxlo1, numtyp boxlo2, + numtyp i_cell_size, int ncellx, int ncelly, + int ncellz, int inum, int nall, int cells_in_cutoff) { int i = threadIdx.x + blockIdx.x*blockDim.x; @@ -48,11 +48,11 @@ __kernel void calc_cell_id(const numtyp4 *restrict pos, p.x -= boxlo0; p.y -= boxlo1; p.z -= boxlo2; - + int ix = int(p.x*i_cell_size+cells_in_cutoff); int iy = int(p.y*i_cell_size+cells_in_cutoff); int iz = int(p.z*i_cell_size+cells_in_cutoff); - + int offset_lo, offset_hi; if (i 0 && idx < nall) { int id_l = cell_id[idx-1]; if (id != id_l) { - for (int i = id_l+1; i <= id; i++) + for (int i = id_l+1; i <= id; i++) cell_counts[i] = idx; } } @@ -114,36 +114,36 @@ __kernel void kernel_calc_cell_counts(const unsigned *restrict cell_id, #endif #endif -__kernel void transpose(__global tagint *restrict out, - const __global tagint *restrict in, +__kernel void transpose(__global tagint *restrict out, + const __global tagint *restrict in, int columns_in, int rows_in) { - __local tagint block[BLOCK_CELL_2D][BLOCK_CELL_2D+1]; - - unsigned ti=THREAD_ID_X; - unsigned tj=THREAD_ID_Y; - unsigned bi=BLOCK_ID_X; - unsigned bj=BLOCK_ID_Y; - - unsigned i=bi*BLOCK_CELL_2D+ti; - unsigned j=bj*BLOCK_CELL_2D+tj; - if ((i 1e-5) { cnt++; @@ -240,11 +240,11 @@ __kernel void calc_neigh_list_cell(const __global numtyp4 *restrict x_, if ((cnt & (t_per_atom-1))==0) neigh_list=neigh_list+stride; } - } + } } } - __syncthreads(); - } // for (k) + __syncthreads(); + } // for (k) } } } @@ -253,11 +253,11 @@ __kernel void calc_neigh_list_cell(const __global numtyp4 *restrict x_, } // for (i) } -__kernel void kernel_special(__global int *dev_nbor, - __global int *host_nbor_list, - const __global int *host_numj, +__kernel void kernel_special(__global int *dev_nbor, + __global int *host_nbor_list, + const __global int *host_numj, const __global tagint *restrict tag, - const __global int *restrict nspecial, + const __global int *restrict nspecial, const __global tagint *restrict special, int inum, int nt, int max_nbors, int t_per_atom) { int tid=THREAD_ID_X; @@ -268,7 +268,7 @@ __kernel void kernel_special(__global int *dev_nbor, if (iigpu_bytes(); - + _order=order; _order_m_1=order-1; _order2=_order_m_1*_order; @@ -130,7 +130,7 @@ grdtyp * PPPMT::init(const int nlocal, const int nall, FILE *_screen, view.view(rho_coeff[0]+n2lo,numel,*ucl_device); ucl_copy(d_rho_coeff,view,true); _max_bytes+=d_rho_coeff.row_bytes(); - + // Allocate storage for grid _npts_x=nxhi_out-nxlo_out+1; _npts_y=nyhi_out-nylo_out+1; @@ -165,10 +165,10 @@ grdtyp * PPPMT::init(const int nlocal, const int nall, FILE *_screen, flag=-3; return 0; } - + error_flag.device.zero(); _max_bytes+=1; - + _cpu_idle_time=0.0; return brick.host.begin(); @@ -180,13 +180,13 @@ void PPPMT::clear(const double cpu_time) { return; _allocated=false; _precompute_done=false; - + brick.clear(); vd_brick.clear(); d_brick_counts.clear(); error_flag.clear(); d_brick_atoms.clear(); - + acc_timers(); device->output_kspace_times(time_in,time_out,time_map,time_rho,time_interp, *ans,_max_bytes+_max_an_bytes,cpu_time, @@ -216,7 +216,7 @@ void PPPMT::clear(const double cpu_time) { template void PPPMT::_precompute(const int ago, const int nlocal, const int nall, double **host_x, int *host_type, bool &success, - double *host_q, double *boxlo, + double *host_q, double *boxlo, const double delxinv, const double delyinv, const double delzinv) { acc_timers(); @@ -224,7 +224,7 @@ void PPPMT::_precompute(const int ago, const int nlocal, const int nall, zero_timers(); return; } - + ans->inum(nlocal); if (ago==0) { @@ -250,7 +250,7 @@ void PPPMT::_precompute(const int ago, const int nlocal, const int nall, int GX=static_cast(ceil(static_cast(this->ans->inum())/BX)); int ainum=this->ans->inum(); - + // Boxlo adjusted to be upper left brick and shift for even spline order double shift=0.0; if (_order % 2) @@ -258,7 +258,7 @@ void PPPMT::_precompute(const int ago, const int nlocal, const int nall, _brick_x=boxlo[0]+(_nxlo_out-_nlower-shift)/delxinv; _brick_y=boxlo[1]+(_nylo_out-_nlower-shift)/delyinv; _brick_z=boxlo[2]+(_nzlo_out-_nlower-shift)/delzinv; - + _delxinv=delxinv; _delyinv=delyinv; _delzinv=delzinv; @@ -268,7 +268,7 @@ void PPPMT::_precompute(const int ago, const int nlocal, const int nall, device->zero(d_brick_counts,d_brick_counts.numel()); k_particle_map.set_size(GX,BX); k_particle_map.run(&atom->x, &atom->q, &f_delvolinv, &ainum, - &d_brick_counts, &d_brick_atoms, &_brick_x, &_brick_y, + &d_brick_counts, &d_brick_atoms, &_brick_x, &_brick_y, &_brick_z, &_delxinv, &_delyinv, &_delzinv, &_nlocal_x, &_nlocal_y, &_nlocal_z, &_atom_stride, &_max_brick_atoms, &error_flag); @@ -299,7 +299,7 @@ void PPPMT::_precompute(const int ago, const int nlocal, const int nall, template int PPPMT::spread(const int ago, const int nlocal, const int nall, double **host_x, int *host_type, bool &success, - double *host_q, double *boxlo, + double *host_q, double *boxlo, const double delxinv, const double delyinv, const double delzinv) { if (_precompute_done==false) { @@ -309,10 +309,10 @@ int PPPMT::spread(const int ago, const int nlocal, const int nall, } device->stop_host_timer(); - + if (!success || nlocal==0) return 0; - + double t=MPI_Wtime(); time_out.sync_stop(); _cpu_idle_time+=MPI_Wtime()-t; @@ -325,10 +325,10 @@ int PPPMT::spread(const int ago, const int nlocal, const int nall, error_flag.device.zero(); d_brick_atoms.resize(_atom_stride*_max_brick_atoms); _max_bytes+=d_brick_atoms.row_bytes(); - return spread(ago,nlocal,nall,host_x,host_type,success,host_q,boxlo, + return spread(ago,nlocal,nall,host_x,host_type,success,host_q,boxlo, delxinv,delyinv,delzinv); } - + return error_flag[0]; } @@ -340,18 +340,18 @@ void PPPMT::interp(const grdtyp qqrd2e_scale) { time_in.start(); vd_brick.update_device(true); time_in.stop(); - + time_interp.start(); // Compute the block size and grid size to keep all cores busy int BX=this->block_size(); int GX=static_cast(ceil(static_cast(this->ans->inum())/BX)); int ainum=this->ans->inum(); - + k_interp.set_size(GX,BX); k_interp.run(&atom->x, &atom->q, &ainum, &vd_brick, &d_rho_coeff, &_npts_x, &_npts_yx, &_brick_x, &_brick_y, &_brick_z, &_delxinv, - &_delyinv, &_delzinv, &_order, &_order2, &qqrd2e_scale, + &_delyinv, &_delzinv, &_order, &_order2, &qqrd2e_scale, &ans->force); time_interp.stop(); @@ -381,7 +381,7 @@ void PPPMT::compile_kernels(UCL_Device &dev) { #endif pppm_program=new UCL_Program(dev); - + #ifdef USE_OPENCL pppm_program->load_string(pppm,flags.c_str()); #else diff --git a/lib/gpu/lal_pppm.cu b/lib/gpu/lal_pppm.cu index 99fe655dfd..24636b9a93 100644 --- a/lib/gpu/lal_pppm.cu +++ b/lib/gpu/lal_pppm.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ @@ -48,17 +48,17 @@ texture q_tex; // Number of pencils per block for charge spread #define BLOCK_PENCILS (PPPM_BLOCK_1D/PENCIL_SIZE) -__kernel void particle_map(const __global numtyp4 *restrict x_, +__kernel void particle_map(const __global numtyp4 *restrict x_, const __global numtyp *restrict q_, - const grdtyp delvolinv, const int nlocal, - __global int *restrict counts, - __global grdtyp4 *restrict ans, + const grdtyp delvolinv, const int nlocal, + __global int *restrict counts, + __global grdtyp4 *restrict ans, const grdtyp b_lo_x, const grdtyp b_lo_y, const grdtyp b_lo_z, const grdtyp delxinv, const grdtyp delyinv, const grdtyp delzinv, const int nlocal_x, const int nlocal_y, const int nlocal_z, const int atom_stride, - const int max_atoms, + const int max_atoms, __global int *restrict error) { // ii indexes the two interacting particles in gi int ii=GLOBAL_ID_X; @@ -76,7 +76,7 @@ __kernel void particle_map(const __global numtyp4 *restrict x_, grdtyp4 delta; fetch(delta.w,ii,q_tex); delta.w*=delvolinv; - + if (delta.w!=(grdtyp)0.0) { delta.x=(p.x-b_lo_x)*delxinv; nx=delta.x; @@ -85,14 +85,14 @@ __kernel void particle_map(const __global numtyp4 *restrict x_, delta.z=(p.z-b_lo_z)*delzinv; nz=delta.z; - if (delta.x<(grdtyp)0 || delta.y<(grdtyp)0 || delta.z<(grdtyp)0 || + if (delta.x<(grdtyp)0 || delta.y<(grdtyp)0 || delta.z<(grdtyp)0 || nx>=nlocal_x || ny>=nlocal_y || nz>=nlocal_z) *error=1; else { delta.x=nx+(grdtyp)0.5-delta.x; delta.y=ny+(grdtyp)0.5-delta.y; delta.z=nz+(grdtyp)0.5-delta.z; - + int i=nz*nlocal_y*nlocal_x+ny*nlocal_x+nx; int old=atom_add(counts+i, 1); if (old>=max_atoms) { @@ -107,9 +107,9 @@ __kernel void particle_map(const __global numtyp4 *restrict x_, /* --------------------------- */ -__kernel void make_rho(const __global int *restrict counts, +__kernel void make_rho(const __global int *restrict counts, const __global grdtyp4 *restrict atoms, - __global grdtyp *restrict brick, + __global grdtyp *restrict brick, const __global grdtyp *restrict _rho_coeff, const int atom_stride, const int npts_x, const int npts_y, const int npts_z, const int nlocal_x, @@ -118,15 +118,15 @@ __kernel void make_rho(const __global int *restrict counts, __local grdtyp rho_coeff[PPPM_MAX_SPLINE*PPPM_MAX_SPLINE]; __local grdtyp front[BLOCK_PENCILS][PENCIL_SIZE+PPPM_MAX_SPLINE]; __local grdtyp ans[PPPM_MAX_SPLINE][PPPM_BLOCK_1D]; - + int tid=THREAD_ID_X; if (tid -1; k-=order) { @@ -184,14 +184,14 @@ __kernel void make_rho(const __global int *restrict counts, z_pos+=z_stride; } } - + __syncthreads(); if (fid *device; @@ -142,21 +142,21 @@ class PPPM { UCL_Vector brick; UCL_Vector vd_brick; - + // Count of number of atoms assigned to each grid point UCL_D_Vec d_brick_counts; // Atoms assigned to each grid point UCL_D_Vec d_brick_atoms; - + // Error checking for out of bounds atoms UCL_Vector error_flag; - + // Number of grid points in brick (including ghost) int _npts_x, _npts_y, _npts_z, _npts_yx; - + // Number of local grid points in brick int _nlocal_x, _nlocal_y, _nlocal_z, _nlocal_yx, _atom_stride; - + // -------------------------- SPLINE DATA ------------------------- UCL_D_Vec d_rho_coeff; int _order, _nlower, _nupper, _order_m_1, _order2; @@ -180,12 +180,12 @@ class PPPM { int _block_size, _block_pencils, _pencil_size, _max_brick_atoms, _max_atoms; double _max_bytes, _max_an_bytes; double _cpu_idle_time; - - grdtyp _brick_x, _brick_y, _brick_z, _delxinv, _delyinv, _delzinv; + + grdtyp _brick_x, _brick_y, _brick_z, _delxinv, _delyinv, _delzinv; double _slab_volfactor; int _nx_pppm, _ny_pppm, _nz_pppm; - + void compile_kernels(UCL_Device &dev); void _precompute(const int ago, const int nlocal, const int nall, double **host_x, int *host_type, bool &success, diff --git a/lib/gpu/lal_pppm_ext.cpp b/lib/gpu/lal_pppm_ext.cpp index 6e5a82af5b..7e07d6c87b 100644 --- a/lib/gpu/lal_pppm_ext.cpp +++ b/lib/gpu/lal_pppm_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ static PPPM PPPMD; // --------------------------------------------------------------------------- template grdtyp * pppm_gpu_init(memtyp &pppm, const int nlocal, const int nall, - FILE *screen, const int order, const int nxlo_out, + FILE *screen, const int order, const int nxlo_out, const int nylo_out, const int nzlo_out, const int nxhi_out, const int nyhi_out, const int nzhi_out, grdtyp **rho_coeff, @@ -82,7 +82,7 @@ grdtyp * pppm_gpu_init(memtyp &pppm, const int nlocal, const int nall, split,success); pppm.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -91,7 +91,7 @@ grdtyp * pppm_gpu_init(memtyp &pppm, const int nlocal, const int nall, } float * pppm_gpu_init_f(const int nlocal, const int nall, FILE *screen, - const int order, const int nxlo_out, + const int order, const int nxlo_out, const int nylo_out, const int nzlo_out, const int nxhi_out, const int nyhi_out, const int nzhi_out, float **rho_coeff, @@ -102,7 +102,7 @@ float * pppm_gpu_init_f(const int nlocal, const int nall, FILE *screen, nzlo_out,nxhi_out,nyhi_out,nzhi_out,rho_coeff,vd_brick, slab_volfactor,nx_pppm,ny_pppm,nz_pppm,split,success); if (split==false && respa==false) - PPPMF.device->set_single_precompute(&PPPMF); + PPPMF.device->set_single_precompute(&PPPMF); return b; } @@ -133,20 +133,20 @@ void pppm_gpu_forces_f(double **f) { } double * pppm_gpu_init_d(const int nlocal, const int nall, FILE *screen, - const int order, const int nxlo_out, + const int order, const int nxlo_out, const int nylo_out, const int nzlo_out, const int nxhi_out, const int nyhi_out, const int nzhi_out, double **rho_coeff, double **vd_brick, const double slab_volfactor, const int nx_pppm, const int ny_pppm, - const int nz_pppm, const bool split, + const int nz_pppm, const bool split, const bool respa, int &success) { double *b=pppm_gpu_init(PPPMD,nlocal,nall,screen,order,nxlo_out,nylo_out, nzlo_out,nxhi_out,nyhi_out,nzhi_out,rho_coeff, vd_brick,slab_volfactor,nx_pppm,ny_pppm,nz_pppm, - split,success); + split,success); if (split==false && respa==false) - PPPMD.device->set_double_precompute(&PPPMD); + PPPMD.device->set_double_precompute(&PPPMD); return b; } diff --git a/lib/gpu/lal_precision.h b/lib/gpu/lal_precision.h index 24f5b937f7..d5b1b9b6c0 100644 --- a/lib/gpu/lal_precision.h +++ b/lib/gpu/lal_precision.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : brownw@ornl.gov ***************************************************************************/ @@ -49,17 +49,17 @@ inline std::ostream & operator<<(std::ostream &out, const _lgpu_float2 &v) { out << v.x << " " << v.y; return out; } - + inline std::ostream & operator<<(std::ostream &out, const _lgpu_float4 &v) { out << v.x << " " << v.y << " " << v.z; return out; } - + inline std::ostream & operator<<(std::ostream &out, const _lgpu_double2 &v) { out << v.x << " " << v.y; return out; } - + inline std::ostream & operator<<(std::ostream &out, const _lgpu_double4 &v) { out << v.x << " " << v.y << " " << v.z; return out; @@ -115,6 +115,14 @@ enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE}; #define OCL_DEFAULT_VENDOR "generic" #endif +#ifdef INTEL_OCL +#define OCL_DEFAULT_VENDOR "intel" +#endif + +#ifdef PHI_OCL +#define OCL_DEFAULT_VENDOR "phi" +#endif + #ifndef OCL_DEFAULT_VENDOR #define OCL_DEFAULT_VENDOR "none" #endif diff --git a/lib/gpu/lal_preprocessor.h b/lib/gpu/lal_preprocessor.h index 9dbb3c5944..69a8e61bd4 100644 --- a/lib/gpu/lal_preprocessor.h +++ b/lib/gpu/lal_preprocessor.h @@ -9,16 +9,16 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : brownw@ornl.gov // ***************************************************************************/ //************************************************************************* // Preprocessor Definitions -// +// // Note: It is assumed that constants with the same names are defined with // the same values in all files. -// +// // ARCH // Definition: Architecture number for accelerator // MEM_THREADS @@ -35,22 +35,22 @@ // Restructions: Must be power of 2; THREADS_PER_ATOM<=WARP_SIZE // PPPM_MAX_SPLINE // Definition: Maximum order for splines in PPPM -// PPPM_BLOCK_1D +// PPPM_BLOCK_1D // Definition: Thread block size for PPPM kernels // Restrictions: PPPM_BLOCK_1D>=PPPM_MAX_SPLINE*PPPM_MAX_SPLINE -// PPPM_BLOCK_1D%32==0 +// PPPM_BLOCK_1D%32==0 // BLOCK_PAIR // Definition: Default thread block size for pair styles // Restrictions: // MAX_SHARED_TYPES 8 // Definition: Max # of atom type params can be stored in shared memory // Restrictions: MAX_SHARED_TYPES*MAX_SHARED_TYPES<=BLOCK_PAIR -// BLOCK_CELL_2D +// BLOCK_CELL_2D // Definition: Default block size in each dimension for cell list builds // and matrix transpose -// BLOCK_CELL_ID +// BLOCK_CELL_ID // Definition: Default block size for binning atoms in cell list builds -// BLOCK_NBOR_BUILD +// BLOCK_NBOR_BUILD // Definition: Default block size for neighbor list builds // BLOCK_BIO_PAIR // Definition: Default thread block size for "bio" pair styles @@ -78,10 +78,10 @@ #define BLOCK_SIZE_Y blockDim.y #define __kernel extern "C" __global__ #define __local __shared__ -#define __global +#define __global #define restrict __restrict__ #define atom_add atomicAdd -#define ucl_inline static __inline__ __device__ +#define ucl_inline static __inline__ __device__ #ifdef __CUDA_ARCH__ #define ARCH __CUDA_ARCH__ diff --git a/lib/gpu/lal_re_squared.cpp b/lib/gpu/lal_re_squared.cpp index cbf50fab7d..9513f5a633 100644 --- a/lib/gpu/lal_re_squared.cpp +++ b/lib/gpu/lal_re_squared.cpp @@ -37,18 +37,18 @@ RESquaredT::RESquared() : BaseEllipsoid(), } template -RESquaredT::~RESquared() { +RESquaredT::~RESquared() { clear(); } - + template int RESquaredT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom(max_nbors); } template -int RESquaredT::init(const int ntypes, double **host_shape, double **host_well, - double **host_cutsq, double **host_sigma, +int RESquaredT::init(const int ntypes, double **host_shape, double **host_well, + double **host_cutsq, double **host_sigma, double **host_epsilon, int **h_form, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, const double *host_special_lj, @@ -81,23 +81,23 @@ int RESquaredT::init(const int ntypes, double **host_shape, double **host_well, sigma_epsilon.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack2(ntypes,lj_types,sigma_epsilon,host_write, - host_sigma,host_epsilon); + host_sigma,host_epsilon); this->cut_form.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack2(ntypes,lj_types,this->cut_form,host_write, - host_cutsq,h_form); + host_cutsq,h_form); lj1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj1,host_write,host_lj1,host_lj2, - host_cutsq,h_form); + host_cutsq,h_form); lj3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,lj3,host_write,host_lj3,host_lj4, - host_offset); + host_offset); dev_error.alloc(1,*(this->ucl_device),UCL_WRITE_ONLY); dev_error.zero(); - + // Allocate, cast and asynchronous memcpy of constant data // Copy data for bonded interactions special_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -127,7 +127,7 @@ int RESquaredT::init(const int ntypes, double **host_shape, double **host_well, } view4.view((numtyp4*)host_write.begin(),well.numel(),*(this->ucl_device)); ucl_copy(well,view4,false); - + _allocated=true; this->_max_bytes=sigma_epsilon.row_bytes()+this->cut_form.row_bytes()+ lj1.row_bytes()+lj3.row_bytes()+special_lj.row_bytes()+ @@ -144,7 +144,7 @@ void RESquaredT::clear() { UCL_H_Vec err_flag(1,*(this->ucl_device)); ucl_copy(err_flag,dev_error,false); if (err_flag[0] == 2) - std::cerr << "BAD MATRIX INVERSION IN FORCE COMPUTATION.\n"; + std::cerr << "BAD MATRIX INVERSION IN FORCE COMPUTATION.\n"; err_flag.clear(); _allocated=false; @@ -158,7 +158,7 @@ void RESquaredT::clear() { shape.clear(); well.clear(); special_lj.clear(); - + this->clear_base(); } @@ -184,7 +184,7 @@ void RESquaredT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=0, NGX; int stride=this->nbor->nbor_pitch(); int ainum=this->ans->inum(); @@ -197,34 +197,34 @@ void RESquaredT::loop(const bool _eflag, const bool _vflag) { (BX/this->_threads_per_atom))); NGX=static_cast(ceil(static_cast(this->_last_ellipse)/BX)); this->pack_nbors(NGX,BX, 0, this->_last_ellipse,ELLIPSE_ELLIPSE, - ELLIPSE_ELLIPSE,_shared_types,_lj_types); + ELLIPSE_ELLIPSE,_shared_types,_lj_types); this->time_nbor1.stop(); this->time_ellipsoid.start(); this->k_ellipsoid.set_size(GX,BX); this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, &this->shape, &this->well, &this->special_lj, - &this->sigma_epsilon, &this->_lj_types, - &this->nbor->dev_nbor, &stride, + &this->sigma_epsilon, &this->_lj_types, + &this->nbor->dev_nbor, &stride, &this->ans->force,&ainum, &this->ans->engv, - &this->dev_error, &eflag, &vflag, + &this->dev_error, &eflag, &vflag, &this->_last_ellipse, &this->_threads_per_atom); this->time_ellipsoid.stop(); // ------------ ELLIPSE_SPHERE --------------- this->time_nbor2.start(); this->pack_nbors(NGX,BX, 0, this->_last_ellipse,ELLIPSE_SPHERE, - ELLIPSE_SPHERE,_shared_types,_lj_types); + ELLIPSE_SPHERE,_shared_types,_lj_types); this->time_nbor2.stop(); this->time_ellipsoid2.start(); this->k_ellipsoid_sphere.set_size(GX,BX); - this->k_ellipsoid_sphere.run(&this->atom->x, &this->atom->quat, + this->k_ellipsoid_sphere.run(&this->atom->x, &this->atom->quat, &this->shape, &this->well, &this->special_lj, - &this->sigma_epsilon, &this->_lj_types, + &this->sigma_epsilon, &this->_lj_types, &this->nbor->dev_nbor, &stride, &this->ans->force,&ainum, - &this->ans->engv, &this->dev_error, + &this->ans->engv, &this->dev_error, &eflag, &vflag, &this->_last_ellipse, &this->_threads_per_atom); this->time_ellipsoid2.stop(); @@ -245,18 +245,18 @@ void RESquaredT::loop(const bool _eflag, const bool _vflag) { NGX=static_cast(ceil(static_cast(this->ans->inum()- this->_last_ellipse)/BX)); this->pack_nbors(NGX,BX,this->_last_ellipse,this->ans->inum(), - SPHERE_ELLIPSE,SPHERE_ELLIPSE,_shared_types,_lj_types); + SPHERE_ELLIPSE,SPHERE_ELLIPSE,_shared_types,_lj_types); this->time_nbor3.stop(); this->time_ellipsoid3.start(); this->k_sphere_ellipsoid.set_size(GX,BX); this->k_sphere_ellipsoid.run(&this->atom->x, &this->atom->quat, - &this->shape, &this->well, &this->special_lj, + &this->shape, &this->well, &this->special_lj, &this->sigma_epsilon, &this->_lj_types, - &this->nbor->dev_nbor, &stride, + &this->nbor->dev_nbor, &stride, &this->ans->force, &this->ans->engv, &this->dev_error, &eflag, &vflag, - &this->_last_ellipse, &ainum, + &this->_last_ellipse, &ainum, &this->_threads_per_atom); this->time_ellipsoid3.stop(); } else { @@ -266,13 +266,13 @@ void RESquaredT::loop(const bool _eflag, const bool _vflag) { this->ans->force.zero(); this->ans->engv.zero(); this->time_nbor1.zero(); - this->time_ellipsoid.zero(); + this->time_ellipsoid.zero(); this->time_nbor2.zero(); this->time_ellipsoid2.zero(); this->time_nbor3.zero(); this->time_ellipsoid3.zero(); } - + // ------------ LJ --------------- this->time_lj.start(); if (this->_last_ellipseans->inum()) { @@ -287,7 +287,7 @@ void RESquaredT::loop(const bool _eflag, const bool _vflag) { } else { this->k_lj.set_size(GX,BX); this->k_lj.run(&this->atom->x, &this->lj1, &this->lj3, - &this->_lj_types, &this->special_lj, &stride, + &this->_lj_types, &this->special_lj, &stride, &this->nbor->dev_packed, &this->ans->force, &this->ans->engv, &this->dev_error, &eflag, &vflag, &this->_last_ellipse, &ainum, &this->_threads_per_atom); @@ -300,15 +300,15 @@ void RESquaredT::loop(const bool _eflag, const bool _vflag) { NGX=static_cast(ceil(static_cast(this->ans->inum())/BX)); this->time_nbor1.start(); this->pack_nbors(NGX, BX, 0, this->ans->inum(),SPHERE_SPHERE, - ELLIPSE_ELLIPSE,_shared_types,_lj_types); + ELLIPSE_ELLIPSE,_shared_types,_lj_types); this->time_nbor1.stop(); - this->time_ellipsoid.start(); + this->time_ellipsoid.start(); this->k_ellipsoid.set_size(GX,BX); - this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, - &this->shape, &this->well, &this->special_lj, - &this->sigma_epsilon, &this->_lj_types, + this->k_ellipsoid.run(&this->atom->x, &this->atom->quat, + &this->shape, &this->well, &this->special_lj, + &this->sigma_epsilon, &this->_lj_types, &this->nbor->dev_nbor, &stride, &this->ans->force, - &ainum, &this->ans->engv, &this->dev_error, + &ainum, &this->ans->engv, &this->dev_error, &eflag, &vflag, &ainum, &this->_threads_per_atom); this->time_ellipsoid.stop(); } diff --git a/lib/gpu/lal_re_squared.cu b/lib/gpu/lal_re_squared.cu index 3a65ce14ce..e238734074 100644 --- a/lib/gpu/lal_re_squared.cu +++ b/lib/gpu/lal_re_squared.cu @@ -34,31 +34,31 @@ ucl_inline numtyp det_prime(const numtyp m[9], const numtyp m2[9]) __kernel void k_resquared(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict q, - const __global numtyp4 *restrict shape, - const __global numtyp4 *restrict well, - const __global numtyp *restrict splj, - const __global numtyp2 *restrict sig_eps, - const int ntypes, + const __global numtyp4 *restrict shape, + const __global numtyp4 *restrict well, + const __global numtyp *restrict splj, + const __global numtyp2 *restrict sig_eps, + const int ntypes, const __global int *dev_nbor, - const int stride, + const int stride, __global acctyp4 *restrict ans, - const int astride, + const int astride, __global acctyp *restrict engv, - __global int *restrict err_flag, + __global int *restrict err_flag, const int eflag, const int vflag, const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); __local numtyp sp_lj[4]; - sp_lj[0]=splj[0]; - sp_lj[1]=splj[1]; - sp_lj[2]=splj[2]; + sp_lj[0]=splj[0]; + sp_lj[1]=splj[1]; + sp_lj[2]=splj[2]; sp_lj[3]=splj[3]; - + __local numtyp b_alpha, cr60; b_alpha=(numtyp)45.0/(numtyp)56.0; - cr60=ucl_cbrt((numtyp)60.0); + cr60=ucl_cbrt((numtyp)60.0); acctyp energy=(acctyp)0; acctyp4 f; @@ -79,7 +79,7 @@ __kernel void k_resquared(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info_e(dev_nbor,stride,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); int itype=ix.w; @@ -91,14 +91,14 @@ __kernel void k_resquared(const __global numtyp4 *restrict x_, numtyp lAtwo1_0[9], lAtwo1_1[9], lAtwo1_2[9]; // A'*S^2*lA numtyp lAsa1_0[9], lAsa1_1[9], lAsa1_2[9]; // lAtwo+lA'*sa numtyp4 ishape; - + ishape=shape[itype]; numtyp4 ishape2; ishape2.x=ishape.x*ishape.x; ishape2.y=ishape.y*ishape.y; ishape2.z=ishape.z*ishape.z; numtyp ilshape = ishape.x*ishape.y*ishape.z; - + { numtyp aTs[9]; // A1'*S1^2 gpu_quat_to_mat_trans(q,i,a1); @@ -148,7 +148,7 @@ __kernel void k_resquared(const __global numtyp4 *restrict x_, numtyp a2[9]; // Rotation matrix (lab->body) numtyp gamma2[9]; // A'*S^2*A numtyp4 jshape; - + jshape=shape[jtype]; numtyp4 jshape2; jshape2.x=jshape.x*jshape.x; @@ -189,7 +189,7 @@ __kernel void k_resquared(const __global numtyp4 *restrict x_, H12[7] = gamma1[7]*sigma1+gamma2[7]*sigma2; H12[8] = gamma1[8]*sigma1+gamma2[8]*sigma2; dH=gpu_det3(H12); - + numtyp sigma1p2, sigma2p2, lambda, nu; sigma1p2 = sigma1*sigma1; sigma2p2 = sigma2*sigma2; @@ -299,7 +299,7 @@ __kernel void k_resquared(const __global numtyp4 *restrict x_, hsec = ucl_recip(h12+(numtyp)3.0*sec); dspu = ucl_recip(h12)-hsec+stemp; pbsu = (numtyp)3.0*sigma*hsec; - + numtyp dspr, pbsr; stemp = ucl_recip(ishape.x*cr60+h12)+ ucl_recip(ishape.y*cr60+h12)+ @@ -310,7 +310,7 @@ __kernel void k_resquared(const __global numtyp4 *restrict x_, hsec = ucl_recip(h12+b_alpha*sec); dspr = (numtyp)7.0/h12-hsec+stemp; pbsr = b_alpha*sigma*hsec; - + numtyp dH12[9]; numtyp dUa, dUr, deta, dchi, ddH, dh12; numtyp dsigma1, dsigma2; diff --git a/lib/gpu/lal_re_squared.h b/lib/gpu/lal_re_squared.h index c7441ed83e..8dc137d829 100644 --- a/lib/gpu/lal_re_squared.h +++ b/lib/gpu/lal_re_squared.h @@ -25,14 +25,14 @@ template class RESquared : public BaseEllipsoid { public: RESquared(); - ~RESquared(); + ~RESquared(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin - * \param gpu_split fraction of particles handled by device + * \param gpu_split fraction of particles handled by device * \return false if there is not sufficient memory or device init prob - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -41,7 +41,7 @@ class RESquared : public BaseEllipsoid { * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_shape, double **host_well, double **host_cutsq, double **host_sigma, double **host_epsilon, - int **h_form, double **host_lj1, double **host_lj2, + int **h_form, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **host_offset, const double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -50,7 +50,7 @@ class RESquared : public BaseEllipsoid { /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); - + /// Returns memory usage on device per atom int bytes_per_atom(const int max_nbors) const; @@ -59,8 +59,8 @@ class RESquared : public BaseEllipsoid { /// Device Error Flag - Set if a bad matrix inversion occurs UCL_D_Vec dev_error; - - // --------------------------- TYPE DATA -------------------------- + + // --------------------------- TYPE DATA -------------------------- /// lj1.x = lj1, lj1.y = lj2, lj1.z = cutsq, lj1.w = form UCL_D_Vec lj1; @@ -70,12 +70,12 @@ class RESquared : public BaseEllipsoid { UCL_D_Vec sigma_epsilon; /// special lj 0-4 UCL_D_Vec special_lj; - + /// If atom type constants fit in shared memory, use fast kernels bool _shared_types; int _lj_types; - - // --------------------------- ATOM DATA -------------------------- + + // --------------------------- ATOM DATA -------------------------- /// Aspherical Const Data for Atoms UCL_D_Vec shape, well; diff --git a/lib/gpu/lal_re_squared_ext.cpp b/lib/gpu/lal_re_squared_ext.cpp index e1d8fffb8f..b719dfe05f 100644 --- a/lib/gpu/lal_re_squared_ext.cpp +++ b/lib/gpu/lal_re_squared_ext.cpp @@ -28,8 +28,8 @@ static RESquared REMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int re_gpu_init(const int ntypes, double **shape, double **well, double **cutsq, - double **sigma, double **epsilon, - int **form, double **host_lj1, double **host_lj2, + double **sigma, double **epsilon, + int **form, double **host_lj1, double **host_lj2, double **host_lj3, double **host_lj4, double **offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, @@ -56,7 +56,7 @@ int re_gpu_init(const int ntypes, double **shape, double **well, double **cutsq, int init_ok=0; if (world_me==0) - init_ok=REMF.init(ntypes, shape, well, cutsq, sigma, epsilon, + init_ok=REMF.init(ntypes, shape, well, cutsq, sigma, epsilon, form, host_lj1, host_lj2, host_lj3, host_lj4, offset, special_lj, inum, nall, max_nbors, maxspecial, cell_size, gpu_split, screen); @@ -64,7 +64,7 @@ int re_gpu_init(const int ntypes, double **shape, double **well, double **cutsq, REMF.device->world_barrier(); if (message) fprintf(screen,"Done.\n"); - + for (int i=0; igpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,8 +102,8 @@ void re_gpu_clear() { int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **numj, const double cpu_time, bool &success, double **host_quat); @@ -114,8 +114,8 @@ int** re_gpu_compute_n(const int ago, const int inum_full, const int nall, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double **host_quat) { - return REMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, - tag, nspecial, special, eflag, vflag, eatom, vatom, + return REMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, + tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_quat); } diff --git a/lib/gpu/lal_re_squared_lj.cu b/lib/gpu/lal_re_squared_lj.cu index 4742e5bd8e..d69dae2461 100644 --- a/lib/gpu/lal_re_squared_lj.cu +++ b/lib/gpu/lal_re_squared_lj.cu @@ -129,32 +129,32 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict q, - const __global numtyp4 *restrict shape, + const __global numtyp4 *restrict shape, const __global numtyp4 *restrict well, - const __global numtyp *restrict splj, + const __global numtyp *restrict splj, const __global numtyp2 *restrict sig_eps, - const int ntypes, + const int ntypes, const __global int *dev_nbor, - const int stride, + const int stride, __global acctyp4 *restrict ans, - const int astride, - __global acctyp *restrict engv, - __global int *restrict err_flag, - const int eflag, const int vflag, - const int inum, + const int astride, + __global acctyp *restrict engv, + __global int *restrict err_flag, + const int eflag, const int vflag, + const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); __local numtyp sp_lj[4]; - sp_lj[0]=splj[0]; - sp_lj[1]=splj[1]; - sp_lj[2]=splj[2]; + sp_lj[0]=splj[0]; + sp_lj[1]=splj[1]; + sp_lj[2]=splj[2]; sp_lj[3]=splj[3]; - + __local numtyp b_alpha, cr60, solv_f_a, solv_f_r; b_alpha=(numtyp)45.0/(numtyp)56.0; - cr60=ucl_cbrt((numtyp)60.0); + cr60=ucl_cbrt((numtyp)60.0); solv_f_a = (numtyp)3.0/((numtyp)16.0*ucl_atan((numtyp)1.0)*-(numtyp)36.0); solv_f_r = (numtyp)3.0/((numtyp)16.0*ucl_atan((numtyp)1.0)*(numtyp)2025.0); @@ -177,7 +177,7 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info_e(dev_nbor,stride,t_per_atom,ii,offset,i,numj, n_stride,nbor_end,nbor); - + numtyp4 ix; fetch4(ix,i,pos_tex); int itype=ix.w; @@ -223,7 +223,7 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, sigma = sig_eps[mtype].x; epsilon = sig_eps[mtype].y*factor_lj; - numtyp aTs[9]; + numtyp aTs[9]; numtyp4 scorrect; numtyp half_sigma=sigma*(numtyp)0.5; scorrect.x = ishape.x+half_sigma; @@ -260,7 +260,7 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, Ua = (ishape.x+stemp)*(ishape.y+stemp)*(ishape.z+stemp)*h12p3/(numtyp)8.0; Ua = ((numtyp)1.0+(numtyp)3.0*tprod)*ilshape/Ua; Ua = epsilon*Ua*sigmap3*solv_f_a; - + stemp = h12/cr60; Ur = (ishape.x+stemp)*(ishape.y+stemp)*(ishape.z+stemp)*h12p3/ (numtyp)60.0; @@ -290,7 +290,7 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, numtyp hsec = ucl_recip(h12+(numtyp)3.0*sec); numtyp dspu = ucl_recip(h12)-hsec+stemp; numtyp pbsu = (numtyp)3.0*sigma*hsec; - + stemp = ucl_recip(ishape.x*cr60+h12)+ ucl_recip(ishape.y*cr60+h12)+ ucl_recip(ishape.z*cr60+h12)+ @@ -298,7 +298,7 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, hsec = ucl_recip(h12+b_alpha*sec); numtyp dspr = (numtyp)7.0/h12-hsec+stemp; numtyp pbsr = b_alpha*sigma*hsec; - + #pragma unroll for (int i=0; i<3; i++) { numtyp u[3]; @@ -334,7 +334,7 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, } } - + // torque on i numtyp fwae[3]; gpu_row_times3(fourw,aTe,fwae); @@ -384,33 +384,33 @@ __kernel void k_resquared_ellipsoid_sphere(const __global numtyp4 *restrict x_, } __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict q, + const __global numtyp4 *restrict q, const __global numtyp4 *restrict shape, const __global numtyp4 *restrict well, const __global numtyp *restrict splj, const __global numtyp2 *restrict sig_eps, - const int ntypes, + const int ntypes, const __global int *dev_nbor, - const int stride, + const int stride, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, __global int *restrict err_flag, const int eflag, const int vflag, - const int start, const int inum, + const int start, const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); ii+=start; __local numtyp sp_lj[4]; - sp_lj[0]=splj[0]; - sp_lj[1]=splj[1]; - sp_lj[2]=splj[2]; + sp_lj[0]=splj[0]; + sp_lj[1]=splj[1]; + sp_lj[2]=splj[2]; sp_lj[3]=splj[3]; - + __local numtyp b_alpha, cr60, solv_f_a, solv_f_r; b_alpha=(numtyp)45.0/(numtyp)56.0; - cr60=ucl_cbrt((numtyp)60.0); + cr60=ucl_cbrt((numtyp)60.0); solv_f_a = (numtyp)3.0/((numtyp)16.0*ucl_atan((numtyp)1.0)*-(numtyp)36.0); solv_f_r = (numtyp)3.0/((numtyp)16.0*ucl_atan((numtyp)1.0)*(numtyp)2025.0); @@ -429,7 +429,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, __local int n_stride; nbor_info_e(dev_nbor,stride,t_per_atom,ii,offset,j,numj, n_stride,nbor_end,nbor); - + numtyp4 jx; fetch4(jx,j,pos_tex); int jtype=jx.w; @@ -445,7 +445,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, numtyp a[9]; // Rotation matrix (lab->body) numtyp aTe[9]; // A'*E numtyp4 ishape; - + ishape=shape[itype]; gpu_quat_to_mat_trans(q,i,a); gpu_transpose_times_diag3(a,well[itype],aTe); @@ -467,7 +467,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, sigma = sig_eps[mtype].x; epsilon = sig_eps[mtype].y*factor_lj; - numtyp aTs[9]; + numtyp aTs[9]; numtyp4 scorrect; numtyp half_sigma=sigma * (numtyp)0.5; scorrect.x = ishape.x+half_sigma; @@ -477,7 +477,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, scorrect.y = scorrect.y * scorrect.y * (numtyp)0.5; scorrect.z = scorrect.z * scorrect.z * (numtyp)0.5; gpu_transpose_times_diag3(a,scorrect,aTs); - + // energy numtyp gamma[9], s[3]; @@ -505,7 +505,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, numtyp ilshape=ishape.x*ishape.y*ishape.z; Ua = ((numtyp)1.0+(numtyp)3.0*tprod)*ilshape/Ua; Ua = epsilon*Ua*sigmap3*solv_f_a; - + stemp = h12/cr60; Ur = (ishape.x+stemp)*(ishape.y+stemp)*(ishape.z+stemp)*h12p3/ (numtyp)60.0; @@ -535,7 +535,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, numtyp hsec = ucl_recip(h12+(numtyp)3.0*sec); numtyp dspu = ucl_recip(h12)-hsec+stemp; numtyp pbsu = (numtyp)3.0*sigma*hsec; - + stemp = ucl_recip(ishape.x*cr60+h12)+ ucl_recip(ishape.y*cr60+h12)+ ucl_recip(ishape.z*cr60+h12)+ @@ -543,7 +543,7 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, hsec = ucl_recip(h12+b_alpha*sec); numtyp dspr = (numtyp)7.0/h12-hsec+stemp; numtyp pbsr = b_alpha*sigma*hsec; - + #pragma unroll for (int i=0; i<3; i++) { numtyp u[3]; @@ -584,15 +584,15 @@ __kernel void k_resquared_sphere_ellipsoid(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_resquared_lj(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict lj1, - const __global numtyp4 *restrict lj3, - const int lj_types, - const __global numtyp *restrict gum, - const int stride, - const __global int *dev_ij, +__kernel void k_resquared_lj(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1, + const __global numtyp4 *restrict lj3, + const int lj_types, + const __global numtyp *restrict gum, + const int stride, + const __global int *dev_ij, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, __global int *restrict err_flag, const int eflag, const int vflag, const int start, const int inum, const int t_per_atom) { @@ -601,10 +601,10 @@ __kernel void k_resquared_lj(const __global numtyp4 *restrict x_, ii+=start; __local numtyp sp_lj[4]; - sp_lj[0]=gum[0]; - sp_lj[1]=gum[1]; - sp_lj[2]=gum[2]; - sp_lj[3]=gum[3]; + sp_lj[0]=gum[0]; + sp_lj[1]=gum[1]; + sp_lj[2]=gum[2]; + sp_lj[3]=gum[3]; acctyp energy=(acctyp)0; acctyp4 f; @@ -614,20 +614,20 @@ __kernel void k_resquared_lj(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=r6inv*(lj3[ii].x*r6inv-lj3[ii].y); - energy+=factor_lj*(e-lj3[ii].z); + energy+=factor_lj*(e-lj3[ii].z); } if (vflag>0) { virial[0] += delx*delx*force; @@ -671,33 +671,33 @@ __kernel void k_resquared_lj(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_resquared_lj_fast(const __global numtyp4 *restrict x_, - const __global numtyp4 *restrict lj1_in, - const __global numtyp4 *restrict lj3_in, - const __global numtyp *restrict gum, +__kernel void k_resquared_lj_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1_in, + const __global numtyp4 *restrict lj3_in, + const __global numtyp *restrict gum, const int stride, const __global int *dev_ij, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, __global int *restrict err_flag, const int eflag, const int vflag, - const int start, const int inum, + const int start, const int inum, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); ii+=start; - __local numtyp sp_lj[4]; + __local numtyp sp_lj[4]; __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; if (tid<4) - sp_lj[tid]=gum[tid]; + sp_lj[tid]=gum[tid]; if (tid0) lj3[tid]=lj3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; @@ -706,9 +706,9 @@ __kernel void k_resquared_lj_fast(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + __syncthreads(); - + if (ii0) { numtyp e=r6inv*(lj3[mtype].x*r6inv-lj3[mtype].y); - energy+=factor_lj*(e-lj3[mtype].z); + energy+=factor_lj*(e-lj3[mtype].z); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_soft.cpp b/lib/gpu/lal_soft.cpp index c206a997a9..727b112ea5 100644 --- a/lib/gpu/lal_soft.cpp +++ b/lib/gpu/lal_soft.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,10 +33,10 @@ SoftT::Soft() : BaseAtomic(), _allocated(false) { } template -SoftT::~Soft() { +SoftT::~Soft() { clear(); } - + template int SoftT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -74,7 +74,7 @@ int SoftT::init(const int ntypes, double **host_cutsq, coeff.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_prefactor, - host_cut,host_cutsq); + host_cut,host_cutsq); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -89,16 +89,16 @@ int SoftT::init(const int ntypes, double **host_cutsq, template void SoftT::reinit(const int ntypes, double **host_cutsq, double **host_prefactor, double **host_cut) { - + // Allocate a host write buffer for data initialization UCL_H_Vec host_write(_lj_types*_lj_types*32,*(this->ucl_device), UCL_WRITE_ONLY); - + for (int i=0; i<_lj_types*_lj_types; i++) host_write[i]=0.0; - + this->atom->type_pack4(ntypes,_lj_types,coeff,host_write,host_prefactor, - host_cut,host_cutsq); + host_cut,host_cutsq); } template @@ -134,7 +134,7 @@ void SoftT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); diff --git a/lib/gpu/lal_soft.cu b/lib/gpu/lal_soft.cu index b7c32b6879..831b986725 100644 --- a/lib/gpu/lal_soft.cu +++ b/lib/gpu/lal_soft.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -26,7 +26,7 @@ texture pos_tex; #define MY_PI (acctyp)3.14159265358979323846 -__kernel void k_soft(const __global numtyp4 *restrict x_, +__kernel void k_soft(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff, const int lj_types, const __global numtyp *restrict sp_lj_in, @@ -51,20 +51,20 @@ __kernel void k_soft(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii (numtyp)0.0) force = factor_lj * coeff[mtype].x * sin(arg) * MY_PI/coeff[mtype].y*ucl_recip(r); else force = (numtyp)0.0; - + f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; if (eflag>0) { numtyp e=coeff[mtype].x * ((numtyp)1.0+cos(arg)); - energy+=factor_lj*e; + energy+=factor_lj*e; } if (vflag>0) { virial[0] += delx*delx*force; @@ -111,7 +111,7 @@ __kernel void k_soft(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_soft_fast(const __global numtyp4 *restrict x_, +__kernel void k_soft_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff_in, const __global numtyp *restrict sp_lj_in, const __global int *dev_nbor, @@ -122,7 +122,7 @@ __kernel void k_soft_fast(const __global numtyp4 *restrict x_, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -130,7 +130,7 @@ __kernel void k_soft_fast(const __global numtyp4 *restrict x_, if (tid (numtyp)0.0) force = factor_lj * coeff[mtype].x * sin(arg) * MY_PI/coeff[mtype].y*ucl_recip(r); else force = (numtyp)0.0; - + f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; if (eflag>0) { numtyp e=coeff[mtype].x * ((numtyp)1.0+cos(arg)); - energy+=factor_lj*e; + energy+=factor_lj*e; } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_soft.h b/lib/gpu/lal_soft.h index 7fa529c4f5..e72673248c 100644 --- a/lib/gpu/lal_soft.h +++ b/lib/gpu/lal_soft.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Soft : public BaseAtomic { public: Soft(); - ~Soft(); + ~Soft(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -40,14 +40,14 @@ class Soft : public BaseAtomic { int init(const int ntypes, double **host_cutsq, double **host_prefactor, double **host_cut, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Send updated coeffs from host to device (to be compatible with fix adapt) void reinit(const int ntypes, double **host_cutsq, double **host_prefactor, double **host_cut); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -68,7 +68,7 @@ class Soft : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kßernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_soft_ext.cpp b/lib/gpu/lal_soft_ext.cpp index 9591923965..d3b3fa2598 100644 --- a/lib/gpu/lal_soft_ext.cpp +++ b/lib/gpu/lal_soft_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -77,7 +77,7 @@ int soft_gpu_init(const int ntypes, double **cutsq, double **host_prefactor, cell_size, gpu_split, screen); SLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -96,16 +96,16 @@ void soft_gpu_reinit(const int ntypes, double **cutsq, double **host_prefactor, int world_me=SLMF.device->world_me(); int gpu_rank=SLMF.device->gpu_rank(); int procs_per_gpu=SLMF.device->procs_per_gpu(); - + if (world_me==0) SLMF.reinit(ntypes, cutsq, host_prefactor, host_cut); - + SLMF.device->world_barrier(); - + for (int i=0; igpu_barrier(); } } @@ -124,8 +124,8 @@ int ** soft_gpu_compute_n(const int ago, const int inum_full, return SLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void soft_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_sw.cpp b/lib/gpu/lal_sw.cpp index 1f68616b0e..3492d7030e 100644 --- a/lib/gpu/lal_sw.cpp +++ b/lib/gpu/lal_sw.cpp @@ -33,10 +33,10 @@ SWT::SW() : BaseThree(), _allocated(false) { } template -SWT::~SW() { +SWT::~SW() { clear(); } - + template int SWT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -45,7 +45,7 @@ int SWT::bytes_per_atom(const int max_nbors) const { template int SWT::init(const int ntypes, const int nlocal, const int nall, const int max_nbors, const double cell_size, const double gpu_split, FILE *_screen, - int* host_map, const int nelements, int*** host_elem2param, const int nparams, + int* host_map, const int nelements, int*** host_elem2param, const int nparams, const double* epsilon, const double* sigma, const double* lambda, const double* gamma, const double* costheta, const double* biga, @@ -76,41 +76,41 @@ int SWT::init(const int ntypes, const int nlocal, const int nall, const int max_ UCL_WRITE_ONLY); for (int i=0; iucl_device),UCL_READ_ONLY); - + for (int i=0; i(epsilon[i]); dview[i].y=static_cast(sigma[i]); dview[i].z=static_cast(lambda[i]); dview[i].w=static_cast(gamma[i]); } - + ucl_copy(sw1,dview,false); sw1_tex.get_texture(*(this->pair_program),"sw1_tex"); sw1_tex.bind_float(sw1,4); sw2.alloc(nparams,*(this->ucl_device),UCL_READ_ONLY); - + for (int i=0; i(biga[i]); dview[i].y=static_cast(bigb[i]); dview[i].z=static_cast(powerp[i]); dview[i].w=static_cast(powerq[i]); } - + ucl_copy(sw2,dview,false); sw2_tex.get_texture(*(this->pair_program),"sw2_tex"); sw2_tex.bind_float(sw2,4); sw3.alloc(nparams,*(this->ucl_device),UCL_READ_ONLY); - + for (int i=0; i(costheta[i]); dview[i].w=(numtyp)0; } - + ucl_copy(sw3,dview,false); sw3_tex.get_texture(*(this->pair_program),"sw3_tex"); sw3_tex.bind_float(sw3,4); @@ -192,31 +192,32 @@ void SWT::loop(const bool _eflag, const bool _vflag, const int evatom) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); - // this->_nbor_data == nbor->dev_packed for gpu_nbor == 0 and tpa == 1 - // this->_nbor_data == nbor->dev_nbor for gpu_nbor == 1 + // this->_nbor_data == nbor->dev_packed for gpu_nbor == 0 and tpa > 1 + // this->_nbor_data == nbor->dev_nbor for gpu_nbor == 1 or tpa == 1 int ainum=this->ans->inum(); int nbor_pitch=this->nbor->nbor_pitch(); this->time_pair.start(); + this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &sw1, &sw2, &sw3, + this->k_pair.run(&this->atom->x, &sw1, &sw2, &sw3, &map, &elem2param, &_nelements, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, - &eflag, &vflag, &ainum, &nbor_pitch, + &this->ans->force, &this->ans->engv, + &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); BX=this->block_size(); GX=static_cast(ceil(static_cast(this->ans->inum())/ - (BX/(KTHREADS*JTHREADS)))); + (BX/(KTHREADS*JTHREADS)))); this->k_three_center.set_size(GX,BX); - this->k_three_center.run(&this->atom->x, &sw1, &sw2, &sw3, + this->k_three_center.run(&this->atom->x, &sw1, &sw2, &sw3, &map, &elem2param, &_nelements, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &evatom); Answer *end_ans; @@ -227,21 +228,24 @@ void SWT::loop(const bool _eflag, const bool _vflag, const int evatom) { #endif if (evatom!=0) { this->k_three_end_vatom.set_size(GX,BX); - this->k_three_end_vatom.run(&this->atom->x, &sw1, &sw2, &sw3, - &map, &elem2param, &_nelements, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_three_end_vatom.run(&this->atom->x, &sw1, &sw2, &sw3, + &map, &elem2param, &_nelements, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } else { this->k_three_end.set_size(GX,BX); - this->k_three_end.run(&this->atom->x, &sw1, &sw2, &sw3, - &map, &elem2param, &_nelements, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + this->k_three_end.run(&this->atom->x, &sw1, &sw2, &sw3, + &map, &elem2param, &_nelements, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, + &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } + this->time_pair.stop(); } diff --git a/lib/gpu/lal_sw.cu b/lib/gpu/lal_sw.cu index 1e358fb6f7..46330c59e4 100644 --- a/lib/gpu/lal_sw.cu +++ b/lib/gpu/lal_sw.cu @@ -138,16 +138,16 @@ __kernel void k_sw(const __global numtyp4 *restrict x_, const __global int *restrict map, const __global int *restrict elem2param, const int nelements, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { __local int n_stride; int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -166,9 +166,9 @@ __kernel void k_sw(const __global numtyp4 *restrict x_, numtyp4 ix; fetch4(ix,i,pos_tex); //x_[i]; int itype=ix.w; itype=map[itype]; - + for ( ; nbor0) - energy+=(pre_sw_c5*rp - pre_sw_c6*rq) * expsrainv; + if (eflag>0) + energy+=(pre_sw_c5*rp - pre_sw_c6*rq) * expsrainv; if (vflag>0) { virial[0] += delx*delx*force; @@ -329,29 +328,28 @@ __kernel void k_sw(const __global numtyp4 *restrict x_, fjz = delr1z*(frad1+csfac1)-delr2z*facang12; \ } -__kernel void k_sw_three_center(const __global numtyp4 *restrict x_, +__kernel void k_sw_three_center(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict sw1, const __global numtyp4 *restrict sw2, const __global numtyp4 *restrict sw3, const __global int *restrict map, const __global int *restrict elem2param, const int nelements, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const int t_per_atom, const int evatom) { __local int tpa_sq, n_stride; tpa_sq=fast_mul(t_per_atom,t_per_atom); - numtyp sw_epsilon, sw_sigma, sw_lambda, sw_gamma; numtyp sw_sigma_gamma_ij, sw_cut_ij, sw_sigma_gamma_ik, sw_cut_ik; numtyp sw_costheta_ijk, sw_lambda_epsilon_ijk, sw_lambda_epsilon2_ijk; int tid, ii, offset; atom_info(tpa_sq,ii,tid,offset); - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -360,7 +358,7 @@ __kernel void k_sw_three_center(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii sw3_ijparam.y) continue; numtyp4 sw1_ijparam; fetch4(sw1_ijparam,ijparam,sw1_tex); - sw_sigma=sw1_ijparam.y; - sw_gamma=sw1_ijparam.w; sw_sigma_gamma_ij=sw1_ijparam.y*sw1_ijparam.w; //sw_sigma*sw_gamma; sw_cut_ij=sw3_ijparam.x; @@ -419,15 +415,11 @@ __kernel void k_sw_three_center(const __global numtyp4 *restrict x_, numtyp rsq2 = delr2x*delr2x + delr2y*delr2y + delr2z*delr2z; if (rsq2 < sw3_ikparam.y) { // sw_cutsq=sw3[ikparam].y; numtyp4 sw1_ikparam; fetch4(sw1_ikparam,ikparam,sw1_tex); - sw_sigma=sw1_ikparam.y; - sw_gamma=sw1_ikparam.w; sw_sigma_gamma_ik=sw1_ikparam.y*sw1_ikparam.w; //sw_sigma*sw_gamma; sw_cut_ik=sw3_ikparam.x; int ijkparam=elem2param[itype*nelements*nelements+jtype*nelements+ktype]; numtyp4 sw1_ijkparam; fetch4(sw1_ijkparam,ijkparam,sw1_tex); - sw_epsilon=sw1_ijkparam.x; - sw_lambda=sw1_ijkparam.z; sw_lambda_epsilon_ijk=sw1_ijkparam.x*sw1_ijkparam.z; //sw_lambda*sw_epsilon; sw_lambda_epsilon2_ijk=(numtyp)2.0*sw_lambda_epsilon_ijk; numtyp4 sw3_ijkparam; fetch4(sw3_ijkparam,ijkparam,sw3_tex); @@ -439,7 +431,7 @@ __kernel void k_sw_three_center(const __global numtyp4 *restrict x_, f.x -= fjx + fkx; f.y -= fjy + fky; f.z -= fjz + fkz; - } + } } } // for nbor @@ -458,29 +450,29 @@ __kernel void k_sw_three_center(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_sw_three_end(const __global numtyp4 *restrict x_, +__kernel void k_sw_three_end(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict sw1, const __global numtyp4 *restrict sw2, const __global numtyp4 *restrict sw3, const __global int *restrict map, const __global int *restrict elem2param, const int nelements, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const int t_per_atom) { + const __global int * dev_nbor, + const __global int * dev_packed, + const __global int * dev_acc, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const int t_per_atom, const int gpu_nbor) { __local int tpa_sq, n_stride; tpa_sq=fast_mul(t_per_atom,t_per_atom); - numtyp sw_epsilon, sw_sigma, sw_lambda, sw_gamma; numtyp sw_sigma_gamma_ij, sw_cut_ij, sw_sigma_gamma_ik, sw_cut_ik; numtyp sw_costheta_ijk, sw_lambda_epsilon_ijk, sw_lambda_epsilon2_ijk; int tid, ii, offset; atom_info(tpa_sq,ii,tid,offset); - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -489,7 +481,7 @@ __kernel void k_sw_three_end(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii sw3_ijparam.y) continue; numtyp4 sw1_ijparam; fetch4(sw1_ijparam,ijparam,sw1_tex); - sw_sigma=sw1_ijparam.y; - sw_gamma=sw1_ijparam.w; sw_sigma_gamma_ij=sw1_ijparam.y*sw1_ijparam.w; //sw_sigma*sw_gamma; sw_cut_ij=sw3_ijparam.x; - int nbor_k=j+nbor_pitch; - int numk=dev_nbor[nbor_k]; + int nbor_k,numk; if (dev_nbor==dev_packed) { + if (gpu_nbor) nbor_k=j+nbor_pitch; + else nbor_k=dev_acc[j]+nbor_pitch; + numk=dev_nbor[nbor_k]; nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1); k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1)); nbor_k+=offset_k; } else { + nbor_k=dev_acc[j]+nbor_pitch; + numk=dev_nbor[nbor_k]; nbor_k+=nbor_pitch; nbor_k=dev_nbor[nbor_k]; k_end=nbor_k+numk; @@ -559,15 +553,11 @@ __kernel void k_sw_three_end(const __global numtyp4 *restrict x_, if (rsq2 < sw3_ikparam.y) { numtyp4 sw1_ikparam; fetch4(sw1_ikparam,ikparam,sw1_tex); - sw_sigma=sw1_ikparam.y; - sw_gamma=sw1_ikparam.w; sw_sigma_gamma_ik=sw1_ikparam.y*sw1_ikparam.w; //sw_sigma*sw_gamma; sw_cut_ik=sw3_ikparam.x; int ijkparam=elem2param[jtype*nelements*nelements+itype*nelements+ktype]; //jik numtyp4 sw1_ijkparam; fetch4(sw1_ijkparam,ijkparam,sw1_tex); - sw_epsilon=sw1_ijkparam.x; - sw_lambda=sw1_ijkparam.z; sw_lambda_epsilon_ijk=sw1_ijkparam.x*sw1_ijkparam.z; //sw_lambda*sw_epsilon; sw_lambda_epsilon2_ijk=(numtyp)2.0*sw_lambda_epsilon_ijk; numtyp4 sw3_ijkparam; fetch4(sw3_ijkparam,ijkparam,sw3_tex); @@ -605,22 +595,22 @@ __kernel void k_sw_three_end_vatom(const __global numtyp4 *restrict x_, const __global int *restrict map, const __global int *restrict elem2param, const int nelements, - const __global int * dev_nbor, - const __global int * dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, - const int t_per_atom) { + const __global int * dev_nbor, + const __global int * dev_packed, + const __global int * dev_acc, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, + const int t_per_atom, const int gpu_nbor) { __local int tpa_sq, n_stride; tpa_sq=fast_mul(t_per_atom,t_per_atom); - numtyp sw_epsilon, sw_sigma, sw_lambda, sw_gamma; numtyp sw_sigma_gamma_ij, sw_cut_ij, sw_sigma_gamma_ik, sw_cut_ik; numtyp sw_costheta_ijk, sw_lambda_epsilon_ijk, sw_lambda_epsilon2_ijk; int tid, ii, offset; atom_info(tpa_sq,ii,tid,offset); - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -629,7 +619,7 @@ __kernel void k_sw_three_end_vatom(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (ii sw3_ijparam.y) continue; numtyp4 sw1_ijparam; fetch4(sw1_ijparam,ijparam,sw1_tex); - sw_sigma=sw1_ijparam.y; - sw_gamma=sw1_ijparam.w; sw_sigma_gamma_ij=sw1_ijparam.y*sw1_ijparam.w; //sw_sigma*sw_gamma; sw_cut_ij=sw3_ijparam.x; - - int nbor_k=j+nbor_pitch; - int numk=dev_nbor[nbor_k]; + + int nbor_k,numk; if (dev_nbor==dev_packed) { + if (gpu_nbor) nbor_k=j+nbor_pitch; + else nbor_k=dev_acc[j]+nbor_pitch; + numk=dev_nbor[nbor_k]; nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1); k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1)); nbor_k+=offset_k; } else { + nbor_k=dev_acc[j]+nbor_pitch; + numk=dev_nbor[nbor_k]; nbor_k+=nbor_pitch; nbor_k=dev_nbor[nbor_k]; k_end=nbor_k+numk; @@ -699,15 +691,11 @@ __kernel void k_sw_three_end_vatom(const __global numtyp4 *restrict x_, if (rsq2 < sw3_ikparam.y) { numtyp4 sw1_ikparam; fetch4(sw1_ikparam,ikparam,sw1_tex); - sw_sigma=sw1_ikparam.y; - sw_gamma=sw1_ikparam.w; sw_sigma_gamma_ik=sw1_ikparam.y*sw1_ikparam.w; //sw_sigma*sw_gamma; sw_cut_ik=sw3_ikparam.x; int ijkparam=elem2param[jtype*nelements*nelements+itype*nelements+ktype]; // jik numtyp4 sw1_ijkparam; fetch4(sw1_ijkparam,ijkparam,sw1_tex); - sw_epsilon=sw1_ijkparam.x; - sw_lambda=sw1_ijkparam.z; sw_lambda_epsilon_ijk=sw1_ijkparam.x*sw1_ijkparam.z; //sw_lambda*sw_epsilon; sw_lambda_epsilon2_ijk=(numtyp)2.0*sw_lambda_epsilon_ijk; numtyp4 sw3_ijkparam; fetch4(sw3_ijkparam,ijkparam,sw3_tex); diff --git a/lib/gpu/lal_sw.h b/lib/gpu/lal_sw.h index 66b36a90b0..3546f02eb7 100644 --- a/lib/gpu/lal_sw.h +++ b/lib/gpu/lal_sw.h @@ -24,28 +24,28 @@ template class SW : public BaseThree { public: SW(); - ~SW(); + ~SW(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, const int nlocal, const int nall, const int max_nbors, + int init(const int ntypes, const int nlocal, const int nall, const int max_nbors, const double cell_size, const double gpu_split, FILE *screen, - int* host_map, const int nelements, int*** host_elem2param, const int nparams, + int* host_map, const int nelements, int*** host_elem2param, const int nparams, const double* epsilon, const double* sigma, const double* lambda, const double* gamma, const double* costheta, const double* biga, const double* bigb, const double* powerp, const double* powerq, const double* cut, const double* cutsq); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -61,7 +61,7 @@ class SW : public BaseThree { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; /// sw1.x = epsilon, sw1.y = sigma, sw1.z = lambda, sw1.w = gamma diff --git a/lib/gpu/lal_sw_ext.cpp b/lib/gpu/lal_sw_ext.cpp index e2d1b5e4dd..4959650c90 100644 --- a/lib/gpu/lal_sw_ext.cpp +++ b/lib/gpu/lal_sw_ext.cpp @@ -27,14 +27,14 @@ static SW SWMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int sw_gpu_init(const int ntypes, const int inum, const int nall, const int max_nbors, +int sw_gpu_init(const int ntypes, const int inum, const int nall, const int max_nbors, const double cell_size, int &gpu_mode, FILE *screen, int* host_map, const int nelements, int*** host_elem2param, const int nparams, const double* sw_epsilon, const double* sw_sigma, const double* sw_lambda, const double* sw_gamma, const double* sw_costheta, const double* sw_biga, const double* sw_bigb, const double* sw_powerp, - const double* sw_powerq, const double* sw_cut, + const double* sw_powerq, const double* sw_cut, const double* sw_cutsq) { SWMF.clear(); gpu_mode=SWMF.device->gpu_mode(); @@ -46,7 +46,7 @@ int sw_gpu_init(const int ntypes, const int inum, const int nall, const int max_ int procs_per_gpu=SWMF.device->procs_per_gpu(); // disable host/device split for now - if (gpu_split != 1.0) + if (gpu_split != 1.0) return -8; SWMF.device->init_message(screen,"sw/gpu",first_gpu,last_gpu); @@ -64,7 +64,7 @@ int sw_gpu_init(const int ntypes, const int inum, const int nall, const int max_ if (world_me==0) init_ok=SWMF.init(ntypes, inum, nall, 300, cell_size, gpu_split, screen, host_map, nelements, host_elem2param, nparams, - sw_epsilon, sw_sigma, sw_lambda, sw_gamma, sw_costheta, + sw_epsilon, sw_sigma, sw_lambda, sw_gamma, sw_costheta, sw_biga, sw_bigb, sw_powerp, sw_powerq, sw_cut, sw_cutsq); SWMF.device->world_barrier(); @@ -83,12 +83,12 @@ int sw_gpu_init(const int ntypes, const int inum, const int nall, const int max_ if (gpu_rank==i && world_me!=0) init_ok=SWMF.init(ntypes, inum, nall, 300, cell_size, gpu_split, screen, host_map, nelements, host_elem2param, nparams, - sw_epsilon, sw_sigma, sw_lambda, sw_gamma, sw_costheta, - sw_biga, sw_bigb, sw_powerp, sw_powerq, sw_cut, + sw_epsilon, sw_sigma, sw_lambda, sw_gamma, sw_costheta, + sw_biga, sw_bigb, sw_powerp, sw_powerq, sw_cut, sw_cutsq); SWMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -113,12 +113,12 @@ int ** sw_gpu_compute_n(const int ago, const int inum_full, return SWMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - -void sw_gpu_compute(const int ago, const int nlocal, const int nall, - const int nlist, double **host_x, int *host_type, - int *ilist, int *numj, int **firstneigh, const bool eflag, - const bool vflag, const bool eatom, const bool vatom, +} + +void sw_gpu_compute(const int ago, const int nlocal, const int nall, + const int nlist, double **host_x, int *host_type, + int *ilist, int *numj, int **firstneigh, const bool eflag, + const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success) { SWMF.compute(ago,nlocal,nall,nlist,host_x,host_type,ilist,numj, firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success); diff --git a/lib/gpu/lal_table.cpp b/lib/gpu/lal_table.cpp index c99bf85815..0de59c84b2 100644 --- a/lib/gpu/lal_table.cpp +++ b/lib/gpu/lal_table.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -34,35 +34,35 @@ using namespace LAMMPS_AL; extern Device device; template -TableT::Table() : BaseAtomic(), +TableT::Table() : BaseAtomic(), _allocated(false), _compiled_styles(false) { } template -TableT::~Table() { +TableT::~Table() { clear(); } - + template int TableT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int TableT::init(const int ntypes, +int TableT::init(const int ntypes, double **host_cutsq, double ***host_table_coeffs, double **host_table_data, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, - const double gpu_split, FILE *_screen, + const double gpu_split, FILE *_screen, int tabstyle, int ntables, int tablength) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size, gpu_split,_screen,table,"k_table"); if (success!=0) return success; - + k_pair_linear.set_function(*(this->pair_program),"k_table_linear"); k_pair_linear_fast.set_function(*(this->pair_program),"k_table_linear_fast"); k_pair_spline.set_function(*(this->pair_program),"k_table_spline"); @@ -80,38 +80,38 @@ int TableT::init(const int ntypes, shared_types=true; } _lj_types=lj_types; - + _tabstyle = tabstyle; _ntables = ntables; if (tabstyle != BITMAP) _tablength = tablength; else _tablength = 1 << tablength; - + // Allocate a host write buffer for data initialization UCL_H_Vec host_write_int(lj_types*lj_types,*(this->ucl_device), UCL_WRITE_ONLY); - for (int i=0; iucl_device),UCL_READ_ONLY); nshiftbits.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); nmask.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); for (int ix=1; ix host_write(lj_types*lj_types,*(this->ucl_device), UCL_WRITE_ONLY); @@ -151,7 +151,7 @@ int TableT::init(const int ntypes, host_write2[n*_tablength+k].z = host_table_data[n][6*k+2]; // f host_write2[n*_tablength+k].w = (numtyp)0; } - } + } } ucl_copy(coeff3,host_write2,false); @@ -166,21 +166,21 @@ int TableT::init(const int ntypes, for (int n=0; n<_ntables; n++) { if (tabstyle == LINEAR) { for (int k=0; k<_tablength-1; k++) { - host_write2[n*_tablength+k].x = (numtyp)0; + host_write2[n*_tablength+k].x = (numtyp)0; host_write2[n*_tablength+k].y = host_table_data[n][6*k+3]; // de host_write2[n*_tablength+k].z = host_table_data[n][6*k+4]; // df host_write2[n*_tablength+k].w = (numtyp)0; } } else if (tabstyle == SPLINE) { for (int k=0; k<_tablength; k++) { - host_write2[n*_tablength+k].x = (numtyp)0; + host_write2[n*_tablength+k].x = (numtyp)0; host_write2[n*_tablength+k].y = host_table_data[n][6*k+3]; // e2 host_write2[n*_tablength+k].z = host_table_data[n][6*k+4]; // f2 host_write2[n*_tablength+k].w = (numtyp)0; } } else if (tabstyle == BITMAP) { for (int k=0; k<_tablength; k++) { - host_write2[n*_tablength+k].x = (numtyp)0; + host_write2[n*_tablength+k].x = (numtyp)0; host_write2[n*_tablength+k].y = host_table_data[n][6*k+3]; // de host_write2[n*_tablength+k].z = host_table_data[n][6*k+4]; // df host_write2[n*_tablength+k].w = host_table_data[n][6*k+5]; // drsq @@ -188,12 +188,12 @@ int TableT::init(const int ntypes, } } ucl_copy(coeff4,host_write2,false); - + UCL_H_Vec host_rsq(lj_types*lj_types,*(this->ucl_device), UCL_WRITE_ONLY); cutsq.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack1(ntypes,lj_types,cutsq,host_rsq,host_cutsq); - + UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); dview.view(host_special_lj,4,*(this->ucl_device)); @@ -220,7 +220,7 @@ void TableT::clear() { coeff3.clear(); coeff4.clear(); sp_lj.clear(); - + if (_compiled_styles) { k_pair_linear_fast.clear(); k_pair_linear.clear(); @@ -230,7 +230,7 @@ void TableT::clear() { k_pair_bitmap.clear(); _compiled_styles=false; } - + this->clear_atomic(); } @@ -256,7 +256,7 @@ void TableT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -269,67 +269,67 @@ void TableT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &tabindex, &coeff2, &coeff3, &coeff4, &cutsq, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, - &this->ans->engv, &eflag, &vflag, &ainum, + &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); } else if (_tabstyle == LINEAR) { this->k_pair_linear_fast.set_size(GX,BX); - this->k_pair_linear_fast.run(&this->atom->x, &tabindex, &coeff2, + this->k_pair_linear_fast.run(&this->atom->x, &tabindex, &coeff2, &coeff3, &coeff4, &cutsq, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, - &eflag, &vflag, &ainum, &nbor_pitch, + &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); } else if (_tabstyle == SPLINE) { this->k_pair_spline_fast.set_size(GX,BX); - this->k_pair_spline_fast.run(&this->atom->x, &tabindex, &coeff2, + this->k_pair_spline_fast.run(&this->atom->x, &tabindex, &coeff2, &coeff3, &coeff4, &cutsq, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, - &eflag, &vflag, &ainum, &nbor_pitch, + &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); } else if (_tabstyle == BITMAP) { this->k_pair_bitmap_fast.set_size(GX,BX); this->k_pair_bitmap_fast.run(&this->atom->x, &tabindex, &nshiftbits, &nmask, &coeff2, &coeff3, &coeff4, &cutsq, - &sp_lj, &this->nbor->dev_nbor, + &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, - &ainum, &nbor_pitch, + &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); - } + } } else { if (_tabstyle == LOOKUP) { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &tabindex, &coeff2, &coeff3, - &coeff4, &_lj_types, &cutsq, &sp_lj, + this->k_pair.run(&this->atom->x, &tabindex, &coeff2, &coeff3, + &coeff4, &_lj_types, &cutsq, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &this->ans->force, &this->ans->engv, &eflag, + &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); } else if (_tabstyle == LINEAR) { this->k_pair_linear.set_size(GX,BX); this->k_pair_linear.run(&this->atom->x, &tabindex, &coeff2, &coeff3, - &coeff4, &_lj_types, &cutsq, &sp_lj, + &coeff4, &_lj_types, &cutsq, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); } else if (_tabstyle == SPLINE) { this->k_pair_spline.set_size(GX,BX); this->k_pair_spline.run(&this->atom->x, &tabindex, &coeff2, &coeff3, - &coeff4, &_lj_types, &cutsq, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &coeff4, &_lj_types, &cutsq, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_tablength); } else if (_tabstyle == BITMAP) { this->k_pair_bitmap.set_size(GX,BX); - this->k_pair_bitmap.run(&this->atom->x, &tabindex, &nshiftbits, + this->k_pair_bitmap.run(&this->atom->x, &tabindex, &nshiftbits, &nmask, &coeff2, &coeff3, &coeff4, &_lj_types, &cutsq, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom, + &nbor_pitch, &this->_threads_per_atom, &_tablength); } } diff --git a/lib/gpu/lal_table.cu b/lib/gpu/lal_table.cu index 1033b7fbb8..971b56d96e 100644 --- a/lib/gpu/lal_table.cu +++ b/lib/gpu/lal_table.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -39,39 +39,39 @@ typedef union { /// ---------------- LOOKUP ------------------------------------------------- -__kernel void k_table(const __global numtyp4 *restrict x_, +__kernel void k_table(const __global numtyp4 *restrict x_, const __global int *restrict tabindex, - const __global numtyp4 *restrict coeff2, + const __global numtyp4 *restrict coeff2, const __global numtyp4 *restrict coeff3, const __global numtyp4 *restrict coeff4, const int lj_types, const __global numtyp *restrict cutsq, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, const int t_per_atom, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp sp_lj[4]; sp_lj[0]=sp_lj_in[0]; sp_lj[1]=sp_lj_in[1]; sp_lj[2]=sp_lj_in[2]; sp_lj[3]=sp_lj_in[3]; - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + int tlm1 = tablength - 1; - + if (ii0) { numtyp e = (numtyp)0.0; - if (itable < tlm1) + if (itable < tlm1) e = coeff3[idx].y; energy+=factor_lj*e; } @@ -136,21 +136,21 @@ __kernel void k_table(const __global numtyp4 *restrict x_, __kernel void k_table_fast(const __global numtyp4 *restrict x_, const __global int *restrict tabindex, - const __global numtyp4 *restrict coeff2, + const __global numtyp4 *restrict coeff2, const __global numtyp4 *restrict coeff3, const __global numtyp4 *restrict coeff4, const __global numtyp *restrict cutsq_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, const int t_per_atom, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp cutsq[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -158,18 +158,18 @@ __kernel void k_table_fast(const __global numtyp4 *restrict x_, if (tid0) { numtyp e = (numtyp)0.0; - if (itable < tlm1) + if (itable < tlm1) e = coeff3[idx].y; energy+=factor_lj*e; } @@ -235,24 +235,24 @@ __kernel void k_table_fast(const __global numtyp4 *restrict x_, /// ---------------- LINEAR ------------------------------------------------- -__kernel void k_table_linear(const __global numtyp4 *restrict x_, +__kernel void k_table_linear(const __global numtyp4 *restrict x_, const __global int *restrict tabindex, - const __global numtyp4 *restrict coeff2, + const __global numtyp4 *restrict coeff2, const __global numtyp4 *restrict coeff3, const __global numtyp4 *restrict coeff4, const int lj_types, const __global numtyp *restrict cutsq, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, const int t_per_atom, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp sp_lj[4]; sp_lj[0]=sp_lj_in[0]; sp_lj[1]=sp_lj_in[1]; @@ -265,9 +265,9 @@ __kernel void k_table_linear(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + int tlm1 = tablength - 1; - + if (ii0) { numtyp e = (numtyp)0.0; - if (itable < tlm1) + if (itable < tlm1) e = coeff3[idx].y + fraction*coeff4[idx].y; energy+=factor_lj*e; } @@ -334,23 +334,23 @@ __kernel void k_table_linear(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_table_linear_fast(const __global numtyp4 *restrict x_, +__kernel void k_table_linear_fast(const __global numtyp4 *restrict x_, const __global int *restrict tabindex, - const __global numtyp4 *restrict coeff2, + const __global numtyp4 *restrict coeff2, const __global numtyp4 *restrict coeff3, const __global numtyp4 *restrict coeff4, const __global numtyp *restrict cutsq_in, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp cutsq[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -358,7 +358,7 @@ __kernel void k_table_linear_fast(const __global numtyp4 *restrict x_, if (tid0) { numtyp e = (numtyp)0.0; - if (itable < tlm1) + if (itable < tlm1) e = coeff3[idx].y + fraction*coeff4[idx].y; energy+=factor_lj*e; } @@ -439,39 +439,39 @@ __kernel void k_table_linear_fast(const __global numtyp4 *restrict x_, /// ---------------- SPLINE ------------------------------------------------- -__kernel void k_table_spline(const __global numtyp4 *restrict x_, +__kernel void k_table_spline(const __global numtyp4 *restrict x_, const __global int *restrict tabindex, - const __global numtyp4 *restrict coeff2, + const __global numtyp4 *restrict coeff2, const __global numtyp4 *restrict coeff3, const __global numtyp4 *restrict coeff4, const int lj_types, const __global numtyp *restrict cutsq, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, const int t_per_atom, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp sp_lj[4]; sp_lj[0]=sp_lj_in[0]; sp_lj[1]=sp_lj_in[1]; sp_lj[2]=sp_lj_in[2]; sp_lj[3]=sp_lj_in[3]; - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + int tlm1 = tablength - 1; - + if (ii0) { numtyp e = (numtyp)0.0; if (itable < tlm1) { - e = a * coeff3[idx].y + b * coeff3[idx+1].y + - ((a*a*a-a)*coeff4[idx].y + (b*b*b-b)*coeff4[idx+1].y) * + e = a * coeff3[idx].y + b * coeff3[idx+1].y + + ((a*a*a-a)*coeff4[idx].y + (b*b*b-b)*coeff4[idx+1].y) * coeff2[mtype].z; - } + } energy+=factor_lj*e; } if (vflag>0) { @@ -545,23 +545,23 @@ __kernel void k_table_spline(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_table_spline_fast(const __global numtyp4 *x_, +__kernel void k_table_spline_fast(const __global numtyp4 *x_, const __global int *tabindex, - const __global numtyp4* coeff2, + const __global numtyp4* coeff2, const __global numtyp4 *coeff3, const __global numtyp4 *coeff4, const __global numtyp *cutsq_in, - const __global numtyp* sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *ans, - __global acctyp *engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + const __global numtyp* sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *ans, + __global acctyp *engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp cutsq[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -569,7 +569,7 @@ __kernel void k_table_spline_fast(const __global numtyp4 *x_, if (tid0) { numtyp e = (numtyp)0.0; if (itable < tlm1) { - e = a * coeff3[idx].y + b * coeff3[idx+1].y + - ((a*a*a-a)*coeff4[idx].y + (b*b*b-b)*coeff4[idx+1].y) * + e = a * coeff3[idx].y + b * coeff3[idx+1].y + + ((a*a*a-a)*coeff4[idx].y + (b*b*b-b)*coeff4[idx+1].y) * coeff2[mtype].z; - } + } energy+=factor_lj*e; } if (vflag>0) { @@ -657,41 +657,41 @@ __kernel void k_table_spline_fast(const __global numtyp4 *x_, /// ---------------- BITMAP ------------------------------------------------- -__kernel void k_table_bitmap(const __global numtyp4 *x_, +__kernel void k_table_bitmap(const __global numtyp4 *x_, const __global int *tabindex, - const __global int *nshiftbits, + const __global int *nshiftbits, const __global int *nmask, - const __global numtyp4* coeff2, + const __global numtyp4* coeff2, const __global numtyp4 *coeff3, const __global numtyp4 *coeff4, const int lj_types, const __global numtyp *cutsq, - const __global numtyp* sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *ans, - __global acctyp *engv, - const int eflag, const int vflag, const int inum, - const int nbor_pitch, const int t_per_atom, + const __global numtyp* sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *ans, + __global acctyp *engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp sp_lj[4]; sp_lj[0]=sp_lj_in[0]; sp_lj[1]=sp_lj_in[1]; sp_lj[2]=sp_lj_in[2]; sp_lj[3]=sp_lj_in[3]; - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + int tlm1 = tablength - 1; - + if (ii>= nshiftbits[mtype]; @@ -734,14 +734,14 @@ __kernel void k_table_bitmap(const __global numtyp4 *x_, value = coeff3[idx].z + fraction*coeff4[idx].z; force = factor_lj * value; } else force = (numtyp)0.0; - + f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; if (eflag>0) { numtyp e = (numtyp)0.0; - if (itable <= tlm1) + if (itable <= tlm1) e = coeff3[idx].y + fraction*coeff4[idx].y; energy+=factor_lj*e; } @@ -761,25 +761,25 @@ __kernel void k_table_bitmap(const __global numtyp4 *x_, } // if ii } -__kernel void k_table_bitmap_fast(const __global numtyp4 *x_, +__kernel void k_table_bitmap_fast(const __global numtyp4 *x_, const __global int *tabindex, - const __global int *nshiftbits, + const __global int *nshiftbits, const __global int *nmask, - const __global numtyp4* coeff2, + const __global numtyp4* coeff2, const __global numtyp4 *coeff3, const __global numtyp4 *coeff4, const __global numtyp *cutsq_in, - const __global numtyp* sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *ans, - __global acctyp *engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + const __global numtyp* sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *ans, + __global acctyp *engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const int t_per_atom, int tablength) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp cutsq[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -787,18 +787,18 @@ __kernel void k_table_bitmap_fast(const __global numtyp4 *x_, if (tid>= nshiftbits[mtype]; @@ -842,14 +842,14 @@ __kernel void k_table_bitmap_fast(const __global numtyp4 *x_, value = coeff3[idx].z + fraction*coeff4[idx].z; force = factor_lj * value; } else force = (numtyp)0.0; - + f.x+=delx*force; f.y+=dely*force; f.z+=delz*force; if (eflag>0) { numtyp e = (numtyp)0.0; - if (itable <= tlm1) + if (itable <= tlm1) e = coeff3[idx].y + fraction*coeff4[idx].y; energy+=factor_lj*e; } diff --git a/lib/gpu/lal_table.h b/lib/gpu/lal_table.h index 0e04737d27..f667336679 100644 --- a/lib/gpu/lal_table.h +++ b/lib/gpu/lal_table.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Table : public BaseAtomic { public: Table(); - ~Table(); + ~Table(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -38,10 +38,10 @@ class Table : public BaseAtomic { * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ int init(const int ntypes, double** cutsq, double ***host_table_coeffs, - double **host_table_data, + double **host_table_data, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, int tabstyle, int ntables, int tablength); @@ -54,42 +54,42 @@ class Table : public BaseAtomic { /// Total host memory used by library for pair style double host_memory_usage() const; - + // ------------------------- DEVICE KERNELS ------------------------- UCL_Kernel k_pair_linear, k_pair_linear_fast; UCL_Kernel k_pair_spline, k_pair_spline_fast; UCL_Kernel k_pair_bitmap, k_pair_bitmap_fast; - + // --------------------------- TYPE DATA -------------------------- UCL_D_Vec tabindex, nshiftbits, nmask; - - /// coeff2.x = innersq, coeff2.y = invdelta, coeff2.z = deltasq6, + + /// coeff2.x = innersq, coeff2.y = invdelta, coeff2.z = deltasq6, UCL_D_Vec coeff2; - + /// coeff3.x = rsq, coeff3.y = e, coeff3.z = f UCL_D_Vec coeff3; - + /// coeff4.x = de, coeff4.y = df UCL_D_Vec coeff4; - + UCL_D_Vec cutsq; - + /// Special LJ values UCL_D_Vec sp_lj; /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; - + /// Table style, length and number of tables int _tabstyle,_tablength,_ntables; - + private: bool _allocated, _compiled_styles; - + void loop(const bool _eflag, const bool _vflag); }; diff --git a/lib/gpu/lal_table_ext.cpp b/lib/gpu/lal_table_ext.cpp index 172acb7d39..a2b5c61e74 100644 --- a/lib/gpu/lal_table_ext.cpp +++ b/lib/gpu/lal_table_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -30,7 +30,7 @@ static Table TBMF; int table_gpu_init(const int ntypes, double **cutsq, double ***table_coeffs, double **table_data, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, - const double cell_size, int &gpu_mode, FILE *screen, + const double cell_size, int &gpu_mode, FILE *screen, int tabstyle, int ntables, int tablength) { TBMF.clear(); gpu_mode=TBMF.device->gpu_mode(); @@ -55,7 +55,7 @@ int table_gpu_init(const int ntypes, double **cutsq, double ***table_coeffs, int init_ok=0; if (world_me==0) init_ok=TBMF.init(ntypes, cutsq, table_coeffs, table_data, - special_lj, inum, nall, 300, maxspecial, cell_size, + special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, tabstyle, ntables, tablength); TBMF.device->world_barrier(); @@ -73,11 +73,11 @@ int table_gpu_init(const int ntypes, double **cutsq, double ***table_coeffs, } if (gpu_rank==i && world_me!=0) init_ok=TBMF.init(ntypes, cutsq, table_coeffs, table_data, - special_lj, inum, nall, 300, maxspecial, cell_size, + special_lj, inum, nall, 300, maxspecial, cell_size, gpu_split, screen, tabstyle, ntables, tablength); TBMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,8 +102,8 @@ int ** table_gpu_compute_n(const int ago, const int inum_full, return TBMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void table_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_tersoff.cpp b/lib/gpu/lal_tersoff.cpp index bc89c53765..bf634cffc2 100644 --- a/lib/gpu/lal_tersoff.cpp +++ b/lib/gpu/lal_tersoff.cpp @@ -269,7 +269,7 @@ void TersoffT::compute(const int f_ago, const int nlocal, const int nall, else _eflag=0; - int ainum=nall; + int ainum=nlist; int nbor_pitch=this->nbor->nbor_pitch(); int BX=this->block_pair(); int GX=static_cast(ceil(static_cast(ainum)/ @@ -279,7 +279,7 @@ void TersoffT::compute(const int f_ago, const int nlocal, const int nall, this->k_zeta.run(&this->atom->x, &ts1, &ts2, &ts3, &ts4, &ts5, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &_eflag, &nall, &ainum, &nbor_pitch, &this->_threads_per_atom); + &_eflag, &ainum, &nbor_pitch, &this->_threads_per_atom); int evatom=0; if (eatom || vatom) @@ -364,7 +364,7 @@ int ** TersoffT::compute(const int ago, const int inum_full, this->k_zeta.run(&this->atom->x, &ts1, &ts2, &ts3, &ts4, &ts5, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &_eflag, &nall, &ainum, &nbor_pitch, &this->_threads_per_atom); + &_eflag, &ainum, &nbor_pitch, &this->_threads_per_atom); int evatom=0; if (eatom || vatom) @@ -437,16 +437,18 @@ void TersoffT::loop(const bool _eflag, const bool _vflag, const int evatom) { this->k_three_end_vatom.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } else { this->k_three_end.set_size(GX,BX); this->k_three_end.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } this->time_pair.stop(); diff --git a/lib/gpu/lal_tersoff.cu b/lib/gpu/lal_tersoff.cu index e98a454f58..b7d48d9e34 100644 --- a/lib/gpu/lal_tersoff.cu +++ b/lib/gpu/lal_tersoff.cu @@ -184,7 +184,7 @@ __kernel void k_tersoff_zeta(const __global numtyp4 *restrict x_, __global acctyp4 * zetaij, const __global int * dev_nbor, const __global int * dev_packed, - const int eflag, const int nall, const int inum, + const int eflag, const int inum, const int nbor_pitch, const int t_per_atom) { __local int tpa_sq,n_stride; tpa_sq = fast_mul(t_per_atom,t_per_atom); @@ -210,7 +210,7 @@ __kernel void k_tersoff_zeta(const __global numtyp4 *restrict x_, __syncthreads(); - if (ii param_c2) return param_beta * ((numtyp)-0.5*ucl_powr(tmp,(numtyp)-1.5) * // error in negligible 2nd term fixed 9/30/2015 - // (1.0 - 0.5*(1.0 + 1.0/(2.0*param->powern)) * + // (1.0 - 0.5*(1.0 + 1.0/(2.0*param->powern)) * ((numtyp)1.0 - ((numtyp)1.0 + (numtyp)1.0 /((numtyp)2.0 * param_powern)) * ucl_powr(tmp,-param_powern))); if (tmp < param_c4) return (numtyp)0.0; diff --git a/lib/gpu/lal_tersoff_mod.cpp b/lib/gpu/lal_tersoff_mod.cpp index bfcc9c3bd3..a01bcf63b1 100644 --- a/lib/gpu/lal_tersoff_mod.cpp +++ b/lib/gpu/lal_tersoff_mod.cpp @@ -269,7 +269,7 @@ void TersoffMT::compute(const int f_ago, const int nlocal, const int nall, else _eflag=0; - int ainum=nall; + int ainum=nlist; int nbor_pitch=this->nbor->nbor_pitch(); int BX=this->block_pair(); int GX=static_cast(ceil(static_cast(ainum)/ @@ -279,7 +279,7 @@ void TersoffMT::compute(const int f_ago, const int nlocal, const int nall, this->k_zeta.run(&this->atom->x, &ts1, &ts2, &ts3, &ts4, &ts5, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &_eflag, &nall, &ainum, &nbor_pitch, &this->_threads_per_atom); + &_eflag, &ainum, &nbor_pitch, &this->_threads_per_atom); int evatom=0; if (eatom || vatom) @@ -364,7 +364,7 @@ int ** TersoffMT::compute(const int ago, const int inum_full, this->k_zeta.run(&this->atom->x, &ts1, &ts2, &ts3, &ts4, &ts5, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &_eflag, &nall, &ainum, &nbor_pitch, &this->_threads_per_atom); + &_eflag, &ainum, &nbor_pitch, &this->_threads_per_atom); int evatom=0; if (eatom || vatom) @@ -437,16 +437,18 @@ void TersoffMT::loop(const bool _eflag, const bool _vflag, const int evatom) { this->k_three_end_vatom.run(&this->atom->x, &ts1, &ts2, &ts4, &ts5, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } else { this->k_three_end.set_size(GX,BX); this->k_three_end.run(&this->atom->x, &ts1, &ts2, &ts4, &ts5, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } this->time_pair.stop(); diff --git a/lib/gpu/lal_tersoff_mod.cu b/lib/gpu/lal_tersoff_mod.cu index ba4ad32005..3a81b36941 100644 --- a/lib/gpu/lal_tersoff_mod.cu +++ b/lib/gpu/lal_tersoff_mod.cu @@ -184,7 +184,7 @@ __kernel void k_tersoff_mod_zeta(const __global numtyp4 *restrict x_, __global acctyp4 * zetaij, const __global int * dev_nbor, const __global int * dev_packed, - const int eflag, const int nall, const int inum, + const int eflag, const int inum, const int nbor_pitch, const int t_per_atom) { __local int tpa_sq,n_stride; tpa_sq = fast_mul(t_per_atom,t_per_atom); @@ -210,7 +210,7 @@ __kernel void k_tersoff_mod_zeta(const __global numtyp4 *restrict x_, __syncthreads(); - if (ii param_ca1) return (numtyp)-0.5*(param_powern/param_powern_del) * - ucl_powr(tmp,(numtyp)-0.5*(param_powern/param_powern_del)) / zeta; + ucl_powr(tmp,(numtyp)-0.5*(param_powern/param_powern_del)) / zeta; if (tmp < param_ca4) return (numtyp)0.0; numtyp tmp_n = ucl_powr(tmp,param_powern); return (numtyp)-0.5 *(param_powern/param_powern_del) * - ucl_powr((numtyp)1.0+tmp_n, (numtyp)-1.0-((numtyp)1.0 / + ucl_powr((numtyp)1.0+tmp_n, (numtyp)-1.0-((numtyp)1.0 / ((numtyp)2.0*param_powern_del)))*tmp_n / zeta; } diff --git a/lib/gpu/lal_tersoff_zbl.cpp b/lib/gpu/lal_tersoff_zbl.cpp index 57688f53ab..c1f3f25c04 100644 --- a/lib/gpu/lal_tersoff_zbl.cpp +++ b/lib/gpu/lal_tersoff_zbl.cpp @@ -294,7 +294,7 @@ void TersoffZT::compute(const int f_ago, const int nlocal, const int nall, else _eflag=0; - int ainum=nall; + int ainum=nlist; int nbor_pitch=this->nbor->nbor_pitch(); int BX=this->block_pair(); int GX=static_cast(ceil(static_cast(ainum)/ @@ -304,7 +304,7 @@ void TersoffZT::compute(const int f_ago, const int nlocal, const int nall, this->k_zeta.run(&this->atom->x, &ts1, &ts2, &ts3, &ts4, &ts5, &ts6, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &_eflag, &nall, &ainum, &nbor_pitch, &this->_threads_per_atom); + &_eflag, &ainum, &nbor_pitch, &this->_threads_per_atom); int evatom=0; if (eatom || vatom) @@ -389,7 +389,7 @@ int ** TersoffZT::compute(const int ago, const int inum_full, this->k_zeta.run(&this->atom->x, &ts1, &ts2, &ts3, &ts4, &ts5, &ts6, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), - &_eflag, &nall, &ainum, &nbor_pitch, &this->_threads_per_atom); + &_eflag, &ainum, &nbor_pitch, &this->_threads_per_atom); int evatom=0; if (eatom || vatom) @@ -463,16 +463,18 @@ void TersoffZT::loop(const bool _eflag, const bool _vflag, const int evatom) { this->k_three_end_vatom.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } else { this->k_three_end.set_size(GX,BX); this->k_three_end.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq, &map, &elem2param, &_nelements, &_nparams, &_zetaij, &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->nbor->dev_acc, &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum, - &nbor_pitch, &this->_threads_per_atom); + &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor); } this->time_pair.stop(); diff --git a/lib/gpu/lal_tersoff_zbl.cu b/lib/gpu/lal_tersoff_zbl.cu index 0d6c5a38d6..9509b9802c 100644 --- a/lib/gpu/lal_tersoff_zbl.cu +++ b/lib/gpu/lal_tersoff_zbl.cu @@ -188,7 +188,7 @@ __kernel void k_tersoff_zbl_zeta(const __global numtyp4 *restrict x_, __global acctyp4 * zetaij, const __global int * dev_nbor, const __global int * dev_packed, - const int eflag, const int nall, const int inum, + const int eflag, const int inum, const int nbor_pitch, const int t_per_atom) { __local int tpa_sq,n_stride; tpa_sq = fast_mul(t_per_atom,t_per_atom); @@ -216,7 +216,7 @@ __kernel void k_tersoff_zbl_zeta(const __global numtyp4 *restrict x_, __syncthreads(); - if (ii param_c2) return param_beta * ((numtyp)-0.5*ucl_powr(tmp,(numtyp)-1.5) * // error in negligible 2nd term fixed 9/30/2015 - // (1.0 - 0.5*(1.0 + 1.0/(2.0*param->powern)) * + // (1.0 - 0.5*(1.0 + 1.0/(2.0*param->powern)) * ((numtyp)1.0 - ((numtyp)1.0 + (numtyp)1.0 /((numtyp)2.0 * param_powern)) * ucl_powr(tmp,-param_powern))); if (tmp < param_c4) return (numtyp)0.0; diff --git a/lib/gpu/lal_yukawa.cpp b/lib/gpu/lal_yukawa.cpp index 585dc069a0..a316d195ac 100644 --- a/lib/gpu/lal_yukawa.cpp +++ b/lib/gpu/lal_yukawa.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -33,19 +33,19 @@ YukawaT::Yukawa() : BaseAtomic(), _allocated(false) { } template -YukawaT::~Yukawa() { +YukawaT::~Yukawa() { clear(); } - + template int YukawaT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int YukawaT::init(const int ntypes, +int YukawaT::init(const int ntypes, double **host_cutsq, double kappa, - double **host_a, double **host_offset, + double **host_a, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -75,7 +75,7 @@ int YukawaT::init(const int ntypes, coeff.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_a,host_offset, - host_cutsq); + host_cutsq); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); @@ -83,7 +83,7 @@ int YukawaT::init(const int ntypes, ucl_copy(sp_lj,dview,false); _kappa = kappa; - + _allocated=true; this->_max_bytes=coeff.row_bytes()+sp_lj.row_bytes(); return 0; @@ -122,7 +122,7 @@ void YukawaT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -134,7 +134,7 @@ void YukawaT::loop(const bool _eflag, const bool _vflag) { this->k_pair_fast.run(&this->atom->x, &coeff, &_kappa, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, - &vflag, &ainum, &nbor_pitch, + &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom); } else { this->k_pair.set_size(GX,BX); diff --git a/lib/gpu/lal_yukawa.cu b/lib/gpu/lal_yukawa.cu index b0c3b9978d..a8d637ec97 100644 --- a/lib/gpu/lal_yukawa.cu +++ b/lib/gpu/lal_yukawa.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -24,14 +24,14 @@ texture pos_tex; #define pos_tex x_ #endif -__kernel void k_yukawa(const __global numtyp4 *restrict x_, +__kernel void k_yukawa(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff, const numtyp kappa, const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -49,20 +49,20 @@ __kernel void k_yukawa(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=coeff[mtype].x*screening*rinv; - energy+=factor_lj*(e-coeff[mtype].y); + energy+=factor_lj*(e-coeff[mtype].y); } if (vflag>0) { virial[0] += delx*delx*force; @@ -109,19 +109,19 @@ __kernel void k_yukawa(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_yukawa_fast(const __global numtyp4 *restrict x_, +__kernel void k_yukawa_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff_in, - const numtyp kappa, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + const numtyp kappa, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -129,7 +129,7 @@ __kernel void k_yukawa_fast(const __global numtyp4 *restrict x_, if (tid0) { numtyp e=coeff[mtype].x*screening*rinv; - energy+=factor_lj*(e-coeff[mtype].y); + energy+=factor_lj*(e-coeff[mtype].y); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_yukawa.h b/lib/gpu/lal_yukawa.h index 720dc903d0..4cc23c03e9 100644 --- a/lib/gpu/lal_yukawa.h +++ b/lib/gpu/lal_yukawa.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class Yukawa : public BaseAtomic { public: Yukawa(); - ~Yukawa(); + ~Yukawa(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -39,8 +39,8 @@ class Yukawa : public BaseAtomic { * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, double kappa, double **host_a, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); /// Clear all host and device data @@ -57,16 +57,16 @@ class Yukawa : public BaseAtomic { /// coeff.x = a, coeff.y = offset, coeff.z = cutsq UCL_D_Vec coeff; - + /// Special LJ values UCL_D_Vec sp_lj; /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; - + /// kappa numtyp _kappa; diff --git a/lib/gpu/lal_yukawa_colloid.cpp b/lib/gpu/lal_yukawa_colloid.cpp index 70282a7117..af29938a68 100644 --- a/lib/gpu/lal_yukawa_colloid.cpp +++ b/lib/gpu/lal_yukawa_colloid.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -29,23 +29,23 @@ using namespace LAMMPS_AL; extern Device device; template -YukawaColloidT::YukawaColloid() : BaseAtomic(), +YukawaColloidT::YukawaColloid() : BaseAtomic(), _max_rad_size(0), _allocated(false) { } template -YukawaColloidT::~YukawaColloid() { +YukawaColloidT::~YukawaColloid() { clear(); } - + template int YukawaColloidT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); } template -int YukawaColloidT::init(const int ntypes, - double **host_cutsq, double **host_a, +int YukawaColloidT::init(const int ntypes, + double **host_cutsq, double **host_a, double **host_offset, double *host_special_lj, const int nlocal, const int nall, const int max_nbors, const int maxspecial, const double cell_size, @@ -62,16 +62,16 @@ int YukawaColloidT::init(const int ntypes, _shared_view=false; // allocate rad - + int ef_nall=nall; if (ef_nall==0) ef_nall=2000; - + _max_rad_size=static_cast(static_cast(ef_nall)*1.10); - + if (_shared_view==false) c_rad.alloc(_max_rad_size,*(this->ucl_device),UCL_WRITE_ONLY,UCL_READ_ONLY); - + rad_tex.get_texture(*(this->pair_program),"rad_tex"); rad_tex.bind_float(c_rad,1); @@ -96,13 +96,13 @@ int YukawaColloidT::init(const int ntypes, coeff.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff,host_write,host_a, - host_offset,host_cutsq); + host_offset,host_cutsq); UCL_H_Vec dview; sp_lj.alloc(4,*(this->ucl_device),UCL_READ_ONLY); dview.view(host_special_lj,4,*(this->ucl_device)); ucl_copy(sp_lj,dview,false); - + _allocated=true; this->_max_bytes=coeff.row_bytes()+sp_lj.row_bytes(); return 0; @@ -131,15 +131,15 @@ double YukawaColloidT::host_memory_usage() const { // Copy nbor list from host if necessary and then compute atom energies/forces // --------------------------------------------------------------------------- template -void YukawaColloidT::compute(const int f_ago, const int inum_full, - const int nall, double **host_x, int *host_type, int *ilist, +void YukawaColloidT::compute(const int f_ago, const int inum_full, + const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, double *rad) { this->acc_timers(); - + // ------------------- Resize rad array -------------------------- - + if (nall>_max_rad_size) { _max_rad_size=static_cast(static_cast(nall)*1.10); if (_shared_view==false) { @@ -157,7 +157,7 @@ void YukawaColloidT::compute(const int f_ago, const int inum_full, this->zero_timers(); return; } - + int ago=this->hd_balancer.ago_first(f_ago); int inum=this->hd_balancer.balance(ago,inum_full,cpu_time); this->ans->inum(inum); @@ -170,7 +170,7 @@ void YukawaColloidT::compute(const int f_ago, const int inum_full, if (!success) return; } - + this->atom->cast_x_data(host_x,host_type); this->cast_rad_data(rad); this->hd_balancer.start_timer(); @@ -182,7 +182,7 @@ void YukawaColloidT::compute(const int f_ago, const int inum_full, this->device->add_ans_object(this->ans); this->hd_balancer.stop_timer(); } - + // --------------------------------------------------------------------------- // Reneighbor on GPU and then compute per-atom densities // --------------------------------------------------------------------------- @@ -190,24 +190,24 @@ template int** YukawaColloidT::compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, int **ilist, int **jnum, const double cpu_time, bool &success, double *rad) { this->acc_timers(); - + // ------------------- Resize rad array ---------------------------- - + if (nall>_max_rad_size) { _max_rad_size=static_cast(static_cast(nall)*1.10); if (_shared_view==false) { c_rad.resize(_max_rad_size); rad_tex.bind_float(c_rad,1); } - } + } // ----------------------------------------------------------------- - + if (inum_full==0) { host_start=0; // Make sure textures are correct if realloc by a different hybrid style @@ -215,21 +215,21 @@ int** YukawaColloidT::compute(const int ago, const int inum_full, const int nall this->zero_timers(); return NULL; } - + // load balance, returning the atom count on the device (inum) this->hd_balancer.balance(cpu_time); int inum=this->hd_balancer.get_gpu_count(ago,inum_full); this->ans->inum(inum); host_start=inum; - - // Build neighbor list on GPU if necessary + + // Build neighbor list on GPU if necessary if (ago==0) { this->build_nbor_list(inum, inum_full-inum, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, success); if (!success) return NULL; this->cast_rad_data(rad); - this->hd_balancer.start_timer(); + this->hd_balancer.start_timer(); } else { this->atom->cast_x_data(host_x,host_type); this->cast_rad_data(rad); @@ -265,7 +265,7 @@ void YukawaColloidT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); @@ -280,8 +280,8 @@ void YukawaColloidT::loop(const bool _eflag, const bool _vflag) { &ainum, &nbor_pitch, &this->_threads_per_atom, &_kappa); } else { this->k_pair.set_size(GX,BX); - this->k_pair.run(&this->atom->x, &c_rad, &coeff, &_lj_types, &sp_lj, - &this->nbor->dev_nbor, &this->_nbor_data->begin(), + this->k_pair.run(&this->atom->x, &c_rad, &coeff, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &_kappa); } diff --git a/lib/gpu/lal_yukawa_colloid.cu b/lib/gpu/lal_yukawa_colloid.cu index f9f4767123..48ab47bc94 100644 --- a/lib/gpu/lal_yukawa_colloid.cu +++ b/lib/gpu/lal_yukawa_colloid.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : nguyentd@ornl.gov // ***************************************************************************/ @@ -29,15 +29,15 @@ texture rad_tex; #define rad_tex rad_ #endif -__kernel void k_yukawa_colloid(const __global numtyp4 *restrict x_, +__kernel void k_yukawa_colloid(const __global numtyp4 *restrict x_, const __global numtyp *restrict rad_, - const __global numtyp4 *restrict coeff, - const int lj_types, - const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, + const __global numtyp4 *restrict coeff, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom, const numtyp kappa) { @@ -56,21 +56,21 @@ __kernel void k_yukawa_colloid(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (ii0) { numtyp e=coeff[mtype].x/kappa * screening; - energy+=factor_lj*(e-coeff[mtype].y); + energy+=factor_lj*(e-coeff[mtype].y); } if (vflag>0) { virial[0] += delx*delx*force; @@ -118,20 +118,20 @@ __kernel void k_yukawa_colloid(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_yukawa_colloid_fast(const __global numtyp4 *restrict x_, +__kernel void k_yukawa_colloid_fast(const __global numtyp4 *restrict x_, const __global numtyp *restrict rad_, - const __global numtyp4 *restrict coeff_in, + const __global numtyp4 *restrict coeff_in, const __global numtyp *restrict sp_lj_in, - const __global int *dev_nbor, - const __global int *dev_packed, - __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, - const int inum, const int nbor_pitch, + const __global int *dev_nbor, + const __global int *dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, + const int inum, const int nbor_pitch, const int t_per_atom, const numtyp kappa) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp sp_lj[4]; if (tid<4) @@ -139,7 +139,7 @@ __kernel void k_yukawa_colloid_fast(const __global numtyp4 *restrict x_, if (tid0) { numtyp e=coeff[mtype].x/kappa * screening; - energy+=factor_lj*(e-coeff[mtype].y); + energy+=factor_lj*(e-coeff[mtype].y); } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_yukawa_colloid.h b/lib/gpu/lal_yukawa_colloid.h index 5a9ee7ae6e..ba69bc4bae 100644 --- a/lib/gpu/lal_yukawa_colloid.h +++ b/lib/gpu/lal_yukawa_colloid.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -24,13 +24,13 @@ template class YukawaColloid : public BaseAtomic { public: YukawaColloid(); - ~YukawaColloid(); + ~YukawaColloid(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found @@ -39,8 +39,8 @@ class YukawaColloid : public BaseAtomic { * - -5 Double precision is not supported on card **/ int init(const int ntypes, double **host_cutsq, double **host_a, double **host_offset, double *host_special_lj, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen, const double kappa); inline void cast_rad_data(double* rad) { @@ -70,22 +70,22 @@ class YukawaColloid : public BaseAtomic { /// Total host memory used by library for pair style double host_memory_usage() const; - + /// Pair loop with host neighboring - void compute(const int f_ago, const int inum_full, - const int nall, double **host_x, int *host_type, - int *ilist, int *numj, int **firstneigh, + void compute(const int f_ago, const int inum_full, + const int nall, double **host_x, int *host_type, + int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, double *rad); - + /// Pair loop with device neighboring int** compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, double *sublo, double *subhi, tagint *tag, int **nspecial, - tagint **special, const bool eflag, const bool vflag, - const bool eatom, const bool vatom, int &host_start, - int **ilist, int **jnum, const double cpu_time, + tagint **special, const bool eflag, const bool vflag, + const bool eatom, const bool vatom, int &host_start, + int **ilist, int **jnum, const double cpu_time, bool &success, double *rad); // --------------------------- TEXTURES ----------------------------- @@ -101,7 +101,7 @@ class YukawaColloid : public BaseAtomic { /// If atom type constants fit in shared memory, use fast kernels bool shared_types; - /// Number of atom types + /// Number of atom types int _lj_types; int _max_rad_size; diff --git a/lib/gpu/lal_yukawa_colloid_ext.cpp b/lib/gpu/lal_yukawa_colloid_ext.cpp index 0e3c653e06..e2b0354d10 100644 --- a/lib/gpu/lal_yukawa_colloid_ext.cpp +++ b/lib/gpu/lal_yukawa_colloid_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -27,10 +27,10 @@ static YukawaColloid YKCOLLMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int ykcolloid_gpu_init(const int ntypes, double **cutsq, double **host_a, +int ykcolloid_gpu_init(const int ntypes, double **cutsq, double **host_a, double **host_offset, double *special_lj, const int inum, const int nall, const int max_nbors, const int maxspecial, - const double cell_size, int &gpu_mode, FILE *screen, + const double cell_size, int &gpu_mode, FILE *screen, const double kappa) { YKCOLLMF.clear(); gpu_mode=YKCOLLMF.device->gpu_mode(); @@ -54,8 +54,8 @@ int ykcolloid_gpu_init(const int ntypes, double **cutsq, double **host_a, int init_ok=0; if (world_me==0) - init_ok=YKCOLLMF.init(ntypes, cutsq, host_a, host_offset, special_lj, - inum, nall, 300, maxspecial, cell_size, gpu_split, + init_ok=YKCOLLMF.init(ntypes, cutsq, host_a, host_offset, special_lj, + inum, nall, 300, maxspecial, cell_size, gpu_split, screen, kappa); YKCOLLMF.device->world_barrier(); @@ -72,12 +72,12 @@ int ykcolloid_gpu_init(const int ntypes, double **cutsq, double **host_a, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=YKCOLLMF.init(ntypes, cutsq, host_a, host_offset, special_lj, - inum, nall, 300, maxspecial, cell_size, gpu_split, + init_ok=YKCOLLMF.init(ntypes, cutsq, host_a, host_offset, special_lj, + inum, nall, 300, maxspecial, cell_size, gpu_split, screen, kappa); YKCOLLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -103,11 +103,11 @@ int ** ykcolloid_gpu_compute_n(const int ago, const int inum_full, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success, host_rad); -} - -void ykcolloid_gpu_compute(const int ago, const int inum_full, - const int nall, double **host_x, int *host_type, - int *ilist, int *numj, int **firstneigh, +} + +void ykcolloid_gpu_compute(const int ago, const int inum_full, + const int nall, double **host_x, int *host_type, + int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, const bool eatom, const bool vatom, int &host_start, const double cpu_time, bool &success, double *host_rad) { diff --git a/lib/gpu/lal_yukawa_ext.cpp b/lib/gpu/lal_yukawa_ext.cpp index 1cc89885aa..9d38387bc1 100644 --- a/lib/gpu/lal_yukawa_ext.cpp +++ b/lib/gpu/lal_yukawa_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : nguyentd@ornl.gov ***************************************************************************/ @@ -28,9 +28,9 @@ static Yukawa YKMF; // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- int yukawa_gpu_init(const int ntypes, double **cutsq, double kappa, - double **host_a, double **offset, double *special_lj, - const int inum, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + double **host_a, double **offset, double *special_lj, + const int inum, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { YKMF.clear(); gpu_mode=YKMF.device->gpu_mode(); @@ -54,8 +54,8 @@ int yukawa_gpu_init(const int ntypes, double **cutsq, double kappa, int init_ok=0; if (world_me==0) - init_ok=YKMF.init(ntypes, cutsq, kappa, host_a, offset, special_lj, - inum, nall, 300, maxspecial, cell_size, + init_ok=YKMF.init(ntypes, cutsq, kappa, host_a, offset, special_lj, + inum, nall, 300, maxspecial, cell_size, gpu_split, screen); YKMF.device->world_barrier(); @@ -72,12 +72,12 @@ int yukawa_gpu_init(const int ntypes, double **cutsq, double kappa, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=YKMF.init(ntypes, cutsq, kappa, host_a, offset, special_lj, - inum, nall, 300, maxspecial, cell_size, + init_ok=YKMF.init(ntypes, cutsq, kappa, host_a, offset, special_lj, + inum, nall, 300, maxspecial, cell_size, gpu_split, screen); YKMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -102,8 +102,8 @@ int ** yukawa_gpu_compute_n(const int ago, const int inum_full, return YKMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void yukawa_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, diff --git a/lib/gpu/lal_zbl.cpp b/lib/gpu/lal_zbl.cpp index e172d48b33..77e55a62f9 100644 --- a/lib/gpu/lal_zbl.cpp +++ b/lib/gpu/lal_zbl.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndactrung@gmail.com ***************************************************************************/ @@ -33,10 +33,10 @@ ZBLT::ZBL() : BaseAtomic(), _allocated(false) { } template -ZBLT::~ZBL() { +ZBLT::~ZBL() { clear(); } - + template int ZBLT::bytes_per_atom(const int max_nbors) const { return this->bytes_per_atom_atomic(max_nbors); @@ -44,15 +44,15 @@ int ZBLT::bytes_per_atom(const int max_nbors) const { template int ZBLT::init(const int ntypes, double **host_cutsq, - double **host_sw1, double **host_sw2, - double **host_sw3, double **host_sw4, + double **host_sw1, double **host_sw2, + double **host_sw3, double **host_sw4, double **host_sw5, - double **host_d1a, double **host_d2a, - double **host_d3a, double **host_d4a, - double **host_zze, double cut_globalsq, + double **host_d1a, double **host_d2a, + double **host_d3a, double **host_d4a, + double **host_zze, double cut_globalsq, double cut_innersq, double cut_inner, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *_screen) { int success; success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split, @@ -79,16 +79,16 @@ int ZBLT::init(const int ntypes, double **host_cutsq, coeff1.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff1,host_write,host_sw1,host_sw2, - host_zze, host_cutsq); + host_zze, host_cutsq); coeff2.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff2,host_write,host_d1a,host_d2a, - host_d3a,host_d4a); + host_d3a,host_d4a); coeff3.alloc(lj_types*lj_types,*(this->ucl_device),UCL_READ_ONLY); this->atom->type_pack4(ntypes,lj_types,coeff3,host_write,host_sw3,host_sw4,host_sw5); - _cut_globalsq = cut_globalsq; + _cut_globalsq = cut_globalsq; _cut_innersq = cut_innersq; _cut_inner = cut_inner; @@ -131,7 +131,7 @@ void ZBLT::loop(const bool _eflag, const bool _vflag) { vflag=1; else vflag=0; - + int GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); diff --git a/lib/gpu/lal_zbl.cu b/lib/gpu/lal_zbl.cu index b14753b5fa..b7f379c833 100644 --- a/lib/gpu/lal_zbl.cu +++ b/lib/gpu/lal_zbl.cu @@ -9,7 +9,7 @@ // This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) // __________________________________________________________________________ // -// begin : +// begin : // email : ndactrung@gmail.com // ***************************************************************************/ @@ -35,9 +35,9 @@ texture pos_tex; compute ZBL pair energy ------------------------------------------------------------------------- */ -ucl_inline numtyp e_zbl(numtyp r, numtyp d1aij, numtyp d2aij, +ucl_inline numtyp e_zbl(numtyp r, numtyp d1aij, numtyp d2aij, numtyp d3aij, numtyp d4aij, numtyp zzeij) { - + numtyp rinv = ucl_recip(r); numtyp sum = c1*ucl_exp(-d1aij*r); @@ -54,7 +54,7 @@ ucl_inline numtyp e_zbl(numtyp r, numtyp d1aij, numtyp d2aij, compute ZBL first derivative ------------------------------------------------------------------------- */ -ucl_inline numtyp dzbldr(numtyp r, numtyp d1aij, numtyp d2aij, +ucl_inline numtyp dzbldr(numtyp r, numtyp d1aij, numtyp d2aij, numtyp d3aij, numtyp d4aij, numtyp zzeij) { numtyp rinv = ucl_recip(r); @@ -72,24 +72,24 @@ ucl_inline numtyp dzbldr(numtyp r, numtyp d1aij, numtyp d2aij, sum_p -= c2*d2aij*e2; sum_p -= c3*d3aij*e3; sum_p -= c4*d4aij*e4; - + numtyp result = zzeij*(sum_p - sum*rinv)*rinv; - + return result; }; -__kernel void k_zbl(const __global numtyp4 *restrict x_, +__kernel void k_zbl(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1, const __global numtyp4 *restrict coeff2, const __global numtyp4 *restrict coeff3, - const double cut_globalsq, - const double cut_innersq, - const double cut_inner, - const int lj_types, - const __global int *dev_nbor, - const __global int *dev_packed, + const double cut_globalsq, + const double cut_innersq, + const double cut_inner, + const int lj_types, + const __global int *dev_nbor, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, + __global acctyp *restrict engv, const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; @@ -101,19 +101,19 @@ __kernel void k_zbl(const __global numtyp4 *restrict x_, acctyp virial[6]; for (int i=0; i<6; i++) virial[i]=(acctyp)0; - + if (iicut_innersq) { - t = r - cut_inner; - force = t*t * (coeff1[mtype].x + coeff1[mtype].y*t); - } + + if (rsq>cut_innersq) { + t = r - cut_inner; + force = t*t * (coeff1[mtype].x + coeff1[mtype].y*t); + } force *= (numtyp)-1.0*ucl_recip(r); @@ -146,14 +146,14 @@ __kernel void k_zbl(const __global numtyp4 *restrict x_, f.z+=delz*force; if (eflag>0) { - numtyp e=e_zbl(r, coeff2[mtype].x, coeff2[mtype].y, + numtyp e=e_zbl(r, coeff2[mtype].x, coeff2[mtype].y, coeff2[mtype].z, coeff2[mtype].w, coeff1[mtype].z); - e += coeff3[mtype].z; - if (rsq > cut_innersq) { - e += t*t*t * (coeff3[mtype].x + coeff3[mtype].y*t); - } + e += coeff3[mtype].z; + if (rsq > cut_innersq) { + e += t*t*t * (coeff3[mtype].x + coeff3[mtype].y*t); + } - energy+=e; + energy+=e; } if (vflag>0) { virial[0] += delx*delx*force; @@ -171,22 +171,22 @@ __kernel void k_zbl(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_zbl_fast(const __global numtyp4 *restrict x_, +__kernel void k_zbl_fast(const __global numtyp4 *restrict x_, const __global numtyp4 *restrict coeff1_in, const __global numtyp4 *restrict coeff2_in, const __global numtyp4 *restrict coeff3_in, - const double cut_globalsq, - const double cut_innersq, - const double cut_inner, + const double cut_globalsq, + const double cut_innersq, + const double cut_inner, const __global int *dev_nbor, - const __global int *dev_packed, + const __global int *dev_packed, __global acctyp4 *restrict ans, - __global acctyp *restrict engv, - const int eflag, const int vflag, const int inum, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, const int nbor_pitch, const int t_per_atom) { int tid, ii, offset; atom_info(t_per_atom,ii,tid,offset); - + __local numtyp4 coeff1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 coeff2[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; __local numtyp4 coeff3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; @@ -195,7 +195,7 @@ __kernel void k_zbl_fast(const __global numtyp4 *restrict x_, coeff2[tid]=coeff2_in[tid]; coeff3[tid]=coeff3_in[tid]; } - + acctyp energy=(acctyp)0; acctyp4 f; f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; @@ -204,7 +204,7 @@ __kernel void k_zbl_fast(const __global numtyp4 *restrict x_, virial[i]=(acctyp)0; __syncthreads(); - + if (iicut_innersq) { - t = r - cut_inner; - force += t*t * (coeff1[mtype].x + coeff1[mtype].y*t); - } + + if (rsq>cut_innersq) { + t = r - cut_inner; + force += t*t * (coeff1[mtype].x + coeff1[mtype].y*t); + } force *= (numtyp)-1.0*ucl_recip(r); @@ -249,14 +249,14 @@ __kernel void k_zbl_fast(const __global numtyp4 *restrict x_, f.z+=delz*force; if (eflag>0) { - numtyp e=e_zbl(r, coeff2[mtype].x, coeff2[mtype].y, + numtyp e=e_zbl(r, coeff2[mtype].x, coeff2[mtype].y, coeff2[mtype].z, coeff2[mtype].w, coeff1[mtype].z); - e += coeff3[mtype].z; - if (rsq > cut_innersq) { - e += t*t*t * (coeff3[mtype].x + coeff3[mtype].y*t); - } + e += coeff3[mtype].z; + if (rsq > cut_innersq) { + e += t*t*t * (coeff3[mtype].x + coeff3[mtype].y*t); + } - energy+=e; + energy+=e; } if (vflag>0) { virial[0] += delx*delx*force; diff --git a/lib/gpu/lal_zbl.h b/lib/gpu/lal_zbl.h index 2996d90a5c..9885fcedf2 100644 --- a/lib/gpu/lal_zbl.h +++ b/lib/gpu/lal_zbl.h @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndactrung@gmail.com ***************************************************************************/ @@ -24,27 +24,27 @@ template class ZBL : public BaseAtomic { public: ZBL(); - ~ZBL(); + ~ZBL(); /// Clear any previous data and set up for a new LAMMPS run /** \param max_nbors initial number of rows in the neighbor matrix * \param cell_size cutoff + skin * \param gpu_split fraction of particles handled by device - * + * * Returns: * - 0 if successfull * - -1 if fix gpu not found * - -3 if there is an out of memory error * - -4 if the GPU library was not compiled for GPU * - -5 Double precision is not supported on card **/ - int init(const int ntypes, double **host_cutsq, double **host_sw1, + int init(const int ntypes, double **host_cutsq, double **host_sw1, double **host_sw2, double **host_sw3, double **host_sw4, double **host_sw5, - double **host_d1a, double **host_d2a, double **host_d3a, double **host_d4a, + double **host_d1a, double **host_d2a, double **host_d3a, double **host_d4a, double **host_zze, double cut_globalsq, double cut_innersq, double cut_inner, - const int nlocal, const int nall, const int max_nbors, - const int maxspecial, const double cell_size, + const int nlocal, const int nall, const int max_nbors, + const int maxspecial, const double cell_size, const double gpu_split, FILE *screen); - + /// Clear all host and device data /** \note This is called at the beginning of the init() routine **/ void clear(); @@ -70,8 +70,8 @@ class ZBL : public BaseAtomic { double _cut_globalsq; double _cut_innersq; double _cut_inner; - - /// Number of atom types + + /// Number of atom types int _lj_types; private: diff --git a/lib/gpu/lal_zbl_ext.cpp b/lib/gpu/lal_zbl_ext.cpp index ddce858076..37aa74351b 100644 --- a/lib/gpu/lal_zbl_ext.cpp +++ b/lib/gpu/lal_zbl_ext.cpp @@ -9,7 +9,7 @@ This file is part of the LAMMPS Accelerator Library (LAMMPS_AL) __________________________________________________________________________ - begin : + begin : email : ndactrung@gmail.com ***************************************************************************/ @@ -27,11 +27,11 @@ static ZBL ZBLMF; // --------------------------------------------------------------------------- // Allocate memory on host and device and copy constants to device // --------------------------------------------------------------------------- -int zbl_gpu_init(const int ntypes, double **cutsq, double **host_sw1, +int zbl_gpu_init(const int ntypes, double **cutsq, double **host_sw1, double **host_sw2, double **host_sw3, double **host_sw4, double **host_sw5, - double **host_d1a, double **host_d2a, double **host_d3a, double **host_d4a, + double **host_d1a, double **host_d2a, double **host_d3a, double **host_d4a, double **host_zze, double cut_globalsq, double cut_innersq, double cut_inner, - const int inum, const int nall, const int max_nbors, + const int inum, const int nall, const int max_nbors, const int maxspecial, const double cell_size, int &gpu_mode, FILE *screen) { ZBLMF.clear(); gpu_mode=ZBLMF.device->gpu_mode(); @@ -55,7 +55,7 @@ int zbl_gpu_init(const int ntypes, double **cutsq, double **host_sw1, int init_ok=0; if (world_me==0) - init_ok=ZBLMF.init(ntypes, cutsq, host_sw1, host_sw2, host_sw3, host_sw4, + init_ok=ZBLMF.init(ntypes, cutsq, host_sw1, host_sw2, host_sw3, host_sw4, host_sw5, host_d1a, host_d2a, host_d3a, host_d4a, host_zze, cut_globalsq, cut_innersq, cut_inner, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); @@ -74,13 +74,13 @@ int zbl_gpu_init(const int ntypes, double **cutsq, double **host_sw1, fflush(screen); } if (gpu_rank==i && world_me!=0) - init_ok=ZBLMF.init(ntypes, cutsq, host_sw1, host_sw2, host_sw3, host_sw4, + init_ok=ZBLMF.init(ntypes, cutsq, host_sw1, host_sw2, host_sw3, host_sw4, host_sw5, host_d1a, host_d2a, host_d3a, host_d4a, host_zze, - cut_globalsq, cut_innersq, cut_inner, + cut_globalsq, cut_innersq, cut_inner, inum, nall, 300, maxspecial, cell_size, gpu_split, screen); ZBLMF.device->gpu_barrier(); - if (message) + if (message) fprintf(screen,"Done.\n"); } if (message) @@ -105,8 +105,8 @@ int ** zbl_gpu_compute_n(const int ago, const int inum_full, return ZBLMF.compute(ago, inum_full, nall, host_x, host_type, sublo, subhi, tag, nspecial, special, eflag, vflag, eatom, vatom, host_start, ilist, jnum, cpu_time, success); -} - +} + void zbl_gpu_compute(const int ago, const int inum_full, const int nall, double **host_x, int *host_type, int *ilist, int *numj, int **firstneigh, const bool eflag, const bool vflag, From a99c922a14c664aa6e6926fc3c693d4a0b43cbce Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:29:38 +0000 Subject: [PATCH 13/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15249 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- lib/gpu/.gitignore | 4 ++++ lib/gpu/Makefile.shannon | 50 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 lib/gpu/.gitignore create mode 100644 lib/gpu/Makefile.shannon diff --git a/lib/gpu/.gitignore b/lib/gpu/.gitignore new file mode 100644 index 0000000000..228a9f7731 --- /dev/null +++ b/lib/gpu/.gitignore @@ -0,0 +1,4 @@ +obj +obj_ocl +ocl_get_devices +nvc_get_devices diff --git a/lib/gpu/Makefile.shannon b/lib/gpu/Makefile.shannon new file mode 100644 index 0000000000..2ddb0d1f04 --- /dev/null +++ b/lib/gpu/Makefile.shannon @@ -0,0 +1,50 @@ +# /* ---------------------------------------------------------------------- +# Generic Linux Makefile for CUDA +# - Change CUDA_ARCH for your GPU +# ------------------------------------------------------------------------- */ + +# which file will be copied to Makefile.lammps + +EXTRAMAKE = Makefile.lammps.standard + +CUDA_HOME = ${CUDA_ROOT} +NVCC = nvcc + +# Kepler CUDA +CUDA_ARCH = -arch=sm_35 +# Tesla CUDA +#CUDA_ARCH = -arch=sm_21 +# newer CUDA +#CUDA_ARCH = -arch=sm_13 +# older CUDA +#CUDA_ARCH = -arch=sm_10 -DCUDA_PRE_THREE + +# this setting should match LAMMPS Makefile +# one of LAMMPS_SMALLBIG (default), LAMMPS_BIGBIG and LAMMPS_SMALLSMALL + +LMP_INC = -DLAMMPS_SMALLBIG + +# precision for GPU calculations +# -D_SINGLE_SINGLE # Single precision for all calculations +# -D_DOUBLE_DOUBLE # Double precision for all calculations +# -D_SINGLE_DOUBLE # Accumulation of forces, etc. in double + +CUDA_PRECISION = -D_DOUBLE_DOUBLE + +CUDA_INCLUDE = -I$(CUDA_HOME)/include +CUDA_LIB = -L$(CUDA_HOME)/lib64 +CUDA_OPTS = -DUNIX -O3 -Xptxas -v --use_fast_math + +CUDR_CPP = mpic++ -DMPI_GERYON -DUCL_NO_EXIT -DMPICH_IGNORE_CXX_SEEK +CUDR_OPTS = -O2 # -xHost -no-prec-div -ansi-alias + +BIN_DIR = ./ +OBJ_DIR = ./ +LIB_DIR = ./ +AR = ar +BSH = /bin/sh + +CUDPP_OPT = -DUSE_CUDPP -Icudpp_mini + +include Nvidia.makefile + From 88812c44fba8aa3201369ba8949af5f3151e76da Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:31:09 +0000 Subject: [PATCH 14/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15250 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/RIGID/compute_rigid_local.cpp | 3 ++- src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp | 1 + src/USER-MANIFOLD/fix_nvt_manifold_rattle.cpp | 1 + src/read_data.cpp | 8 ++++++++ src/thermo.cpp | 15 ++++++++++++++- src/thermo.h | 1 + src/timer.cpp | 6 ++++++ src/timer.h | 3 +++ src/write_data.cpp | 8 ++++---- 9 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/RIGID/compute_rigid_local.cpp b/src/RIGID/compute_rigid_local.cpp index d26edb42ce..9760945192 100644 --- a/src/RIGID/compute_rigid_local.cpp +++ b/src/RIGID/compute_rigid_local.cpp @@ -87,9 +87,10 @@ ComputeRigidLocal::ComputeRigidLocal(LAMMPS *lmp, int narg, char **arg) : else error->all(FLERR,"Invalid keyword in compute rigid/local command"); } - nmax = 0; + ncount = nmax = 0; vector = NULL; array = NULL; + fixrigid = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp b/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp index f485c4b7b4..246f7cc66f 100644 --- a/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp +++ b/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp @@ -64,6 +64,7 @@ enum { CONST, EQUAL }; // For treating the variables. static const char* cite_fix_nve_manifold_rattle = "fix nve/manifold/rattle command:\n\n" + "@article{paquay-2016,\n" " author = {Paquay, Stefan and Kusters, Remy},\n" " doi = {10.1016/j.bpj.2016.02.017},\n" " issn = {0006-3495},\n" diff --git a/src/USER-MANIFOLD/fix_nvt_manifold_rattle.cpp b/src/USER-MANIFOLD/fix_nvt_manifold_rattle.cpp index c304a8718d..b0109d16f7 100644 --- a/src/USER-MANIFOLD/fix_nvt_manifold_rattle.cpp +++ b/src/USER-MANIFOLD/fix_nvt_manifold_rattle.cpp @@ -66,6 +66,7 @@ enum {NOBIAS,BIAS}; static const char* cite_fix_nvt_manifold_rattle = "fix nvt/manifold/rattle command:\n\n" + "@article{paquay-2016,\n" " author = {Paquay, Stefan and Kusters, Remy},\n" " doi = {10.1016/j.bpj.2016.02.017},\n" " issn = {0006-3495},\n" diff --git a/src/read_data.cpp b/src/read_data.cpp index debb7713c3..5e4cc2a00d 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -1705,6 +1705,8 @@ void ReadData::pairIJcoeffs() void ReadData::bondcoeffs() { + if (!nbondtypes) return; + char *next; char *buf = new char[nbondtypes*MAXLINE]; @@ -1727,6 +1729,8 @@ void ReadData::bondcoeffs() void ReadData::anglecoeffs(int which) { + if (!nangletypes) return; + char *next; char *buf = new char[nangletypes*MAXLINE]; @@ -1751,6 +1755,8 @@ void ReadData::anglecoeffs(int which) void ReadData::dihedralcoeffs(int which) { + if (!ndihedraltypes) return; + char *next; char *buf = new char[ndihedraltypes*MAXLINE]; @@ -1778,6 +1784,8 @@ void ReadData::dihedralcoeffs(int which) void ReadData::impropercoeffs(int which) { + if (!nimpropertypes) return; + char *next; char *buf = new char[nimpropertypes*MAXLINE]; diff --git a/src/thermo.cpp b/src/thermo.cpp index c610490f88..5127b91a89 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -55,7 +55,7 @@ using namespace MathConst; // customize a new keyword by adding to this list: -// step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain, part +// step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain, part, timeremain // atoms, temp, press, pe, ke, etotal, enthalpy // evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail // vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, xy, xz, yz, @@ -672,6 +672,8 @@ void Thermo::parse_fields(char *str) addfield("CPULeft",&Thermo::compute_cpuremain,FLOAT); } else if (strcmp(word,"part") == 0) { addfield("Part",&Thermo::compute_part,INT); + } else if (strcmp(word,"timeremain") == 0) { + addfield("TimeoutLeft",&Thermo::compute_timeremain,FLOAT); } else if (strcmp(word,"atoms") == 0) { addfield("Atoms",&Thermo::compute_atoms,BIGINT); @@ -1069,6 +1071,10 @@ int Thermo::evaluate_keyword(char *word, double *answer) compute_part(); dvalue = ivalue; + } else if (strcmp(word,"timeremain") == 0) { + compute_timeremain(); + + } else if (strcmp(word,"atoms") == 0) { compute_atoms(); dvalue = bivalue; @@ -1598,6 +1604,13 @@ void Thermo::compute_part() /* ---------------------------------------------------------------------- */ +void Thermo::compute_timeremain() +{ + dvalue = timer->get_timeout_remain(); +} + +/* ---------------------------------------------------------------------- */ + void Thermo::compute_atoms() { bivalue = atom->natoms; diff --git a/src/thermo.h b/src/thermo.h index cbdbd875ac..c1fd3b756c 100644 --- a/src/thermo.h +++ b/src/thermo.h @@ -127,6 +127,7 @@ class Thermo : protected Pointers { void compute_spcpu(); void compute_cpuremain(); void compute_part(); + void compute_timeremain(); void compute_atoms(); void compute_temp(); diff --git a/src/timer.cpp b/src/timer.cpp index 165b6de64b..0615651206 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -263,6 +263,12 @@ bool Timer::_check_timeout() } } +/* ---------------------------------------------------------------------- */ +double Timer::get_timeout_remain() +{ + return (_timeout < 0.0) ? 0.0 : _timeout + timeout_start - MPI_Wtime(); +} + /* ---------------------------------------------------------------------- modify parameters of the Timer class ------------------------------------------------------------------------- */ diff --git a/src/timer.h b/src/timer.h index aec6dd7fa9..903a182128 100644 --- a/src/timer.h +++ b/src/timer.h @@ -66,6 +66,9 @@ class Timer : protected Pointers { // trigger enforced timeout void force_timeout() { _timeout = 0.0; }; + // get remaining time in seconds. 0.0 if inactive, negative if expired + double get_timeout_remain(); + // print timeout message void print_timeout(FILE *); diff --git a/src/write_data.cpp b/src/write_data.cpp index 5a67c1081e..d8b951dd8c 100644 --- a/src/write_data.cpp +++ b/src/write_data.cpp @@ -286,19 +286,19 @@ void WriteData::force_fields() force->pair->write_data_all(fp); } } - if (force->bond && force->bond->writedata) { + if (force->bond && force->bond->writedata && atom->nbondtypes) { fprintf(fp,"\nBond Coeffs # %s\n\n", force->bond_style); force->bond->write_data(fp); } - if (force->angle && force->angle->writedata) { + if (force->angle && force->angle->writedata && atom->nangletypes) { fprintf(fp,"\nAngle Coeffs # %s\n\n", force->angle_style); force->angle->write_data(fp); } - if (force->dihedral && force->dihedral->writedata) { + if (force->dihedral && force->dihedral->writedata && atom->ndihedraltypes) { fprintf(fp,"\nDihedral Coeffs # %s\n\n", force->dihedral_style); force->dihedral->write_data(fp); } - if (force->improper && force->improper->writedata) { + if (force->improper && force->improper->writedata && atom->nimpropertypes) { fprintf(fp,"\nImproper Coeffs # %s\n\n", force->improper_style); force->improper->write_data(fp); } From 6f3ac03a0894fff4ee805ca8b655b57fafc2dff8 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:31:19 +0000 Subject: [PATCH 15/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15251 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/src/Section_intro.txt | 2 +- doc/src/accelerate_intel.txt | 617 ++++++++++++++++++++++------------- doc/src/molecule.txt | 15 +- doc/src/thermo_style.txt | 11 +- doc/src/timer.txt | 49 ++- 5 files changed, 438 insertions(+), 256 deletions(-) diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt index 81b85f1e87..aa31153386 100644 --- a/doc/src/Section_intro.txt +++ b/doc/src/Section_intro.txt @@ -487,7 +487,7 @@ LAMMPS. If you use LAMMPS results in your published work, please cite this paper and include a pointer to the "LAMMPS WWW Site"_lws (http://lammps.sandia.gov): -S. J. Plimpton, [Fast Parallel Algorithms for Short-Range Molecular +S. Plimpton, [Fast Parallel Algorithms for Short-Range Molecular Dynamics], J Comp Phys, 117, 1-19 (1995). Other papers describing specific algorithms used in LAMMPS are listed diff --git a/doc/src/accelerate_intel.txt b/doc/src/accelerate_intel.txt index 379758f71c..c97b19b67d 100644 --- a/doc/src/accelerate_intel.txt +++ b/doc/src/accelerate_intel.txt @@ -11,247 +11,399 @@ 5.3.2 USER-INTEL package :h4 -The USER-INTEL package was developed by Mike Brown at Intel +The USER-INTEL package is maintained by Mike Brown at Intel Corporation. It provides two methods for accelerating simulations, depending on the hardware you have. The first is acceleration on -Intel(R) CPUs by running in single, mixed, or double precision with -vectorization. The second is acceleration on Intel(R) Xeon Phi(TM) +Intel CPUs by running in single, mixed, or double precision with +vectorization. The second is acceleration on Intel Xeon Phi coprocessors via offloading neighbor list and non-bonded force calculations to the Phi. The same C++ code is used in both cases. When offloading to a coprocessor from a CPU, the same routine is run -twice, once on the CPU and once with an offload flag. +twice, once on the CPU and once with an offload flag. This allows +LAMMPS to run on the CPU cores and coprocessor cores simulataneously. -Note that the USER-INTEL package supports use of the Phi in "offload" -mode, not "native" mode like the "KOKKOS -package"_accelerate_kokkos.html. +[Currently Available USER-INTEL Styles:] -Also note that the USER-INTEL package can be used in tandem with the -"USER-OMP package"_accelerate_omp.html. This is useful when -offloading pair style computations to the Phi, so that other styles -not supported by the USER-INTEL package, e.g. bond, angle, dihedral, -improper, and long-range electrostatics, can run simultaneously in -threaded mode on the CPU cores. Since less MPI tasks than CPU cores -will typically be invoked when running with coprocessors, this enables -the extra CPU cores to be used for useful computation. +Angle Styles: charmm, harmonic :ulb,l +Bond Styles: fene, harmonic :l +Dihedral Styles: charmm, harmonic, opls :l +Fixes: nve, npt, nvt, nvt/sllod :l +Improper Styles: cvff, harmonic :l +Pair Styles: buck/coul/cut, buck/coul/long, buck, gayberne, +charmm/coul/long, lj/cut, lj/cut/coul/long, sw, tersoff :l +K-Space Styles: pppm :l,ule -As illustrated below, if LAMMPS is built with both the USER-INTEL and -USER-OMP packages, this dual mode of operation is made easier to use, -via the "-suffix hybrid intel omp" "command-line -switch"_Section_start.html#start_7 or the "suffix hybrid intel -omp"_suffix.html command. Both set a second-choice suffix to "omp" so -that styles from the USER-INTEL package will be used if available, -with styles from the USER-OMP package as a second choice. +[Speed-ups to expect:] -Here is a quick overview of how to use the USER-INTEL package for CPU -acceleration, assuming one or more 16-core nodes. More details -follow. +The speedups will depend on your simulation, the hardware, which +styles are used, the number of atoms, and the floating-point +precision mode. Performance improvements are shown compared to +LAMMPS {without using other acceleration packages} as these are +under active development (and subject to performance changes). The +measurements were performed using the input files available in +the src/USER-INTEL/TEST directory. These are scalable in size; the +results given are with 512K particles (524K for Liquid Crystal). +Most of the simulations are standard LAMMPS benchmarks (indicated +by the filename extension in parenthesis) with modifications to the +run length and to add a warmup run (for use with offload +benchmarks). -use an Intel compiler -use these CCFLAGS settings in Makefile.machine: -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits -use these LINKFLAGS settings in Makefile.machine: -fopenmp, -xHost -make yes-user-intel yes-user-omp # including user-omp is optional -make mpi # build with the USER-INTEL package, if settings (including compiler) added to Makefile.mpi -make intel_cpu # or Makefile.intel_cpu already has settings, uses Intel MPI wrapper -Make.py -v -p intel omp -intel cpu -a file mpich_icc # or one-line build via Make.py for MPICH -Make.py -v -p intel omp -intel cpu -a file ompi_icc # or for OpenMPI -Make.py -v -p intel omp -intel cpu -a file intel_cpu # or for Intel MPI wrapper :pre +:c,image(JPG/user_intel.png) -lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, no USER-OMP -mpirun -np 32 lmp_machine -sf intel -in in.script # 2 nodess, 16 MPI tasks/node, no threads, no USER-OMP -lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -pk omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, with USER-OMP -mpirun -np 32 -ppn 4 lmp_machine -sf hybrid intel omp -pk omp 4 -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task, with USER-OMP :pre +Results are speedups obtained on Intel Xeon E5-2697v4 processors +(code-named Broadwell) and Intel Xeon Phi 7250 processors +(code-named Knights Landing) with "18 Jun 2016" LAMMPS built with +Intel Parallel Studio 2016 update 3. Results are with 1 MPI task +per physical core. See {src/USER-INTEL/TEST/README} for the raw +simulation rates and instructions to reproduce. -Here is a quick overview of how to use the USER-INTEL package for the -same CPUs as above (16 cores/node), with an additional Xeon Phi(TM) -coprocessor per node. More details follow. +:line -Same as above for building, with these additions/changes: -add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in Makefile.machine -add the flag -offload to LINKFLAGS in Makefile.machine -for Make.py change "-intel cpu" to "-intel phi", and "file intel_cpu" to "file intel_phi" :pre +[Quick Start for Experienced Users:] -mpirun -np 32 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes, 16 MPI tasks/node, 240 total threads on coprocessor, no USER-OMP -mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, no USER-OMP -mpirun -np 32 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -pk omp 2 -in in.script # 4 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, with USER-OMP :pre +LAMMPS should be built with the USER-INTEL package installed. +Simulations should be run with 1 MPI task per physical {core}, +not {hardware thread}. + +For Intel Xeon CPUs: + +Edit src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi as necessary. :ulb,l +If using {kspace_style pppm} in the input script, add "neigh_modify binsize 3" and "kspace_modify diff ad" to the input script for better +performance. :l +"-pk intel 0 omp 2 -sf intel" added to LAMMPS command-line :l,ule + +For Intel Xeon Phi CPUs for simulations without {kspace_style +pppm} in the input script : + +Edit src/MAKE/OPTIONS/Makefile.knl as necessary. :ulb,l +Runs should be performed using MCDRAM. :l +"-pk intel 0 omp 2 -sf intel" {or} "-pk intel 0 omp 4 -sf intel" +should be added to the LAMMPS command-line. Choice for best +performance will depend on the simulation. :l,ule + +For Intel Xeon Phi CPUs for simulations with {kspace_style +pppm} in the input script: + +Edit src/MAKE/OPTIONS/Makefile.knl as necessary. :ulb,l +Runs should be performed using MCDRAM. :l +Add "neigh_modify binsize 3" to the input script for better +performance. :l +Add "kspace_modify diff ad" to the input script for better +performance. :l +export KMP_AFFINITY=none :l +"-pk intel 0 omp 3 lrt yes -sf intel" or "-pk intel 0 omp 1 lrt yes +-sf intel" added to LAMMPS command-line. Choice for best performance +will depend on the simulation. :l,ule + +For Intel Xeon Phi coprocessors (Offload): + +Edit src/MAKE/OPTIONS/Makefile.intel_coprocessor as necessary :ulb,l +"-pk intel N omp 1" added to command-line where N is the number of +coprocessors per node. :l,ule + +:line [Required hardware/software:] -Your compiler must support the OpenMP interface. Use of an Intel(R) -C++ compiler is recommended, but not required. However, g++ will not -recognize some of the settings listed above, so they cannot be used. -Optimizations for vectorization have only been tested with the -Intel(R) compiler. Use of other compilers may not result in -vectorization, or give poor performance. +In order to use offload to coprocessors, an Intel Xeon Phi +coprocessor and an Intel compiler are required. For this, the +recommended version of the Intel compiler is 14.0.1.106 or +versions 15.0.2.044 and higher. -The recommended version of the Intel(R) compiler is 14.0.1.106. -Versions 15.0.1.133 and later are also supported. If using Intel(R) -MPI, versions 15.0.2.044 and later are recommended. +Although any compiler can be used with the USER-INTEL pacakge, +currently, vectorization directives are disabled by default when +not using Intel compilers due to lack of standard support and +observations of decreased performance. The OpenMP standard now +supports directives for vectorization and we plan to transition the +code to this standard once it is available in most compilers. We +expect this to allow improved performance and support with other +compilers. -To use the offload option, you must have one or more Intel(R) Xeon -Phi(TM) coprocessors and use an Intel(R) C++ compiler. +For Intel Xeon Phi x200 series processors (code-named Knights +Landing), there are multiple configuration options for the hardware. +For best performance, we recommend that the MCDRAM is configured in +"Flat" mode and with the cluster mode set to "Quadrant" or "SNC4". +"Cache" mode can also be used, although the performance might be +slightly lower. + +[Notes about Simultaneous Multithreading:] + +Modern CPUs often support Simultaneous Multithreading (SMT). On +Intel processors, this is called Hyper-Threading (HT) technology. +SMT is hardware support for running multiple threads efficiently on +a single core. {Hardware threads} or {logical cores} are often used +to refer to the number of threads that are supported in hardware. +For example, the Intel Xeon E5-2697v4 processor is described +as having 36 cores and 72 threads. This means that 36 MPI processes +or OpenMP threads can run simultaneously on separate cores, but that +up to 72 MPI processes or OpenMP threads can be running on the CPU +without costly operating system context switches. + +Molecular dynamics simulations will often run faster when making use +of SMT. If a thread becomes stalled, for example because it is +waiting on data that has not yet arrived from memory, another thread +can start running so that the CPU pipeline is still being used +efficiently. Although benefits can be seen by launching a MPI task +for every hardware thread, for multinode simulations, we recommend +that OpenMP threads are used for SMT instead, either with the +USER-INTEL package, "USER-OMP package"_accelerate_omp.html", or +"KOKKOS package"_accelerate_kokkos.html. In the example above, up +to 36X speedups can be observed by using all 36 physical cores with +LAMMPS. By using all 72 hardware threads, an additional 10-30% +performance gain can be achieved. + +The BIOS on many platforms allows SMT to be disabled, however, we do +not recommend this on modern processors as there is little to no +benefit for any software package in most cases. The operating system +will report every hardware thread as a separate core allowing one to +determine the number of hardware threads available. On Linux systems, +this information can normally be obtained with: + +cat /proc/cpuinfo :pre [Building LAMMPS with the USER-INTEL package:] -The lines above illustrate how to include/build with the USER-INTEL -package, for either CPU or Phi support, in two steps, using the "make" -command. Or how to do it with one command via the src/Make.py script, -described in "Section 2.4"_Section_start.html#start_4 of the manual. -Type "Make.py -h" for help. Because the mechanism for specifing what -compiler to use (Intel in this case) is different for different MPI -wrappers, 3 versions of the Make.py command are shown. +The USER-INTEL package must be installed into the source directory: + +make yes-user-intel :pre + +Several example Makefiles for building with the Intel compiler are +included with LAMMPS in the src/MAKE/OPTIONS/ directory: + +Makefile.intel_cpu_intelmpi # Intel Compiler, Intel MPI, No Offload +Makefile.knl # Intel Compiler, Intel MPI, No Offload +Makefile.intel_cpu_mpich # Intel Compiler, MPICH, No Offload +Makefile.intel_cpu_openpmi # Intel Compiler, OpenMPI, No Offload +Makefile.intel_coprocessor # Intel Compiler, Intel MPI, Offload :pre + +Makefile.knl is identical to Makefile.intel_cpu_intelmpi except that +it explicitly specifies that vectorization should be for Intel +Xeon Phi x200 processors making it easier to cross-compile. For +users with recent installations of Intel Parallel Studio, the +process can be as simple as: + +make yes-user-intel +source /opt/intel/parallel_studio_xe_2016.3.067/psxevars.sh +# or psxevars.csh for C-shell +make intel_cpu_intelmpi :pre + +Alternatively, the build can be accomplished with the src/Make.py +script, described in "Section 2.4"_Section_start.html#start_4 of the +manual. Type "Make.py -h" for help. For an example: + +Make.py -v -p intel omp -intel cpu -a file intel_cpu_intelmpi :pre Note that if you build with support for a Phi coprocessor, the same binary can be used on nodes with or without coprocessors installed. However, if you do not have coprocessors on your system, building without offload support will produce a smaller binary. -If you also build with the USER-OMP package, you can use styles from -both packages, as described below. +The general requirements for Makefiles with the USER-INTEL package +are as follows. "-DLAMMPS_MEMALIGN=64" is required for CCFLAGS. When +using Intel compilers, "-restrict" is required and "-qopenmp" is +highly recommended for CCFLAGS and LINKFLAGS. LIB should include +"-ltbbmalloc". For builds supporting offload, "-DLMP_INTEL_OFFLOAD" +is required for CCFLAGS and "-qoffload" is required for LINKFLAGS. +Other recommended CCFLAG options for best performance are +"-O2 -fno-alias -ansi-alias -qoverride-limits fp-model fast=2 +-no-prec-div". The Make.py command will add all of these +automatically. -Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must -include "-fopenmp". Likewise, if you use an Intel compiler, the -CCFLAGS setting must include "-restrict". For Phi support, the -"-DLMP_INTEL_OFFLOAD" (CCFLAGS) and "-offload" (LINKFLAGS) settings -are required. The other settings listed above are optional, but will -typically improve performance. The Make.py command will add all of -these automatically. +NOTE: The vectorization and math capabilities can differ depending on +the CPU. For Intel compilers, the "-x" flag specifies the type of +processor for which to optimize. "-xHost" specifies that the compiler +should build for the processor used for compiling. For Intel Xeon Phi +x200 series processors, this option is "-xMIC-AVX512". For fourth +generation Intel Xeon (v4/Broadwell) processors, "-xCORE-AVX2" should +be used. For older Intel Xeon processors, "-xAVX" will perform best +in general for the different simulations in LAMMPS. The default +in most of the example Makefiles is to use "-xHost", however this +should not be used when cross-compiling. + +[Running LAMMPS with the USER-INTEL package:] -If you are compiling on the same architecture that will be used for -the runs, adding the flag {-xHost} to CCFLAGS enables vectorization -with the Intel(R) compiler. Otherwise, you must provide the correct -compute node architecture to the -x option (e.g. -xAVX). +Running LAMMPS with the USER-INTEL package is similar to normal use +with the exceptions that one should 1) specify that LAMMPS should use +the USER-INTEL package, 2) specify the number of OpenMP threads, and +3) optionally specify the specific LAMMPS styles that should use the +USER-INTEL package. 1) and 2) can be performed from the command-line +or by editing the input script. 3) requires editing the input script. +Advanced performance tuning options are also described below to get +the best performance. -Example machines makefiles Makefile.intel_cpu and Makefile.intel_phi -are included in the src/MAKE/OPTIONS directory with settings that -perform well with the Intel(R) compiler. The latter has support for -offload to Phi coprocessors; the former does not. - -[Run with the USER-INTEL package from the command line:] - -The mpirun or mpiexec command sets the total number of MPI tasks used -by LAMMPS (one or multiple per compute node) and the number of MPI -tasks used per node. E.g. the mpirun command in MPICH does this via -its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. - -If you compute (any portion of) pairwise interactions using USER-INTEL -pair styles on the CPU, or use USER-OMP styles on the CPU, you need to -choose how many OpenMP threads per MPI task to use. If both packages -are used, it must be done for both packages, and the same thread count -value should be used for both. Note that the product of MPI tasks * -threads/task should not exceed the physical number of cores (on a -node), otherwise performance will suffer. - -When using the USER-INTEL package for the Phi, you also need to -specify the number of coprocessor/node and optionally the number of -coprocessor threads per MPI task to use. Note that coprocessor -threads (which run on the coprocessor) are totally independent from -OpenMP threads (which run on the CPU). The default values for the -settings that affect coprocessor threads are typically fine, as -discussed below. - -As in the lines above, use the "-sf intel" or "-sf hybrid intel omp" -"command-line switch"_Section_start.html#start_7, which will -automatically append "intel" to styles that support it. In the second -case, "omp" will be appended if an "intel" style does not exist. - -Note that if either switch is used, it also invokes a default command: -"package intel 1"_package.html. If the "-sf hybrid intel omp" switch -is used, the default USER-OMP command "package omp 0"_package.html is -also invoked (if LAMMPS was built with USER-OMP). Both set the number -of OpenMP threads per MPI task via the OMP_NUM_THREADS environment -variable. The first command sets the number of Xeon Phi(TM) -coprocessors/node to 1 (ignored if USER-INTEL is built for CPU-only), -and the precision mode to "mixed" (default value). - -You can also use the "-pk intel Nphi" "command-line -switch"_Section_start.html#start_7 to explicitly set Nphi = # of Xeon -Phi(TM) coprocessors/node, as well as additional options. Nphi should -be >= 1 if LAMMPS was built with coprocessor support, otherswise Nphi -= 0 for a CPU-only build. All the available coprocessor threads on -each Phi will be divided among MPI tasks, unless the {tptask} option -of the "-pk intel" "command-line switch"_Section_start.html#start_7 is -used to limit the coprocessor threads per MPI task. See the "package -intel"_package.html command for details, including the default values -used for all its options if not specified, and how to set the number -of OpenMP threads via the OMP_NUM_THREADS environment variable if -desired. - -If LAMMPS was built with the USER-OMP package, you can also use the -"-pk omp Nt" "command-line switch"_Section_start.html#start_7 to -explicitly set Nt = # of OpenMP threads per MPI task to use, as well -as additional options. Nt should be the same threads per MPI task as -set for the USER-INTEL package, e.g. via the "-pk intel Nphi omp Nt" -command. Again, see the "package omp"_package.html command for -details, including the default values used for all its options if not -specified, and how to set the number of OpenMP threads via the -OMP_NUM_THREADS environment variable if desired. - -[Or run with the USER-INTEL package by editing an input script:] - -The discussion above for the mpirun/mpiexec command, MPI tasks/node, -OpenMP threads per MPI task, and coprocessor threads per MPI task is -the same. - -Use the "suffix intel"_suffix.html or "suffix hybrid intel -omp"_suffix.html commands, or you can explicitly add an "intel" or -"omp" suffix to individual styles in your input script, e.g. - -pair_style lj/cut/intel 2.5 :pre - -You must also use the "package intel"_package.html command, unless the -"-sf intel" or "-pk intel" "command-line -switches"_Section_start.html#start_7 were used. It specifies how many -coprocessors/node to use, as well as other OpenMP threading and -coprocessor options. The "package"_package.html doc page explains how -to set the number of OpenMP threads via an environment variable if -desired. - -If LAMMPS was also built with the USER-OMP package, you must also use -the "package omp"_package.html command to enable that package, unless -the "-sf hybrid intel omp" or "-pk omp" "command-line -switches"_Section_start.html#start_7 were used. It specifies how many -OpenMP threads per MPI task to use (should be same as the setting for -the USER-INTEL package), as well as other options. Its doc page -explains how to set the number of OpenMP threads via an environment -variable if desired. - -[Speed-ups to expect:] - -If LAMMPS was not built with coprocessor support (CPU only) when -including the USER-INTEL package, then acclerated styles will run on -the CPU using vectorization optimizations and the specified precision. -This may give a substantial speed-up for a pair style, particularly if -mixed or single precision is used. - -If LAMMPS was built with coproccesor support, the pair styles will run -on one or more Intel(R) Xeon Phi(TM) coprocessors (per node). The -performance of a Xeon Phi versus a multi-core CPU is a function of -your hardware, which pair style is used, the number of -atoms/coprocessor, and the precision used on the coprocessor (double, -single, mixed). - -See the "Benchmark page"_http://lammps.sandia.gov/bench.html of the -LAMMPS web site for performance of the USER-INTEL package on different -hardware. +When running on a single node (including runs using offload to a +coprocessor), best performance is normally obtained by using 1 MPI +task per physical core and additional OpenMP threads with SMT. For +Intel Xeon processors, 2 OpenMP threads should be used for SMT. +For Intel Xeon Phi CPUs, 2 or 4 OpenMP threads should be used +(best choice depends on the simulation). In cases where the user +specifies that LRT mode is used (described below), 1 or 3 OpenMP +threads should be used. For multi-node runs, using 1 MPI task per +physical core will often perform best, however, depending on the +machine and scale, users might get better performance by decreasing +the number of MPI tasks and using more OpenMP threads. For +performance, the product of the number of MPI tasks and OpenMP +threads should not exceed the number of available hardware threads in +almost all cases. NOTE: Setting core affinity is often used to pin MPI tasks and OpenMP threads to a core or group of cores so that memory access can be uniform. Unless disabled at build time, affinity for MPI tasks and OpenMP threads on the host (CPU) will be set by default on the host -when using offload to a coprocessor. In this case, it is unnecessary +{when using offload to a coprocessor}. In this case, it is unnecessary to use other methods to control affinity (e.g. taskset, numactl, -I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input script with -the {no_affinity} option to the "package intel"_package.html command -or by disabling the option at build time (by adding --DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your Makefile). -Disabling this option is not recommended, especially when running on a -machine with hyperthreading disabled. +I_MPI_PIN_DOMAIN, etc.). This can be disabled with the {no_affinity} +option to the "package intel"_package.html command or by disabling the +option at build time (by adding -DINTEL_OFFLOAD_NOAFFINITY to the +CCFLAGS line of your Makefile). Disabling this option is not +recommended, especially when running on a machine with Intel +Hyper-Threading technology disabled. -[Guidelines for best performance on an Intel(R) Xeon Phi(TM) -coprocessor:] +[Run with the USER-INTEL package from the command line:] + +To enable USER-INTEL optimizations for all available styles used in +the input script, the "-sf intel" +"command-line switch"_Section_start.html#start_7 can be used without +any requirement for editing the input script. This switch will +automatically append "intel" to styles that support it. It also +invokes a default command: "package intel 1"_package.html. This +package command is used to set options for the USER-INTEL package. +The default package command will specify that USER-INTEL calculations +are performed in mixed precision, that the number of OpenMP threads +is specified by the OMP_NUM_THREADS environment variable, and that +if coprocessors are present and the binary was built with offload +support, that 1 coprocessor per node will be used with automatic +balancing of work between the CPU and the coprocessor. + +You can specify different options for the USER-INTEL package by using +the "-pk intel Nphi" "command-line switch"_Section_start.html#start_7 +with keyword/value pairs as specified in the documentation. Here, +Nphi = # of Xeon Phi coprocessors/node (ignored without offload +support). Common options to the USER-INTEL package include {omp} to +override any OMP_NUM_THREADS setting and specify the number of OpenMP +threads, {mode} to set the floating-point precision mode, and +{lrt} to enable Long-Range Thread mode as described below. See the +"package intel"_package.html command for details, including the +default values used for all its options if not specified, and how to +set the number of OpenMP threads via the OMP_NUM_THREADS environment +variable if desired. + +Examples (see documentation for your MPI/Machine for differences in +launching MPI applications): + +mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script # 2 nodes, 36 MPI tasks/node, $OMP_NUM_THREADS OpenMP Threads +mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script -pk intel 0 omp 2 mode double # Don't use any coprocessors that might be available, use 2 OpenMP threads for each task, use double precision :pre + +[Or run with the USER-INTEL package by editing an input script:] + +As an alternative to adding command-line arguments, the input script +can be edited to enable the USER-INTEL package. This requires adding +the "package intel"_package.html command to the top of the input +script. For the second example above, this would be: + +package intel 0 omp 2 mode double :pre + +To enable the USER-INTEL package only for individual styles, you can +add an "intel" suffix to the individual style, e.g.: + +pair_style lj/cut/intel 2.5 :pre + +Alternatively, the "suffix intel"_suffix.html command can be added to +the input script to enable USER-INTEL styles for the commands that +follow in the input script. + +[Tuning for Performance:] + +NOTE: The USER-INTEL package will perform better with modifications +to the input script when "PPPM"_kspace_style.html is used: +"kspace_modify diff ad"_kspace_modify.html and "neigh_modify binsize +3"_neigh_modify.html should be added to the input script. + +Long-Range Thread (LRT) mode is an option to the "package +intel"_package.html command that can improve performance when using +"PPPM"_kspace_style.html for long-range electrostatics on processors +with SMT. It generates an extra pthread for each MPI task. The thread +is dedicated to performing some of the PPPM calculations and MPI +communications. On Intel Xeon Phi x200 series CPUs, this will likely +always improve performance, even on a single node. On Intel Xeon +processors, using this mode might result in better performance when +using multiple nodes, depending on the machine. To use this mode, +specify that the number of OpenMP threads is one less than would +normally be used for the run and add the "lrt yes" option to the "-pk" +command-line suffix or "package intel" command. For example, if a run +would normally perform best with "-pk intel 0 omp 4", instead use +"-pk intel 0 omp 3 lrt yes". When using LRT, you should set the +environment variable "KMP_AFFINITY=none". LRT mode is not supported +when using offload. + +Not all styles are supported in the USER-INTEL package. You can mix +the USER-INTEL package with styles from the "OPT"_accelerate_opt.html +package or the "USER-OMP package"_accelerate_omp.html". Of course, +this requires that these packages were installed at build time. This +can performed automatically by using "-sf hybrid intel opt" or +"-sf hybrid intel omp" command-line options. Alternatively, the "opt" +and "omp" suffixes can be appended manually in the input script. For +the latter, the "package omp"_package.html command must be in the +input script or the "-pk omp Nt" "command-line +switch"_Section_start.html#start_7 must be used where Nt is the +number of OpenMP threads. The number of OpenMP threads should not be +set differently for the different packages. Note that the "suffix +hybrid intel omp"_suffix.html command can also be used within the +input script to automatically append the "omp" suffix to styles when +USER-INTEL styles are not available. + +When running on many nodes, performance might be better when using +fewer OpenMP threads and more MPI tasks. This will depend on the +simulation and the machine. Using the "verlet/split"_run_style.html +run style might also give better performance for simulations with +"PPPM"_kspace_style.html electrostatics. Note that this is an +alternative to LRT mode and the two cannot be used together. + +Currently, when using Intel MPI with Intel Xeon Phi x200 series +CPUs, better performance might be obtained by setting the +environment variable "I_MPI_SHM_LMT=shm" for Linux kernels that do +not yet have full support for AVX-512. Runs on Intel Xeon Phi x200 +series processors will always perform better using MCDRAM. Please +consult your system documentation for the best approach to specify +that MPI runs are performed in MCDRAM. + +[Tuning for Offload Performance:] + +The default settings for offload should give good performance. + +When using LAMMPS with offload to Intel coprocessors, best performance +will typically be achieved with concurrent calculations performed on +both the CPU and the coprocessor. This is achieved by offloading only +a fraction of the neighbor and pair computations to the coprocessor or +using "hybrid"_pair_hybrid.html pair styles where only one style uses +the "intel" suffix. For simulations with long-range electrostatics or +bond, angle, dihedral, improper calculations, computation and data +transfer to the coprocessor will run concurrently with computations +and MPI communications for these calculations on the host CPU. This +is illustrated in the figure below for the rhodopsin protein benchmark +running on E5-2697v2 processors with a Intel Xeon Phi 7120p +coprocessor. In this plot, the vertical access is time and routines +running at the same time are running concurrently on both the host and +the coprocessor. + +:c,image(JPG/offload_knc.png) + +The fraction of the offloaded work is controlled by the {balance} +keyword in the "package intel"_package.html command. A balance of 0 +runs all calculations on the CPU. A balance of 1 runs all +supported calculations on the coprocessor. A balance of 0.5 runs half +of the calculations on the coprocessor. Setting the balance to -1 +(the default) will enable dynamic load balancing that continously +adjusts the fraction of offloaded work throughout the simulation. +Because data transfer cannot be timed, this option typically produces +results within 5 to 10 percent of the optimal fixed balance. + +If running short benchmark runs with dynamic load balancing, adding a +short warm-up run (10-20 steps) will allow the load-balancer to find a +near-optimal setting that will carry over to additional runs. The default for the "package intel"_package.html command is to have -all the MPI tasks on a given compute node use a single Xeon Phi(TM) +all the MPI tasks on a given compute node use a single Xeon Phi coprocessor. In general, running with a large number of MPI tasks on each node will perform best with offload. Each MPI task will automatically get affinity to a subset of the hardware threads @@ -261,50 +413,35 @@ with 60 cores available for offload and 4 hardware threads per core each MPI task to use a subset of 10 threads on the coprocessor. Fine tuning of the number of threads to use per MPI task or the number of threads to use per core can be accomplished with keyword settings of -the "package intel"_package.html command. :ulb,l +the "package intel"_package.html command. -If desired, only a fraction of the pair style computation can be -offloaded to the coprocessors. This is accomplished by using the -{balance} keyword in the "package intel"_package.html command. A -balance of 0 runs all calculations on the CPU. A balance of 1 runs -all calculations on the coprocessor. A balance of 0.5 runs half of -the calculations on the coprocessor. Setting the balance to -1 (the -default) will enable dynamic load balancing that continously adjusts -the fraction of offloaded work throughout the simulation. This option -typically produces results within 5 to 10 percent of the optimal fixed -balance. :l +The USER-INTEL package has two modes for deciding which atoms will be +handled by the coprocessor. This choice is controlled with the {ghost} +keyword of the "package intel"_package.html command. When set to 0, +ghost atoms (atoms at the borders between MPI tasks) are not offloaded +to the card. This allows for overlap of MPI communication of forces +with computation on the coprocessor when the "newton"_newton.html +setting is "on". The default is dependent on the style being used, +however, better performance may be achieved by setting this option +explictly. -When using offload with CPU hyperthreading disabled, it may help +When using offload with CPU Hyper-Threading disabled, it may help performance to use fewer MPI tasks and OpenMP threads than available cores. This is due to the fact that additional threads are generated -internally to handle the asynchronous offload tasks. :l +internally to handle the asynchronous offload tasks. -If running short benchmark runs with dynamic load balancing, adding a -short warm-up run (10-20 steps) will allow the load-balancer to find a -near-optimal setting that will carry over to additional runs. :l - -If pair computations are being offloaded to an Intel(R) Xeon Phi(TM) +If pair computations are being offloaded to an Intel Xeon Phi coprocessor, a diagnostic line is printed to the screen (not to the log file), during the setup phase of a run, indicating that offload mode is being used and indicating the number of coprocessor threads per MPI task. Additionally, an offload timing summary is printed at the end of each run. When offloading, the frequency for "atom sorting"_atom_modify.html is changed to 1 so that the per-atom data is -effectively sorted at every rebuild of the neighbor lists. :l - -For simulations with long-range electrostatics or bond, angle, -dihedral, improper calculations, computation and data transfer to the -coprocessor will run concurrently with computations and MPI -communications for these calculations on the host CPU. The USER-INTEL -package has two modes for deciding which atoms will be handled by the -coprocessor. This choice is controlled with the {ghost} keyword of -the "package intel"_package.html command. When set to 0, ghost atoms -(atoms at the borders between MPI tasks) are not offloaded to the -card. This allows for overlap of MPI communication of forces with -computation on the coprocessor when the "newton"_newton.html setting -is "on". The default is dependent on the style being used, however, -better performance may be achieved by setting this option -explictly. :l,ule +effectively sorted at every rebuild of the neighbor lists. All the +available coprocessor threads on each Phi will be divided among MPI +tasks, unless the {tptask} option of the "-pk intel" "command-line +switch"_Section_start.html#start_7 is used to limit the coprocessor +threads per MPI task. [Restrictions:] @@ -319,3 +456,15 @@ the pair styles in the USER-INTEL package currently support the "inner", "middle", "outer" options for rRESPA integration via the "run_style respa"_run_style.html command; only the "pair" option is supported. + +[References:] + +Brown, W.M., Carrillo, J.-M.Y., Mishra, B., Gavhane, N., Thakker, F.M., De Kraker, A.R., Yamada, M., Ang, J.A., Plimpton, S.J., “Optimizing Classical Molecular Dynamics in LAMMPS,” in Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition, J. Jeffers, J. Reinders, A. Sodani, Eds. Morgan Kaufmann. :ulb,l + +Brown, W. M., Semin, A., Hebenstreit, M., Khvostov, S., Raman, K., Plimpton, S.J. Increasing Molecular Dynamics Simulation Rates with an 8-Fold Increase in Electrical Power Efficiency. 2016 International Conference for High Performance Computing. In press. :l + +Brown, W.M., Carrillo, J.-M.Y., Gavhane, N., Thakkar, F.M., Plimpton, S.J. Optimizing Legacy Molecular Dynamics Software with Directive-Based Offload. Computer Physics Communications. 2015. 195: p. 95-101. :l,ule + + + + diff --git a/doc/src/molecule.txt b/doc/src/molecule.txt index 3d18d3c688..05971b5ddc 100644 --- a/doc/src/molecule.txt +++ b/doc/src/molecule.txt @@ -324,8 +324,11 @@ N1, N2, N3 are the number of 1-2, 1-3, 1-4 neighbors respectively of this atom within the topology of the molecule. See the "special_bonds"_special_bonds.html doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bonds -section must also appear. If this section is not specied, the -atoms in the molecule will have no special bonds. +section must also appear. + +As explained above, LAMMPS will auto-generate this information if this +section is not specified. If specified, this section will +override what would be auto-generated. :line @@ -342,9 +345,11 @@ values should be the 1-2 neighbors, the next N2 should be the 1-3 neighbors, the last N3 should be the 1-4 neighbors. No atom ID should appear more than once. See the "special_bonds"_special_bonds.html doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section -appears, the Special Bond Counts section must also appear. If this -section is not specied, the atoms in the molecule will have no special -bonds. +appears, the Special Bond Counts section must also appear. + +As explained above, LAMMPS will auto-generate this information if this +section is not specified. If specified, this section will override +what would be auto-generated. :line diff --git a/doc/src/thermo_style.txt b/doc/src/thermo_style.txt index 4bff3a75ac..597ad3c1be 100644 --- a/doc/src/thermo_style.txt +++ b/doc/src/thermo_style.txt @@ -18,7 +18,7 @@ args = list of arguments for a particular style :l {multi} args = none {custom} args = list of keywords possible keywords = step, elapsed, elaplong, dt, time, - cpu, tpcpu, spcpu, cpuremain, part, + cpu, tpcpu, spcpu, cpuremain, part, timeremain, atoms, temp, press, pe, ke, etotal, enthalpy, evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, @@ -41,6 +41,7 @@ args = list of arguments for a particular style :l spcpu = timesteps per CPU second cpuremain = estimated CPU time remaining in run part = which partition (0 to Npartition-1) this is + timeremain = remaining time in seconds on timer timeout. atoms = # of atoms temp = temperature press = pressure @@ -256,6 +257,14 @@ a filename for output specific to this partition. See "Section_start 7"_Section_start.html#start_7 of the manual for details on running in multi-partition mode. +The {timeremain} keyword returns the remaining seconds when a +timeout has been configured via the "timer timeout"_timer.html command. +If the timeout timer is inactive, the value of this keyword is 0.0 and +if the timer is expired, it is negative. This allows for example to exit +loops cleanly, if the timeout is expired with: + +if "$(timeremain) < 0.0" then "quit 0" :pre + The {fmax} and {fnorm} keywords are useful for monitoring the progress of an "energy minimization"_minimize.html. The {fmax} keyword calculates the maximum force in any dimension on any atom in the diff --git a/doc/src/timer.txt b/doc/src/timer.txt index 36d8c61940..201ef12df1 100644 --- a/doc/src/timer.txt +++ b/doc/src/timer.txt @@ -31,6 +31,9 @@ timer loop :pre [Description:] Select the level of detail at which LAMMPS performs its CPU timings. +Multiple keywords can be specified with the {timer} command. For +keywords that are mutually exclusive, the last one specified takes +effect. During a simulation run LAMMPS collects information about how much time is spent in different sections of the code and thus can provide @@ -54,17 +57,37 @@ slow down the simulation. Using the {nosync} setting (which is the default) turns off this synchronization. With the {timeout} keyword a walltime limit can be imposed that -affects the "run"_run.html and "minimize"_minimize.html commands. If -the time limit is reached, the run or energy minimization will exit on -the next step or iteration that is a multiple of the {Ncheck} value -specified with the {every} keyword. All subsequent run or minimize -commands in the input script will be skipped until the timeout is -reset or turned off by a new {timer} command. The timeout {elapse} -value can be specified as {off} or {unlimited} to impose no timeout -condition (which is the default). The {elapse} setting can be -specified as a single number for seconds, two numbers separated by a -colon (MM:SS) for minutes and seconds, or as three numbers separated -by colons for hours, minutes, and seconds. +affects the "run"_run.html and "minimize"_minimize.html commands. +This can be convenient when runs have to confirm to time limits, +e.g. when running under a batch system and you want to maximize +the utilization of the batch time slot, especially when the time +per timestep varies and is thus difficult to predict how many +steps a simulation can perform, or for difficult to converge +minimizations. The timeout {elapse} value should be somewhat smaller +than the time requested from the batch system, as there is usually +some overhead to launch jobs, and it may be advisable to write +out a restart after terminating a run due to a timeout. + +The timeout timer starts when the command is issued. When the time +limit is reached, the run or energy minimization will exit on the +next step or iteration that is a multiple of the {Ncheck} value +which can be set with the {every} keyword. Default is checking +every 10 steps. After the timer timeout has expired all subsequent +run or minimize commands in the input script will be skipped. +The remaining time or timer status can be accessed with the +"thermo"_thermo_style.html variable {timeremain}, which will be +zero, if the timeout is inactive (default setting), it will be +negative, if the timeout time is expired and positive if there +is time remaining and in this case the value of the variable are +the number of seconds remaining. + +When the {timeout} key word is used a second time, the timer is +restarted with a new time limit. The timeout {elapse} value can +be specified as {off} or {unlimited} to impose a no timeout condition +(which is the default). The {elapse} setting can be specified as +a single number for seconds, two numbers separated by a colon (MM:SS) +for minutes and seconds, or as three numbers separated by colons for +hours, minutes, and seconds (H:MM:SS). The {every} keyword sets how frequently during a run or energy minimization the wall clock will be checked. This check count applies @@ -74,10 +97,6 @@ can slow a calculation down. Checking too infrequently can make the timeout measurement less accurate, with the run being stopped later than desired. -Multiple keywords can be specified with the {timer} command. For -keywords that are mutually exclusive, the last one specified takes -effect. - NOTE: Using the {full} and {sync} options provides the most detailed and accurate timing information, but can also have a negative performance impact due to the overhead of the many required system From 2a1b47172d4726f803eea17b0a6eb82e73425aa0 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:31:41 +0000 Subject: [PATCH 16/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15252 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/html/Section_intro.html | 2 +- doc/html/_sources/Section_intro.txt | 2 +- doc/html/_sources/accelerate_intel.txt | 652 +++++++++++++++---------- doc/html/_sources/molecule.txt | 15 +- doc/html/_sources/thermo_style.txt | 13 +- doc/html/_sources/timer.txt | 49 +- doc/html/accelerate_intel.html | 578 +++++++++++++--------- doc/html/molecule.html | 13 +- doc/html/searchindex.js | 2 +- doc/html/thermo_style.html | 11 +- doc/html/timer.html | 48 +- 11 files changed, 877 insertions(+), 508 deletions(-) diff --git a/doc/html/Section_intro.html b/doc/html/Section_intro.html index 8be864976a..7c6a5c2f0a 100644 --- a/doc/html/Section_intro.html +++ b/doc/html/Section_intro.html @@ -569,7 +569,7 @@ Hierarchical Modeling”.

LAMMPS. If you use LAMMPS results in your published work, please cite this paper and include a pointer to the LAMMPS WWW Site (http://lammps.sandia.gov):

-

S. J. Plimpton, Fast Parallel Algorithms for Short-Range Molecular +

S. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995).

Other papers describing specific algorithms used in LAMMPS are listed under the Citing LAMMPS link of diff --git a/doc/html/_sources/Section_intro.txt b/doc/html/_sources/Section_intro.txt index 7a583e4f3d..2279a01ab8 100644 --- a/doc/html/_sources/Section_intro.txt +++ b/doc/html/_sources/Section_intro.txt @@ -536,7 +536,7 @@ LAMMPS. If you use LAMMPS results in your published work, please cite this paper and include a pointer to the `LAMMPS WWW Site `_ (http://lammps.sandia.gov): -S. J. Plimpton, **Fast Parallel Algorithms for Short-Range Molecular +S. Plimpton, **Fast Parallel Algorithms for Short-Range Molecular Dynamics**\ , J Comp Phys, 117, 1-19 (1995). Other papers describing specific algorithms used in LAMMPS are listed diff --git a/doc/html/_sources/accelerate_intel.txt b/doc/html/_sources/accelerate_intel.txt index 680a1a4e92..c8bee2877e 100644 --- a/doc/html/_sources/accelerate_intel.txt +++ b/doc/html/_sources/accelerate_intel.txt @@ -3,230 +3,252 @@ 5.USER-INTEL package -------------------- -The USER-INTEL package was developed by Mike Brown at Intel +The USER-INTEL package is maintained by Mike Brown at Intel Corporation. It provides two methods for accelerating simulations, depending on the hardware you have. The first is acceleration on -Intel(R) CPUs by running in single, mixed, or double precision with -vectorization. The second is acceleration on Intel(R) Xeon Phi(TM) +Intel CPUs by running in single, mixed, or double precision with +vectorization. The second is acceleration on Intel Xeon Phi coprocessors via offloading neighbor list and non-bonded force calculations to the Phi. The same C++ code is used in both cases. When offloading to a coprocessor from a CPU, the same routine is run -twice, once on the CPU and once with an offload flag. +twice, once on the CPU and once with an offload flag. This allows +LAMMPS to run on the CPU cores and coprocessor cores simulataneously. -Note that the USER-INTEL package supports use of the Phi in "offload" -mode, not "native" mode like the :doc:`KOKKOS package `. +**Currently Available USER-INTEL Styles:** -Also note that the USER-INTEL package can be used in tandem with the -:doc:`USER-OMP package `. This is useful when -offloading pair style computations to the Phi, so that other styles -not supported by the USER-INTEL package, e.g. bond, angle, dihedral, -improper, and long-range electrostatics, can run simultaneously in -threaded mode on the CPU cores. Since less MPI tasks than CPU cores -will typically be invoked when running with coprocessors, this enables -the extra CPU cores to be used for useful computation. +* Angle Styles: charmm, harmonic +* Bond Styles: fene, harmonic +* Dihedral Styles: charmm, harmonic, opls +* Fixes: nve, npt, nvt, nvt/sllod +* Improper Styles: cvff, harmonic +* Pair Styles: buck/coul/cut, buck/coul/long, buck, gayberne, + charmm/coul/long, lj/cut, lj/cut/coul/long, sw, tersoff +* K-Space Styles: pppm +**Speed-ups to expect:** -As illustrated below, if LAMMPS is built with both the USER-INTEL and -USER-OMP packages, this dual mode of operation is made easier to use, -via the "-suffix hybrid intel omp" :ref:`command-line switch ` or the :doc:`suffix hybrid intel omp ` command. Both set a second-choice suffix to "omp" so -that styles from the USER-INTEL package will be used if available, -with styles from the USER-OMP package as a second choice. +The speedups will depend on your simulation, the hardware, which +styles are used, the number of atoms, and the floating-point +precision mode. Performance improvements are shown compared to +LAMMPS *without using other acceleration packages* as these are +under active development (and subject to performance changes). The +measurements were performed using the input files available in +the src/USER-INTEL/TEST directory. These are scalable in size; the +results given are with 512K particles (524K for Liquid Crystal). +Most of the simulations are standard LAMMPS benchmarks (indicated +by the filename extension in parenthesis) with modifications to the +run length and to add a warmup run (for use with offload +benchmarks). -Here is a quick overview of how to use the USER-INTEL package for CPU -acceleration, assuming one or more 16-core nodes. More details -follow. +.. image:: JPG/user_intel.png + :align: center -.. parsed-literal:: +Results are speedups obtained on Intel Xeon E5-2697v4 processors +(code-named Broadwell) and Intel Xeon Phi 7250 processors +(code-named Knights Landing) with "18 Jun 2016" LAMMPS built with +Intel Parallel Studio 2016 update 3. Results are with 1 MPI task +per physical core. See *src/USER-INTEL/TEST/README* for the raw +simulation rates and instructions to reproduce. - use an Intel compiler - use these CCFLAGS settings in Makefile.machine: -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits - use these LINKFLAGS settings in Makefile.machine: -fopenmp, -xHost - make yes-user-intel yes-user-omp # including user-omp is optional - make mpi # build with the USER-INTEL package, if settings (including compiler) added to Makefile.mpi - make intel_cpu # or Makefile.intel_cpu already has settings, uses Intel MPI wrapper - Make.py -v -p intel omp -intel cpu -a file mpich_icc # or one-line build via Make.py for MPICH - Make.py -v -p intel omp -intel cpu -a file ompi_icc # or for OpenMPI - Make.py -v -p intel omp -intel cpu -a file intel_cpu # or for Intel MPI wrapper -.. parsed-literal:: +---------- - lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, no USER-OMP - mpirun -np 32 lmp_machine -sf intel -in in.script # 2 nodess, 16 MPI tasks/node, no threads, no USER-OMP - lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -pk omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, with USER-OMP - mpirun -np 32 -ppn 4 lmp_machine -sf hybrid intel omp -pk omp 4 -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task, with USER-OMP -Here is a quick overview of how to use the USER-INTEL package for the -same CPUs as above (16 cores/node), with an additional Xeon Phi(TM) -coprocessor per node. More details follow. +**Quick Start for Experienced Users:** -.. parsed-literal:: +LAMMPS should be built with the USER-INTEL package installed. +Simulations should be run with 1 MPI task per physical *core*\ , +not *hardware thread*\ . - Same as above for building, with these additions/changes: - add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in Makefile.machine - add the flag -offload to LINKFLAGS in Makefile.machine - for Make.py change "-intel cpu" to "-intel phi", and "file intel_cpu" to "file intel_phi" +For Intel Xeon CPUs: -.. parsed-literal:: +* Edit src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi as necessary. +* If using *kspace_style pppm* in the input script, add "neigh_modify binsize 3" and "kspace_modify diff ad" to the input script for better + performance. +* "-pk intel 0 omp 2 -sf intel" added to LAMMPS command-line +For Intel Xeon Phi CPUs for simulations without *kspace_style +pppm* in the input script + +* Edit src/MAKE/OPTIONS/Makefile.knl as necessary. +* Runs should be performed using MCDRAM. +* "-pk intel 0 omp 2 -sf intel" *or* "-pk intel 0 omp 4 -sf intel" + should be added to the LAMMPS command-line. Choice for best + performance will depend on the simulation. +For Intel Xeon Phi CPUs for simulations with *kspace_style +pppm* in the input script: + +* Edit src/MAKE/OPTIONS/Makefile.knl as necessary. +* Runs should be performed using MCDRAM. +* Add "neigh_modify binsize 3" to the input script for better + performance. +* Add "kspace_modify diff ad" to the input script for better + performance. +* export KMP_AFFINITY=none +* "-pk intel 0 omp 3 lrt yes -sf intel" or "-pk intel 0 omp 1 lrt yes + -sf intel" added to LAMMPS command-line. Choice for best performance + will depend on the simulation. +For Intel Xeon Phi coprocessors (Offload): + +* Edit src/MAKE/OPTIONS/Makefile.intel_coprocessor as necessary +* "-pk intel N omp 1" added to command-line where N is the number of + coprocessors per node. + +---------- - mpirun -np 32 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes, 16 MPI tasks/node, 240 total threads on coprocessor, no USER-OMP - mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, no USER-OMP - mpirun -np 32 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -pk omp 2 -in in.script # 4 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, with USER-OMP **Required hardware/software:** -Your compiler must support the OpenMP interface. Use of an Intel(R) -C++ compiler is recommended, but not required. However, g++ will not -recognize some of the settings listed above, so they cannot be used. -Optimizations for vectorization have only been tested with the -Intel(R) compiler. Use of other compilers may not result in -vectorization, or give poor performance. +In order to use offload to coprocessors, an Intel Xeon Phi +coprocessor and an Intel compiler are required. For this, the +recommended version of the Intel compiler is 14.0.1.106 or +versions 15.0.2.044 and higher. -The recommended version of the Intel(R) compiler is 14.0.1.106. -Versions 15.0.1.133 and later are also supported. If using Intel(R) -MPI, versions 15.0.2.044 and later are recommended. +Although any compiler can be used with the USER-INTEL pacakge, +currently, vectorization directives are disabled by default when +not using Intel compilers due to lack of standard support and +observations of decreased performance. The OpenMP standard now +supports directives for vectorization and we plan to transition the +code to this standard once it is available in most compilers. We +expect this to allow improved performance and support with other +compilers. -To use the offload option, you must have one or more Intel(R) Xeon -Phi(TM) coprocessors and use an Intel(R) C++ compiler. +For Intel Xeon Phi x200 series processors (code-named Knights +Landing), there are multiple configuration options for the hardware. +For best performance, we recommend that the MCDRAM is configured in +"Flat" mode and with the cluster mode set to "Quadrant" or "SNC4". +"Cache" mode can also be used, although the performance might be +slightly lower. + +**Notes about Simultaneous Multithreading:** + +Modern CPUs often support Simultaneous Multithreading (SMT). On +Intel processors, this is called Hyper-Threading (HT) technology. +SMT is hardware support for running multiple threads efficiently on +a single core. *Hardware threads* or *logical cores* are often used +to refer to the number of threads that are supported in hardware. +For example, the Intel Xeon E5-2697v4 processor is described +as having 36 cores and 72 threads. This means that 36 MPI processes +or OpenMP threads can run simultaneously on separate cores, but that +up to 72 MPI processes or OpenMP threads can be running on the CPU +without costly operating system context switches. + +Molecular dynamics simulations will often run faster when making use +of SMT. If a thread becomes stalled, for example because it is +waiting on data that has not yet arrived from memory, another thread +can start running so that the CPU pipeline is still being used +efficiently. Although benefits can be seen by launching a MPI task +for every hardware thread, for multinode simulations, we recommend +that OpenMP threads are used for SMT instead, either with the +USER-INTEL package, `USER-OMP package `_, or +:doc:`KOKKOS package `. In the example above, up +to 36X speedups can be observed by using all 36 physical cores with +LAMMPS. By using all 72 hardware threads, an additional 10-30% +performance gain can be achieved. + +The BIOS on many platforms allows SMT to be disabled, however, we do +not recommend this on modern processors as there is little to no +benefit for any software package in most cases. The operating system +will report every hardware thread as a separate core allowing one to +determine the number of hardware threads available. On Linux systems, +this information can normally be obtained with: + +.. parsed-literal:: + + cat /proc/cpuinfo **Building LAMMPS with the USER-INTEL package:** -The lines above illustrate how to include/build with the USER-INTEL -package, for either CPU or Phi support, in two steps, using the "make" -command. Or how to do it with one command via the src/Make.py script, -described in :ref:`Section 2.4 ` of the manual. -Type "Make.py -h" for help. Because the mechanism for specifing what -compiler to use (Intel in this case) is different for different MPI -wrappers, 3 versions of the Make.py command are shown. +The USER-INTEL package must be installed into the source directory: + +.. parsed-literal:: + + make yes-user-intel + +Several example Makefiles for building with the Intel compiler are +included with LAMMPS in the src/MAKE/OPTIONS/ directory: + +.. parsed-literal:: + + Makefile.intel_cpu_intelmpi # Intel Compiler, Intel MPI, No Offload + Makefile.knl # Intel Compiler, Intel MPI, No Offload + Makefile.intel_cpu_mpich # Intel Compiler, MPICH, No Offload + Makefile.intel_cpu_openpmi # Intel Compiler, OpenMPI, No Offload + Makefile.intel_coprocessor # Intel Compiler, Intel MPI, Offload + +Makefile.knl is identical to Makefile.intel_cpu_intelmpi except that +it explicitly specifies that vectorization should be for Intel +Xeon Phi x200 processors making it easier to cross-compile. For +users with recent installations of Intel Parallel Studio, the +process can be as simple as: + +.. parsed-literal:: + + make yes-user-intel + source /opt/intel/parallel_studio_xe_2016.3.067/psxevars.sh + # or psxevars.csh for C-shell + make intel_cpu_intelmpi + +Alternatively, the build can be accomplished with the src/Make.py +script, described in :ref:`Section 2.4 ` of the +manual. Type "Make.py -h" for help. For an example: + +.. parsed-literal:: + + Make.py -v -p intel omp -intel cpu -a file intel_cpu_intelmpi Note that if you build with support for a Phi coprocessor, the same binary can be used on nodes with or without coprocessors installed. However, if you do not have coprocessors on your system, building without offload support will produce a smaller binary. -If you also build with the USER-OMP package, you can use styles from -both packages, as described below. +The general requirements for Makefiles with the USER-INTEL package +are as follows. "-DLAMMPS_MEMALIGN=64" is required for CCFLAGS. When +using Intel compilers, "-restrict" is required and "-qopenmp" is +highly recommended for CCFLAGS and LINKFLAGS. LIB should include +"-ltbbmalloc". For builds supporting offload, "-DLMP_INTEL_OFFLOAD" +is required for CCFLAGS and "-qoffload" is required for LINKFLAGS. +Other recommended CCFLAG options for best performance are +"-O2 -fno-alias -ansi-alias -qoverride-limits fp-model fast=2 +-no-prec-div". The Make.py command will add all of these +automatically. -Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must -include "-fopenmp". Likewise, if you use an Intel compiler, the -CCFLAGS setting must include "-restrict". For Phi support, the -"-DLMP_INTEL_OFFLOAD" (CCFLAGS) and "-offload" (LINKFLAGS) settings -are required. The other settings listed above are optional, but will -typically improve performance. The Make.py command will add all of -these automatically. +.. note:: -If you are compiling on the same architecture that will be used for -the runs, adding the flag *-xHost* to CCFLAGS enables vectorization -with the Intel(R) compiler. Otherwise, you must provide the correct -compute node architecture to the -x option (e.g. -xAVX). + The vectorization and math capabilities can differ depending on + the CPU. For Intel compilers, the "-x" flag specifies the type of + processor for which to optimize. "-xHost" specifies that the compiler + should build for the processor used for compiling. For Intel Xeon Phi + x200 series processors, this option is "-xMIC-AVX512". For fourth + generation Intel Xeon (v4/Broadwell) processors, "-xCORE-AVX2" should + be used. For older Intel Xeon processors, "-xAVX" will perform best + in general for the different simulations in LAMMPS. The default + in most of the example Makefiles is to use "-xHost", however this + should not be used when cross-compiling. -Example machines makefiles Makefile.intel_cpu and Makefile.intel_phi -are included in the src/MAKE/OPTIONS directory with settings that -perform well with the Intel(R) compiler. The latter has support for -offload to Phi coprocessors; the former does not. +**Running LAMMPS with the USER-INTEL package:** -**Run with the USER-INTEL package from the command line:** +Running LAMMPS with the USER-INTEL package is similar to normal use +with the exceptions that one should 1) specify that LAMMPS should use +the USER-INTEL package, 2) specify the number of OpenMP threads, and +3) optionally specify the specific LAMMPS styles that should use the +USER-INTEL package. 1) and 2) can be performed from the command-line +or by editing the input script. 3) requires editing the input script. +Advanced performance tuning options are also described below to get +the best performance. -The mpirun or mpiexec command sets the total number of MPI tasks used -by LAMMPS (one or multiple per compute node) and the number of MPI -tasks used per node. E.g. the mpirun command in MPICH does this via -its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. - -If you compute (any portion of) pairwise interactions using USER-INTEL -pair styles on the CPU, or use USER-OMP styles on the CPU, you need to -choose how many OpenMP threads per MPI task to use. If both packages -are used, it must be done for both packages, and the same thread count -value should be used for both. Note that the product of MPI tasks * -threads/task should not exceed the physical number of cores (on a -node), otherwise performance will suffer. - -When using the USER-INTEL package for the Phi, you also need to -specify the number of coprocessor/node and optionally the number of -coprocessor threads per MPI task to use. Note that coprocessor -threads (which run on the coprocessor) are totally independent from -OpenMP threads (which run on the CPU). The default values for the -settings that affect coprocessor threads are typically fine, as -discussed below. - -As in the lines above, use the "-sf intel" or "-sf hybrid intel omp" -:ref:`command-line switch `, which will -automatically append "intel" to styles that support it. In the second -case, "omp" will be appended if an "intel" style does not exist. - -Note that if either switch is used, it also invokes a default command: -:doc:`package intel 1 `. If the "-sf hybrid intel omp" switch -is used, the default USER-OMP command :doc:`package omp 0 ` is -also invoked (if LAMMPS was built with USER-OMP). Both set the number -of OpenMP threads per MPI task via the OMP_NUM_THREADS environment -variable. The first command sets the number of Xeon Phi(TM) -coprocessors/node to 1 (ignored if USER-INTEL is built for CPU-only), -and the precision mode to "mixed" (default value). - -You can also use the "-pk intel Nphi" :ref:`command-line switch ` to explicitly set Nphi = # of Xeon -Phi(TM) coprocessors/node, as well as additional options. Nphi should -be >= 1 if LAMMPS was built with coprocessor support, otherswise Nphi -= 0 for a CPU-only build. All the available coprocessor threads on -each Phi will be divided among MPI tasks, unless the *tptask* option -of the "-pk intel" :ref:`command-line switch ` is -used to limit the coprocessor threads per MPI task. See the :doc:`package intel ` command for details, including the default values -used for all its options if not specified, and how to set the number -of OpenMP threads via the OMP_NUM_THREADS environment variable if -desired. - -If LAMMPS was built with the USER-OMP package, you can also use the -"-pk omp Nt" :ref:`command-line switch ` to -explicitly set Nt = # of OpenMP threads per MPI task to use, as well -as additional options. Nt should be the same threads per MPI task as -set for the USER-INTEL package, e.g. via the "-pk intel Nphi omp Nt" -command. Again, see the :doc:`package omp ` command for -details, including the default values used for all its options if not -specified, and how to set the number of OpenMP threads via the -OMP_NUM_THREADS environment variable if desired. - -**Or run with the USER-INTEL package by editing an input script:** - -The discussion above for the mpirun/mpiexec command, MPI tasks/node, -OpenMP threads per MPI task, and coprocessor threads per MPI task is -the same. - -Use the :doc:`suffix intel ` or :doc:`suffix hybrid intel omp ` commands, or you can explicitly add an "intel" or -"omp" suffix to individual styles in your input script, e.g. - -.. parsed-literal:: - - pair_style lj/cut/intel 2.5 - -You must also use the :doc:`package intel ` command, unless the -"-sf intel" or "-pk intel" :ref:`command-line switches ` were used. It specifies how many -coprocessors/node to use, as well as other OpenMP threading and -coprocessor options. The :doc:`package ` doc page explains how -to set the number of OpenMP threads via an environment variable if -desired. - -If LAMMPS was also built with the USER-OMP package, you must also use -the :doc:`package omp ` command to enable that package, unless -the "-sf hybrid intel omp" or "-pk omp" :ref:`command-line switches ` were used. It specifies how many -OpenMP threads per MPI task to use (should be same as the setting for -the USER-INTEL package), as well as other options. Its doc page -explains how to set the number of OpenMP threads via an environment -variable if desired. - -**Speed-ups to expect:** - -If LAMMPS was not built with coprocessor support (CPU only) when -including the USER-INTEL package, then acclerated styles will run on -the CPU using vectorization optimizations and the specified precision. -This may give a substantial speed-up for a pair style, particularly if -mixed or single precision is used. - -If LAMMPS was built with coproccesor support, the pair styles will run -on one or more Intel(R) Xeon Phi(TM) coprocessors (per node). The -performance of a Xeon Phi versus a multi-core CPU is a function of -your hardware, which pair style is used, the number of -atoms/coprocessor, and the precision used on the coprocessor (double, -single, mixed). - -See the `Benchmark page `_ of the -LAMMPS web site for performance of the USER-INTEL package on different -hardware. +When running on a single node (including runs using offload to a +coprocessor), best performance is normally obtained by using 1 MPI +task per physical core and additional OpenMP threads with SMT. For +Intel Xeon processors, 2 OpenMP threads should be used for SMT. +For Intel Xeon Phi CPUs, 2 or 4 OpenMP threads should be used +(best choice depends on the simulation). In cases where the user +specifies that LRT mode is used (described below), 1 or 3 OpenMP +threads should be used. For multi-node runs, using 1 MPI task per +physical core will often perform best, however, depending on the +machine and scale, users might get better performance by decreasing +the number of MPI tasks and using more OpenMP threads. For +performance, the product of the number of MPI tasks and OpenMP +threads should not exceed the number of available hardware threads in +almost all cases. .. note:: @@ -234,67 +256,202 @@ hardware. threads to a core or group of cores so that memory access can be uniform. Unless disabled at build time, affinity for MPI tasks and OpenMP threads on the host (CPU) will be set by default on the host - when using offload to a coprocessor. In this case, it is unnecessary + *when using offload to a coprocessor*\ . In this case, it is unnecessary to use other methods to control affinity (e.g. taskset, numactl, - I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input script with - the *no_affinity* option to the :doc:`package intel ` command - or by disabling the option at build time (by adding - -DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your Makefile). - Disabling this option is not recommended, especially when running on a - machine with hyperthreading disabled. + I_MPI_PIN_DOMAIN, etc.). This can be disabled with the *no_affinity* + option to the :doc:`package intel ` command or by disabling the + option at build time (by adding -DINTEL_OFFLOAD_NOAFFINITY to the + CCFLAGS line of your Makefile). Disabling this option is not + recommended, especially when running on a machine with Intel + Hyper-Threading technology disabled. -**Guidelines for best performance on an Intel(R) Xeon Phi(TM) -coprocessor:** +**Run with the USER-INTEL package from the command line:** + +To enable USER-INTEL optimizations for all available styles used in +the input script, the "-sf intel" +:ref:`command-line switch ` can be used without +any requirement for editing the input script. This switch will +automatically append "intel" to styles that support it. It also +invokes a default command: :doc:`package intel 1 `. This +package command is used to set options for the USER-INTEL package. +The default package command will specify that USER-INTEL calculations +are performed in mixed precision, that the number of OpenMP threads +is specified by the OMP_NUM_THREADS environment variable, and that +if coprocessors are present and the binary was built with offload +support, that 1 coprocessor per node will be used with automatic +balancing of work between the CPU and the coprocessor. + +You can specify different options for the USER-INTEL package by using +the "-pk intel Nphi" :ref:`command-line switch ` +with keyword/value pairs as specified in the documentation. Here, +Nphi = # of Xeon Phi coprocessors/node (ignored without offload +support). Common options to the USER-INTEL package include *omp* to +override any OMP_NUM_THREADS setting and specify the number of OpenMP +threads, *mode* to set the floating-point precision mode, and +*lrt* to enable Long-Range Thread mode as described below. See the +:doc:`package intel ` command for details, including the +default values used for all its options if not specified, and how to +set the number of OpenMP threads via the OMP_NUM_THREADS environment +variable if desired. + +Examples (see documentation for your MPI/Machine for differences in +launching MPI applications): + +.. parsed-literal:: + + mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script # 2 nodes, 36 MPI tasks/node, $OMP_NUM_THREADS OpenMP Threads + mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script -pk intel 0 omp 2 mode double # Don't use any coprocessors that might be available, use 2 OpenMP threads for each task, use double precision + +**Or run with the USER-INTEL package by editing an input script:** + +As an alternative to adding command-line arguments, the input script +can be edited to enable the USER-INTEL package. This requires adding +the :doc:`package intel ` command to the top of the input +script. For the second example above, this would be: + +.. parsed-literal:: + + package intel 0 omp 2 mode double + +To enable the USER-INTEL package only for individual styles, you can +add an "intel" suffix to the individual style, e.g.: + +.. parsed-literal:: + + pair_style lj/cut/intel 2.5 + +Alternatively, the :doc:`suffix intel ` command can be added to +the input script to enable USER-INTEL styles for the commands that +follow in the input script. + +**Tuning for Performance:** + +.. note:: + + The USER-INTEL package will perform better with modifications + to the input script when :doc:`PPPM ` is used: + :doc:`kspace_modify diff ad ` and :doc:`neigh_modify binsize 3 ` should be added to the input script. + +Long-Range Thread (LRT) mode is an option to the :doc:`package intel ` command that can improve performance when using +:doc:`PPPM ` for long-range electrostatics on processors +with SMT. It generates an extra pthread for each MPI task. The thread +is dedicated to performing some of the PPPM calculations and MPI +communications. On Intel Xeon Phi x200 series CPUs, this will likely +always improve performance, even on a single node. On Intel Xeon +processors, using this mode might result in better performance when +using multiple nodes, depending on the machine. To use this mode, +specify that the number of OpenMP threads is one less than would +normally be used for the run and add the "lrt yes" option to the "-pk" +command-line suffix or "package intel" command. For example, if a run +would normally perform best with "-pk intel 0 omp 4", instead use +"-pk intel 0 omp 3 lrt yes". When using LRT, you should set the +environment variable "KMP_AFFINITY=none". LRT mode is not supported +when using offload. + +Not all styles are supported in the USER-INTEL package. You can mix +the USER-INTEL package with styles from the :doc:`OPT ` +package or the `USER-OMP package `_. Of course, +this requires that these packages were installed at build time. This +can performed automatically by using "-sf hybrid intel opt" or +"-sf hybrid intel omp" command-line options. Alternatively, the "opt" +and "omp" suffixes can be appended manually in the input script. For +the latter, the :doc:`package omp ` command must be in the +input script or the "-pk omp Nt" :ref:`command-line switch ` must be used where Nt is the +number of OpenMP threads. The number of OpenMP threads should not be +set differently for the different packages. Note that the :doc:`suffix hybrid intel omp ` command can also be used within the +input script to automatically append the "omp" suffix to styles when +USER-INTEL styles are not available. + +When running on many nodes, performance might be better when using +fewer OpenMP threads and more MPI tasks. This will depend on the +simulation and the machine. Using the :doc:`verlet/split ` +run style might also give better performance for simulations with +:doc:`PPPM ` electrostatics. Note that this is an +alternative to LRT mode and the two cannot be used together. + +Currently, when using Intel MPI with Intel Xeon Phi x200 series +CPUs, better performance might be obtained by setting the +environment variable "I_MPI_SHM_LMT=shm" for Linux kernels that do +not yet have full support for AVX-512. Runs on Intel Xeon Phi x200 +series processors will always perform better using MCDRAM. Please +consult your system documentation for the best approach to specify +that MPI runs are performed in MCDRAM. + +**Tuning for Offload Performance:** + +The default settings for offload should give good performance. + +When using LAMMPS with offload to Intel coprocessors, best performance +will typically be achieved with concurrent calculations performed on +both the CPU and the coprocessor. This is achieved by offloading only +a fraction of the neighbor and pair computations to the coprocessor or +using :doc:`hybrid ` pair styles where only one style uses +the "intel" suffix. For simulations with long-range electrostatics or +bond, angle, dihedral, improper calculations, computation and data +transfer to the coprocessor will run concurrently with computations +and MPI communications for these calculations on the host CPU. This +is illustrated in the figure below for the rhodopsin protein benchmark +running on E5-2697v2 processors with a Intel Xeon Phi 7120p +coprocessor. In this plot, the vertical access is time and routines +running at the same time are running concurrently on both the host and +the coprocessor. + +.. image:: JPG/offload_knc.png + :align: center + +The fraction of the offloaded work is controlled by the *balance* +keyword in the :doc:`package intel ` command. A balance of 0 +runs all calculations on the CPU. A balance of 1 runs all +supported calculations on the coprocessor. A balance of 0.5 runs half +of the calculations on the coprocessor. Setting the balance to -1 +(the default) will enable dynamic load balancing that continously +adjusts the fraction of offloaded work throughout the simulation. +Because data transfer cannot be timed, this option typically produces +results within 5 to 10 percent of the optimal fixed balance. + +If running short benchmark runs with dynamic load balancing, adding a +short warm-up run (10-20 steps) will allow the load-balancer to find a +near-optimal setting that will carry over to additional runs. + +The default for the :doc:`package intel ` command is to have +all the MPI tasks on a given compute node use a single Xeon Phi +coprocessor. In general, running with a large number of MPI tasks on +each node will perform best with offload. Each MPI task will +automatically get affinity to a subset of the hardware threads +available on the coprocessor. For example, if your card has 61 cores, +with 60 cores available for offload and 4 hardware threads per core +(240 total threads), running with 24 MPI tasks per node will cause +each MPI task to use a subset of 10 threads on the coprocessor. Fine +tuning of the number of threads to use per MPI task or the number of +threads to use per core can be accomplished with keyword settings of +the :doc:`package intel ` command. + +The USER-INTEL package has two modes for deciding which atoms will be +handled by the coprocessor. This choice is controlled with the *ghost* +keyword of the :doc:`package intel ` command. When set to 0, +ghost atoms (atoms at the borders between MPI tasks) are not offloaded +to the card. This allows for overlap of MPI communication of forces +with computation on the coprocessor when the :doc:`newton ` +setting is "on". The default is dependent on the style being used, +however, better performance may be achieved by setting this option +explictly. + +When using offload with CPU Hyper-Threading disabled, it may help +performance to use fewer MPI tasks and OpenMP threads than available +cores. This is due to the fact that additional threads are generated +internally to handle the asynchronous offload tasks. + +If pair computations are being offloaded to an Intel Xeon Phi +coprocessor, a diagnostic line is printed to the screen (not to the +log file), during the setup phase of a run, indicating that offload +mode is being used and indicating the number of coprocessor threads +per MPI task. Additionally, an offload timing summary is printed at +the end of each run. When offloading, the frequency for :doc:`atom sorting ` is changed to 1 so that the per-atom data is +effectively sorted at every rebuild of the neighbor lists. All the +available coprocessor threads on each Phi will be divided among MPI +tasks, unless the *tptask* option of the "-pk intel" :ref:`command-line switch ` is used to limit the coprocessor +threads per MPI task. -* The default for the :doc:`package intel ` command is to have - all the MPI tasks on a given compute node use a single Xeon Phi(TM) - coprocessor. In general, running with a large number of MPI tasks on - each node will perform best with offload. Each MPI task will - automatically get affinity to a subset of the hardware threads - available on the coprocessor. For example, if your card has 61 cores, - with 60 cores available for offload and 4 hardware threads per core - (240 total threads), running with 24 MPI tasks per node will cause - each MPI task to use a subset of 10 threads on the coprocessor. Fine - tuning of the number of threads to use per MPI task or the number of - threads to use per core can be accomplished with keyword settings of - the :doc:`package intel ` command. -* If desired, only a fraction of the pair style computation can be - offloaded to the coprocessors. This is accomplished by using the - *balance* keyword in the :doc:`package intel ` command. A - balance of 0 runs all calculations on the CPU. A balance of 1 runs - all calculations on the coprocessor. A balance of 0.5 runs half of - the calculations on the coprocessor. Setting the balance to -1 (the - default) will enable dynamic load balancing that continously adjusts - the fraction of offloaded work throughout the simulation. This option - typically produces results within 5 to 10 percent of the optimal fixed - balance. -* When using offload with CPU hyperthreading disabled, it may help - performance to use fewer MPI tasks and OpenMP threads than available - cores. This is due to the fact that additional threads are generated - internally to handle the asynchronous offload tasks. -* If running short benchmark runs with dynamic load balancing, adding a - short warm-up run (10-20 steps) will allow the load-balancer to find a - near-optimal setting that will carry over to additional runs. -* If pair computations are being offloaded to an Intel(R) Xeon Phi(TM) - coprocessor, a diagnostic line is printed to the screen (not to the - log file), during the setup phase of a run, indicating that offload - mode is being used and indicating the number of coprocessor threads - per MPI task. Additionally, an offload timing summary is printed at - the end of each run. When offloading, the frequency for :doc:`atom sorting ` is changed to 1 so that the per-atom data is - effectively sorted at every rebuild of the neighbor lists. -* For simulations with long-range electrostatics or bond, angle, - dihedral, improper calculations, computation and data transfer to the - coprocessor will run concurrently with computations and MPI - communications for these calculations on the host CPU. The USER-INTEL - package has two modes for deciding which atoms will be handled by the - coprocessor. This choice is controlled with the *ghost* keyword of - the :doc:`package intel ` command. When set to 0, ghost atoms - (atoms at the borders between MPI tasks) are not offloaded to the - card. This allows for overlap of MPI communication of forces with - computation on the coprocessor when the :doc:`newton ` setting - is "on". The default is dependent on the style being used, however, - better performance may be achieved by setting this option - explictly. Restrictions """""""""""" @@ -311,6 +468,11 @@ the pair styles in the USER-INTEL package currently support the :doc:`run_style respa ` command; only the "pair" option is supported. +**References:** + +* Brown, W.M., Carrillo, J.-M.Y., Mishra, B., Gavhane, N., Thakker, F.M., De Kraker, A.R., Yamada, M., Ang, J.A., Plimpton, S.J., “Optimizing Classical Molecular Dynamics in LAMMPS,” in Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition, J. Jeffers, J. Reinders, A. Sodani, Eds. Morgan Kaufmann. +* Brown, W. M., Semin, A., Hebenstreit, M., Khvostov, S., Raman, K., Plimpton, S.J. Increasing Molecular Dynamics Simulation Rates with an 8-Fold Increase in Electrical Power Efficiency. 2016 International Conference for High Performance Computing. In press. +* Brown, W.M., Carrillo, J.-M.Y., Gavhane, N., Thakkar, F.M., Plimpton, S.J. Optimizing Legacy Molecular Dynamics Software with Directive-Based Offload. Computer Physics Communications. 2015. 195: p. 95-101. .. _lws: http://lammps.sandia.gov .. _ld: Manual.html diff --git a/doc/html/_sources/molecule.txt b/doc/html/_sources/molecule.txt index eeccf15d70..dcb8180015 100644 --- a/doc/html/_sources/molecule.txt +++ b/doc/html/_sources/molecule.txt @@ -352,8 +352,11 @@ N1, N2, N3 are the number of 1-2, 1-3, 1-4 neighbors respectively of this atom within the topology of the molecule. See the :doc:`special_bonds ` doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bonds -section must also appear. If this section is not specied, the -atoms in the molecule will have no special bonds. +section must also appear. + +As explained above, LAMMPS will auto-generate this information if this +section is not specified. If specified, this section will +override what would be auto-generated. ---------- @@ -372,9 +375,11 @@ values should be the 1-2 neighbors, the next N2 should be the 1-3 neighbors, the last N3 should be the 1-4 neighbors. No atom ID should appear more than once. See the :doc:`special_bonds ` doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section -appears, the Special Bond Counts section must also appear. If this -section is not specied, the atoms in the molecule will have no special -bonds. +appears, the Special Bond Counts section must also appear. + +As explained above, LAMMPS will auto-generate this information if this +section is not specified. If specified, this section will override +what would be auto-generated. ---------- diff --git a/doc/html/_sources/thermo_style.txt b/doc/html/_sources/thermo_style.txt index 89f59fc0a3..f133028110 100644 --- a/doc/html/_sources/thermo_style.txt +++ b/doc/html/_sources/thermo_style.txt @@ -18,7 +18,7 @@ Syntax *multi* args = none *custom* args = list of keywords possible keywords = step, elapsed, elaplong, dt, time, - cpu, tpcpu, spcpu, cpuremain, part, + cpu, tpcpu, spcpu, cpuremain, part, timeremain, atoms, temp, press, pe, ke, etotal, enthalpy, evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, @@ -41,6 +41,7 @@ Syntax spcpu = timesteps per CPU second cpuremain = estimated CPU time remaining in run part = which partition (0 to Npartition-1) this is + timeremain = remaining time in seconds on timer timeout. atoms = # of atoms temp = temperature press = pressure @@ -271,6 +272,16 @@ corresponds to, or for use in a :doc:`variable ` to append to a filename for output specific to this partition. See :ref:`Section_start 7 ` of the manual for details on running in multi-partition mode. +The *timeremain* keyword returns the remaining seconds when a +timeout has been configured via the :doc:`timer timeout ` command. +If the timeout timer is inactive, the value of this keyword is 0.0 and +if the timer is expired, it is negative. This allows for example to exit +loops cleanly, if the timeout is expired with: + +.. parsed-literal:: + + if "$(timeremain) < 0.0" then "quit 0" + The *fmax* and *fnorm* keywords are useful for monitoring the progress of an :doc:`energy minimization `. The *fmax* keyword calculates the maximum force in any dimension on any atom in the diff --git a/doc/html/_sources/timer.txt b/doc/html/_sources/timer.txt index ba1dd478c7..9ea8b08542 100644 --- a/doc/html/_sources/timer.txt +++ b/doc/html/_sources/timer.txt @@ -35,6 +35,9 @@ Description """"""""""" Select the level of detail at which LAMMPS performs its CPU timings. +Multiple keywords can be specified with the *timer* command. For +keywords that are mutually exclusive, the last one specified takes +effect. During a simulation run LAMMPS collects information about how much time is spent in different sections of the code and thus can provide @@ -57,17 +60,37 @@ slow down the simulation. Using the *nosync* setting (which is the default) turns off this synchronization. With the *timeout* keyword a walltime limit can be imposed that -affects the :doc:`run ` and :doc:`minimize ` commands. If -the time limit is reached, the run or energy minimization will exit on -the next step or iteration that is a multiple of the *Ncheck* value -specified with the *every* keyword. All subsequent run or minimize -commands in the input script will be skipped until the timeout is -reset or turned off by a new *timer* command. The timeout *elapse* -value can be specified as *off* or *unlimited* to impose no timeout -condition (which is the default). The *elapse* setting can be -specified as a single number for seconds, two numbers separated by a -colon (MM:SS) for minutes and seconds, or as three numbers separated -by colons for hours, minutes, and seconds. +affects the :doc:`run ` and :doc:`minimize ` commands. +This can be convenient when runs have to confirm to time limits, +e.g. when running under a batch system and you want to maximize +the utilization of the batch time slot, especially when the time +per timestep varies and is thus difficult to predict how many +steps a simulation can perform, or for difficult to converge +minimizations. The timeout *elapse* value should be somewhat smaller +than the time requested from the batch system, as there is usually +some overhead to launch jobs, and it may be advisable to write +out a restart after terminating a run due to a timeout. + +The timeout timer starts when the command is issued. When the time +limit is reached, the run or energy minimization will exit on the +next step or iteration that is a multiple of the *Ncheck* value +which can be set with the *every* keyword. Default is checking +every 10 steps. After the timer timeout has expired all subsequent +run or minimize commands in the input script will be skipped. +The remaining time or timer status can be accessed with the +:doc:`thermo ` variable *timeremain*\ , which will be +zero, if the timeout is inactive (default setting), it will be +negative, if the timeout time is expired and positive if there +is time remaining and in this case the value of the variable are +the number of seconds remaining. + +When the *timeout* key word is used a second time, the timer is +restarted with a new time limit. The timeout *elapse* value can +be specified as *off* or *unlimited* to impose a no timeout condition +(which is the default). The *elapse* setting can be specified as +a single number for seconds, two numbers separated by a colon (MM:SS) +for minutes and seconds, or as three numbers separated by colons for +hours, minutes, and seconds (H:MM:SS). The *every* keyword sets how frequently during a run or energy minimization the wall clock will be checked. This check count applies @@ -76,10 +99,6 @@ can slow a calculation down. Checking too infrequently can make the timeout measurement less accurate, with the run being stopped later than desired. -Multiple keywords can be specified with the *timer* command. For -keywords that are mutually exclusive, the last one specified takes -effect. - .. note:: Using the *full* and *sync* options provides the most detailed diff --git a/doc/html/accelerate_intel.html b/doc/html/accelerate_intel.html index 328f558ae3..ad8f8560d4 100644 --- a/doc/html/accelerate_intel.html +++ b/doc/html/accelerate_intel.html @@ -127,212 +127,363 @@

Return to Section accelerate overview

5.USER-INTEL package

-

The USER-INTEL package was developed by Mike Brown at Intel +

The USER-INTEL package is maintained by Mike Brown at Intel Corporation. It provides two methods for accelerating simulations, depending on the hardware you have. The first is acceleration on -Intel(R) CPUs by running in single, mixed, or double precision with -vectorization. The second is acceleration on Intel(R) Xeon Phi(TM) +Intel CPUs by running in single, mixed, or double precision with +vectorization. The second is acceleration on Intel Xeon Phi coprocessors via offloading neighbor list and non-bonded force calculations to the Phi. The same C++ code is used in both cases. When offloading to a coprocessor from a CPU, the same routine is run -twice, once on the CPU and once with an offload flag.

-

Note that the USER-INTEL package supports use of the Phi in “offload” -mode, not “native” mode like the KOKKOS package.

-

Also note that the USER-INTEL package can be used in tandem with the -USER-OMP package. This is useful when -offloading pair style computations to the Phi, so that other styles -not supported by the USER-INTEL package, e.g. bond, angle, dihedral, -improper, and long-range electrostatics, can run simultaneously in -threaded mode on the CPU cores. Since less MPI tasks than CPU cores -will typically be invoked when running with coprocessors, this enables -the extra CPU cores to be used for useful computation.

-

As illustrated below, if LAMMPS is built with both the USER-INTEL and -USER-OMP packages, this dual mode of operation is made easier to use, -via the “-suffix hybrid intel omp” command-line switch or the suffix hybrid intel omp command. Both set a second-choice suffix to “omp” so -that styles from the USER-INTEL package will be used if available, -with styles from the USER-OMP package as a second choice.

-

Here is a quick overview of how to use the USER-INTEL package for CPU -acceleration, assuming one or more 16-core nodes. More details -follow.

-
use an Intel compiler
-use these CCFLAGS settings in Makefile.machine: -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits
-use these LINKFLAGS settings in Makefile.machine: -fopenmp, -xHost
-make yes-user-intel yes-user-omp     # including user-omp is optional
-make mpi                             # build with the USER-INTEL package, if settings (including compiler) added to Makefile.mpi
-make intel_cpu                       # or Makefile.intel_cpu already has settings, uses Intel MPI wrapper
-Make.py -v -p intel omp -intel cpu -a file mpich_icc   # or one-line build via Make.py for MPICH
-Make.py -v -p intel omp -intel cpu -a file ompi_icc    # or for OpenMPI
-Make.py -v -p intel omp -intel cpu -a file intel_cpu   # or for Intel MPI wrapper
-
-
-
lmp_machine -sf intel -pk intel 0 omp 16 -in in.script    # 1 node, 1 MPI task/node, 16 threads/task, no USER-OMP
-mpirun -np 32 lmp_machine -sf intel -in in.script         # 2 nodess, 16 MPI tasks/node, no threads, no USER-OMP
-lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -pk omp 16 -in in.script         # 1 node, 1 MPI task/node, 16 threads/task, with USER-OMP
-mpirun -np 32 -ppn 4 lmp_machine -sf hybrid intel omp -pk omp 4 -pk omp 4 -in in.script      # 8 nodes, 4 MPI tasks/node, 4 threads/task, with USER-OMP
-
-
-

Here is a quick overview of how to use the USER-INTEL package for the -same CPUs as above (16 cores/node), with an additional Xeon Phi(TM) -coprocessor per node. More details follow.

-
Same as above for building, with these additions/changes:
-add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in Makefile.machine
-add the flag -offload to LINKFLAGS in Makefile.machine
-for Make.py change "-intel cpu" to "-intel phi", and "file intel_cpu" to "file intel_phi"
-
-
-
mpirun -np 32 lmp_machine -sf intel -pk intel 1 -in in.script                 # 2 nodes, 16 MPI tasks/node, 240 total threads on coprocessor, no USER-OMP
-mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script            # 2 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, no USER-OMP
-mpirun -np 32 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -pk omp 2 -in in.script # 4 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, with USER-OMP
-
-
+twice, once on the CPU and once with an offload flag. This allows +LAMMPS to run on the CPU cores and coprocessor cores simulataneously.

+

Currently Available USER-INTEL Styles:

+
    +
  • Angle Styles: charmm, harmonic
  • +
  • Bond Styles: fene, harmonic
  • +
  • Dihedral Styles: charmm, harmonic, opls
  • +
  • Fixes: nve, npt, nvt, nvt/sllod
  • +
  • Improper Styles: cvff, harmonic
  • +
  • Pair Styles: buck/coul/cut, buck/coul/long, buck, gayberne, +charmm/coul/long, lj/cut, lj/cut/coul/long, sw, tersoff
  • +
  • K-Space Styles: pppm
  • +
+

Speed-ups to expect:

+

The speedups will depend on your simulation, the hardware, which +styles are used, the number of atoms, and the floating-point +precision mode. Performance improvements are shown compared to +LAMMPS without using other acceleration packages as these are +under active development (and subject to performance changes). The +measurements were performed using the input files available in +the src/USER-INTEL/TEST directory. These are scalable in size; the +results given are with 512K particles (524K for Liquid Crystal). +Most of the simulations are standard LAMMPS benchmarks (indicated +by the filename extension in parenthesis) with modifications to the +run length and to add a warmup run (for use with offload +benchmarks).

+_images/user_intel.png +

Results are speedups obtained on Intel Xeon E5-2697v4 processors +(code-named Broadwell) and Intel Xeon Phi 7250 processors +(code-named Knights Landing) with “18 Jun 2016” LAMMPS built with +Intel Parallel Studio 2016 update 3. Results are with 1 MPI task +per physical core. See src/USER-INTEL/TEST/README for the raw +simulation rates and instructions to reproduce.

+
+

Quick Start for Experienced Users:

+

LAMMPS should be built with the USER-INTEL package installed. +Simulations should be run with 1 MPI task per physical core, +not hardware thread.

+

For Intel Xeon CPUs:

+
    +
  • Edit src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi as necessary.
  • +
  • If using kspace_style pppm in the input script, add “neigh_modify binsize 3” and “kspace_modify diff ad” to the input script for better +performance.
  • +
  • “-pk intel 0 omp 2 -sf intel” added to LAMMPS command-line
  • +
+

For Intel Xeon Phi CPUs for simulations without kspace_style +pppm in the input script

+
    +
  • Edit src/MAKE/OPTIONS/Makefile.knl as necessary.
  • +
  • Runs should be performed using MCDRAM.
  • +
  • “-pk intel 0 omp 2 -sf intel” or “-pk intel 0 omp 4 -sf intel” +should be added to the LAMMPS command-line. Choice for best +performance will depend on the simulation.
  • +
+

For Intel Xeon Phi CPUs for simulations with kspace_style +pppm in the input script:

+
    +
  • Edit src/MAKE/OPTIONS/Makefile.knl as necessary.
  • +
  • Runs should be performed using MCDRAM.
  • +
  • Add “neigh_modify binsize 3” to the input script for better +performance.
  • +
  • Add “kspace_modify diff ad” to the input script for better +performance.
  • +
  • export KMP_AFFINITY=none
  • +
  • “-pk intel 0 omp 3 lrt yes -sf intel” or “-pk intel 0 omp 1 lrt yes +-sf intel” added to LAMMPS command-line. Choice for best performance +will depend on the simulation.
  • +
+

For Intel Xeon Phi coprocessors (Offload):

+
    +
  • Edit src/MAKE/OPTIONS/Makefile.intel_coprocessor as necessary
  • +
  • “-pk intel N omp 1” added to command-line where N is the number of +coprocessors per node.
  • +
+

Required hardware/software:

-

Your compiler must support the OpenMP interface. Use of an Intel(R) -C++ compiler is recommended, but not required. However, g++ will not -recognize some of the settings listed above, so they cannot be used. -Optimizations for vectorization have only been tested with the -Intel(R) compiler. Use of other compilers may not result in -vectorization, or give poor performance.

-

The recommended version of the Intel(R) compiler is 14.0.1.106. -Versions 15.0.1.133 and later are also supported. If using Intel(R) -MPI, versions 15.0.2.044 and later are recommended.

-

To use the offload option, you must have one or more Intel(R) Xeon -Phi(TM) coprocessors and use an Intel(R) C++ compiler.

+

In order to use offload to coprocessors, an Intel Xeon Phi +coprocessor and an Intel compiler are required. For this, the +recommended version of the Intel compiler is 14.0.1.106 or +versions 15.0.2.044 and higher.

+

Although any compiler can be used with the USER-INTEL pacakge, +currently, vectorization directives are disabled by default when +not using Intel compilers due to lack of standard support and +observations of decreased performance. The OpenMP standard now +supports directives for vectorization and we plan to transition the +code to this standard once it is available in most compilers. We +expect this to allow improved performance and support with other +compilers.

+

For Intel Xeon Phi x200 series processors (code-named Knights +Landing), there are multiple configuration options for the hardware. +For best performance, we recommend that the MCDRAM is configured in +“Flat” mode and with the cluster mode set to “Quadrant” or “SNC4”. +“Cache” mode can also be used, although the performance might be +slightly lower.

+

Notes about Simultaneous Multithreading:

+

Modern CPUs often support Simultaneous Multithreading (SMT). On +Intel processors, this is called Hyper-Threading (HT) technology. +SMT is hardware support for running multiple threads efficiently on +a single core. Hardware threads or logical cores are often used +to refer to the number of threads that are supported in hardware. +For example, the Intel Xeon E5-2697v4 processor is described +as having 36 cores and 72 threads. This means that 36 MPI processes +or OpenMP threads can run simultaneously on separate cores, but that +up to 72 MPI processes or OpenMP threads can be running on the CPU +without costly operating system context switches.

+

Molecular dynamics simulations will often run faster when making use +of SMT. If a thread becomes stalled, for example because it is +waiting on data that has not yet arrived from memory, another thread +can start running so that the CPU pipeline is still being used +efficiently. Although benefits can be seen by launching a MPI task +for every hardware thread, for multinode simulations, we recommend +that OpenMP threads are used for SMT instead, either with the +USER-INTEL package, USER-OMP package, or +KOKKOS package. In the example above, up +to 36X speedups can be observed by using all 36 physical cores with +LAMMPS. By using all 72 hardware threads, an additional 10-30% +performance gain can be achieved.

+

The BIOS on many platforms allows SMT to be disabled, however, we do +not recommend this on modern processors as there is little to no +benefit for any software package in most cases. The operating system +will report every hardware thread as a separate core allowing one to +determine the number of hardware threads available. On Linux systems, +this information can normally be obtained with:

+
cat /proc/cpuinfo
+
+

Building LAMMPS with the USER-INTEL package:

-

The lines above illustrate how to include/build with the USER-INTEL -package, for either CPU or Phi support, in two steps, using the “make” -command. Or how to do it with one command via the src/Make.py script, -described in Section 2.4 of the manual. -Type “Make.py -h” for help. Because the mechanism for specifing what -compiler to use (Intel in this case) is different for different MPI -wrappers, 3 versions of the Make.py command are shown.

+

The USER-INTEL package must be installed into the source directory:

+
make yes-user-intel
+
+
+

Several example Makefiles for building with the Intel compiler are +included with LAMMPS in the src/MAKE/OPTIONS/ directory:

+
Makefile.intel_cpu_intelmpi # Intel Compiler, Intel MPI, No Offload
+Makefile.knl                # Intel Compiler, Intel MPI, No Offload
+Makefile.intel_cpu_mpich    # Intel Compiler, MPICH, No Offload
+Makefile.intel_cpu_openpmi  # Intel Compiler, OpenMPI, No Offload
+Makefile.intel_coprocessor  # Intel Compiler, Intel MPI, Offload
+
+
+

Makefile.knl is identical to Makefile.intel_cpu_intelmpi except that +it explicitly specifies that vectorization should be for Intel +Xeon Phi x200 processors making it easier to cross-compile. For +users with recent installations of Intel Parallel Studio, the +process can be as simple as:

+
make yes-user-intel
+source /opt/intel/parallel_studio_xe_2016.3.067/psxevars.sh
+# or psxevars.csh for C-shell
+make intel_cpu_intelmpi
+
+
+

Alternatively, the build can be accomplished with the src/Make.py +script, described in Section 2.4 of the +manual. Type “Make.py -h” for help. For an example:

+
Make.py -v -p intel omp -intel cpu -a file intel_cpu_intelmpi
+
+

Note that if you build with support for a Phi coprocessor, the same binary can be used on nodes with or without coprocessors installed. However, if you do not have coprocessors on your system, building without offload support will produce a smaller binary.

-

If you also build with the USER-OMP package, you can use styles from -both packages, as described below.

-

Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must -include “-fopenmp”. Likewise, if you use an Intel compiler, the -CCFLAGS setting must include “-restrict”. For Phi support, the -“-DLMP_INTEL_OFFLOAD” (CCFLAGS) and “-offload” (LINKFLAGS) settings -are required. The other settings listed above are optional, but will -typically improve performance. The Make.py command will add all of -these automatically.

-

If you are compiling on the same architecture that will be used for -the runs, adding the flag -xHost to CCFLAGS enables vectorization -with the Intel(R) compiler. Otherwise, you must provide the correct -compute node architecture to the -x option (e.g. -xAVX).

-

Example machines makefiles Makefile.intel_cpu and Makefile.intel_phi -are included in the src/MAKE/OPTIONS directory with settings that -perform well with the Intel(R) compiler. The latter has support for -offload to Phi coprocessors; the former does not.

-

Run with the USER-INTEL package from the command line:

-

The mpirun or mpiexec command sets the total number of MPI tasks used -by LAMMPS (one or multiple per compute node) and the number of MPI -tasks used per node. E.g. the mpirun command in MPICH does this via -its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode.

-

If you compute (any portion of) pairwise interactions using USER-INTEL -pair styles on the CPU, or use USER-OMP styles on the CPU, you need to -choose how many OpenMP threads per MPI task to use. If both packages -are used, it must be done for both packages, and the same thread count -value should be used for both. Note that the product of MPI tasks * -threads/task should not exceed the physical number of cores (on a -node), otherwise performance will suffer.

-

When using the USER-INTEL package for the Phi, you also need to -specify the number of coprocessor/node and optionally the number of -coprocessor threads per MPI task to use. Note that coprocessor -threads (which run on the coprocessor) are totally independent from -OpenMP threads (which run on the CPU). The default values for the -settings that affect coprocessor threads are typically fine, as -discussed below.

-

As in the lines above, use the “-sf intel” or “-sf hybrid intel omp” -command-line switch, which will -automatically append “intel” to styles that support it. In the second -case, “omp” will be appended if an “intel” style does not exist.

-

Note that if either switch is used, it also invokes a default command: -package intel 1. If the “-sf hybrid intel omp” switch -is used, the default USER-OMP command package omp 0 is -also invoked (if LAMMPS was built with USER-OMP). Both set the number -of OpenMP threads per MPI task via the OMP_NUM_THREADS environment -variable. The first command sets the number of Xeon Phi(TM) -coprocessors/node to 1 (ignored if USER-INTEL is built for CPU-only), -and the precision mode to “mixed” (default value).

-

You can also use the “-pk intel Nphi” command-line switch to explicitly set Nphi = # of Xeon -Phi(TM) coprocessors/node, as well as additional options. Nphi should -be >= 1 if LAMMPS was built with coprocessor support, otherswise Nphi -= 0 for a CPU-only build. All the available coprocessor threads on -each Phi will be divided among MPI tasks, unless the tptask option -of the “-pk intel” command-line switch is -used to limit the coprocessor threads per MPI task. See the package intel command for details, including the default values -used for all its options if not specified, and how to set the number -of OpenMP threads via the OMP_NUM_THREADS environment variable if -desired.

-

If LAMMPS was built with the USER-OMP package, you can also use the -“-pk omp Nt” command-line switch to -explicitly set Nt = # of OpenMP threads per MPI task to use, as well -as additional options. Nt should be the same threads per MPI task as -set for the USER-INTEL package, e.g. via the “-pk intel Nphi omp Nt” -command. Again, see the package omp command for -details, including the default values used for all its options if not -specified, and how to set the number of OpenMP threads via the -OMP_NUM_THREADS environment variable if desired.

-

Or run with the USER-INTEL package by editing an input script:

-

The discussion above for the mpirun/mpiexec command, MPI tasks/node, -OpenMP threads per MPI task, and coprocessor threads per MPI task is -the same.

-

Use the suffix intel or suffix hybrid intel omp commands, or you can explicitly add an “intel” or -“omp” suffix to individual styles in your input script, e.g.

-
pair_style lj/cut/intel 2.5
-
+

The general requirements for Makefiles with the USER-INTEL package +are as follows. “-DLAMMPS_MEMALIGN=64” is required for CCFLAGS. When +using Intel compilers, “-restrict” is required and “-qopenmp” is +highly recommended for CCFLAGS and LINKFLAGS. LIB should include +“-ltbbmalloc”. For builds supporting offload, “-DLMP_INTEL_OFFLOAD” +is required for CCFLAGS and “-qoffload” is required for LINKFLAGS. +Other recommended CCFLAG options for best performance are +“-O2 -fno-alias -ansi-alias -qoverride-limits fp-model fast=2 +-no-prec-div”. The Make.py command will add all of these +automatically.

+
+

Note

+

The vectorization and math capabilities can differ depending on +the CPU. For Intel compilers, the “-x” flag specifies the type of +processor for which to optimize. “-xHost” specifies that the compiler +should build for the processor used for compiling. For Intel Xeon Phi +x200 series processors, this option is “-xMIC-AVX512”. For fourth +generation Intel Xeon (v4/Broadwell) processors, “-xCORE-AVX2” should +be used. For older Intel Xeon processors, “-xAVX” will perform best +in general for the different simulations in LAMMPS. The default +in most of the example Makefiles is to use “-xHost”, however this +should not be used when cross-compiling.

-

You must also use the package intel command, unless the -“-sf intel” or “-pk intel” command-line switches were used. It specifies how many -coprocessors/node to use, as well as other OpenMP threading and -coprocessor options. The package doc page explains how -to set the number of OpenMP threads via an environment variable if -desired.

-

If LAMMPS was also built with the USER-OMP package, you must also use -the package omp command to enable that package, unless -the “-sf hybrid intel omp” or “-pk omp” command-line switches were used. It specifies how many -OpenMP threads per MPI task to use (should be same as the setting for -the USER-INTEL package), as well as other options. Its doc page -explains how to set the number of OpenMP threads via an environment -variable if desired.

-

Speed-ups to expect:

-

If LAMMPS was not built with coprocessor support (CPU only) when -including the USER-INTEL package, then acclerated styles will run on -the CPU using vectorization optimizations and the specified precision. -This may give a substantial speed-up for a pair style, particularly if -mixed or single precision is used.

-

If LAMMPS was built with coproccesor support, the pair styles will run -on one or more Intel(R) Xeon Phi(TM) coprocessors (per node). The -performance of a Xeon Phi versus a multi-core CPU is a function of -your hardware, which pair style is used, the number of -atoms/coprocessor, and the precision used on the coprocessor (double, -single, mixed).

-

See the Benchmark page of the -LAMMPS web site for performance of the USER-INTEL package on different -hardware.

+

Running LAMMPS with the USER-INTEL package:

+

Running LAMMPS with the USER-INTEL package is similar to normal use +with the exceptions that one should 1) specify that LAMMPS should use +the USER-INTEL package, 2) specify the number of OpenMP threads, and +3) optionally specify the specific LAMMPS styles that should use the +USER-INTEL package. 1) and 2) can be performed from the command-line +or by editing the input script. 3) requires editing the input script. +Advanced performance tuning options are also described below to get +the best performance.

+

When running on a single node (including runs using offload to a +coprocessor), best performance is normally obtained by using 1 MPI +task per physical core and additional OpenMP threads with SMT. For +Intel Xeon processors, 2 OpenMP threads should be used for SMT. +For Intel Xeon Phi CPUs, 2 or 4 OpenMP threads should be used +(best choice depends on the simulation). In cases where the user +specifies that LRT mode is used (described below), 1 or 3 OpenMP +threads should be used. For multi-node runs, using 1 MPI task per +physical core will often perform best, however, depending on the +machine and scale, users might get better performance by decreasing +the number of MPI tasks and using more OpenMP threads. For +performance, the product of the number of MPI tasks and OpenMP +threads should not exceed the number of available hardware threads in +almost all cases.

Note

Setting core affinity is often used to pin MPI tasks and OpenMP threads to a core or group of cores so that memory access can be uniform. Unless disabled at build time, affinity for MPI tasks and OpenMP threads on the host (CPU) will be set by default on the host -when using offload to a coprocessor. In this case, it is unnecessary +when using offload to a coprocessor. In this case, it is unnecessary to use other methods to control affinity (e.g. taskset, numactl, -I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input script with -the no_affinity option to the package intel command -or by disabling the option at build time (by adding --DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your Makefile). -Disabling this option is not recommended, especially when running on a -machine with hyperthreading disabled.

+I_MPI_PIN_DOMAIN, etc.). This can be disabled with the no_affinity +option to the package intel command or by disabling the +option at build time (by adding -DINTEL_OFFLOAD_NOAFFINITY to the +CCFLAGS line of your Makefile). Disabling this option is not +recommended, especially when running on a machine with Intel +Hyper-Threading technology disabled.

-

Guidelines for best performance on an Intel(R) Xeon Phi(TM) -coprocessor:

-
    -
  • The default for the package intel command is to have -all the MPI tasks on a given compute node use a single Xeon Phi(TM) +

    Run with the USER-INTEL package from the command line:

    +

    To enable USER-INTEL optimizations for all available styles used in +the input script, the “-sf intel” +command-line switch can be used without +any requirement for editing the input script. This switch will +automatically append “intel” to styles that support it. It also +invokes a default command: package intel 1. This +package command is used to set options for the USER-INTEL package. +The default package command will specify that USER-INTEL calculations +are performed in mixed precision, that the number of OpenMP threads +is specified by the OMP_NUM_THREADS environment variable, and that +if coprocessors are present and the binary was built with offload +support, that 1 coprocessor per node will be used with automatic +balancing of work between the CPU and the coprocessor.

    +

    You can specify different options for the USER-INTEL package by using +the “-pk intel Nphi” command-line switch +with keyword/value pairs as specified in the documentation. Here, +Nphi = # of Xeon Phi coprocessors/node (ignored without offload +support). Common options to the USER-INTEL package include omp to +override any OMP_NUM_THREADS setting and specify the number of OpenMP +threads, mode to set the floating-point precision mode, and +lrt to enable Long-Range Thread mode as described below. See the +package intel command for details, including the +default values used for all its options if not specified, and how to +set the number of OpenMP threads via the OMP_NUM_THREADS environment +variable if desired.

    +

    Examples (see documentation for your MPI/Machine for differences in +launching MPI applications):

    +
    mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script                                 # 2 nodes, 36 MPI tasks/node, $OMP_NUM_THREADS OpenMP Threads
    +mpirun -np 72 -ppn 36 lmp_machine -sf intel -in in.script -pk intel 0 omp 2 mode double   # Don't use any coprocessors that might be available, use 2 OpenMP threads for each task, use double precision
    +
    +
    +

    Or run with the USER-INTEL package by editing an input script:

    +

    As an alternative to adding command-line arguments, the input script +can be edited to enable the USER-INTEL package. This requires adding +the package intel command to the top of the input +script. For the second example above, this would be:

    +
    package intel 0 omp 2 mode double
    +
    +
    +

    To enable the USER-INTEL package only for individual styles, you can +add an “intel” suffix to the individual style, e.g.:

    +
    pair_style lj/cut/intel 2.5
    +
    +
    +

    Alternatively, the suffix intel command can be added to +the input script to enable USER-INTEL styles for the commands that +follow in the input script.

    +

    Tuning for Performance:

    +
    +

    Note

    +

    The USER-INTEL package will perform better with modifications +to the input script when PPPM is used: +kspace_modify diff ad and neigh_modify binsize 3 should be added to the input script.

    +
    +

    Long-Range Thread (LRT) mode is an option to the package intel command that can improve performance when using +PPPM for long-range electrostatics on processors +with SMT. It generates an extra pthread for each MPI task. The thread +is dedicated to performing some of the PPPM calculations and MPI +communications. On Intel Xeon Phi x200 series CPUs, this will likely +always improve performance, even on a single node. On Intel Xeon +processors, using this mode might result in better performance when +using multiple nodes, depending on the machine. To use this mode, +specify that the number of OpenMP threads is one less than would +normally be used for the run and add the “lrt yes” option to the “-pk” +command-line suffix or “package intel” command. For example, if a run +would normally perform best with “-pk intel 0 omp 4”, instead use +“-pk intel 0 omp 3 lrt yes”. When using LRT, you should set the +environment variable “KMP_AFFINITY=none”. LRT mode is not supported +when using offload.

    +

    Not all styles are supported in the USER-INTEL package. You can mix +the USER-INTEL package with styles from the OPT +package or the USER-OMP package. Of course, +this requires that these packages were installed at build time. This +can performed automatically by using “-sf hybrid intel opt” or +“-sf hybrid intel omp” command-line options. Alternatively, the “opt” +and “omp” suffixes can be appended manually in the input script. For +the latter, the package omp command must be in the +input script or the “-pk omp Nt” command-line switch must be used where Nt is the +number of OpenMP threads. The number of OpenMP threads should not be +set differently for the different packages. Note that the suffix hybrid intel omp command can also be used within the +input script to automatically append the “omp” suffix to styles when +USER-INTEL styles are not available.

    +

    When running on many nodes, performance might be better when using +fewer OpenMP threads and more MPI tasks. This will depend on the +simulation and the machine. Using the verlet/split +run style might also give better performance for simulations with +PPPM electrostatics. Note that this is an +alternative to LRT mode and the two cannot be used together.

    +

    Currently, when using Intel MPI with Intel Xeon Phi x200 series +CPUs, better performance might be obtained by setting the +environment variable “I_MPI_SHM_LMT=shm” for Linux kernels that do +not yet have full support for AVX-512. Runs on Intel Xeon Phi x200 +series processors will always perform better using MCDRAM. Please +consult your system documentation for the best approach to specify +that MPI runs are performed in MCDRAM.

    +

    Tuning for Offload Performance:

    +

    The default settings for offload should give good performance.

    +

    When using LAMMPS with offload to Intel coprocessors, best performance +will typically be achieved with concurrent calculations performed on +both the CPU and the coprocessor. This is achieved by offloading only +a fraction of the neighbor and pair computations to the coprocessor or +using hybrid pair styles where only one style uses +the “intel” suffix. For simulations with long-range electrostatics or +bond, angle, dihedral, improper calculations, computation and data +transfer to the coprocessor will run concurrently with computations +and MPI communications for these calculations on the host CPU. This +is illustrated in the figure below for the rhodopsin protein benchmark +running on E5-2697v2 processors with a Intel Xeon Phi 7120p +coprocessor. In this plot, the vertical access is time and routines +running at the same time are running concurrently on both the host and +the coprocessor.

    +_images/offload_knc.png +

    The fraction of the offloaded work is controlled by the balance +keyword in the package intel command. A balance of 0 +runs all calculations on the CPU. A balance of 1 runs all +supported calculations on the coprocessor. A balance of 0.5 runs half +of the calculations on the coprocessor. Setting the balance to -1 +(the default) will enable dynamic load balancing that continously +adjusts the fraction of offloaded work throughout the simulation. +Because data transfer cannot be timed, this option typically produces +results within 5 to 10 percent of the optimal fixed balance.

    +

    If running short benchmark runs with dynamic load balancing, adding a +short warm-up run (10-20 steps) will allow the load-balancer to find a +near-optimal setting that will carry over to additional runs.

    +

    The default for the package intel command is to have +all the MPI tasks on a given compute node use a single Xeon Phi coprocessor. In general, running with a large number of MPI tasks on each node will perform best with offload. Each MPI task will automatically get affinity to a subset of the hardware threads @@ -342,45 +493,30 @@ with 60 cores available for offload and 4 hardware threads per core each MPI task to use a subset of 10 threads on the coprocessor. Fine tuning of the number of threads to use per MPI task or the number of threads to use per core can be accomplished with keyword settings of -the package intel command.

  • -
  • If desired, only a fraction of the pair style computation can be -offloaded to the coprocessors. This is accomplished by using the -balance keyword in the package intel command. A -balance of 0 runs all calculations on the CPU. A balance of 1 runs -all calculations on the coprocessor. A balance of 0.5 runs half of -the calculations on the coprocessor. Setting the balance to -1 (the -default) will enable dynamic load balancing that continously adjusts -the fraction of offloaded work throughout the simulation. This option -typically produces results within 5 to 10 percent of the optimal fixed -balance.
  • -
  • When using offload with CPU hyperthreading disabled, it may help +the package intel command.

    +

    The USER-INTEL package has two modes for deciding which atoms will be +handled by the coprocessor. This choice is controlled with the ghost +keyword of the package intel command. When set to 0, +ghost atoms (atoms at the borders between MPI tasks) are not offloaded +to the card. This allows for overlap of MPI communication of forces +with computation on the coprocessor when the newton +setting is “on”. The default is dependent on the style being used, +however, better performance may be achieved by setting this option +explictly.

    +

    When using offload with CPU Hyper-Threading disabled, it may help performance to use fewer MPI tasks and OpenMP threads than available cores. This is due to the fact that additional threads are generated -internally to handle the asynchronous offload tasks.

  • -
  • If running short benchmark runs with dynamic load balancing, adding a -short warm-up run (10-20 steps) will allow the load-balancer to find a -near-optimal setting that will carry over to additional runs.
  • -
  • If pair computations are being offloaded to an Intel(R) Xeon Phi(TM) +internally to handle the asynchronous offload tasks.

    +

    If pair computations are being offloaded to an Intel Xeon Phi coprocessor, a diagnostic line is printed to the screen (not to the log file), during the setup phase of a run, indicating that offload mode is being used and indicating the number of coprocessor threads per MPI task. Additionally, an offload timing summary is printed at the end of each run. When offloading, the frequency for atom sorting is changed to 1 so that the per-atom data is -effectively sorted at every rebuild of the neighbor lists.

  • -
  • For simulations with long-range electrostatics or bond, angle, -dihedral, improper calculations, computation and data transfer to the -coprocessor will run concurrently with computations and MPI -communications for these calculations on the host CPU. The USER-INTEL -package has two modes for deciding which atoms will be handled by the -coprocessor. This choice is controlled with the ghost keyword of -the package intel command. When set to 0, ghost atoms -(atoms at the borders between MPI tasks) are not offloaded to the -card. This allows for overlap of MPI communication of forces with -computation on the coprocessor when the newton setting -is “on”. The default is dependent on the style being used, however, -better performance may be achieved by setting this option -explictly.
  • -
+effectively sorted at every rebuild of the neighbor lists. All the +available coprocessor threads on each Phi will be divided among MPI +tasks, unless the tptask option of the “-pk intel” command-line switch is used to limit the coprocessor +threads per MPI task.

Restrictions

When offloading to a coprocessor, hybrid styles @@ -394,6 +530,12 @@ the pair styles in the USER-INTEL package currently support the “inner”, “middle”, “outer” options for rRESPA integration via the run_style respa command; only the “pair” option is supported.

+

References:

+
    +
  • Brown, W.M., Carrillo, J.-M.Y., Mishra, B., Gavhane, N., Thakker, F.M., De Kraker, A.R., Yamada, M., Ang, J.A., Plimpton, S.J., “Optimizing Classical Molecular Dynamics in LAMMPS,” in Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition, J. Jeffers, J. Reinders, A. Sodani, Eds. Morgan Kaufmann.
  • +
  • Brown, W. M., Semin, A., Hebenstreit, M., Khvostov, S., Raman, K., Plimpton, S.J. Increasing Molecular Dynamics Simulation Rates with an 8-Fold Increase in Electrical Power Efficiency. 2016 International Conference for High Performance Computing. In press.
  • +
  • Brown, W.M., Carrillo, J.-M.Y., Gavhane, N., Thakkar, F.M., Plimpton, S.J. Optimizing Legacy Molecular Dynamics Software with Directive-Based Offload. Computer Physics Communications. 2015. 195: p. 95-101.
  • +
diff --git a/doc/html/molecule.html b/doc/html/molecule.html index 5c395f38e7..85087417db 100644 --- a/doc/html/molecule.html +++ b/doc/html/molecule.html @@ -419,8 +419,10 @@ the doc pages for individual styles for details.

this atom within the topology of the molecule. See the special_bonds doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bonds -section must also appear. If this section is not specied, the -atoms in the molecule will have no special bonds.

+section must also appear.

+

As explained above, LAMMPS will auto-generate this information if this +section is not specified. If specified, this section will +override what would be auto-generated.


Special Bonds section:

    @@ -435,9 +437,10 @@ values should be the 1-2 neighbors, the next N2 should be the 1-3 neighbors, the last N3 should be the 1-4 neighbors. No atom ID should appear more than once. See the special_bonds doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section -appears, the Special Bond Counts section must also appear. If this -section is not specied, the atoms in the molecule will have no special -bonds.

    +appears, the Special Bond Counts section must also appear.

    +

    As explained above, LAMMPS will auto-generate this information if this +section is not specified. If specified, this section will override +what would be auto-generated.


    Shake Flags section:

      diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index d1bf68aad5..cafca9c0ea 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:50,filenames:["Manual","Section_accelerate","Section_commands","Section_errors","Section_example","Section_history","Section_howto","Section_intro","Section_modify","Section_packages","Section_perf","Section_python","Section_start","Section_tools","accelerate_gpu","accelerate_intel","accelerate_kokkos","accelerate_omp","accelerate_opt","angle_charmm","angle_class2","angle_coeff","angle_cosine","angle_cosine_delta","angle_cosine_periodic","angle_cosine_shift","angle_cosine_shift_exp","angle_cosine_squared","angle_dipole","angle_fourier","angle_fourier_simple","angle_harmonic","angle_hybrid","angle_none","angle_quartic","angle_sdk","angle_style","angle_table","angle_zero","atom_modify","atom_style","balance","body","bond_class2","bond_coeff","bond_fene","bond_fene_expand","bond_harmonic","bond_harmonic_shift","bond_harmonic_shift_cut","bond_hybrid","bond_morse","bond_none","bond_nonlinear","bond_quartic","bond_style","bond_table","bond_write","bond_zero","boundary","box","change_box","clear","comm_modify","comm_style","compute","compute_ackland_atom","compute_angle","compute_angle_local","compute_angmom_chunk","compute_basal_atom","compute_body_local","compute_bond","compute_bond_local","compute_centro_atom","compute_chunk_atom","compute_cluster_atom","compute_cna_atom","compute_com","compute_com_chunk","compute_contact_atom","compute_coord_atom","compute_damage_atom","compute_dihedral","compute_dihedral_local","compute_dilatation_atom","compute_dipole_chunk","compute_displace_atom","compute_dpd","compute_dpd_atom","compute_erotate_asphere","compute_erotate_rigid","compute_erotate_sphere","compute_erotate_sphere_atom","compute_event_displace","compute_fep","compute_group_group","compute_gyration","compute_gyration_chunk","compute_heat_flux","compute_hexorder_atom","compute_improper","compute_improper_local","compute_inertia_chunk","compute_ke","compute_ke_atom","compute_ke_atom_eff","compute_ke_eff","compute_ke_rigid","compute_meso_e_atom","compute_meso_rho_atom","compute_meso_t_atom","compute_modify","compute_msd","compute_msd_chunk","compute_msd_nongauss","compute_omega_chunk","compute_orientorder_atom","compute_pair","compute_pair_local","compute_pe","compute_pe_atom","compute_plasticity_atom","compute_pressure","compute_property_atom","compute_property_chunk","compute_property_local","compute_rdf","compute_reduce","compute_rigid_local","compute_saed","compute_slice","compute_smd_contact_radius","compute_smd_damage","compute_smd_hourglass_error","compute_smd_internal_energy","compute_smd_plastic_strain","compute_smd_plastic_strain_rate","compute_smd_rho","compute_smd_tlsph_defgrad","compute_smd_tlsph_dt","compute_smd_tlsph_num_neighs","compute_smd_tlsph_shape","compute_smd_tlsph_strain","compute_smd_tlsph_strain_rate","compute_smd_tlsph_stress","compute_smd_triangle_mesh_vertices","compute_smd_ulsph_num_neighs","compute_smd_ulsph_strain","compute_smd_ulsph_strain_rate","compute_smd_ulsph_stress","compute_smd_vol","compute_sna_atom","compute_stress_atom","compute_tally","compute_temp","compute_temp_asphere","compute_temp_body","compute_temp_chunk","compute_temp_com","compute_temp_cs","compute_temp_deform","compute_temp_deform_eff","compute_temp_drude","compute_temp_eff","compute_temp_partial","compute_temp_profile","compute_temp_ramp","compute_temp_region","compute_temp_region_eff","compute_temp_rotate","compute_temp_sphere","compute_ti","compute_torque_chunk","compute_vacf","compute_vcm_chunk","compute_voronoi_atom","compute_xrd","create_atoms","create_bonds","create_box","delete_atoms","delete_bonds","dielectric","dihedral_charmm","dihedral_class2","dihedral_coeff","dihedral_cosine_shift_exp","dihedral_fourier","dihedral_harmonic","dihedral_helix","dihedral_hybrid","dihedral_multi_harmonic","dihedral_nharmonic","dihedral_none","dihedral_opls","dihedral_quadratic","dihedral_style","dihedral_table","dihedral_zero","dimension","displace_atoms","dump","dump_custom_vtk","dump_h5md","dump_image","dump_modify","dump_molfile","echo","fix","fix_adapt","fix_adapt_fep","fix_addforce","fix_addtorque","fix_append_atoms","fix_atc","fix_atom_swap","fix_ave_atom","fix_ave_chunk","fix_ave_correlate","fix_ave_correlate_long","fix_ave_histo","fix_ave_time","fix_aveforce","fix_balance","fix_bond_break","fix_bond_create","fix_bond_swap","fix_box_relax","fix_colvars","fix_deform","fix_deposit","fix_drag","fix_drude","fix_drude_transform","fix_dt_reset","fix_efield","fix_ehex","fix_enforce2d","fix_eos_cv","fix_eos_table","fix_eos_table_rx","fix_evaporate","fix_external","fix_freeze","fix_gcmc","fix_gld","fix_gle","fix_gravity","fix_heat","fix_imd","fix_indent","fix_ipi","fix_langevin","fix_langevin_drude","fix_langevin_eff","fix_lb_fluid","fix_lb_momentum","fix_lb_pc","fix_lb_rigid_pc_sphere","fix_lb_viscous","fix_lineforce","fix_manifoldforce","fix_meso","fix_meso_stationary","fix_modify","fix_momentum","fix_move","fix_msst","fix_neb","fix_nh","fix_nh_eff","fix_nph_asphere","fix_nph_body","fix_nph_sphere","fix_nphug","fix_npt_asphere","fix_npt_body","fix_npt_sphere","fix_nve","fix_nve_asphere","fix_nve_asphere_noforce","fix_nve_body","fix_nve_eff","fix_nve_limit","fix_nve_line","fix_nve_manifold_rattle","fix_nve_noforce","fix_nve_sphere","fix_nve_tri","fix_nvt_asphere","fix_nvt_body","fix_nvt_manifold_rattle","fix_nvt_sllod","fix_nvt_sllod_eff","fix_nvt_sphere","fix_oneway","fix_orient","fix_phonon","fix_pimd","fix_planeforce","fix_poems","fix_pour","fix_press_berendsen","fix_print","fix_property_atom","fix_qbmsst","fix_qeq","fix_qeq_comb","fix_qeq_reax","fix_qmmm","fix_qtb","fix_reax_bonds","fix_reaxc_species","fix_recenter","fix_restrain","fix_rigid","fix_rx","fix_saed_vtk","fix_setforce","fix_shake","fix_shardlow","fix_smd","fix_smd_adjust_dt","fix_smd_integrate_tlsph","fix_smd_integrate_ulsph","fix_smd_move_triangulated_surface","fix_smd_setvel","fix_smd_tlsph_reference_configuration","fix_smd_wall_surface","fix_spring","fix_spring_chunk","fix_spring_rg","fix_spring_self","fix_srd","fix_store_force","fix_store_state","fix_temp_berendsen","fix_temp_csvr","fix_temp_rescale","fix_temp_rescale_eff","fix_tfmc","fix_thermal_conductivity","fix_ti_rs","fix_ti_spring","fix_tmd","fix_ttm","fix_tune_kspace","fix_vector","fix_viscosity","fix_viscous","fix_wall","fix_wall_gran","fix_wall_piston","fix_wall_reflect","fix_wall_region","fix_wall_srd","group","group2ndx","if","improper_class2","improper_coeff","improper_cossq","improper_cvff","improper_distance","improper_fourier","improper_harmonic","improper_hybrid","improper_none","improper_ring","improper_style","improper_umbrella","improper_zero","include","info","jump","kspace_modify","kspace_style","label","lattice","log","manifolds","mass","min_modify","min_style","minimize","molecule","neb","neigh_modify","neighbor","newton","next","package","pair_adp","pair_airebo","pair_awpmd","pair_beck","pair_body","pair_bop","pair_born","pair_brownian","pair_buck","pair_buck_long","pair_charmm","pair_class2","pair_coeff","pair_colloid","pair_comb","pair_coul","pair_coul_diel","pair_cs","pair_dipole","pair_dpd","pair_dpd_fdt","pair_dsmc","pair_eam","pair_edip","pair_eff","pair_eim","pair_exp6_rx","pair_gauss","pair_gayberne","pair_gran","pair_gromacs","pair_hbond_dreiding","pair_hybrid","pair_kim","pair_lcbop","pair_line_lj","pair_list","pair_lj","pair_lj96","pair_lj_cubic","pair_lj_expand","pair_lj_long","pair_lj_sf","pair_lj_smooth","pair_lj_smooth_linear","pair_lj_soft","pair_lubricate","pair_lubricateU","pair_mdf","pair_meam","pair_meam_spline","pair_meam_sw_spline","pair_mgpt","pair_mie","pair_modify","pair_morse","pair_multi_lucy","pair_multi_lucy_rx","pair_nb3b_harmonic","pair_nm","pair_none","pair_peri","pair_polymorphic","pair_quip","pair_reax","pair_reax_c","pair_resquared","pair_sdk","pair_smd_hertz","pair_smd_tlsph","pair_smd_triangulated_surface","pair_smd_ulsph","pair_smtbq","pair_snap","pair_soft","pair_sph_heatconduction","pair_sph_idealgas","pair_sph_lj","pair_sph_rhosum","pair_sph_taitwater","pair_sph_taitwater_morris","pair_srp","pair_style","pair_sw","pair_table","pair_table_rx","pair_tersoff","pair_tersoff_mod","pair_tersoff_zbl","pair_thole","pair_tri_lj","pair_vashishta","pair_write","pair_yukawa","pair_yukawa_colloid","pair_zbl","pair_zero","partition","prd","print","processors","python","quit","read_data","read_dump","read_restart","region","replicate","rerun","reset_timestep","restart","run","run_style","set","shell","special_bonds","suffix","tad","temper","thermo","thermo_modify","thermo_style","timer","timestep","tutorial_drude","tutorial_github","uncompute","undump","unfix","units","variable","velocity","write_coeff","write_data","write_dump","write_restart"],objects:{},objnames:{},objtypes:{},terms:{"00a":343,"00b":343,"02214e23":99,"03275e":522,"0892e":12,"0b1":11,"0e20":[359,499,523],"0e4":[268,352,422],"0e5":268,"0x98b5e0":205,"100k":1,"1024x1024":205,"10e":410,"10f":3,"10g":523,"10th":[491,497,510],"10x":[3,384,385,387,388,398],"10x10x10":166,"10x20x20":379,"15g":[206,523],"16e":317,"16g":[218,222],"16x":1,"18986e":385,"1_12":379,"1_3":379,"1_6":379,"1_prop":6,"1fluid":[419,450,478],"1st":[2,6,8,12,19,21,37,44,56,59,60,62,75,95,172,184,186,198,210,211,218,219,220,221,222,226,230,240,241,270,304,314,317,345,357,361,382,388,393,394,398,405,407,415,417,418,419,426,427,436,437,442,443,444,449,450,451,455,466,476,477,478,479,480,481,484,490,496,504,505,508,523],"1x2x2":493,"2000k":205,"20x":398,"23899e":385,"2400k":205,"298k":409,"2_3":379,"2k_ss":417,"2nd":[2,3,6,11,12,14,16,37,45,46,56,59,62,75,81,96,160,167,198,206,218,219,220,221,222,226,228,230,240,241,270,316,322,330,357,360,367,375,385,386,387,388,392,394,407,417,424,425,442,449,450,466,475,476,477,478,479,480,481,484,496,503,505,508,523],"2pi":198,"2theta":177,"2x1x2":493,"2x2x1":493,"2x2x2":493,"2x4x10":493,"2x5":417,"300k":[247,316,511,524],"310k":511,"3419e":268,"3806504e":[6,99],"3n_k":246,"3nk":306,"3nkb":311,"3rd":[4,9,14,16,19,37,56,75,115,125,198,218,219,221,222,226,240,241,316,318,357,386,390,392,407,417,419,424,425,449,450,466,476,477,478,479,480,481,484,496,503,508,523],"3x3":[99,379],"4857990943e":417,"49e":317,"4_94":11,"4th":[6,37,56,87,113,114,127,174,184,198,206,317,330,357,377,391,393,394,398,415,418,419,422,426,442,449,450,451,455,466,476,477,478,479,481,484,496,503,508,511,528],"4x10":375,"4x2x10":493,"4x6x10":493,"50k":1,"53xx":17,"54xx":17,"58i":210,"5_1":398,"5_12":379,"5_6":379,"5kx":[212,236],"5nlog_2":12,"5th":[127,385,419,513],"6021765e":522,"66e":317,"6863e22":454,"6x6":6,"72360e":268,"7797e":268,"7842e":12,"8032044e":522,"8706e":465,"8706q":465,"8730m":465,"8730n":465,"8e12":220,"8x1":6,"8x2":[6,12],"948q":465,"9e18":[12,39],"9e9":454,"9jan09":[352,422],"9th":387,"__main__":494,"__pthread_key_cr":12,"_boundingbox":203,"_compute_group_group":154,"_compute_heat_flux":154,"_compute_t":8,"_j1m1m1":152,"_j2m2m2":152,"_manifold_rattl":518,"_pair_lj":9,"_serial":12,"_wirnsberg":237,"abstract":16,"boolean":[3,357,359],"break":[],"byte":[3,12,220,513],"case":[1,2,3,6,8,11,12,13,14,15,16,17,39,40,41,45,46,61,63,65,75,77,113,114,119,125,127,128,155,156,157,158,159,161,164,165,166,167,168,170,171,172,176,178,180,181,182,184,201,202,203,204,205,206,212,213,217,218,219,221,222,223,224,226,228,230,234,236,242,245,248,249,251,252,253,254,256,268,270,271,272,273,274,275,276,277,278,286,290,291,293,295,297,298,302,303,305,306,307,308,315,316,317,319,322,324,325,327,330,334,337,338,339,341,342,346,348,349,351,352,354,355,356,357,359,375,376,377,379,382,384,385,386,387,389,391,392,394,403,406,408,410,415,417,421,422,424,425,426,438,439,440,442,445,447,449,450,451,455,458,461,463,467,474,477,478,479,481,488,489,491,494,496,498,499,503,504,506,508,510,512,513,514,515,517,518,522,523,524,527,528],"catch":[1,3,494],"char":[6,8,465],"class":[1,3,5,6,7,8,9,11,12,13,21,36,44,55,186,197,243,305,361,370,404,425,457,458,475,484,494,496],"default":[],"else":[8,204],"export":[205,405],"false":[359,523],"final":[3,5,6,7,8,9,11,12,16,41,61,95,153,206,217,218,219,221,222,224,228,230,245,269,270,275,306,310,316,317,318,322,343,345,346,353,359,385,387,393,394,398,415,418,419,426,438,442,451,455,456,476,477,478,479,481,484,491,504,510,517,518,523,526],"float":[3,6,8,12,40,42,75,124,202,206,218,222,250,305,318,336,417,462,464,494,496,506,513,523],"function":[],"import":[1,2,3,6,9,11,16,75,115,178,189,209,228,245,248,249,253,254,270,311,337,338,339,341,346,356,358,438,445,458,494,496,505,513,517],"int":[3,6,8,11,111,243,245,253,255,311,346,513],"long":[],"new":[],"null":[3,6,99,100,117,123,153,178,209,223,229,232,235,267,305,314,317,319,322,326,327,330,332,352,393,394,407,415,418,422,425,426,427,442,443,444,451,455,457,458,466,476,479,480,481,484,496,499,504,506,524],"public":[0,7,8,12,243,252,418,449,450,456,465],"return":[2,3,6,8,11,14,15,16,17,18,41,75,118,119,128,146,147,151,176,178,206,218,230,243,270,359,373,375,422,493,494,495,503,506,512,523],"short":[1,3,6,7,9,13,15,176,270,316,334,347,377,381,388,389,392,394,398,399,401,402,403,407,408,410,417,425,428,430,434,438,441,442,447,448,452,460,465,477,482,491,494,504,506,510,517,518],"static":[],"switch":[1,3,6,10,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,99,123,152,155,165,177,184,185,187,188,189,190,192,193,195,196,198,205,208,212,216,223,230,238,244,248,252,253,256,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,343,344,354,360,362,363,365,366,369,371,373,375,377,380,387,391,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,445,448,451,452,454,457,458,459,460,467,476,477,479,480,481,482,484,486,487,488,490,491,493,496,498,499,503,505,509,511,518,523,526,528],"throw":513,"true":[6,12,13,16,119,126,129,202,203,218,224,226,230,270,271,297,298,299,303,316,341,345,357,359,392,417,422,465,476,494,498,506,523],"try":[1,3,8,12,16,18,218,250,256,342,343,344,349,494,518,523],"var":[3,11,12,178,357,375,507,523],"void":[4,6,7,8,41,181,224,243,499],"while":[1,3,9,11,12,13,17,75,115,152,161,176,189,202,207,216,228,230,234,246,247,252,253,254,256,262,270,293,306,307,311,313,347,377,385,392,398,409,415,457,458,479,481,484,491,494,505,510,517],a10:359,a123:359,a12:459,a2m:[6,99],a_0:[256,346,398],a_0_real:256,a_1:346,a_2:346,a_3:346,a_4:346,a_c:406,a_cc:406,a_f:481,a_ij:398,a_pi:398,a_sigma:398,a_ss:406,aat:185,aatom1:126,aatom2:126,aatom3:126,ab_23_cd:359,abbrevi:12,abc:[3,12,359,494,523],aberdeen:[88,89,239,321],abf:229,abf_integr:13,abi:207,abil:[3,228,270,303,316,417],abl:[3,8,9,11,12,39,94,202,207,227,236,244,286,342,349,392,494,523,527],ablat:346,abort:511,about:[0,1,3,6,8,9,11,12,13,16,39,41,42,63,65,82,119,126,127,130,172,178,202,203,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,234,235,236,237,238,242,243,244,245,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,269,275,279,280,281,282,283,284,285,286,287,288,289,292,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,318,319,320,330,331,332,334,335,337,338,339,340,341,342,343,344,345,346,348,349,350,351,353,354,355,356,357,374,377,384,385,387,392,397,403,408,425,454,458,487,494,497,498,503,504,506,511,515,518,523,526,528],abov:[1,2,6,7,8,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,37,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,59,65,66,71,74,75,76,77,80,81,94,95,97,98,99,103,104,106,107,123,125,127,130,152,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,176,177,178,180,181,184,185,186,187,188,189,190,191,192,193,195,196,198,202,203,204,205,206,209,210,211,212,213,218,219,221,222,224,227,228,230,231,236,240,243,245,249,251,253,254,255,259,269,270,275,299,302,304,309,315,316,317,322,330,334,337,338,339,340,357,359,360,361,362,363,364,365,366,367,369,371,377,379,382,386,387,391,392,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,428,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,447,448,449,450,452,454,455,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,490,491,492,493,494,496,497,498,499,500,503,504,505,506,507,510,511,514,517,518,523,524,527,528],abscissa:[449,450,477,478],absenc:213,absent:517,absolut:[3,206,216,229,230,234,322,336,376,377,385,422,430,497],absorb:346,absoult:377,ac3:177,academ:245,acc:341,acceler:[],accelri:[6,13],accept:[7,12,95,176,178,206,227,230,245,341,402,434,504,511,518],acceptanc:216,acceptor:424,access:[0,3,6,7,8,9,11,12,15,38,40,58,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,93,96,97,98,99,100,101,102,103,105,106,109,110,111,113,114,115,116,117,118,119,121,122,123,124,125,126,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,173,174,175,176,177,199,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,235,236,237,238,242,243,244,245,246,247,248,249,250,251,253,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,275,279,280,281,282,283,284,285,286,287,288,289,292,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,327,330,331,332,333,334,335,336,337,338,339,340,342,343,344,345,346,348,349,350,351,352,353,354,355,356,372,376,392,394,420,422,424,425,442,457,458,467,493,494,497,502,514,523],accident:518,accidenti:369,accler:[9,12,15],accommod:214,accomod:270,accompani:8,accomplish:[15,230,257,287],accord:[6,66,75,88,133,139,142,160,205,216,225,226,241,256,270,286,298,306,322,324,343,344,346,351,352,354,355,356,388,417,422,433,436,455,462,464,465,467,469,470,472,473,474,510,523],accordingli:[11,112,156,157,171,176,182,388,439,440,474],account:[],accuml:[3,316,342,349],accumul:[6,8,14,75,88,154,209,219,220,253,316,322,348,374,392,502,522],accur:[1,3,6,9,14,16,37,41,56,161,224,268,311,316,317,320,334,342,349,355,357,377,398,417,421,422,447,459,475,477,478,479,481,510,515,523],accuraci:[1,3,6,12,41,201,202,206,224,237,247,270,308,320,347,357,376,377,384,394,417,447,449,450,457,458,477,478,485,505,510,515,517,523,527],accuractli:515,ach:376,achiev:[1,3,6,9,10,15,16,17,28,41,224,237,245,247,270,271,286,298,299,306,376,425,505],achiv:17,acid:9,ackag:[212,223,238,244,320],ackland1:415,ackland2:415,ackland:[],acknowledg:[],acml:12,aco:523,acolor:[205,206],acoust:298,acquir:[3,6,60,63,64,181,182,226,228,230,270,453,489,501,517],across:[1,2,3,6,9,12,13,14,41,59,63,68,71,73,75,84,102,119,126,128,166,180,182,218,221,224,235,249,316,318,323,342,346,349,355,359,387,392,491,496,499,500,504,513,515],act:[3,6,119,129,163,234,248,251,252,253,254,256,259,269,316,327,341,343,344,346,355,356,357,385,400,411,421,422,424,459,474],acta:[130,177,393],actinid:[9,445],action:[2,6,11,12,75,246,251,344,517],activ:[5,8,11,12,13,55,61,95,176,229,246,250,253,259,265,269,296,316,317,325,345,374,438,475,505,517,520,523],active:[265,490],actual:[1,3,6,8,12,56,64,134,161,202,203,206,210,211,223,225,226,234,253,254,293,297,302,303,311,314,322,334,337,338,339,341,347,356,357,376,388,421,423,428,433,439,440,474,493,494,505,506,514,523],actualli:336,adam:[376,377],adapt:[],adapti:297,adaptiv:[9,229,394],add:[0,1,3,5,6,7,8,9,11,12,13,14,15,16,17,18,40,42,75,95,99,112,125,128,129,131,176,178,179,202,203,204,205,209,210,211,212,213,215,217,218,219,221,222,226,229,234,236,237,243,247,248,249,251,253,255,256,260,268,269,270,271,272,273,274,275,276,277,278,290,291,293,294,295,297,305,315,316,319,320,330,331,333,337,339,340,344,345,346,348,350,351,355,357,377,379,384,386,394,399,401,404,408,417,425,430,442,447,448,452,458,460,494,496,497,502,504,506,508,515,517,518],add_molecul:215,add_speci:215,add_to_nodeset:215,added:[497,518],addforc:[],adding:[],addit:[1,2,3,4,6,7,8,9,12,13,14,15,16,17,19,21,28,32,36,37,39,40,41,42,44,50,55,56,65,118,119,124,154,178,179,181,182,186,191,197,198,199,200,205,206,207,209,212,220,223,224,228,229,234,236,237,240,241,245,247,248,249,253,256,270,271,272,273,274,275,276,277,278,290,291,293,294,295,297,305,316,319,320,321,323,347,350,351,355,361,367,370,372,377,379,387,389,392,393,394,398,399,401,403,405,407,408,411,413,414,415,416,417,418,422,423,425,426,427,429,430,438,440,441,442,443,444,445,447,449,450,451,452,455,457,458,460,465,466,475,476,477,478,479,480,481,484,488,491,496,497,498,503,504,505,508,510,517,518,519,521,523,526,527,528],addition:[],additionali:203,addres:9,address:[7,8,11,205,252,518],addtorqu:[],adequ:[262,334,347,376,387,505],adher:28,adhikari:256,adiabat:[],adiam:[205,206],adjac:[39,176,178,237,387,447,477,478,479,510,511],adjiman:446,adjust:[2,3,6,15,16,41,61,130,140,156,157,158,161,162,165,166,171,172,177,182,202,205,218,224,228,230,250,253,257,261,266,267,270,271,275,293,297,300,302,303,306,307,308,309,314,316,325,334,338,342,347,349,350,351,353,354,356,376,377,385,387,392,394,414,439,440,465,481,506,524],adjust_radiu:325,adjust_radius_factor:325,admiss:275,adof:[158,218],adopt:[315,517],adp:[],adri:[9,312,457,458],adust:172,advanc:[3,250,398,491,502],advantag:[1,6,8,11,17,39,40,41,224,392,416,505,510],advect:[3,6,334],advertis:8,advis:[387,456],afer:3,affect:[1,6,10,14,15,16,40,62,63,75,96,128,153,162,176,182,205,206,211,218,219,221,222,225,226,227,228,230,231,237,243,249,251,253,259,265,267,271,272,273,274,276,277,278,284,290,291,293,295,316,318,332,346,356,369,376,383,384,385,387,388,389,392,417,439,440,447,493,494,496,498,499,501,504,506,515],affin:[15,16,17,230,392,407],affiniti:392,afile:247,aforement:17,afresh:[304,504,523],afshar:412,after:[],afterrun:504,afterward:3,afterword:41,ag1:177,ag2:177,again:[6,11,12,15,16,64,152,158,164,172,202,206,230,237,249,302,360,375,387,439,440,491,493,494,496,498,503,510,512,523,526],against:[11,12,13,66,231,387,457,458],aggreg:[6,12,68,71,73,84,102,119,126,249,266,314,316,332,491,524],aggress:[237,249,510],agilio:[9,13],agre:[3,8,198,385,394,427,458],agreement:[5,7],ahd:424,ahead:353,aidan:[0,5,7,9,13,379],aij:13,aim:6,airebo:[],ajaramil:[7,9,13],aka:205,akohlmei:[7,9,13,207,250],aktulga:[7,9,309,458],al2o3:465,al2o3_001:[130,318],al3:177,ala:[256,465],alain:9,alat:[297,442],albe:[455,479,481],albeit:315,albert:9,alchem:[95,172],alcohol:349,alcu:[393,398],alcu_eam:455,alderton:411,alejandr:[270,271],alessandro:13,algebra:445,algorithm:[0,1,6,7,8,9,41,63,206,209,215,224,227,230,237,249,256,258,259,284,299,307,316,320,321,341,342,346,349,354,383,384,385,389,392,413,417,440,445,462,464,491,493,510],alia:[9,15],alias:[1,377],aliceblu:206,align:[6,9,12,28,41,75,180,198,224,251,379,496,499,517],alkali:417,all:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,32,36,38,39,40,41,42,44,50,54,55,57,58,59,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,171,172,173,174,175,176,177,178,179,180,181,182,184,186,191,197,198,199,202,203,204,205,206,207,209,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242,243,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,262,263,265,266,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,329,330,331,333,334,335,336,337,338,341,342,343,344,345,346,347,348,349,351,352,353,354,355,356,357,358,359,360,361,365,370,372,374,375,376,377,378,379,382,385,386,387,388,389,391,392,393,394,395,397,398,399,401,402,403,404,405,407,408,411,412,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,434,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,487,488,489,490,491,493,494,495,496,497,498,499,500,501,503,504,505,506,507,508,509,510,511,513,514,515,517,518,522,523,524,526,527,528],allen:[28,95,411,421],allentildeslei:95,allign:3,allindex:358,alloc:[3,5,6,8,9,11,12,62,243,348,386,388,392,453,458,496,504],allocat:3,alloi:[],allosw:75,allow:[1,2,3,6,8,9,11,12,13,14,15,16,17,21,36,38,39,40,41,55,57,58,59,60,61,63,64,65,81,100,117,119,154,156,157,158,171,176,177,178,180,186,197,198,199,201,202,203,205,206,207,209,210,212,213,214,215,216,218,219,220,221,222,223,224,226,227,228,229,230,231,232,235,236,243,245,246,247,248,250,251,253,256,259,260,265,267,270,271,297,301,302,303,304,305,306,308,310,315,316,318,319,320,322,324,325,329,330,331,332,333,334,341,342,343,344,346,347,348,349,350,351,355,357,359,361,370,372,376,377,379,385,386,387,388,391,392,394,395,398,399,400,401,402,403,408,415,417,422,423,424,425,430,434,439,440,445,447,455,458,459,462,464,465,474,482,485,487,489,491,494,496,498,499,500,501,502,503,506,508,509,510,513,514,518,523,524],almost:[2,3,12,62,251,306,346,377,389,392,474],alo:408,alon:[6,7,227,312,457,458,494],alond:13,along:[6,8,12,28,40,75,95,130,176,177,178,201,202,205,218,227,237,251,256,257,261,262,267,269,306,316,320,322,326,330,332,341,345,346,352,355,357,379,381,383,384,385,387,408,411,422,425,428,430,434,442,457,458,477,478,496,499,506,507,523],alonso:[443,444],alpha:[6,12,51,210,256,306,307,311,385,393,396,399,408,412,413,415,416,418,419,424,429,430,442,448,454,480,482,514,517],alpha_c:438,alpha_i:466,alpha_lj:438,alphabet:[2,3,21,36,44,55,65,186,197,209,361,370,386,405,475,496],alphanumer:[3,65,209,305,313,359,386,523],alreadi:[3,7,8,9,12,15,16,17,42,57,178,179,181,204,214,218,224,226,230,260,304,306,334,357,358,386,387,412,423,425,432,440,474,485,488,492,496,497,501,506,522,523],also:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,28,35,36,37,39,40,41,42,44,54,55,56,60,61,63,65,69,75,76,77,79,81,86,87,88,89,95,97,98,100,103,113,114,115,116,117,118,123,125,127,128,131,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,170,171,172,173,174,175,178,179,180,181,182,184,186,197,198,200,201,202,203,204,205,206,207,209,210,211,212,214,217,218,219,220,221,222,223,224,225,226,227,228,230,231,236,239,240,241,243,244,245,246,247,249,250,253,254,255,256,265,267,268,270,271,272,273,274,275,276,277,278,283,287,288,290,291,293,294,295,297,298,299,301,302,303,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,326,327,330,332,334,337,338,339,340,341,345,346,347,348,350,352,355,357,358,359,361,367,370,374,376,377,379,380,382,385,386,387,388,389,391,392,398,402,403,405,409,410,411,412,413,415,416,417,421,422,424,425,426,434,438,439,442,445,447,451,453,454,455,456,458,459,460,462,469,470,472,473,475,476,477,478,479,480,481,482,484,491,493,494,495,496,497,498,499,500,501,503,504,505,506,508,509,510,511,514,515,516,517,518,519,521,522,523,524,526,528],alter:[3,6,8,9,11,12,41,61,155,156,157,158,159,161,164,165,166,167,170,171,178,182,202,203,205,207,210,211,218,225,226,227,228,230,269,270,311,314,316,319,327,334,342,349,356,384,387,425,496,501,503,506,523,524,528],altern:[1,6,8,9,11,12,16,17,99,178,202,209,219,230,239,250,254,270,305,316,317,341,342,349,362,366,376,384,385,393,394,408,413,415,416,418,427,430,438,442,443,444,451,455,456,466,476,479,481,484,494,496,497,509,511,514],alternat:[385,517],although:[28,42,198,259,270,303,307,316,341,375,503,517,528],aluminum:488,alwai:[0,6,11,12,16,17,54,59,65,75,176,206,218,219,220,222,226,229,245,247,251,308,311,316,334,351,355,356,360,376,377,383,385,386,388,389,392,401,404,415,433,445,449,450,457,458,465,467,477,478,479,481,488,491,496,497,499,501,508,510,513,517,523,524],amap:206,amatrix:247,amaz:11,amazingli:13,amber2lmp:[],amber:[],ambient:205,ambigu:[3,65,209,523],amd:[16,392,445],amino:9,amit:9,among:[15,153,216,256],amorph:[178,480],amount:[1,3,6,12,61,96,126,176,180,201,205,216,220,228,229,245,249,253,270,297,303,316,325,334,339,342,347,349,357,376,392,412,453,496,499],amplitud:[230,267,326,352,369,499,523],amu:245,amzallag:465,analag:[6,523],analalog:6,analog:[6,117,152,180,198,422],analys:[7,501],analysi:[7,9,13,65,66,77,207,312,313,323,358,445,466,496,506],analyt:[1,3,9,13,130,172,177,320,376,398,426,427,432,445,455,477],analyz:[6,8,9,13,387,445],andersen:[286,292,320],anderson:[301,412],andre:[7,9,13],andrew:13,andzelm:474,ang:[297,517],angl:[],angle1:315,angle2:315,angle:[3,8,21,28,32,36,37,68,386,496],angle_coeff:[],angle_cosine_shift:26,angle_cosine_shift_exp:[25,187],angle_cutof:424,angle_cutoff:424,angle_hybrid:[28,67],angle_info:458,angle_styl:[],angle_typ:40,angleangl:[3,360,367,496],angleangletors:[3,185,496],anglecoeff:[3,38],angles:206,angletors:[3,185,191,496],angletyp:226,angmom:[],angmomi:[124,129,202,203,336],angmomx:[124,129,202,203,336],angmomz:[124,129,202,203,336],angstrom:[6,10,61,75,129,130,167,177,178,201,202,203,205,206,214,230,231,245,250,251,267,309,314,351,353,354,356,377,379,383,389,393,394,403,415,438,442,451,456,457,458,481,488,499,505,522,524],angular:[6,28,40,63,65,69,90,91,92,93,116,124,129,152,156,157,170,171,178,202,203,209,253,259,266,267,272,273,274,276,277,278,280,281,282,285,288,289,290,291,295,314,316,320,326,336,393,398,407,422,439,440,442,445,455,475,479,480,496,506,523,524],angularm:281,anharmon:[26,53,187,311,510],ani:[1,3,6,7,8,9,10,11,12,13,15,16,21,28,37,38,39,40,41,42,44,55,56,58,60,61,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,184,186,198,199,201,202,203,204,205,206,209,212,213,214,216,218,219,222,223,224,225,226,227,228,229,230,231,233,234,236,237,241,242,245,248,249,251,253,256,259,266,267,270,275,297,299,301,302,303,305,307,308,309,311,313,314,316,319,320,322,326,327,330,333,334,335,336,345,346,351,353,355,357,358,359,361,372,375,376,377,379,382,383,385,386,387,389,390,391,392,394,398,402,403,407,408,411,412,415,416,418,421,425,426,427,434,445,447,449,450,455,457,458,459,466,475,476,477,478,479,480,481,482,483,484,489,490,491,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,514,515,517,518,519,521,522,523,524,526,527,528],anihil:[438,448],anim:[2,4,7,11,13,205,387],animat:[4,205],anion:[418,465],aniso:[3,228,230,270,271,272,273,274,275,276,277,278,303,316],anisotrop:[253,421,459],ann:446,annoi:518,annot:[7,476,479,480,481,484,496],annual:[491,510],anoth:[3,6,7,8,9,11,12,16,28,40,65,75,131,204,205,209,210,216,218,221,222,227,230,231,237,246,249,253,254,259,270,271,275,302,316,318,337,338,339,346,356,359,383,385,387,388,391,408,412,417,418,421,424,425,429,430,438,457,459,467,474,477,479,480,481,490,491,494,497,503,511,517,518,523,528],another:[1,6,12,76,95,127,305,316,381,505],ansi:[9,12,15],answer:[3,4,8,12,316,389,390],anthoni:344,antiquewhit:206,antisymmetr:[9,40,395],antisymmetri:417,antonelli:[343,344],antonio:454,any:[1,3,6,12,14,42,61,68,73,176,201,202,205,206,212,213,223,226,230,232,248,251,267,303,319,327,352,354,356,425,457,474,491,493,494,496,497,499,507,510,524],anymor:344,anyon:7,anyparticl:94,anyth:[8,11,178,230,252,476,479,481,507,518],anywai:[181,392,517,526],anywher:[12,178,405,442,466,523],aoff:[386,496],aparam:[95,210,211],apart:[3,179,259,330,388,397,467,496,505],aperiod:298,api:[9,11,12,207,426,494],appar:3,appear:[2,3,6,11,12,13,39,40,41,76,81,95,100,117,119,126,127,152,161,178,179,181,202,203,205,206,218,224,228,231,234,245,250,302,313,345,357,359,360,376,385,386,387,406,415,442,447,449,450,465,477,478,484,492,493,494,496,497,498,501,503,517,523,528],append:[],appendix:[28,411,465],appl:[228,270,271,484],appli:[2,3,4,5,6,8,9,12,16,17,28,32,41,50,59,61,63,65,75,76,95,96,115,127,152,153,158,164,166,168,172,177,178,180,184,186,191,197,201,202,203,205,206,209,210,211,212,213,215,218,224,228,229,230,232,235,236,237,239,240,241,243,244,245,246,247,248,250,251,253,254,255,256,260,270,271,275,276,277,278,284,290,291,295,296,297,299,303,306,314,315,316,319,320,322,323,326,330,331,333,335,337,338,339,340,342,344,345,346,349,357,376,379,385,386,387,397,399,401,403,408,411,417,419,422,423,424,425,427,428,430,436,440,445,447,450,452,457,460,461,462,463,464,474,478,482,487,496,497,499,500,501,505,506,508,513,515,517,523,524,526,527],applic:[1,6,9,12,16,207,227,231,232,243,245,247,250,297,302,305,315,322,330,342,349,376,392,481,506,517],applicat:215,appling:228,apply:[95,223,228,232,247,253,254,255,320,330,331,332,333],applyt:3,appopri:[9,16],approach:[6,7,202,215,246,298,299,311,316,341,342,344,346,349,376,398,408,410,413,414,421,425,445,459,461,463,474,485],appropri:[1,2,3,6,8,9,11,12,13,14,16,32,37,42,50,56,57,63,77,96,99,127,128,129,156,157,158,186,191,197,198,201,202,203,206,218,219,222,227,228,230,243,244,247,256,265,267,268,270,272,273,274,275,276,277,278,290,291,293,295,299,302,303,306,311,316,321,334,337,338,339,342,349,351,352,354,355,356,367,377,387,394,398,402,406,407,408,416,422,425,427,434,438,445,456,457,458,476,477,478,479,480,481,484,485,496,497,498,500,501,509,510,513,523,524],approri:248,approxim:[6,9,130,134,177,245,247,256,299,318,320,341,376,381,383,384,385,400,410,417,419,421,439,440,445,447,450,456,459,465,478,482,487,510,517],april:11,aprpopri:491,apu:[439,440],aqua:[205,206],aquamarin:206,ar_thermal:215,ar_ttm:215,ara:13,arbitrari:[6,40,60,127,202,203,205,207,229,230,248,270,299,303,307,317,476,494,507,523],arbitrarili:[11,61,127,152,201,228,270,408,523],arcco:3,arch:[1,9,12,14,16],architect:374,architectur:[15,392,445],archiv:[6,7,9,12,336,405,503],archive:[11,12],arcsin:3,area:[6,41,99,123,127,176,224,230,256,342,349,414,422,454,483,493,506],aren:[127,359,458],arflags:12,arg:[3,11,12,21,40,41,44,55,61,65,75,95,128,166,172,176,178,181,182,186,201,202,203,204,206,209,210,211,212,214,216,218,219,220,221,222,223,224,225,226,229,230,231,236,237,243,245,248,249,250,251,259,262,267,272,273,274,286,292,302,315,316,318,319,323,326,327,329,341,344,351,352,353,354,356,357,361,374,387,392,399,400,401,403,404,405,410,411,413,417,423,425,430,434,438,439,440,441,448,452,460,462,464,475,482,493,494,496,499,501,503,505,507,509,514,515,523,524,527,528],argon:245,argonn:12,args:494,argument:[2,3,6,8,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,65,77,95,99,117,123,127,152,153,155,160,165,166,167,172,176,178,179,180,182,184,185,186,187,188,189,190,192,193,195,196,198,202,203,206,209,210,211,212,214,217,218,219,220,221,222,223,224,228,229,230,238,240,241,243,244,245,247,248,252,253,259,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,301,302,304,308,309,313,316,317,318,319,320,334,346,348,352,354,357,359,360,361,362,363,365,366,367,369,371,374,375,377,378,379,382,387,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,410,411,412,413,415,416,418,419,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,441,442,443,444,447,448,449,450,451,452,454,455,457,458,459,460,465,466,467,475,476,477,478,479,480,481,482,484,486,487,488,490,491,492,493,494,495,496,497,499,501,504,505,506,507,511,513,514,523,524,527],aris:[12,487],arithmet:[3,6,113,376,403,406,433,447,482,483],arkansa:9,arl:[9,88,89,239,321],armv8:16,army:[88,89,239,321],arnold:376,around:[1,3,4,6,9,12,42,59,60,61,69,74,75,76,77,81,127,129,152,156,173,176,178,180,184,201,205,206,213,214,228,230,231,251,267,270,303,305,307,311,316,326,330,334,351,352,355,375,381,386,465,496,499,506,507,517,523],aroung:3,arrai:[],arrang:152,arrheniu:[317,510],art:[9,491,510],artefact:247,articl:[6,465],articul:[7,9,301],artifact:[96,176,517],artifici:[268,306,469,470,472],arun:13,arxiv:[152,204,286,292,381,466],ascend:[41,206,250,259,316,501],asci:7,ascii:[13,203,318,345,387,415,418,442,496],ash:[439,440],asid:[8,392],aside:[178,442],asin:523,ask:[3,11,518],askari:454,askoos:13,asoci:205,aspect:[6,7,61,230,245,421,459,483,496,506,510],aspect_ratio:318,asper:4,aspher:[],asphere:[],asq:[439,440],assembl:4,assign:[1,2,3,6,7,11,12,14,16,17,32,38,39,40,41,50,58,59,61,63,65,69,75,76,79,86,98,103,114,116,121,124,125,129,130,152,153,158,173,175,177,178,181,191,201,202,203,204,205,206,207,209,210,211,214,218,221,224,226,227,228,231,233,245,250,253,254,255,256,267,270,272,273,274,275,276,277,278,288,290,291,293,294,295,299,302,303,305,307,313,316,318,337,338,339,340,357,367,377,379,382,386,387,391,392,398,415,418,421,424,425,449,450,458,459,488,493,494,496,497,498,499,500,505,506,511,514,523,524],assignemnt:[6,505],assignment:14,assing:305,assingn:477,assist:[7,268],associ:[3,5,6,8,12,21,36,39,40,44,55,61,69,78,79,86,87,95,97,98,103,109,111,113,114,116,129,142,173,186,197,202,203,205,206,210,211,212,216,228,230,236,243,245,246,252,256,267,270,301,311,315,316,317,318,332,334,358,359,361,370,379,385,387,391,392,405,408,412,413,414,415,417,424,425,427,430,434,449,450,461,463,474,475,477,478,494,497,504,516,517,520,523],associd:70,assum:[2,3,4,6,9,11,12,15,16,17,39,61,70,75,96,106,112,114,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,176,178,181,206,210,211,216,218,219,221,222,228,230,242,250,252,256,259,272,273,274,276,277,278,280,282,285,288,289,290,291,295,297,298,302,303,304,307,316,319,322,330,342,345,346,351,354,357,364,376,377,386,387,392,398,400,402,405,406,414,417,424,425,429,434,439,440,491,493,494,496,498,501,506,510,513,514,517,518,524],assume:[172,387,483],assumpt:[176,250,393,447],astar:442,astart:467,asterisk:[21,44,63,81,95,127,172,182,186,206,210,211,259,316,361,382,405,424,474,490,493,506,522],astop:[385,467],asu:415,asub:442,asubrama:13,asum:305,asymmetr:[139,237,354,398,415],asynchron:[14,15],atan2:523,atan:523,atc:[],atc_fe_output:215,athomp:[0,7,9,13],atm2pa:6,atmospher:522,atobodi:129,atol:12,atom1:[301,315,386,496],atom2:[301,315,386,496],atom3:[301,315,386,496],atom4:[315,386,496],atom:[],atom_element_map:215,atom_forc:458,atom_info:458,atom_modifi:[],atom_styl:[],atom_vec:8,atom_vec_atom:8,atom_vec_electron:8,atom_veloc:458,atom_weight:215,atomey:[6,7,11,13,202,205,206],atomfil:[3,6,75,305,357,391,506,523],atomic:[0,465],atomic_charg:215,atomic_numb:455,atomid:[129,496],atomist:[6,215,341,445],atomperbin:3,atoms:[202,254,517],atomt:206,atomvec:8,attach:[6,299,322,330,496],attatch:344,attempt:[3,6,41,61,75,201,216,224,225,226,227,231,245,302,303,334,354,376,380,387,425,494,511,514,523],attend:215,attent:[14,17],attogram:522,attrac:442,attract:[],attribut:[3,6,7,8,9,11,39,40,42,60,65,75,95,124,125,126,128,129,156,172,202,203,205,206,209,210,211,217,218,221,227,228,270,272,273,274,275,276,277,278,280,281,290,291,293,295,303,316,318,336,337,338,339,379,386,398,417,425,496,497,498,506,514,523],atw:[439,440],atwater:480,atwt:442,atyp:[126,172,226,408,430,434,438],atype:172,au1:177,au3:177,aug:11,augment:[9,12,124,228,305,442],augt1:442,auo:313,auoh:313,author:[3,8,9,13,204,415,416,517],auto:[3,6,8,9,11,12,99,174,209,219,220,322,348,376,386,392,493],autocorrel:[65,99,253],autom:[9,12,205],automag:7,automat:[3,6,9,12,14,15,16,17,18,35,140,198,214,220,245,247,256,316,322,347,376,392,407,415,425,442,445,458,461,462,463,464,488,496,509,517,518,523],auxiliari:[1,6,9,11,12,13,202,298,316,497,501,526],avail:[1,3,5,6,7,8,9,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,63,65,95,123,124,152,155,165,176,184,185,187,188,189,190,192,193,195,196,198,202,205,209,210,212,218,221,222,223,228,229,230,238,244,246,248,249,250,253,270,271,272,273,274,275,276,277,278,279,280,286,288,290,291,292,293,295,308,309,310,316,318,319,320,344,354,360,362,363,365,366,369,371,374,377,381,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,442,443,447,448,451,452,454,455,457,458,459,460,466,467,476,477,479,480,481,482,484,486,487,488,497,499,505,509,523],avalo:[321,413],ave:12,ave_chunk:6,aveforc:[],avendano:446,averag:[3,6,7,12,14,41,65,66,75,88,89,95,99,100,113,115,127,130,154,158,166,174,177,202,203,206,209,211,215,217,218,219,220,221,222,223,224,228,245,247,249,253,259,270,271,275,298,303,306,312,313,316,317,318,322,360,394,413,417,419,442,450,478,482,497,501,514,517,523],averi:334,avesq:128,avg:12,avi:205,avoid:[1,3,6,12,35,39,61,129,178,179,198,205,214,219,221,222,234,245,247,254,297,299,307,311,316,318,348,355,390,398,417,438,442,448,458,477,478,482,498,504,505,517],awai:[3,6,63,127,202,205,218,227,231,248,251,269,297,322,330,345,351,388,408,430,434,501],awar:[392,416,493],awpmd:[],axel:[],axi:[3,6,41,75,100,130,142,156,177,178,180,201,205,218,224,245,248,251,267,302,326,330,346,352,365,371,379,381,496,499,506],axial:275,azimuth:[205,248],azur:206,b_k:466,ba2:177,babadi:459,back:[1,6,7,11,12,13,14,16,129,159,160,161,165,166,167,168,170,178,182,202,203,206,207,210,211,229,234,243,250,251,253,254,270,276,277,278,290,291,293,295,305,314,316,337,338,339,343,344,353,354,356,375,376,377,387,422,494,496,497,498,499,500,503,509,510,523,524],backbon:[227,320,369],backcolor:[206,527],backend:16,background:[9,95,96,123,153,206,224,230,253,334,342,346,349,387,406,439,440,442],backtrack:[383,385],backward:[12,207,387,510,523],baczewski:246,bad:[3,12,61,63,251,387,496,501,513],badli:[3,228,270],bal:341,balanc:[],balasubramanian:294,ball:[152,439,440],ballenegg:376,bammann:215,band:[4,6,7,9,152,209,269,384,387,398,445,465],bandwidth:[1,10,17,40],bandwith:205,bar:[95,205,522],barashev:415,bare:[234,252,254],barost:[234,517],barostat:[],barostt:6,barr:407,barrat:311,barrett:70,barrier:[3,4,6,269,371,387,407,420,510],bartel:298,bartok2010:466,bartok2013:466,bartok:[9,152,456,466],bartok_2010:456,bartok_phd:456,bary:522,barycent:329,basal:[],base:[3,4,6,8,9,11,12,13,14,19,65,66,75,82,95,99,113,122,130,158,160,177,178,180,202,204,205,206,209,215,224,225,226,230,231,235,245,250,253,257,259,284,292,298,299,302,305,307,309,316,317,318,322,323,334,341,377,392,394,396,398,412,417,421,424,425,426,428,430,439,443,444,452,454,455,465,476,480,481,484,491,493,496,497,498,500,503,506,507,510,511,514,518,522,523,524,528],bash:405,bashford:[6,19,184,403,508],basi:[3,6,12,40,152,158,178,214,253,255,298,334,351,379,428,506,523],basic:[6,7,8,12,16,41,124,153,205,206,215,224,270,271,297,355,393,395,445,490,498,517],basin:[94,387,491,510],bask:[415,442,455],bath:[9,306,311],batom1:[73,126,128,202,206],batom2:[73,126,128,202,206],bayli:[6,184,508],bb13:185,bcc:[],bcolor:[3,205,206],bdiam:[3,205,206],be2:177,bead:[5,7,10,13,40,45,46,170,213,227,299,474],beam:231,bear:[6,246],becau:13,becaus:[0,1,3,6,8,12,15,16,17,40,41,42,61,66,75,76,81,100,117,127,140,152,158,163,168,178,179,180,202,203,204,205,206,207,212,218,224,225,226,227,228,230,236,244,245,246,247,252,253,254,255,267,270,271,284,286,293,302,306,307,311,316,330,336,341,342,345,346,349,353,354,355,356,357,363,376,383,385,387,388,391,392,403,405,408,410,412,417,418,421,422,423,424,425,429,438,439,440,442,447,449,450,459,474,475,477,482,483,493,494,496,498,499,500,503,505,506,508,510,511,517,518,522,523,524,526,528],beck:[],becker:[393,415],beckman:250,becom:[1,2,3,6,7,8,17,39,41,54,59,61,75,180,202,203,205,206,224,225,226,227,230,237,245,247,256,269,270,313,314,337,338,351,352,354,355,356,376,377,383,387,394,406,408,415,417,421,430,447,455,459,476,484,487,496,497,499,506,518,523],been:[1,2,3,6,7,8,9,11,12,13,15,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,45,46,47,48,49,51,53,54,56,59,61,62,65,68,73,75,95,123,124,125,126,128,129,131,155,156,157,158,159,160,161,165,166,167,168,170,171,179,180,181,182,184,185,187,188,189,190,192,193,195,196,198,201,202,203,205,206,207,212,214,216,217,218,219,221,222,223,224,227,228,229,230,231,238,244,245,248,250,251,253,254,256,257,258,259,260,265,267,268,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,301,302,303,306,308,309,310,313,314,316,319,320,329,335,337,338,339,346,347,348,351,352,353,354,356,357,360,362,363,365,366,369,371,375,376,377,385,388,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,414,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,443,444,445,448,451,452,454,457,458,459,460,467,474,476,477,479,480,481,482,483,484,486,487,488,489,491,493,494,496,497,498,499,500,502,506,510,513,514,523,524,526,527],befor:[1,2,3,6,8,12,16,21,28,39,40,41,44,57,61,69,75,78,79,86,87,97,98,103,113,114,115,116,125,158,161,166,167,173,178,179,181,182,186,200,201,206,210,211,212,213,214,216,218,221,222,223,224,228,233,234,244,245,250,252,253,254,256,259,267,270,276,277,278,290,291,295,298,305,306,307,310,311,316,318,319,335,337,338,339,345,351,352,353,357,361,382,383,385,387,392,418,419,422,438,442,445,450,475,478,485,491,493,494,497,498,499,500,501,503,504,506,510,513,514,517,518,523,524,526,527,528],began:[5,12],begin:[3,8,12,37,39,56,75,128,131,179,198,201,202,206,210,211,215,217,218,219,221,222,224,230,240,241,265,284,301,314,317,318,331,334,336,339,348,353,356,357,373,375,376,377,378,380,384,386,387,388,391,415,419,445,447,449,450,455,462,464,465,467,474,477,478,488,491,496,503,510,512,514,522,523,526],behalf:3,behav:[3,26,187,384,385],behavior:[3,182,198,202,203,205,207,227,228,231,245,246,247,250,253,254,255,270,302,306,311,334,337,338,346,384,398,417,442,488,490,498,502,522,523,526],behaviour:[6,253],behind:[8,252,268,306,334,376],beig:206,belak:7,believ:11,bellott:[6,19,184,403,508],bellow:365,belong:[2,3,40,75,129,132,181,216,218,245,259,316,357,386,461,496],below:[1,2,3,4,5,6,8,9,10,11,12,14,15,16,21,37,39,40,41,42,44,54,56,61,62,65,68,71,73,75,81,84,99,102,123,124,127,128,130,152,153,158,164,166,172,176,177,178,181,182,184,186,197,198,201,202,203,205,206,209,210,212,213,215,218,219,220,221,223,224,226,227,228,230,231,236,240,241,243,245,248,249,251,253,254,259,267,268,270,275,276,277,278,290,291,295,297,302,305,306,307,314,315,316,317,319,320,327,330,334,335,336,337,338,339,342,343,344,346,349,351,352,357,359,361,374,376,379,381,382,383,385,386,387,389,392,393,394,395,398,399,400,403,404,405,406,408,411,415,417,418,419,421,422,423,424,425,428,430,431,432,433,434,435,436,437,438,439,440,441,442,446,447,449,450,454,457,458,459,460,466,467,474,475,477,478,483,484,486,487,488,489,490,491,494,496,497,498,499,501,503,504,506,508,509,510,512,513,514,516,517,518,523,524,528],bench:[1,6,9,10,11,12],benchmark:[1,7,10,11,12,13,14,15,16,17,41,224,376,509],beneath:231,benedict:445,benefici:[63,389],benefit:[1,246,482,505],bennet:95,beowulf:7,berardi:[421,459],beraun:346,berendsen:[],berensen:316,berger:9,berkelei:176,berkowitz:376,berlin:[7,9,322],bern:[3,299,307,308,407,421,465,475,505],bernendsen:6,beryllium:417,besid:[8,319,499],best:[1,6,8,14,15,16,17,18,270,293,294,315,316,392,398,408,430,434,447,477,478,497,505,510],beta:[6,306,393,396,415,416,418,442,479,480,481,514,523],beta_:398,beta_k:466,beta_pi:398,beta_sigma:398,beta_t:480,better:[3,6,7,8,12,15,26,152,187,211,224,245,256,270,284,307,314,316,334,377,387,392,479,518],betwe:397,between:[],beutler:438,bewteen:[119,219,334,342,349,425,428,493],beyon:505,beyond:[3,5,6,12,16,63,75,95,176,202,206,221,245,270,376,389,420,436,447,510,514,523],bflag1:[42,205],bflag2:[42,205],bgq:[16,445],bi3:177,bi5:177,bia:[3,6,8,123,153,156,157,158,159,160,161,165,166,167,168,170,171,209,218,229,230,245,253,254,270,276,277,278,290,291,292,293,295,311,337,338,339,341,524],bias:[6,9,229,524],biaxial:156,biersack:[442,475,481,488],big:[3,4,12,202,306,311,334,388,406,518],bigbig:[3,12],bigger:3,bigint:[3,243],bilay:[4,10,330],bilayer1:330,bilayer2:330,bill:7,billion:[3,7,10,12,39,245,504],bin2d:75,bin3d:75,bin:[3,6,11,12,39,65,69,75,79,86,98,103,114,116,125,127,158,166,173,175,202,206,218,221,298,306,311,331,334,342,349,388,389,392,414,453,497,527],binari:[3,6,7,9,12,13,15,32,36,50,55,191,197,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,242,243,244,245,246,247,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,318,319,320,322,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,367,370,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,497,498,503,526,528],binary2txt:[],binchunk:218,bind:[9,16,17,204,398,465],binsiz:[39,206,388,392],binstyl:166,bio:[40,388],biolog:[6,7],biologi:190,biomolecul:[301,316,376,377,403],biomolecular:505,biophi:[286,292,381],biophys:250,biosym:13,bird:414,bisect:[41,224,483],bisector:[6,408,430,434],bispectrum:[65,152,466],bisqu:206,bit:[3,11,12,16,39,243,254,447,477,478,482,504,517,518],bitmap:[3,477,478,485],bitrat:[205,206],bitzek:384,bkgd_dyn:442,bks:[306,311],black:206,blais:[9,13],blanchedalmond:206,blank:[2,3,12,37,56,118,198,205,240,241,301,316,317,386,387,398,416,419,442,449,450,451,466,476,477,478,479,480,481,484,493,494,496,523],blas:12,blast:346,blend:442,block:[2,3,6,99,152,178,180,181,302,355,379,381,392,398,417,455,466,499,510,517,518],blocksiz:392,blow:[3,284,351,355,467],blown:3,blue:[2,205,206,227],bluegen:[202,376,445],blueviolet:206,bni:75,board:[377,411],bodi:[],body_nparticl:8,bodyflag:496,bodyforc:256,bodyforcei:256,bodyforcex:256,bodyforcez:256,bodystyl:[259,316],boff:[386,496],bogaert:341,bogu:[3,161,228],bogusz:96,bohr:[415,417,445,481,522],boltzmann:[6,7,9,95,99,123,155,158,159,160,161,164,165,166,167,168,170,218,227,241,253,256,257,258,259,260,275,350,412,511,522],bond:[],bond_coeff:[],bond_graph_cutoff:458,bond_harmon:[8,48,49],bond_harmonic_shift:49,bond_info:458,bond_interact:215,bond_styl:[],bond_typ:182,bond_writ:[],bondangl:[3,20,32,496],bondbond13:[3,185,496],bondbond:[3,20,32,496],bondchk:458,bondcoeff:[3,58],bonds:206,bondtyp:[225,226,386],bonet:[321,413],bonu:[3,526],book:[487,518],bookkeep:447,bookmark:0,boost:[1,3,12,66,388],bop:[],border:[3,7,15,63,346,524],boresch:95,boreschkarplu:95,born:[],boron:417,borrow:322,bose:311,botero:[7,9,13,417],both:[1,3,4,6,7,8,9,11,12,14,15,16,26,36,39,40,54,55,59,61,63,64,65,71,73,75,91,95,96,119,124,126,127,140,154,156,157,158,163,166,168,171,176,178,180,181,182,187,197,198,202,205,208,209,210,211,216,218,219,221,222,225,226,227,228,229,230,235,237,245,247,249,251,253,254,256,257,266,267,270,271,276,277,278,284,290,291,295,301,302,305,306,313,316,320,322,330,334,338,342,343,344,346,349,351,352,354,355,356,359,360,370,377,382,385,386,387,388,390,392,394,398,399,400,401,402,403,404,406,411,412,415,416,417,421,422,424,425,426,430,432,434,435,436,438,439,440,445,446,447,448,452,457,459,460,476,479,480,481,484,491,493,494,496,497,498,499,503,508,513,514,517,523,526,527,528],bottleneck:[1,3,494,515],bottom:[8,9,161,176,206,230,244,256,293,342,349,379,508],bottomwal:223,bounc:[3,334],bound:[3,6,16,25,26,41,42,59,61,75,167,180,187,201,202,203,206,221,224,230,231,235,245,254,270,302,334,351,352,353,354,355,356,376,385,417,496,499,510,517,523,524],boundar:3,boundari:[],boundary_dynam:215,boundary_faceset:215,boundary_integr:215,bounds:[6,41,202,224],bount:11,bourgogn:9,box:[],boxcolor:[205,206],boxxlo:11,bpclermont:[9,13],bptype:474,br1:177,bracket:[2,3,6,41,65,75,128,131,209,217,218,219,221,222,224,348,514,523],bragg:[130,177],branch:[],branicio2009:484,branicio:[77,484],breakabl:[7,44,55],breakag:[82,225],breakdown:[1,12,14,96,118,394,457,458,491,510],brennan:[9,88,89,239,321,413,449,450,474],brenner:[394,475],brick:[3,41,63,64,166,180,224,496,498,500,523],bridg:381,brief:[1,5,6,7,8,12,252,270,394,398,458,510],briefli:[6,10,299,407,465,518],brilliantov:422,bristol:[5,7],brittl:454,broader:494,broadli:8,broken:[2,54,68,73,74,82,113,118,126,182,225,270,398,498,508,515,526],brook:6,brought:201,brown:[7,9,13,14,15,130,153,206],brownain:400,brownian:[],brownw:7,brows:0,browser:[4,205],bryantsev:424,bsd:12,bstyle:[40,42],btype:[57,73,126,179,202,408,430,434,438,474],buc:401,buck:[],buckingham:[7,9,210,211,307,377,399,401,402,410,441,475],buckplusattr:465,buffer:[3,8,203,205,206,513],bufi:205,bug:[],bui:205,build:[],builder:[7,13],built:[1,2,3,4,6,8,9,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,40,43,45,46,47,48,49,50,51,53,54,55,56,66,70,82,85,88,89,91,94,95,106,107,108,109,110,111,115,122,123,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,162,164,165,169,170,172,176,177,184,185,187,188,189,190,191,192,193,195,196,197,198,202,203,204,207,209,212,213,214,216,220,223,225,226,227,229,230,231,236,237,238,239,240,241,242,244,245,246,247,248,250,252,253,255,256,257,258,259,260,262,263,264,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,305,306,307,308,309,310,311,312,313,316,317,319,320,321,322,323,324,325,326,327,329,334,340,341,342,343,344,346,347,349,352,353,354,358,359,360,362,363,364,365,366,367,369,370,371,377,387,388,389,392,393,394,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,448,449,450,451,452,453,454,455,456,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,491,494,497,499,505,509,510,511],bulatov:[443,444],bulk:[4,6,74,256,297,303,409,442,445,447,454,461,463,465,500],bullet:7,bump:253,bunch:8,bundl:[9,205,207,518],burlywood:206,bussi1:338,bussi2:338,bussi:[247,338],button:518,buyl:[9,204],bybe:9,bypass:6,c11:[219,442],c12:219,c13:219,c1n:219,c21:219,c22:219,c23:219,c2n:219,c31:219,c32:219,c33:219,c34:219,c3n:219,c41:219,c42:219,c43:219,c44:219,c_0:[346,394,472,473],c_1:[71,73,128,129,130,177,202,206,246,305,318,357],c_2:[73,128,130,174,176,177,202,318,348,357],c_3:[128,318],c_6:176,c_cluster:6,c_cstherm:6,c_dist:128,c_doubl:11,c_e:346,c_flux:99,c_foo:523,c_forc:128,c_gauss:420,c_hb:424,c_i:241,c_id:[6,65,75,95,128,131,202,203,217,218,219,220,221,222,318,336,348,514,523],c_ij:6,c_ijkl:6,c_index:128,c_k:246,c_ke:342,c_msdmol:131,c_my_stress:217,c_mycentro:218,c_mychunk1:125,c_mychunk2:125,c_mychunk:[6,69,79,86,98,103,114,116,158,173,175],c_mycom:221,c_mycomput:218,c_myd:203,c_myf:[202,527],c_myrdf:[127,222],c_mytemp:[8,219,220,221,222,348,514,523],c_n_k:246,c_p:153,c_pe:121,c_peratom:[121,153],c_pi:398,c_press:128,c_prop:6,c_radiu:176,c_reax:[457,458],c_saed:318,c_sigma:398,c_size:6,c_stress:202,c_tdrude:[234,254,517],c_thermo_press:[8,219,220,221,222],c_thermo_temp:222,c_xrd:221,ca2:177,cach:[16,39,447,509],cacul:320,cadetblu:206,cai:517,calcal:9,calcforc:256,calclat:99,calcluat:[115,121,123,153,408],calcualt:[99,218],calcul:[],caldwel:[6,184,508],calhoun:299,call:[],callabl:[3,11],callback:[3,8,11,154,209,243,494],caller:3,calori:522,caltech:[6,7,9,13,417],calucl:6,calul:[11,12,158,377],cambridg:[9,456],campana:298,can:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,369,370,371,372,373,374,375,376,377,379,380,382,383,385,386,387,388,389,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,522,523,524,525,526,527,528],cancel:[209,316,524],candid:[182,216,245],cannot:[1,2,3,6,9,11,12,13,14,15,16,38,39,40,41,54,58,59,60,61,71,75,90,92,96,128,131,154,156,158,179,181,182,199,202,203,204,205,206,217,218,219,221,222,224,227,228,230,231,245,246,247,253,254,255,259,267,270,272,274,276,278,280,281,282,288,290,295,302,303,306,311,313,316,318,319,323,334,342,346,348,349,351,352,355,356,357,359,372,376,379,385,387,390,391,392,401,402,404,415,421,423,430,434,436,438,447,452,457,459,460,461,463,474,475,477,478,491,493,494,496,497,499,500,502,505,506,508,510,513,522,523],canon:[9,209,216,245,247,270,271,290,291,292,293,294,295,299,338,341,344,445,454],cao1:299,cao2:299,cao:299,capabl:[5,7,9,11,16,17,353,359,377,392,394,404],capac:[9,40,111,164,239,311,346,469,496,506],capit:[233,496],capolungo:[130,177,318],captur:[6,347,394,402,417,422,434,442,517],carbid:408,carbon:[7,205,369,394,407,427,442],card:[12,15,21,44,81,95,127,186,210,211,316,361,382,405,424,490,498,503,526,528],care:[3,6,61,75,178,181,201,218,225,226,231,247,252,256,270,302,316,341,397,494,496,499,500,505,506],carefulli:[11,12,54,313,357,425,427,501],carlo:[4,6,7,9,209,216,227,245,316,341,414,475],caro:[216,415],carpent:[7,13],carri:[15,263,305,346,422,458],cart:[3,493],carter:[9,16],cartesian:[3,6,64,393,493],carv:181,cascad:[235,346],cash:7,cast:[247,523],cat:[14,205],catastroph:307,cate:256,categori:[],cation:[418,465],cauchi:[145,150],caus:[1,2,3,6,8,12,15,16,178,180,181,182,202,206,214,228,235,245,270,284,297,302,314,316,320,351,353,354,355,356,359,375,377,385,387,391,424,430,436,439,440,447,490,494,495,496,497,500,501,503,504,523,528],caution:[1,377],cautiou:[225,226],cautious:394,caveat:[394,505],cbecker:[393,415],cc1:[6,69,79,86,98,103,114,116,125,158,173,175,218],ccc:[416,476,479,481,484],ccflags:[9,15,16,17,18,202],ccm6:415,ccsi:[416,476,479,481,484],ccu:398,cd2:177,cdeam:415,cdennist:9,cdll:11,cdof:[6,158,218],cdte:398,cdte_bop:398,cdtese:398,cdzn:398,cdznte:398,ce3:177,ce4:177,ceas:384,ceil:523,cell:[3,6,61,96,127,130,176,177,178,202,214,228,229,245,250,268,270,271,275,298,306,309,321,346,376,377,379,414,417,445,514],cella:[6,514],cellalpha:[6,514],cellb:[6,514],cellbeta:[6,514],cellc:[6,514],cellgamma:[6,514],center:[3,6,24,42,65,69,75,78,79,86,94,97,98,108,113,114,115,125,127,129,130,158,159,160,163,166,170,173,175,178,205,206,209,210,211,213,218,221,228,230,231,232,234,245,246,251,253,254,259,266,270,276,277,278,290,291,293,295,302,307,313,314,316,318,322,330,331,332,334,336,337,338,339,341,342,344,351,355,360,379,381,386,397,416,417,421,422,428,439,440,442,443,444,457,458,476,479,480,481,483,484,499,506,517,523],centimet:522,centr:237,central:[3,63,74,80,81,100,117,127,134,152,176,259,297,320,332,364,386,445,451,457,458,484,496],centro:[],centroid:[3,299,483,506],cerda:376,ceriotti2:247,ceriotti:[13,247,252],certain:[1,2,3,6,8,12,16,39,75,124,128,131,182,202,203,205,217,218,219,221,222,227,243,244,316,319,335,348,359,367,375,388,425,447,458,482,498,502,517,523],certainli:251,cerutti:377,cfg:[3,6,7,9,13,202,204,205,206,207],cfile:458,cfl:[140,323],cfor:322,cg_type:460,ch2:320,ch2lmp:[],ch3:320,ch5md:204,chain3:388,chain:[],challeng:[6,322],chalopin:311,champaign:[250,376,377,439],chan:445,chandler:[393,415],chandrasekhar:[6,430],chang:[],change_box:[],changeabl:202,channel:[4,212],chapter:[299,377],charact:[2,3,6,12,37,41,56,65,198,202,203,205,206,207,209,224,240,241,305,313,317,359,386,391,417,419,429,449,450,455,457,458,465,477,478,493,494,498,503,504,523,526,527,528],character:[6,70,74,117,127,152,466,491,510],characterist:[254,334,343],charg:[1,3,4,5,6,7,9,11,14,40,86,95,96,124,130,177,178,202,203,207,209,210,211,216,231,236,245,305,307,308,309,313,336,349,376,377,386,399,401,407,408,410,411,415,417,418,425,430,434,438,452,457,458,465,475,481,482,484,485,487,488,496,497,501,506,508,517,522,523],charmm2lammp:13,charmm:[],chartreus:206,cheap:334,cheaper:[235,421,459],check:[3,6,8,9,11,12,14,16,38,39,41,58,75,99,198,199,216,224,225,226,231,242,245,251,252,302,315,320,334,342,344,349,357,359,372,375,385,386,387,388,389,392,414,426,429,447,458,489,491,493,494,496,504,510,513,514,515,523],checkf:198,checkout:518,checkqeq:458,checku:198,chem:[6,13,19,20,24,39,40,43,45,46,95,96,117,123,153,184,185,195,220,229,234,237,246,247,254,256,269,270,271,293,294,299,303,306,308,316,321,322,334,337,338,341,342,343,344,351,360,369,371,376,377,384,387,394,399,403,404,407,408,409,411,412,413,417,420,421,423,424,430,434,435,438,442,446,447,449,450,452,465,474,482,505,508,510,517],chemic:[9,40,88,89,130,172,177,202,203,215,216,245,307,312,313,341,377,419,450,457,458,470,478],chemistri:[306,307,309,394,398,417,457,458],chen:346,cheng:407,chenoweth:[457,458],chenoweth_2008:[457,458],chi:[102,167,201,297,307,309,372,418,421,524],chiefli:456,child:8,chip:[7,9,16,17,392,509],chipot:229,chiral:369,chmod:[11,12],cho:442,chocol:[7,206],choic:[3,6,9,12,14,15,17,40,41,54,95,153,156,157,171,182,198,218,224,227,230,231,247,253,256,268,270,299,303,307,316,341,370,377,383,384,387,389,392,425,438,447,453,458,496,505,506,509,510,516,517,522],choos:[1,3,6,7,8,9,12,15,16,17,28,39,54,95,128,168,169,205,225,226,227,228,231,242,253,256,268,270,272,273,274,275,276,277,278,302,303,321,334,338,352,376,377,384,485,491,493,505,511],chose:[479,481],chosen:[2,3,6,12,16,152,178,181,190,198,205,211,216,228,231,242,245,246,254,256,268,270,275,299,302,313,334,338,341,342,347,349,350,356,377,378,384,392,413,417,422,429,432,460,479,491,505,510,511,517],chri:176,christian:[7,9,16],christoph:7,chunk:[],chunkid:[69,79,86,98,103,114,116,125,158,173,175,218,331],chute:[4,9,10,248],ciccotti:320,cieplak:[6,184,508],cii:219,cij:219,circl:[42,75,329],circular:[3,6,156,200],circumst:17,circumv:[100,117,311],citat:[],cite:[3,7,8,12,253,465],civ:9,cl1:177,clarendon:[28,411],clarifi:[7,479,481],clariti:359,clark:452,class2:[],classic:[0,3,5,6,7,8,9,243,299,306,311,346,371,417],classifi:[475,484],claus:494,clean:[6,12,14,16,504],cleanli:[495,527],clear:[],clearli:7,clebsch:152,clermont:[9,13],clever:500,click:[2,11,21,36,44,55,178,186,197,205,250,361,370,387,405,475,518],client:[250,252],climb:[269,387,510],clinic:[7,13],clo:[167,201,524],clock:[12,491,510,515],clockwis:[184,352],clone:518,close:[3,6,11,12,13,39,41,70,75,153,181,202,226,227,228,247,254,256,270,286,293,316,320,352,355,375,377,380,383,384,387,392,394,398,408,409,428,442,447,449,450,457,461,463,477,481,500,506,517,518,520],closer:[3,10,41,127,176,201,202,224,228,232,343,387],closest:[226,297,316,349,421,459,474,485],cloud:[465,517],clovertown:17,clsuter:76,clump1:[301,316],clump2:[301,316],clump3:[301,316],clump:316,cluster:[],clutter:3,cmap:496,cmatrix:247,cmax:442,cmd:[11,12,299,507],cmdarg:11,cmin:442,cmm:[],cmoput:145,cn1:219,cn2:219,cna:[],cnn:219,cnr:13,cnrs:9,cnt:[425,500],co2:[40,177,317,320,386,419],coars:[7,9,10,28,35,40,54,190,241,301,316,317,334,419,423,450,460,478,505,508],coarser:[377,523],coarsest:152,code:[],coeff:[3,7,8,12,20,21,32,44,50,184,185,186,191,360,361,367,405,425,429,447,462,464,467,496,525],coeffcient:496,coeffici:[],coefficienct:412,coefficient0:415,coefficient1:415,coeffieci:[6,396,428],coeffincientn:415,coexist:[245,417],cohes:[6,418,442],coincid:[134,355,403,439,440,491],colberg:204,cold:[6,163,245,249,388,517],coldest:342,coleman8:9,coleman:[9,130,177,318],colin:9,collabor:[7,8,14],collect:[3,6,7,8,9,13,40,42,69,79,86,91,98,103,108,114,116,125,158,166,173,175,178,202,203,206,218,229,259,266,301,311,314,316,357,376,386,388,406,496,503,509,515,528],collid:[235,334,356],colliex:177,collinear:[3,301],collis:[3,256,334,352,356,414,422,488],colllis:334,colloid:[],colombo:39,colon:[207,357,497,515],color1:206,color2:206,color:[3,9,41,202,205,206,224,246,306,311],column:[3,6,9,12,13,42,65,68,69,70,71,73,75,79,81,84,86,87,89,98,100,102,103,114,116,117,119,121,124,125,126,127,128,129,131,152,153,158,166,173,175,176,177,198,202,203,206,209,217,218,219,221,222,259,267,268,306,316,335,336,346,356,394,420,424,457,458,497,511,513,523],columnar:176,colvar:[],colvarmodul:12,com:[],comamnd:230,comand:227,comannd:392,comb3:[],comb:[],comb_1:308,comb_2:308,combiant:409,combin:[3,6,7,9,11,13,35,40,65,68,73,84,95,102,113,119,126,156,157,171,202,205,215,221,237,245,250,259,262,270,286,292,299,305,321,338,347,355,358,360,376,377,379,384,392,406,408,409,413,417,418,419,425,437,438,466,476,479,481,482,484,487,499,504,509,517,523,525],come:[],comfort:[12,13],comid:331,comit:518,comm:[0,3,11,12,63,77,204,250,252,253,377,387,392,412,447,454,477,478,498],comm_modifi:[],comm_modift:63,comm_styl:[],comm_world:11,command:[],comment:[2,4,7,11,12,37,56,184,198,202,240,241,254,316,317,346,386,387,393,415,416,418,419,429,442,449,450,451,458,465,466,476,477,478,479,480,481,484,493,494,496,517,518,523],commerci:7,commit:[9,518],commmand:[3,6,12,61,118,294,428,490,491,493,510,527],common:[],commonli:[3,6,9,12,16,24,59,61,115,117,180,202,205,207,371,423,432,466,479,481,496,499,508],commun:[1,3,6,7,8,9,10,11,12,14,15,17,40,41,60,63,64,75,176,181,182,205,206,224,225,226,228,229,230,250,252,256,258,259,260,270,298,305,307,308,309,316,321,334,346,357,374,376,388,389,390,392,413,414,453,489,493,494,505,506,523,526,528],communc:376,comp:[7,204,252,253,286,292,320,377,387,417,447,454,459,473,477,478,480],compact:[65,209,405,475],compani:[5,7],compar:[1,3,4,6,8,12,16,39,94,121,130,161,177,186,197,206,234,307,357,359,376,377,385,387,442,465,491,510,511,517,522],comparison:[],compart:381,compass:[7,9,20,21,36,43,44,55,185,186,197,360,361,370,404,475],compat:[3,5,7,8,9,11,12,13,16,17,41,75,128,131,189,202,207,211,217,218,219,221,222,224,237,298,310,338,341,348,351,354,376,392,426,445,447,477,493,494,523],compens:[6,225,226,314,388,417],compet:345,competit:377,compil:[3,7,8,9,12,13,14,15,16,17,18,176,202,204,205,207,250,345,377,392,445,496,497,501,517,523],compl:16,complain:[11,12,16],complement:442,complementari:[7,408,430],complet:[3,6,9,11,12,14,41,61,75,206,224,229,259,299,302,305,334,345,347,358,359,375,387,392,418,462,464,483,491,496,501,504,508,510,513,517,523],complex:[4,6,8,11,12,13,24,40,42,64,100,117,152,154,166,178,179,256,286,329,355,374,387,417,445,477,478,494,496,499,523],compli:[341,345],complic:[6,7,9,12,13,129,216,245,494],complier:12,compon:[3,6,8,12,63,65,69,70,77,86,87,96,97,98,99,100,103,104,107,112,114,115,116,117,118,119,120,121,123,124,128,129,139,142,143,144,145,148,149,150,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,173,174,175,201,202,203,205,206,212,213,217,218,219,220,221,222,223,227,228,230,231,236,237,243,248,252,253,256,259,261,262,266,267,269,270,271,275,276,277,278,290,291,293,295,296,298,299,300,303,314,316,319,320,322,326,327,330,334,337,338,339,341,348,349,354,355,356,376,379,384,385,386,387,392,412,417,422,439,440,462,464,465,466,496,497,506,514,523,524],componenet:6,componennt:129,composit:[6,216,256,415],compound:[407,417,418,484],compres:[75,125,218],compress:[],compris:[40,355,419,459,483],compton:[130,177],comptu:3,compuat:377,comput:[],computation:[3,6,225,226,346,398],computational:517,compute_arrai:8,compute_inn:8,compute_ke_atom:8,compute_loc:8,compute_modifi:[],compute_peratom:8,compute_sa:[130,318],compute_scalar:8,compute_temp:8,compute_vector:8,compute_xrd:177,concaten:[2,3,527],concav:355,concentr:[75,241,317,415,419,450,478],concept:[6,158,168,218,505],conceptu:[3,6,75,166,228,230,387,408,425,442,501],concern:[6,77,95,204,246],concetr:75,concis:[11,345],conclud:12,concret:8,concurr:[15,377,523],conden:[346,479,481],condens:[6,160,346,394,410,415,430,484],condit:[],conducit:6,conduct:[],cone:499,confer:445,confid:[3,510],config:[12,202,493],configfil:229,configur:[1,2,6,12,14,16,37,61,134,180,198,201,202,205,209,228,229,230,231,235,245,252,253,284,299,307,345,374,385,387,394,398,416,442,445,476,479,481,484,491,496,498,499,510,518],confin:[496,510],conflict:[3,12,40,203,447,494,518],conform:[3,6,13,61,227,228,269,315,322,345,369,387,417,508],confus:[3,484],conjuct:[9,412],conjug:[7,8,253,384,417,457,458],conjunct:[6,7,75,94,95,125,161,166,172,178,182,206,210,211,253,256,260,284,302,303,307,308,309,311,316,321,334,342,349,354,376,377,387,399,401,405,408,412,413,417,424,430,447,452,460,482,496,499,503,517,528],connect:[3,6,9,95,163,181,227,250,301,316,320,330,381,387,409,422,457,458,474,481,493,494,496,500,517],conner:394,connor:394,conput:3,consecut:[3,11,12,39,75,178,206,210,211,231,250,251,408,430,434,491,497,499],consequ:[1,6,216,346,429,510],conserv:[3,9,28,209,216,227,234,235,246,249,253,255,256,260,266,268,270,284,286,316,320,321,337,338,342,349,350,354,387,411,412,413,422,436,465,505,510],consid:[6,74,75,82,95,126,129,160,163,164,181,202,203,206,210,211,217,219,224,226,227,231,257,271,298,316,341,342,345,346,349,377,405,417,425,458,459,465,474,491,492,494,497,498,499,501,504,506,514,517,523],consider:[6,8,253,254,337,338,339,392,458,505],consist:[3,6,8,9,11,12,40,42,68,73,84,102,114,119,122,123,126,129,158,161,163,178,190,201,207,212,213,218,230,231,234,236,243,246,253,254,255,267,270,272,273,274,275,276,277,278,279,280,282,283,284,285,288,289,290,291,293,294,295,303,306,311,313,314,315,316,317,337,338,339,340,350,376,377,379,381,386,387,392,394,398,400,406,408,417,421,425,428,439,440,442,445,447,449,450,459,462,464,465,477,478,485,494,496,497,498,499,500,501,508,517,523],consistent_fe_initi:215,consit:316,constant:[],constantli:237,constitu:[3,6,259,316,351,355,406,459],constitut:[462,464],constrain:[3,6,8,9,155,156,157,158,159,161,164,165,166,167,168,170,171,209,218,231,237,245,246,251,259,262,264,286,292,301,302,314,316,320,332,342,349,385,386,417,501,508,517],constraint:[],construct:[6,8,12,37,54,56,63,66,70,74,76,77,81,100,117,130,152,177,228,270,298,315,317,355,388,392,411,445,447,474,476,477,478,499,500,515,523],constructor:[8,11],consult:458,consum:[1,311,453,523],consumpt:374,contact:[],contact_stiff:[461,463],contain:[0,1,2,3,4,6,8,9,11,12,13,16,17,18,37,40,41,56,65,95,99,127,130,152,154,158,166,176,177,178,180,184,186,197,198,202,203,205,206,207,209,210,211,215,217,218,219,221,222,224,229,231,236,240,241,247,251,252,253,256,268,284,297,298,301,302,304,305,306,309,313,316,317,318,323,334,341,345,346,355,356,359,375,377,386,387,390,391,393,394,395,398,407,408,411,415,416,417,419,425,426,442,445,449,450,451,455,456,457,458,466,476,477,478,479,480,481,482,484,491,492,493,494,496,497,498,499,501,503,505,508,510,511,513,514,517,518,523,526,528],content:[4,8,9,12,17,458,512,514],context:[3,6,8,12,16,127,128,206,225,226,231,301,313,350,384,487,496,503,512,522,523,524],contibut:74,contigu:493,contin:15,continu:[0,2,3,5,6,9,12,13,41,75,87,113,114,174,206,209,210,211,216,218,219,220,221,222,224,227,228,229,230,231,237,245,246,247,249,250,251,253,254,255,261,267,268,270,272,273,274,275,276,277,278,290,291,293,294,295,300,302,305,306,316,318,322,333,334,336,343,344,346,352,355,359,375,391,392,398,412,414,432,435,457,458,459,462,464,480,491,494,496,498,499,504,510,511,513,514,523,526],continuum:[6,7,9,215,346,462,464],contour_integr:215,contract:[61,228,230,270,303,316],contradictori:3,contrain:320,contraint:284,contrari:[247,254],contrast:[1,6,42,55,66,160,163,203,230,357,462,464,487,527],contrib:346,contribut:[3,4,5,6,7,8,9,12,13,16,65,67,69,71,72,74,75,78,79,81,83,85,86,92,95,96,97,98,99,101,103,112,114,116,118,119,120,121,123,125,128,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,211,216,217,218,219,221,222,228,245,253,256,259,260,265,271,293,294,301,302,310,313,316,318,320,348,376,385,387,395,412,414,415,417,425,439,440,445,447,457,458,465,508,514,517,518],contributor:12,control:[3,5,6,7,8,9,11,13,15,26,28,41,95,99,134,152,187,202,203,205,209,215,216,224,228,229,230,249,250,253,254,270,272,273,274,275,276,277,278,303,308,316,317,324,325,337,338,339,346,350,374,376,389,417,421,445,457,458,461,463,476,481,491,493,505,511,512],control_typ:215,controlfil:458,convect:99,conveni:[6,12,28,202,207,222,318,379,466,482,518,523],convent:[3,8,28,189,196,197,203,206,315,330,358,415,417,523],converg:[3,6,41,96,202,203,205,207,212,224,227,228,236,243,275,286,292,306,308,311,315,320,383,384,385,387,407,408,430,465,491,503,510],convers:[3,8,152,205,206,216,219,303,376,408,409,410,417,430,434,438,452,494,510,522],convert:[2,3,4,5,6,7,8,12,13,19,20,23,27,31,34,35,61,65,75,99,178,185,202,205,206,219,222,268,302,305,357,360,362,366,369,379,387,393,415,445,479,481,488,494,496,497,498,503,513,517,522,523,526,528],convex:[42,355],convinc:[7,12],cook:9,cooki:7,cool:[7,168,237,249,314],cooordin:[202,203],cooper:[5,7],coord123:125,coord1:[3,125,218],coord2:[3,125,218],coord3:[3,125,218],coord:[],coordb:465,coordbb:465,coordiat:385,coordin:[1,3,4,6,7,8,11,13,14,16,40,41,42,61,63,64,65,69,71,75,78,79,81,86,87,95,97,98,103,113,114,116,124,125,127,129,146,152,161,167,173,175,176,178,182,201,202,203,204,205,206,207,209,212,217,218,221,224,225,226,227,228,229,230,231,234,236,237,238,243,245,248,249,250,251,252,253,254,267,269,270,272,273,274,276,277,278,293,296,297,298,301,302,303,313,314,316,319,320,322,327,330,331,332,333,334,336,344,345,346,353,354,356,357,379,385,386,387,392,393,394,397,416,465,491,496,497,498,499,501,504,506,510,517,523,524],coordn:[125,218],coords:465,copi:[0,3,4,8,9,11,12,14,16,40,131,205,346,387,405,457,494,518],copper:488,coproccesor:15,coprocessor:[1,7,9,15,16,392,509],coproprocessor:16,copy_arrai:8,copyright:[7,8,301],coral:206,core:[],core_shel:160,cores:517,coreshel:[4,6,9],coreshell:[],cornel:[6,184,508],corner123i:124,corner123x:124,corner123z:124,corner1i:124,corner1x:124,corner1z:124,corner2i:124,corner2x:124,corner2z:124,corner3i:124,corner3x:124,corner3z:124,corner:[3,6,40,124,205,355,356,379,483,496,518],cornflowerblu:206,cornsilk:206,corp:9,corpor:15,corr:407,correct:[3,6,9,11,12,15,16,61,86,95,96,112,113,118,121,127,160,165,172,184,203,205,230,237,245,247,253,270,271,293,301,303,306,345,351,355,376,387,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,486,487,488,489,496,511,514,517,518],correction_max_iter:215,correctli:[3,8,11,16,75,87,112,113,114,155,156,157,159,161,163,164,165,166,167,170,171,174,202,206,212,231,236,243,254,264,270,271,309,316,320,330,333,352,355,387,388,392,410,440,445,493,494,496,506,518,522,524],correl:[],correpond:[240,241],correspond:[1,2,4,6,8,9,10,11,12,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,40,42,43,44,45,46,47,48,49,51,53,54,56,74,75,95,106,107,123,124,125,126,129,130,131,139,142,143,144,145,146,148,149,150,152,155,156,165,172,176,177,184,185,186,187,188,189,190,192,193,195,196,198,201,202,203,205,206,210,211,212,218,220,221,223,226,228,230,237,238,241,243,244,248,253,256,257,266,267,268,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,295,297,298,299,303,308,309,316,317,319,320,341,351,352,354,355,356,358,360,361,362,363,365,366,369,371,377,382,384,386,387,393,394,396,399,400,401,402,403,404,405,406,407,408,411,412,415,416,417,418,419,420,421,422,423,424,425,428,430,431,432,433,434,435,436,437,438,439,442,443,445,447,448,450,451,452,454,455,457,458,459,460,465,466,467,476,477,478,479,480,481,482,484,486,487,488,491,493,494,496,497,499,509,510,511,513,514,517,523],correspondingli:[439,440,505],corrupt:3,cosin:[],cosineshift:26,cosmo:[247,252],cossq:[],cost:[1,6,10,11,12,16,39,41,75,120,130,153,177,205,206,218,224,225,226,242,270,308,346,376,377,390,408,430,434,445,447,476,493,505],costheta0:[476,479,481,484],costheta:455,costli:[11,96,247,388],couett:4,coul:[],could:[2,3,6,9,11,12,16,32,41,50,61,69,75,79,86,95,98,103,114,116,120,123,125,158,168,173,175,191,202,203,205,206,210,211,218,219,224,230,243,252,305,306,307,311,314,316,319,334,335,341,345,346,347,351,355,357,359,367,373,375,383,385,388,392,394,395,420,424,425,428,457,458,492,493,494,496,498,500,503,504,511,512,517,523,524],coulomb:[3,5,6,7,8,9,10,12,14,17,76,96,118,119,127,153,179,183,307,309,347,376,377,385,392,399,401,402,403,404,407,408,409,410,411,417,422,423,425,430,434,438,441,447,452,457,458,460,465,475,481,482,484,487,501,508,514,517,522],coulommb:6,cound:3,count:[1,3,6,8,11,12,15,41,65,71,81,99,125,127,128,166,176,182,184,212,213,216,218,221,223,224,231,236,242,245,251,270,284,302,319,320,337,338,355,377,385,386,387,389,392,420,424,447,514,515,523],counter:[3,352,491,502,504,510],counteract:245,counterbal:[237,249],counterbalanc:28,counterclockwis:184,counterpart:[202,491],counterproduct:17,coupl:[],couple:[4,6,11,12],courant:323,cours:[3,8,138,140,172,202,210,211,246,315,330,345,351,353,354,356,357,377,439,467,493,496,509,517,523,526],courtesi:379,cov:465,coval:[6,9,28,417,442,465,517],covari:247,cover:[6,12,75,198,206,215,256,417,483],coverag:75,cpc:252,cpp:[1,3,6,8,9,11,12,13,95,202,210,211,243,320],cpu:[1,3,9,10,12,14,15,16,17,65,75,206,220,234,254,347,374,377,392,405,475,491,509,510,513,514,515,523],cpuremain:514,cpus:12,cr2:177,cr3:177,crack:[4,388],crada:[5,7],crai:[5,7,13,17,202],crash:[3,12,388,517],craympi:392,creat:[],create_atom:[],create_bond:[],create_box:[],create_elementset:215,create_faceset:215,create_group:204,create_nodeset:215,createatom:[],creation:[],crimson:206,critchlei:301,criteria:[3,127,179,205,206,225,226,227,265,385,454,483,498,501,523],criterion:[12,41,133,178,181,216,224,227,245,284,308,323,352,357,385,387,407,417,422,465,501,510,511],criterioni:510,critic:[6,48,49,268,341,346,385],crmax:75,crmin:75,cross:[3,12,21,75,97,129,156,176,186,202,203,205,217,226,230,267,269,293,316,326,330,333,342,349,361,379,387,403,412,414,415,423,424,425,430,432,434,455,460,462,464,479,481,488,496,500,506,526],crossov:1,crossterm:496,crozier:[0,7,13],crucial:306,crystal:[3,4,6,13,77,117,297,298,344,379,388,496,500,514,517],crystallin:[6,113,298,379,480,517],crystallis:341,crystallogr:[130,177],crystallograph:[379,514],crystallographi:[130,177,379],cs1:177,cs_chunk:6,cs_im:[40,496],cs_re:[40,496],csanyi:[152,456,466],cscl:442,csequ:6,csh:[11,12,405],cshrc:[11,12],csic:[416,476,479,481,484],csinfo:6,csisi:[416,476,479,481,484],csld:[],cst:415,cstherm:6,cstyle:493,csvr:[],ctcm:[393,415],ctemp_core:234,cterm:322,ctr:9,ctype:11,cu1:177,cu2:177,cu3au:442,cube:[6,176,181,234,355,379,517],cubes:[41,224],cubic:[],cuda:[1,3,7,9,12,14,16,392,509,523],cuda_arch:[9,14],cuda_get:14,cuda_home:[9,14],cuda_prec:[9,14],cuh:398,cummul:[3,6,222,225,226,227,229,242,247,253,255,334,337,338,339,340,342,349,424,514],cumul:[6,216,218,221,235,245,253,268,270,275,284,316,318,387],curli:2,current:[0,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,40,41,42,57,61,63,65,75,77,87,95,112,113,119,127,128,142,153,158,166,168,174,176,179,182,201,202,203,204,205,206,207,210,211,215,218,222,224,225,226,227,228,229,230,231,235,236,237,243,245,247,250,251,253,259,265,267,270,271,276,277,278,284,286,290,291,292,293,295,301,302,307,308,310,313,314,315,316,317,320,321,322,323,324,325,326,327,329,331,332,333,334,337,338,339,345,346,349,350,351,352,353,354,356,357,359,374,375,376,377,380,381,382,384,385,386,387,392,398,405,407,411,413,415,417,418,422,425,426,429,439,440,442,443,444,447,455,457,458,461,462,463,464,467,479,481,482,485,491,492,493,494,496,497,498,499,500,502,503,504,506,508,510,511,513,514,518,523,524,525,526,527,528],curv:[6,178,245,286,292,298],curvatur:[421,459,488],custom:[],cut0:494,cut1:505,cut2:505,cut:[],cuthi:[297,309],cutinn:[400,439,440],cutlo:[297,309],cutmax:455,cutoff1:[404,411,430,434,438,441,452,460],cutoff2:[399,401,402,404,410,411,430,434,438,441,452,460,482],cutoff:[3,6,8,10,15,17,39,45,46,54,55,63,74,76,77,81,95,100,117,119,126,127,152,176,179,181,182,226,227,232,240,241,297,306,307,309,311,313,316,321,334,347,351,355,357,374,376,377,385,388,389,390,392,393,394,395,396,397,398,399,400,401,402,403,404,406,408,409,410,411,412,413,414,415,416,417,418,419,420,421,423,424,425,426,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,457,458,459,460,465,466,467,468,469,470,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,494,498,501,505,517,523],cutoffa:416,cutoffc:416,cuu3:415,cval:177,cvd:341,cvel:322,cvff:[],cwiggl:[3,267,351,354,356,523],cyan:[2,205,206],cycl:[3,245,268,270,271,275],cyclic:[3,184,198],cygwin:12,cylind:[3,4,75,205,218,251,292,302,352,355,381,499],cylinder_d:381,cylindr:[6,251,330,352],cypress:392,cyrot:398,cyrstal:298,d3q15:256,d3q19:256,d_double_double:14,d_e:346,d_flag2:305,d_flag:305,d_name:[124,202,305,336,506],d_single_double:14,d_single_single:14,d_sx:305,d_sy:305,d_sz:305,daan:344,dai:12,daili:12,daivi:293,damag:[],dammak:311,damp:[3,6,209,214,253,254,255,260,270,271,275,292,303,306,307,311,316,337,338,350,352,353,384,385,387,399,401,403,408,411,417,422,430,438,452,460,475,482,510,517],damp_com:254,damp_drud:254,dampen:[316,517],dampflag:[352,422],dan:16,danger:[3,12,245,357,412,514],dangl:181,daniel:9,darden:[377,411],darkblu:206,darkcyan:206,darken:205,darkgoldenrod:206,darkgrai:206,darkgreen:206,darkkhaki:206,darkmagenta:206,darkolivegreen:206,darkorang:206,darkorchid:206,darkr:206,darksalmon:206,darkseagreen:206,darkslateblu:206,darkslategrai:206,darkturquois:206,darkviolet:206,dasgupta:307,dash:[422,513],dat:[6,99,198,215,492],data2xmovi:[],data:[],data_atom:8,data_atom_hybrid:8,data_bodi:8,data_vel:8,data_vel_hybrid:8,databas:[],datafil:[12,13,318],dataset:318,datatyp:3,date:[0,4,6,12,13,201,457,458,523],datom1:126,datom2:126,datom3:126,datom4:126,datum:[3,6,42,68,71,73,84,102,119,126,202,219],davenport:441,davi:351,david:[9,18,376,377,479,481],daw:[415,455],dcd:[3,6,7,202,204,205,206,207,299,497,501],dcs:9,ddim:201,deactiv:438,dealt:252,debug:[6,7,11,12,13,16,57,130,134,177,178,299,304,374,376,426,447,485,494,495,503,506,513,523],deby:[],decai:[100,408,488],decid:[3,6,12,15,75,267,305,316,347,511,518],decipher:379,deck:305,declar:204,declin:334,decod:205,decompos:[95,466],decomposit:[3,5,7,17,64,215,299,321],decoupl:[6,517],decreas:[3,202,203,212,213,220,227,230,236,237,243,245,253,345,376],decrement:322,dedic:392,deepli:373,deeppink:206,deepskyblu:206,def:[12,13,494],defaul:63,defect:[6,74,176,445],defgrad:[],defin:[2,3,5,6,7,8,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,192,193,195,196,197,198,199,200,201,202,203,204,205,206,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,234,235,236,239,241,243,244,245,248,251,252,253,254,255,256,265,267,269,270,271,272,273,274,275,276,277,278,280,281,282,285,288,289,290,291,293,294,295,297,298,299,301,302,303,305,307,309,314,316,317,318,319,320,323,327,331,332,334,336,337,338,339,340,342,343,344,346,348,349,351,352,353,354,355,356,357,359,360,361,362,363,364,365,366,369,370,371,372,374,376,377,379,382,384,385,386,387,388,389,390,391,392,394,395,396,397,399,400,401,402,403,404,405,406,408,409,411,412,413,414,416,417,419,420,421,422,423,424,425,426,428,430,431,432,433,434,435,436,437,438,439,440,441,445,446,447,448,449,450,451,452,454,455,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,493,494,496,497,499,500,501,502,505,506,507,508,510,511,513,514,517,519,520,521,522,523,524,525],definit:[2,3,6,8,12,13,82,85,127,152,206,218,219,220,221,222,230,239,251,275,318,336,348,351,354,356,358,370,374,386,395,398,406,413,417,428,455,462,464,466,483,494,496,498,505,507,522,523],defint:514,deform:[],deg2theta:177,deg:517,degener:[3,301],degrad:[8,17,298,377,505],degre:[3,6,8,19,20,23,27,28,31,34,35,37,68,84,100,102,104,106,107,109,111,112,117,123,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,177,178,184,185,188,189,196,198,201,205,218,227,234,245,247,248,253,254,259,270,271,275,276,277,278,290,291,293,295,299,301,315,316,320,337,338,339,344,360,362,366,369,371,385,411,415,424,506,514,517,524],degrees:198,degress:[158,218],del:510,delai:[3,6,12,388,414,514],deleg:425,delet:[2,3,7,8,12,54,59,62,65,176,181,182,209,218,219,221,222,225,227,242,245,270,318,337,338,357,359,375,386,388,391,447,474,496,497,498,499,507,508,513,518,519,521,523,524],delete_atom:[],delete_bond:[],delete_el:215,deli:201,delimit:[317,494,523],dellago:[6,237],deloc:[271,417,465],delr:442,delt_lo:510,delta:[],delta_1:398,delta_3:398,delta_7:398,delta_conf:3,delta_ij:[442,455],delta_pi:398,delta_r:455,delta_sigma:398,deltah_f:241,delx:201,delz:201,demand:311,demo:11,demon:296,demonstr:[306,442],den:302,dendrim:424,dendtrit:381,denniston:[9,256,258,259,260,298],denomin:[7,183],denot:[130,234,237,254,298,309,311,408,423,425,458,462,464],dens:[75,227,417],densiti:[3,6,7,9,17,40,41,61,110,127,138,152,164,176,178,210,211,215,218,224,230,243,256,259,263,264,298,302,303,305,307,346,351,379,382,386,393,394,398,415,442,443,444,449,450,455,459,465,469,471,472,473,496,505,506,514,522],density_continuity:464,density_summation:464,dent:381,depart:[0,7],departur:[268,306],deped:8,depend:[1,2,3,6,8,9,11,12,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,43,44,45,46,47,48,49,51,53,54,56,63,65,68,71,73,74,75,84,100,102,113,119,123,124,125,126,129,131,152,154,155,161,165,166,172,178,179,184,185,186,187,188,189,190,192,193,195,196,197,198,201,202,203,205,206,209,210,211,212,213,216,218,220,221,222,223,224,226,228,230,236,238,241,244,247,248,249,251,253,254,256,258,259,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,297,308,309,311,313,316,317,319,320,321,327,334,337,338,339,341,343,345,346,348,351,354,355,356,357,359,360,361,362,363,365,366,369,371,377,379,385,386,388,389,390,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,415,416,417,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,442,443,445,446,448,449,450,451,452,454,455,457,458,459,460,465,466,467,475,476,477,479,480,481,482,484,486,487,488,491,493,496,498,499,502,506,508,510,513,514,516,523,524],dependend:6,depflags:12,dephas:[491,510],depos:231,deposit:[],deprec:[3,307,457],deprect:218,depth:[51,156,205,346,419,421,459],dequidt:9,der:[95,118,406,407,438,457,458,487],deriv:[6,7,8,9,37,56,65,95,152,172,198,219,228,230,237,245,253,267,270,272,273,274,275,276,277,278,297,303,307,311,343,344,346,351,352,355,384,386,394,398,406,411,417,418,423,432,436,437,442,445,457,458,475,477,478,487,517],derjagin:487,derlet:297,descend:206,descent:[7,384],descib:[40,205,307],describ:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,37,39,40,41,42,56,64,65,71,74,75,77,96,121,124,127,130,142,152,153,156,157,158,162,163,166,169,171,172,176,177,178,180,181,190,195,198,202,203,204,209,210,211,218,219,220,221,222,224,227,228,229,230,231,233,234,240,241,246,247,250,251,252,253,254,255,256,258,259,260,265,269,270,271,275,283,294,297,299,304,305,306,307,308,309,316,317,322,330,334,335,336,337,338,339,340,341,342,343,344,349,351,352,354,359,376,377,379,383,384,385,386,387,391,394,395,397,399,400,401,403,404,405,406,407,408,411,415,417,418,419,421,422,423,425,428,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,449,450,454,455,456,457,458,459,460,465,466,467,474,475,476,477,478,479,480,481,482,484,486,487,488,489,491,493,494,496,497,498,499,500,506,509,510,513,518,523,524,526],descript:[],descriptor:[152,202,426],deserno:377,design:[0,3,6,7,8,11,13,14,16,130,160,163,177,215,227,233,234,270,271,297,298,318,341,346,395,396,397,400,403,408,410,417,438,439,440,443,444,455,458,477],desir:[2,3,6,7,9,11,12,14,15,32,40,50,61,75,96,99,123,128,153,160,178,191,201,218,222,228,230,243,245,246,253,254,255,259,270,293,301,302,303,304,307,311,316,319,320,334,337,338,339,340,345,352,367,373,376,377,379,383,385,386,387,412,415,424,439,440,476,479,481,492,493,494,496,500,505,510,511,513,514,515,523,524,526],desk:7,desktop:[4,6,7,10,12,205],despit:517,destabil:398,destre:369,destroi:[9,11,39,225,226],detail:[1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,21,36,40,41,42,55,65,69,70,71,75,79,82,86,98,99,103,112,114,116,118,120,122,123,125,128,129,131,152,153,155,156,157,158,161,171,172,173,175,178,179,182,183,186,197,201,202,203,205,206,209,210,211,215,218,219,220,221,222,224,226,227,228,229,230,231,237,243,245,246,247,248,250,251,253,255,256,260,267,268,269,270,271,272,273,274,275,276,277,278,282,284,290,291,293,294,295,298,301,302,303,305,306,308,309,310,316,320,321,334,337,338,339,340,341,342,344,345,346,347,348,349,350,357,359,361,370,376,377,380,385,386,388,389,392,393,394,395,397,398,400,402,403,404,405,406,407,408,411,412,417,418,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,446,447,449,450,454,457,458,459,465,466,467,475,483,486,487,489,494,496,497,498,499,501,502,505,506,508,511,514,515,518,523,524,528],detect:[2,3,12,42,63,65,94,100,244,302,345,387,407,424,429,491,493,496,507,510,523],determin:[1,3,6,8,9,12,14,39,40,42,51,59,60,61,63,64,71,75,95,112,118,120,123,129,130,131,139,153,166,167,176,177,178,201,202,203,205,206,207,208,212,213,214,217,218,219,220,221,222,223,224,228,230,231,234,236,241,245,248,249,251,253,254,259,265,267,268,270,276,277,278,290,291,293,295,297,299,302,303,306,313,314,315,316,317,318,319,323,325,327,334,337,338,339,341,347,348,351,352,353,354,355,356,357,370,376,377,379,386,388,389,392,394,395,402,407,411,414,415,419,420,422,425,426,434,442,445,447,450,458,459,465,474,477,478,482,487,493,496,497,499,501,503,506,510,512,513,515,522,523,524],determinist:321,detil:119,devan:[9,460],devanathan:481,develop:[0,3,5,6,7,8,9,11,12,14,15,16,17,18,42,250,275,301,306,307,310,394,398,417,444,445,465,484,498],devemi:9,deviat:[268,275,297,420],deviator:9,devic:[1,3,12,14,16,250,392],device_typ:392,devin:[308,407],devis:444,dfactor:205,dff:517,dfft_fftw2:12,dfft_fftw3:12,dfft_fftw:12,dfft_none:12,dfft_single:[3,12,377],dfft_xxx:12,dfftw:12,dfftw_size:12,dft:[9,310,445],dhi:[61,201,230,302],dhug:[268,306],dhugoniot:[268,306],dia:442,diagnost:[],diagon:[3,6,91,129,152,153,154,228,270,303,316,349,462,464],diagonalstyl:466,diagram:[41,130,177,197,224,299],diallo:424,diam:[205,206,302,386],diamet:[3,6,40,42,124,178,202,203,205,206,210,211,253,302,305,316,334,336,350,352,386,406,421,422,432,459,483,487,496,497,506],diamond:[379,417,442],diamter:[40,302],dick:6,dicsuss:267,dictat:[216,268],did:[3,12,385,412,414,415,422,447,479,481,504],didn:3,die:17,diel:[],dielectr:[],diff:[3,6,12,174,348,376],differ:[1,2,3,4,6,7,8,9,11,12,14,15,16,17,21,36,37,39,41,42,54,55,56,63,66,71,74,75,95,100,104,106,107,132,152,154,155,156,157,158,159,161,164,165,166,167,168,170,171,172,178,179,181,186,197,198,201,202,205,206,209,211,214,216,218,221,224,225,226,227,228,229,230,234,237,240,244,245,246,247,248,249,250,253,254,256,267,270,271,272,273,274,276,277,278,280,282,285,288,289,290,291,295,297,299,301,303,306,307,308,311,314,316,320,322,330,332,334,337,338,339,342,343,344,346,349,350,351,352,355,359,360,370,373,375,376,377,379,380,383,384,386,387,389,390,391,392,393,394,398,402,403,405,406,407,412,413,415,417,419,421,422,423,425,428,430,431,433,434,441,442,443,444,446,447,448,449,450,451,455,457,458,459,460,461,462,464,465,466,467,475,476,477,478,479,481,483,484,487,490,491,493,494,496,498,499,500,501,504,505,506,508,510,511,513,514,515,517,522,523,524,526],differenti:[1,3,6,28,198,317,376,408,455,480],difficult:[228,299,392,424,505],difficulti:[100,117,320,457],diffract:[7,9,130,177,318],diffus:[],diffuse:[4,6],digit:[2,3,206,359,445,523],dih_table1:198,dih_table2:198,dihedr:[],dihedral_coeff:[],dihedral_cosine_shift_exp:26,dihedral_styl:[],dihedralcoeff:[3,199],dihedraltyp:226,dihydrid:417,dij:320,dilat:[],dim1:3,dim2:3,dim:[3,61,75,155,159,160,161,164,165,166,167,168,170,178,201,230,251,352,379,442,499,522,523,524],dimdim:523,dimems:298,dimens:[],dimensinon:75,dimension:[3,39,100,123,130,152,155,158,159,160,161,164,165,166,167,168,170,177,200,218,269,298,346,379,383,387,455,496,506],dimensionless:[115,133,134,136,139,141,143,148,152,346,377,466,487],dimensions:318,diment:3,dimentionless:147,dimer:[6,316,442],dimgrai:206,dimstr:[41,224],dinola:[303,337],dintel_offload_noaffinity:15,dipol:[],dipolar:[4,28,40,202,203,336,517],dir1:507,dir2:507,dir:[1,3,4,8,10,11,12,268,297,306,333,455,457,458,494,507,523],dirac:152,direc:455,direct:[],directli:[3,6,8,9,11,12,95,124,129,152,154,202,203,204,205,212,236,247,251,256,298,317,318,338,350,352,353,354,355,379,384,392,393,394,399,401,402,408,411,415,417,430,434,447,452,460,474,494,506,507,508,514,523],directori:[],disabl:[3,12,15,346,392,429,494,509,523],disadvantag:[6,224],disallow:[202,230,270],disappear:498,discard:[2,3,41,75,220,224,347,355,493,498,499],discontinu:[198,385,436],discourag:442,discov:[13,347],discret:[6,8,40,42,205,206,253,256,292],discuss:[],disk:[6,92,93,100,171,200,231,245,302,494],disloc:[74,445],disord:[39,74,445],disp:[],dispar:459,disperion:[411,434],dispers:[3,6,7,9,176,298,376,377,402,411,434,439,447,458,477,484],displac:[],displace_atom:[],displace_box:61,displacemet:499,displai:[11,13,21,36,44,55,186,197,202,205,361,370,405,475],dispters:3,disregard:445,dissip:[6,9,40,88,89,239,246,253,298,321,343,344,400,412,413,422,439,440,475],dissolut:225,dist:[6,73,99,119,128,202,299,315,414,474,491,524],distanc:[],distinct:[6,234,313,376,459],distinguish:[6,94,152,259,417,495,523],distort:[176,393],distrbut:393,distribut:[],distro:[122,405,454,455],ditto:[8,12,14,15,16,17,42,126,226,316,488,494],div:8,divd:128,diverg:[3,12,39,316,344,394,498,517,526],divid:[3,6,15,41,99,123,128,138,140,153,175,176,186,197,206,218,219,221,224,230,297,342,349,354,376,385,387,418,458,465,484,505,513,523],divis:[6,256,398,428,438,493,514,523],dl_poly:[6,7],dlambda:172,dlammps_async_imd:250,dlammps_bigbig:[12,39],dlammps_ffmpeg:[3,12,205],dlammps_gzip:[3,12,202,205,345,496,497,501],dlammps_jpeg:[3,12,205],dlammps_longlong_to_long:12,dlammps_memalign:[9,12,15],dlammps_png:[3,12,205],dlammps_smallbig:12,dlammps_smallsmall:12,dlammps_xdr:[12,202],dlen:506,dlmp_intel_offload:[9,15],dlo:[61,201,230,302],dlopen:6,dlvo:[7,406,487],dm_lb:256,dmax:[334,383],dmpvtk:203,dmpvtp:203,dna:7,doc:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,21,36,40,42,55,59,61,65,69,71,79,86,95,98,103,112,114,115,116,118,120,122,123,125,128,129,131,153,156,157,158,171,173,175,178,179,180,186,197,201,202,203,204,205,206,207,209,210,211,216,217,218,219,220,221,222,231,245,253,254,265,270,271,276,277,278,282,290,291,293,294,295,302,305,316,330,334,337,338,339,348,352,355,357,359,361,370,375,385,386,387,392,393,394,397,405,407,408,415,416,418,424,425,427,428,442,443,444,447,451,454,455,456,466,475,476,479,481,483,484,494,496,497,498,499,501,504,505,506,513,514,518,523,524,526,527],docuement:459,dodd:42,dodgerblu:206,doe:[0,1,2,3,5,6,7,8,9,11,12,14,15,16,17,32,37,39,41,42,50,54,56,61,64,65,70,74,75,76,95,96,99,114,118,121,127,128,130,154,156,158,160,161,166,168,172,177,178,179,180,182,184,186,191,197,198,201,202,203,204,205,206,209,215,216,218,223,224,226,227,228,230,234,236,237,240,241,242,245,246,249,251,253,254,256,259,266,270,271,272,273,274,276,277,278,290,291,292,293,294,295,303,304,305,309,311,314,316,334,337,339,341,342,346,349,350,351,354,355,356,357,362,363,364,366,367,369,375,376,377,378,379,386,387,388,393,394,395,396,397,398,400,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,425,426,427,428,429,432,433,435,436,437,439,440,442,443,444,445,447,449,450,455,456,457,458,459,461,462,463,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,491,492,493,494,496,497,498,499,500,503,504,506,507,508,509,510,513,514,517,518,523,528],doegenomestolif:7,doesn:[3,7,8,12,178,202,203,216,330,386,388,392,394,407,416,427,457,458,476,479,480,481,484,496,498],dof:[3,8,123,156,157,158,171,218,316,524],dof_per_atom:[158,218],dof_per_chunk:[158,218],doff:[386,496],doi:[6,229,297],domain:[3,6,7,12,13,17,39,41,42,60,63,64,75,130,167,177,180,201,204,205,206,209,216,224,228,230,231,249,252,256,270,271,299,311,316,321,346,351,352,376,377,387,392,414,447,491,493,496,500,513],domin:[1,417,510],don:[0,8,9,12,13,127,181,212,236,254,355,442,465,494,496,518],donadio:338,done:[1,3,6,7,8,12,14,15,16,17,37,39,41,56,61,64,75,172,175,178,181,198,202,205,206,215,216,218,220,221,222,224,225,226,227,228,230,231,240,241,243,245,250,251,253,254,261,270,276,277,278,290,291,293,295,296,298,299,300,302,305,313,316,318,320,334,337,338,339,341,343,344,357,359,375,376,377,385,387,388,391,392,394,402,415,425,426,427,434,440,441,442,447,449,450,457,474,477,478,483,491,492,493,494,497,500,501,504,514,515,517,518,523,524],donor:424,dot:[153,174,212,236,248,269],doti:[398,455],doubl:[1,2,3,6,8,9,11,12,14,15,16,39,95,184,230,243,304,355,359,375,377,391,392,398,418,423,445,457,458,492,496,500,504,509,523,524],dover:215,down:[3,6,7,8,11,39,75,228,245,253,334,350,417,447,465,495,515],downhil:[383,384],download:[5,7,8,9,11,12,13,16,250,426,456],downsid:6,downward:313,dozen:[8,9,12,118,209,457,458],dpack_array:12,dpack_memcpy:12,dpack_pointer:12,dpd:[],dpde:263,dpdtheta:[40,88,89,413],dpdtheta_i:[239,240,241],dproduct:395,dr_ewald:[130,318],drag:[],dragforc:256,drai:[268,306],drain:[249,350,385],dramat:[9,61,201,225,226,227,228,230,270,334,337,338,377,447,465,493],drautz:398,draw:205,drawback:305,drawn:[42,202,205,206,246,491],drayleigh:[268,306],dreid:[],dreiding:[],drfourth:115,drho:[124,393,415,449,450],drift:[6,113,115,237,246,247,249,253,254,266,314,334,505,513,517],drive:[11,12,213,228,230,248,270,297,303,316,353,387],driven:[6,190],driver:[6,12,14,209,243,250],drop:[3,206,412],droplet:425,drsquar:115,drude:[],drudes:[254,517],dry:242,dsecriptor:426,dsf:[],dsmc:[],dstyle:302,dt_collis:256,dt_lb:256,dt_md:256,dt_srd:334,dtilt:[61,230],dtneb:510,dtqm:306,dtype:[126,226],dual:[15,16,334,392],dudarev:177,due:[1,3,6,9,12,15,16,18,40,54,57,59,60,63,69,74,75,78,79,86,87,94,96,97,98,103,112,113,114,115,116,121,127,130,138,152,153,155,156,157,159,161,164,165,166,167,168,170,171,173,177,178,181,182,202,203,205,209,212,213,221,223,225,226,227,228,229,230,231,236,238,242,243,246,247,250,251,253,254,255,256,259,260,261,266,267,268,269,270,275,284,297,300,302,314,315,316,319,321,330,331,333,334,335,337,338,339,340,341,343,344,346,350,351,353,354,355,357,376,377,383,385,387,388,389,409,412,413,415,420,421,425,439,440,447,455,457,459,460,474,477,479,481,485,487,488,491,493,496,497,498,505,510,513,514,515,517,523,524],duffi:346,duin:[9,307,312,457,458],duke:377,dumbbel:381,dummi:[12,28,480],dump0:203,dump10000:203,dump1:501,dump20000:203,dump2:501,dump2vtk_tri:146,dump:[],dump_0:203,dump_1:203,dump_atom:8,dump_custom:8,dump_h5md:204,dump_modifi:[],dump_p:203,dumpcustom:8,dumptimestep:501,dunbrack:[6,19,184,403,508],dunweg:[253,255],duplic:[2,3,14,16,41,42,179,203,224,247,297,496,522],dupont:[5,7,13],durat:[36,55,155,156,157,159,160,161,163,164,165,166,167,170,171,197,206,218,245,311,346,370,422,475],dure:[2,3,6,8,9,12,15,16,37,39,41,56,75,95,129,138,140,154,160,179,182,184,198,202,203,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,235,236,237,238,240,241,242,243,244,245,246,247,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,267,269,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,318,319,320,322,326,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,377,385,387,391,412,438,445,447,448,449,450,458,477,478,491,492,494,496,499,501,503,504,506,508,510,511,514,515,523,527,528],dvector:8,dvlo:487,dvx:6,dx_lb:256,dy3:177,dyamic:12,dyanam:6,dyanmic:510,dynam:[],dynamo:[5,393,415,442],dyne:522,dyre:435,dysam:499,e28637:28,e_1:398,e_2:398,e_a:317,e_b:418,e_data:203,e_ee:417,e_hbond:424,e_i:[6,398,418],e_j:[6,398],e_k:398,e_ke:417,e_kl:6,e_lj:[394,411],e_n:398,e_ne:417,e_nn:417,e_pr:417,e_rebo:394,e_torsion:394,e_tot:445,e_vol:445,eaa:360,eaat:185,each:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,59,61,63,64,65,66,67,69,70,71,72,74,75,76,77,78,79,80,81,82,83,85,86,87,89,91,93,95,97,98,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,128,129,130,131,132,146,152,153,154,156,157,158,159,160,161,162,165,166,167,168,170,171,172,173,174,175,176,177,178,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,238,240,241,242,243,245,246,247,248,249,250,251,252,253,254,255,256,257,259,260,261,262,263,264,266,267,268,269,270,272,273,274,275,276,277,278,279,280,281,282,284,285,286,287,288,289,290,291,293,294,295,297,298,299,300,301,302,303,304,305,307,308,309,311,313,316,317,318,319,320,321,322,326,327,329,330,331,332,333,334,335,336,337,338,339,341,344,345,346,347,348,349,350,351,352,354,355,356,357,359,360,362,363,364,365,366,367,369,370,371,375,376,377,379,384,385,386,387,388,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,418,419,420,421,422,423,424,425,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,447,448,449,450,451,452,454,455,457,458,459,460,461,465,466,467,468,469,470,471,472,473,474,475,476,477,478,481,482,483,484,485,486,487,488,489,490,491,493,494,496,497,498,499,500,501,503,504,505,506,508,510,511,513,514,515,516,517,522,523,524,526,528],eacn:[41,224],eam0d:298,eam3d:298,eam:[],eam_databas:13,eam_gener:13,eangl:514,earli:[41,218,221,222,224,310,318],earlier:[7,8,12,61,206,387,422,442,447,510],earliest:510,earth:417,easi:[6,7,8,9,10,11,13,95,153,202,210,211,212,213,223,236,248,249,251,253,254,319,327,337,338,339,351,354,356,386,496,499,504,506,524],easier:[8,9,13,15,202,203,205,298],easili:[8,11,205,206,350,387,493,503,512,523],eastwood:[376,377],eat:185,eatom:357,eaxmpl:6,eba:20,ebb13:185,ebb:20,ebond:[234,254,513,514,523],ebt:185,ec_ii:442,ec_ij:442,ec_jj:442,echo:[],eco:[457,458],ecoa:[457,458],ecoul:[118,154,234,254,457,458,514],ecp:[417,496],edg:[3,6,41,42,61,75,130,176,177,180,181,202,204,205,214,251,319,351,354,355,356,357,379,496,499,506],edge:[2,3,351,354,356,499],edge_histo:176,edge_threshold:176,edih:514,edim:342,edip:[],edit:[3,8,9,12,13,14,15,16,17,18,517,518],editor:13,edu:[7,9,11,13,415,439,454,457,458],edward:[9,16],eebt:185,eff:[],effect:[1,2,3,6,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,69,75,78,79,86,87,97,98,103,113,114,115,116,123,153,155,160,165,166,173,176,182,184,185,187,188,189,190,192,193,195,196,197,198,201,202,203,205,206,210,211,212,215,216,219,222,223,225,226,227,228,230,231,237,238,240,244,245,246,247,248,249,250,251,253,254,269,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,296,297,299,302,303,305,306,307,308,309,311,314,315,316,319,320,333,334,337,338,339,341,342,344,346,349,350,351,352,353,354,355,356,357,360,362,363,365,366,369,371,376,377,379,384,385,386,387,388,393,394,396,398,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,445,447,448,449,450,451,452,454,458,459,460,461,463,465,467,475,476,477,478,479,480,481,482,483,484,486,487,488,491,493,494,498,499,501,505,506,508,514,515,522,523,526],effectiv:[253,379],efffect:500,efficaci:39,effici:[0,1,3,6,7,8,9,10,12,14,16,17,39,60,63,70,123,154,202,203,204,205,206,219,220,228,230,234,247,270,299,301,302,311,316,320,334,376,377,383,388,392,398,406,408,425,430,434,445,449,450,459,477,503,528],efficient:[9,301],effort:[5,7,497],efftemp:[106,107,164],efi:[457,458],efield:[],eflux:249,eforc:203,eggebrecht:[408,465],ehanc:209,ehb:[457,458],ehex:[],eigensolv:3,eigenvalu:[298,299,376],eigtol:3,eike:172,eim:[],eimp:514,eindhoven:9,einstein:[6,311,344],either:[1,2,3,6,8,9,10,11,12,14,15,16,21,32,41,44,50,61,65,75,113,118,124,127,130,152,153,158,160,161,176,177,178,181,186,191,198,202,203,204,205,206,209,217,219,221,222,224,227,228,229,230,231,237,245,251,252,256,260,267,268,270,271,275,293,297,305,313,317,319,320,322,330,334,341,348,352,355,359,361,374,376,377,379,384,385,389,392,398,400,406,415,419,425,426,428,439,440,442,445,447,450,453,455,458,474,478,479,481,483,491,494,496,498,499,500,503,505,508,511,513,523],ejtehadi:[406,421,459],elaplong:[210,211,251,499,514,523],elaps:[3,201,210,211,212,213,223,230,236,248,249,251,253,254,267,302,319,327,337,338,339,351,352,354,356,467,491,499,501,502,506,510,514,515,523],elast:[4,6,7,9,44,45,46,55,122,209,269,298,352,384,387,422,454,480],elastic:[],elastic_t:4,elba:28,electr:[6,209,215,236,254,376,377,418,457,458,488,517,522],electrolyt:[9,487],electron:[3,6,7,9,13,40,106,107,124,130,162,164,169,203,209,215,233,234,254,255,271,283,294,309,340,346,384,386,393,395,407,411,415,417,418,442,445,455,456,465,481,484,488,496,516,517,522],electron_integr:215,electron_temperatur:215,electron_unit:417,electroneg:[6,307,308,309,407,418,465],electroneg_compon:465,electronic_dens:3,electronic_specific_heat:3,electronic_thermal_conduct:3,electrostat:[6,9,15,17,216,245,307,309,310,347,376,377,406,411,417,430,438,440,458,465,487],eleftheri:316,elem1:[418,442,466],elem2:[418,442,466],elem:465,element1:[313,393,415,465],element2:[313,393,415,465],element:[3,6,7,8,9,12,13,42,65,87,97,113,115,123,128,131,146,152,153,154,155,156,157,158,159,160,161,165,166,167,168,170,171,174,202,203,204,205,206,207,209,210,215,219,221,222,298,313,341,348,393,394,398,407,415,416,417,418,425,426,427,442,443,444,445,451,455,456,457,458,465,466,476,479,480,481,484,514,517,523,527],elementn:[393,415],elementset:215,elev:510,elif:[152,359],elig:[3,216,225,226,242,245,424],elimin:[3,6,75,176,246,253,254,316,320,343,344,491],elj:411,ellad:9,elliot:9,elliott:9,ellips:[4,6,9,75,90,156,200],ellipsoid:[3,4,6,7,9,13,40,42,75,90,124,142,156,178,200,201,202,203,253,267,272,276,280,281,286,290,316,334,381,382,385,421,440,459,475,496,506,526],ellipsoidflag:496,elong:[234,254,514],elp:[457,458],els:[3,7,8,12,75,118,127,128,131,205,217,218,219,221,222,245,270,316,334,346,347,348,357,359,376,425,495,507,523,527],elsewher:[8,267,334,442,456,457,458,508,514,523],elt:442,emac:[],email:[0,3,5,7,8,9,11,418],emb:[3,9,355],emb_lin_neg:442,embed:[3,4,5,7,9,11,12,13,28,96,154,176,346,393,415,418,438,442,443,444,455,475,485,494],embt:185,emi:[7,9],emile:9,emol:[457,458,514],emphas:422,empir:[9,215,338,417],empiric:394,emploi:[237,298,307,311,480],empti:[3,59,75,176,180,316,376,388,429,496,507,508,523],empty:3,enabl:[3,6,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,43,45,46,47,48,49,50,51,53,54,55,56,62,63,64,66,70,82,85,88,89,91,95,96,106,107,108,109,110,111,115,118,122,123,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,160,162,164,165,169,170,172,176,177,184,185,187,188,189,190,191,192,193,195,196,197,198,202,203,204,206,207,209,210,211,212,213,214,216,220,223,225,226,227,229,230,231,236,237,238,239,240,241,242,243,244,245,246,247,248,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,266,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,306,307,308,309,310,311,312,313,315,316,317,319,320,321,322,323,324,325,326,327,329,330,331,333,334,340,341,342,343,344,346,347,349,351,352,353,354,355,358,360,362,363,365,366,367,369,370,371,377,385,387,391,392,393,394,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,447,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,494,497,498,499,503,505,515,523,528],enclos:[2,6,12,180,202,304,359,442,465,492,494,504,523],encod:[13,39,42,202,205,206,305,425],encompass:[3,6,40,42,59,61,127,179,329,348,475,499],encount:[3,8,12,61,117,221,391,501,523],encourag:[7,8,310,332],end12i:124,end12x:124,end12z:124,end1i:124,end1x:124,end1z:124,end2i:124,end2x:124,end2z:124,end:[1,2,3,5,6,8,11,12,14,15,16,17,18,37,40,41,42,57,59,61,75,124,181,182,185,201,202,203,205,206,207,210,211,219,221,222,227,230,237,246,251,253,255,269,270,271,284,292,303,315,316,322,334,337,338,339,340,342,345,346,349,353,356,357,375,376,386,387,391,392,412,415,421,428,441,445,459,462,464,466,467,485,491,494,496,497,498,499,501,503,504,508,512,514,517,523,528],end_of_step:8,endbondtors:[3,185,191,496],endif:8,energet:[227,394,458],energi:[],energy_compon:465,energy_update_freq:458,enforc:[6,9,59,60,114,201,202,203,204,205,207,209,216,227,230,270,296,298,308,316,320,359,376,430,493,523,524],enforce2d:[],eng:[11,68,73,119,202,243,357,359,407,444],eng_previ:359,engiliti:9,engilitycorp:9,engin:230,engineer:[215,301,322,343,415],enginer:443,enhanc:[211,215,237,491],enlarg:[61,205],enough:[3,40,63,94,178,179,181,182,224,254,302,306,311,316,347,351,352,355,388,392,408,453,496,500,501],enpub:415,ensembl:[],ensight:6,ensur:[3,6,152,202,203,216,220,228,245,246,270,323,345,377,398,414,438,476,484],enter:[59,168,418,445,484,510],enthalpi:[135,272,273,274,317,415,513,514,523],entir:[0,2,3,6,11,14,41,42,65,88,89,96,120,121,123,127,129,130,153,158,177,178,206,209,210,211,218,224,227,229,237,242,245,246,249,253,254,266,270,272,273,274,275,276,277,278,297,299,301,314,316,317,332,346,348,359,392,411,434,447,477,478,496,504,505],entireti:483,entiti:[6,8,40,42,202,316],entri:[3,8,12,37,42,56,68,73,84,102,119,126,129,130,139,142,143,144,145,146,148,149,150,176,198,203,206,210,221,229,240,241,306,357,386,398,416,442,449,450,451,458,466,476,477,478,479,480,481,484,523],entries:206,entropi:510,entry1:[37,56,206,405,449,450,477,478],entry2:206,entryn:206,enumer:[179,202,489],enumuer:6,env:392,environ:[1,3,6,11,12,15,16,17,205,247,252,297,392,393,398,405,407,416,417,455,479,493,507,523],eos:[9,240,241],epair:[118,206,394,420,424,457,458,514],epen:[457,458],epfl:[247,252],epp:411,epq:411,eps0:487,eps14:438,eps:[454,475],epsilon0:481,epsilon:[3,6,35,45,46,50,53,54,95,184,210,211,245,316,334,351,355,383,385,397,403,404,406,408,409,410,411,419,421,423,424,425,428,429,430,431,432,433,434,435,436,437,438,441,446,452,459,460,470,476,482,483,486,487,505,517,522],epsilon_0:488,epsilon_14:403,epsilon_:459,epsilon_d:409,epsilon_i:[421,447,459],epsilon_i_:459,epsilon_i_a:[421,459],epsilon_i_b:[421,459],epsilon_i_c:[421,459],epsilon_ij:447,epsilon_j:[421,447,459],epsilon_j_:459,epsilon_j_a:[421,459],epsilon_j_b:[421,459],epsilon_j_c:[421,459],epsilon_lj:459,epton:454,eqch:173,eqeq:[457,458],eqp:411,eqq:411,equal:[2,3,6,8,11,12,16,39,41,54,65,68,71,73,75,80,84,94,95,99,102,119,121,126,128,131,153,156,172,174,176,178,201,205,206,209,210,211,212,213,216,219,220,221,222,223,224,228,230,231,236,245,246,248,249,251,253,254,256,259,260,267,268,275,286,287,297,299,302,304,306,307,308,311,313,315,316,317,319,322,327,329,337,338,339,342,343,344,346,348,349,351,354,356,357,359,375,379,385,387,388,389,391,392,394,407,412,413,420,421,424,428,439,445,446,455,457,458,459,461,462,463,465,466,467,477,478,483,484,488,492,493,494,496,498,499,503,504,507,510,512,514,523,524],equat:[3,6,7,8,9,99,117,123,130,177,186,197,209,228,234,235,237,239,240,241,247,253,254,256,259,268,269,270,271,275,293,297,299,306,307,311,317,320,321,334,342,346,349,351,352,354,356,376,377,381,406,411,412,413,417,418,419,422,427,439,440,442,447,450,459,462,464,469,470,472,473,478,488,517],equation:[247,297,369],equi:271,equidist:269,equil:[3,307,380,503,528],equilater:506,equilibr:[3,4,5,6,7,9,61,99,178,209,216,219,227,228,245,268,270,271,293,294,303,306,307,308,309,342,343,344,349,407,408,457,458,492,506],equilibria:349,equilibribum:[225,226],equilibrium:[1,3,4,6,7,20,23,25,26,27,28,31,34,35,37,38,43,47,48,49,51,53,56,58,61,161,162,185,187,228,230,245,246,247,254,256,270,275,293,306,307,311,315,320,322,330,334,341,342,344,349,360,362,366,369,407,442,451,465,517],equilibrium_angl:8,equilibrium_dist:8,equilibrium_start:215,equival:[6,12,13,28,61,63,136,137,145,150,176,180,206,221,222,228,230,245,253,270,293,303,315,316,354,394,412,417,465,479,481,482,496,499,504,505,514,517],equlibrium:6,equliibr:[307,309],er3:177,eradiu:[40,124,203,417,496],eras:[319,343],erat:[230,440],erc:408,erfc:[408,430,447],erforc:[124,203],erg:522,erhart:[216,415,479,481],ermscal:395,ernst:9,eror:3,eros:442,erose_form:442,erot:[],errata:[479,481],erratum:351,erron:3,error:[],erta:422,ervel:[124,203,496],escap:[231,517],especi:[8,15,166,178,209,216,224,245,306,311,314,315,392,493],espresso:[9,310],essenti:[11,12,26,96,140,159,160,161,164,165,166,167,168,170,187,219,298,350,377,394,408,430,481,501,514],essential:[8,275],essex:28,establish:[95,249],estim:[1,3,6,10,12,37,41,56,99,153,215,224,235,268,334,341,376,377,383,447,458,477,478,510,514],estimat:3,esu:522,esub:442,eta:[6,256,270,306,307,309,350,416,418,421,455,480,484,522],eta_dot:270,eta_ij:455,eta_ji:418,etag:[40,496],etail:514,etap:270,etap_dot:270,etc:[1,2,3,4,6,7,8,9,10,11,12,13,14,15,39,40,42,54,63,71,97,98,99,104,120,121,124,126,129,153,155,158,159,160,161,162,164,165,166,167,168,170,172,178,180,181,182,191,202,203,205,206,209,210,215,216,217,218,221,222,225,226,230,231,243,245,246,253,270,302,313,318,346,347,355,359,375,376,385,386,387,388,390,415,416,425,438,440,445,453,457,458,476,479,481,484,491,494,496,497,498,503,505,506,510,511,512,513,514,515,517,522,523,526,528],ethernet:17,etol:[385,387,491,510],etot0:306,etot:[6,104,106,107,121,153,164,206,234,254,268,306,513,514],eu2:177,eu3:177,euler:[385,387],eulerian:215,euqat:468,europhi:256,ev_tal:8,evalu:[2,3,9,11,12,37,56,75,95,96,99,118,128,131,152,154,158,168,176,178,184,201,202,203,205,206,210,211,212,213,215,217,218,219,220,221,222,223,230,236,246,248,249,251,252,253,254,298,304,307,319,323,327,337,338,339,348,351,354,356,357,359,383,385,445,447,449,450,455,461,463,465,477,478,491,492,494,498,499,501,503,504,505,506,510,512,514,523,524],evaluat:[376,377,523],evalut:[359,494],evan:[166,293],evanseck:[6,19,184,403,508],evapor:[],evaul:[8,385],evdwl:[118,154,457,458,514],even:[3,6,8,12,14,16,17,33,39,41,52,57,59,61,63,65,74,75,96,118,131,176,179,180,194,198,202,203,206,209,210,211,216,217,218,221,222,224,225,226,228,230,231,234,237,251,254,268,270,271,298,302,311,313,316,318,329,334,342,346,349,351,355,357,368,376,383,385,387,392,397,417,418,422,425,428,447,459,484,485,489,496,497,499,501,502,503,505,506,508,511,513,514,515,517,528],evenli:[3,41,57,153,198,224,256,428,485],event:[],eventu:[3,6,12,14,180,510],eventual:307,ever:[9,54,56,252,334],everaer:[406,421,459,475],everi:[0,1,2,3,6,8,9,11,12,14,15,39,41,75,76,99,124,131,140,166,181,202,203,204,205,206,207,209,210,211,212,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,235,237,242,243,245,247,249,250,251,256,257,266,270,271,275,286,292,296,297,298,302,303,304,305,306,307,308,309,311,313,314,316,317,318,320,322,331,334,336,337,338,339,340,341,342,345,346,347,348,349,357,359,375,377,387,388,389,392,412,414,425,438,457,458,465,471,490,491,492,496,498,500,501,503,504,505,510,511,512,514,515,518,523,528],everyth:[8,118,518],everywher:[127,432],eviri:417,evolut:[237,247,256,299,491],evolv:[256,299,347],ewald:[2,3,5,6,7,8,9,12,96,121,130,153,347,376,377,385,399,401,402,408,411,417,430,434,452,460,475,477,482],ewald_disp:411,ewalddisp:3,exact:[21,41,44,75,134,172,181,186,224,227,246,247,253,254,255,302,311,312,334,346,361,376,405,498,503,510,523,526,528],exactli:[3,6,12,16,37,41,42,56,61,75,76,99,127,156,162,169,178,198,210,211,221,224,230,235,240,246,253,254,255,271,283,284,294,298,305,306,334,339,340,353,392,405,412,415,422,425,439,447,449,450,477,478,498,499,506,510,523],exager:517,examin:[6,8,16,227,298],examp:[494,523],exampl:[],exce:[3,6,15,16,17,41,60,75,180,217,218,221,222,224,228,230,235,242,270,298,313,318,324,325,334,385,392,496,523],exceed:[3,41,61,224,230,270,334,458,504],excel:417,except:[1,2,5,6,8,10,11,19,20,21,22,23,24,25,26,27,28,29,30,31,34,36,37,40,41,43,44,45,46,47,48,49,51,53,54,55,56,61,62,65,75,97,98,119,123,128,153,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,178,182,184,185,186,187,188,189,190,192,193,195,196,197,198,201,202,203,206,209,212,218,219,221,223,224,228,230,238,244,245,248,251,253,255,270,271,272,273,274,275,276,277,278,279,280,283,284,288,290,291,293,294,295,299,308,309,316,319,320,330,334,340,346,354,357,358,359,360,361,362,363,365,366,369,370,371,376,377,379,382,386,387,388,390,391,392,393,394,396,399,400,401,402,403,404,405,406,407,408,410,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,443,448,451,452,454,457,458,459,460,467,475,476,477,479,480,481,482,484,486,487,488,491,493,494,496,498,499,501,504,505,506,507,508,510,514,517,522,523,524,527],exception:494,excess:[220,417],exchang:[2,3,6,8,63,64,209,215,216,237,245,249,253,308,316,342,346,349,376,392,417,511],exchange:376,excit:417,excite:417,exclud:[3,6,9,12,15,16,65,75,112,123,129,152,158,165,166,182,202,218,225,226,257,266,301,314,316,341,352,357,385,386,388,400,422,425,428,439,440,447,474,508],exclude:388,exclus:[1,3,12,15,95,184,407,445,447,505,515],excurs:[270,491],exectubl:12,execut:[1,2,3,4,6,8,9,11,12,16,62,179,205,250,310,359,375,378,391,492,494,504,507,510,523],exempl:465,exemplari:246,exemplifi:417,exert:[6,251,254,286,311,353,354,355,377],exhaust:[215,391,523],exhibit:[100,237,249,270,384,417,505],exist:[3,6,7,8,11,12,13,15,36,55,57,61,71,74,134,178,179,197,204,205,206,209,214,223,226,228,231,245,301,302,304,305,357,358,360,362,363,364,366,370,380,386,413,425,457,474,485,492,494,496,497,498,507,508,509,518,523,524,526],exit:[2,3,11,12,41,59,202,224,375,391,494,495,504,513,515,523],exlanatori:3,exp6:[],exp:[],expand:[],expans:[12,152,202,507,523],expect:[1,3,8,12,13,14,15,16,17,18,41,42,75,112,159,170,176,198,224,236,245,247,267,297,303,305,306,311,316,357,377,388,405,442,445,447,491,494,496,498,501,505,510,523],expens:[6,75,206,297,301,316,346,357,376,377,388,392,494],experi:[6,13,14,223,231,250,259,269,303,315,316,383,387,412,447,505,510],experienc:[6,12,258,259],experiment:[16,245,376,392,510],expert:12,expertis:7,explain:[1,3,6,8,9,11,12,15,17,41,61,65,68,71,73,75,76,77,80,81,84,94,102,129,158,166,198,202,203,205,206,209,218,219,222,224,226,228,230,270,286,297,305,316,330,357,359,375,376,379,386,387,391,397,415,428,465,467,483,494,497,498,501,503,506,517,518,523,528],explan:[3,6,61,124,129,152,202,203,218,269,297,425,490,493,494,496,505],explanatori:[3,8,128,202,203,217,218,221,316,386,493,523],explantori:[3,312],explic:446,explicit:[6,9,11,21,44,81,95,124,127,172,186,210,211,230,317,324,325,361,376,382,394,395,398,403,405,415,417,429,439,482,490,493,497,500,518],explicitli:[3,6,8,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,75,123,155,165,168,176,178,184,185,187,188,189,190,192,193,195,196,198,202,203,206,212,223,230,238,244,246,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,305,306,308,309,316,319,320,339,340,346,354,360,362,363,365,366,369,371,386,392,393,394,396,399,400,401,402,403,404,405,406,407,408,409,411,412,414,415,416,418,419,420,421,422,423,424,425,429,430,431,432,433,434,435,436,437,438,439,443,445,447,448,449,450,451,452,454,458,459,460,467,468,469,470,471,472,473,475,476,477,478,479,480,481,482,484,486,487,488,496,498,499,505,506,508,509,515,517,518],explictli:[15,509],exploit:[14,16,299],explor:[130,177],expon:[3,307,309,317,415,419,421,424,438,446,460],exponenti:[95,419,455,476,484,488,510,523],expos:11,exposit:[215,412,414],express:[6,152,164,178,210,211,228,267,297,307,317,346,352,359,398,415,417,432,442,465,466,475,523],expression:359,expressiont:398,extend:[],extens:[3,6,9,16,44,45,46,53,55,65,67,72,83,90,91,92,95,96,99,101,104,107,108,118,120,128,131,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,203,209,212,213,216,222,223,229,232,236,237,243,244,245,247,248,249,251,253,255,268,270,275,284,297,298,314,315,316,319,322,327,330,331,333,337,338,339,340,341,343,344,346,348,351,355,356,421,442,445,458,459,466,513,514,522],extensiv:[65,209,514],extent:[1,3,41,42,45,59,75,176,180,202,214,224,251,353,356,376,379,394,461,463,477,478,493,496,499],exterior:[3,6,176,355],extern:[],extra:[3,6,8,11,12,15,16,40,41,46,63,75,112,120,121,123,130,153,155,156,157,159,161,164,165,166,167,168,170,171,177,178,179,180,206,221,224,226,270,304,305,306,316,334,385,386,389,390,392,411,422,425,428,442,447,493,494,496,499,508,517,523],extract:[3,6,11,13,35,65,67,72,83,95,101,118,126,128,131,210,211,309,387,408,418,442,466,494,501,513],extract_atom:11,extract_comput:[11,494],extract_fix:11,extract_glob:11,extract_vari:11,extramake:[12,14],extrapol:1,extrem:[1,3,6,16,60,205,220,228,230,270,344,417,480,517],extrema:438,extreme:417,extrins:215,f77:[5,7,12],f90:[5,7,12],f_1:6,f_5:[174,348],f_a:[479,480,481],f_ave:128,f_c:480,f_f:481,f_fix_id:306,f_foo:523,f_harm:344,f_i:[28,455],f_id:[6,75,128,131,202,203,209,217,218,219,220,221,222,265,336,348,514,523],f_ij:455,f_indent:222,f_int:343,f_j:28,f_jj:99,f_k:455,f_langevin:346,f_max:[306,311],f_msst:268,f_r:[254,479,480,481],f_sigma:398,f_solid:344,f_ss:6,face:[3,6,59,61,75,166,176,180,214,351,353,354,355,356,379,421,442,459,496,499],face_threshold:176,facet:176,facil:[0,12],facilit:[6,13,42],fact:[6,8,15,247,302,334,344,422,457,465,508],factor:[1,3,6,12,17,23,27,31,34,35,39,41,46,47,59,60,61,76,95,99,112,119,126,127,130,152,172,177,180,184,195,201,202,205,206,210,211,219,224,228,230,231,237,245,250,253,255,256,268,270,271,275,299,303,307,315,317,320,323,325,334,338,342,349,350,351,355,366,377,379,386,392,394,395,398,399,401,403,408,409,410,412,413,417,422,425,429,430,442,445,447,449,450,451,452,458,460,467,476,482,493,496,499,500,505,508,510,511,514,517,522,523],factori:[3,494],factoriz:376,fail:[3,9,11,12,61,182,228,231,376,385,387,410,458,494],failur:[133,462,495,523],fairli:[11,447,505,510,518],faken:77,falcon:250,fall:[3,6,206,221,302,494,523],fals:[94,357,465,523],fame:8,famili:[484,493],familiar:[0,11,518],fan:455,far:[3,6,12,16,59,61,63,94,202,203,206,207,224,225,226,228,231,270,297,315,316,334,351,362,366,383,387,388,483,494,496,501,514],farago:253,farrel:[479,481],farther:202,fashion:[6,8,41,75,178,206,209,210,211,216,224,226,231,245,247,251,267,268,270,272,273,274,275,276,277,278,287,290,291,293,294,295,305,306,308,316,322,326,333,336,344,346,350,351,352,354,356,387,425,439,499,508,523,527],fasolino:427,fast:[6,7,9,12,13,16,39,202,203,281,306,347,376,377,400,439,440,445,475,477,478,498,503,505,514,524,528],faster:[1,6,9,11,12,14,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,43,45,46,47,48,49,51,53,54,56,63,65,115,123,155,165,184,185,187,188,189,190,192,193,195,196,198,202,203,206,212,223,224,230,238,244,248,252,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,303,307,308,309,316,319,320,334,341,343,346,350,354,360,362,363,365,366,369,371,376,377,389,390,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,475,476,477,479,480,481,482,484,486,487,488,491,499,505,509,517],fastest:[1,6,16,166,346,347,392,493],fatal:[3,513],fault:[74,458],faulti:12,fava:421,favor:227,favorit:7,fbmc:341,fcc:[],fcm:[287,523],fcold:237,fdirect:234,fdotr:426,fdt:[],fdti:95,fe2:177,fe3:177,fe_md_boundari:215,featu:8,featur:[],fecr:415,feedback:[7,250],feel:[7,250,251,259,297,355,357,387,447],felling:444,felt:355,femtosecond:522,fene:[],fennel:[408,430],fep:[],ferguson:[6,184,508],fermi:[1,9,10,12,14,164,392,481],fermion:417,fernando:441,ferrand:[9,13],few:[1,3,4,5,6,7,9,10,11,12,13,17,39,65,207,217,218,219,221,222,237,254,270,302,305,307,320,348,376,385,386,387,394,465,493,496,501,505,507,515,526],fewer:[1,3,11,14,15,63,259,505],fewest:3,fextern:243,feynman:299,fff:494,ffield:[407,418,457,458,465],ffmpeg:[3,12,205],ffplai:205,fft:[1,3,7,9,11,12,14,96,120,121,153,298,376,377,505],fft_inc:[12,377],fft_lib:12,fft_path:12,fftbench:[376,515],fftw2:12,fftw3:12,fftw:[9,12],fhg:[7,9],fhot:237,ficiti:474,fictiti:[6,212,213,236,243,247,299,315,408,430,434,474],field1:[497,501],field2:497,field:[],fifth:[6,330,419,451],figshar:297,figur:[1,3,8,12,306,493,494,518],fij:411,file0:297,file1:[11,13,241,297,345,359,386,501,503,507],file2:[11,13,241,345,359,386,501,503,507],file:[],file_from:204,filen:386,filenam:[3,12,13,37,41,56,198,202,203,205,206,207,215,218,219,220,221,222,224,229,240,241,297,301,304,307,308,309,312,313,316,317,318,345,346,373,374,375,386,387,393,394,398,408,415,416,418,419,427,442,443,444,449,450,451,455,456,457,458,465,466,476,477,478,479,480,481,484,492,493,494,497,498,503,507,514,523,526,527,528],filennam:503,filep:[3,202,203,206,498,503,528],filepo:313,fill:[7,9,178,205,302,346,379,388,398,445,458,499,518],filter:[206,215],final_integr:8,final_integrate_respa:8,finchham:[6,160,410],find:[0,3,4,6,7,8,9,11,12,13,15,37,39,56,63,75,77,95,128,181,198,207,216,227,228,240,241,242,245,269,297,302,303,311,315,383,385,387,388,408,425,430,434,442,449,450,465,475,477,478,517,518,523],find_custom:8,fine:[15,16,182,212,236,344,388,392,518,523],finer:[152,178,523],finest:376,finger:[178,201,267,499],finish:[6,11,41,224,359,373,375,376,389,391,392,483,501,523,524],finit:[],finni:[7,415,475],finverse:234,fiorin:[9,229],fire:[],firebrick:206,first:[0,1,2,3,5,6,8,9,10,11,12,14,15,16,20,37,39,41,42,45,46,54,56,59,61,63,64,75,87,96,99,113,114,115,117,123,127,128,139,142,145,146,150,153,163,166,172,174,176,177,179,180,181,185,198,202,203,204,205,206,207,209,210,218,219,221,222,224,227,230,240,241,245,246,251,256,267,268,269,270,297,299,304,305,306,308,313,316,320,322,330,331,332,334,335,336,343,344,345,346,348,352,357,359,360,367,379,385,386,387,388,391,392,393,394,397,398,399,401,403,405,407,408,415,417,418,419,422,423,425,426,427,428,429,430,434,439,440,442,444,445,447,449,450,451,455,457,458,465,466,474,476,477,478,479,480,481,484,488,491,492,493,494,496,497,498,501,503,505,508,509,510,513,514,517,518,523,524,525,526,528],fischer:[6,9,18,19,184,403,508],fit:[3,6,9,12,37,56,198,240,315,334,394,398,427,442,447,449,450,470,477,478,480,504,518,523],five:[77,164,306,386,398,443,496,510],fix:[],fix_deposit:3,fix_flux:215,fix_heat:237,fix_id:[3,228,268,270,272,273,274,275,276,277,278,303,306],fix_manifoldforc:518,fix_modifi:[],fix_nh:8,fix_nv:518,fix_poem:3,fix_pour:3,fix_qeq:3,fix_rattl:320,fix_reax_bond:457,fix_saed_vtk:318,fix_setforc:8,fix_shak:320,fix_srd:3,fixedpoint:[228,270],fixextern:243,fixid:215,fji:411,flag1:[233,390],flag2:[233,390],flag:[3,8,9,11,12,14,15,16,38,40,58,69,78,79,86,87,94,97,98,103,113,114,116,129,130,173,177,181,199,202,203,205,206,207,222,227,229,233,250,253,257,259,266,267,298,305,316,330,333,334,341,345,354,357,372,374,377,386,390,391,392,394,424,429,442,445,474,489,491,493,494,496,497,498,500,501,502,506,518,523],flag_buck:402,flag_coul:[402,411,434],flag_lj:[411,434],flagfld:[400,439,440],flaghi:[3,400,439,440],flaglog:[400,439,440],flagn:233,flagvf:[400,439,440],flat:[6,346,351,352,356],flavor:[2,7,12],fld:[351,439,440],flen:395,flex_press:395,flexibl:[3,6,8,179,205,218,229,247,271,342,349,417,480,514],flip:[3,6,230,270,353,354],floor:523,flop:12,floralwhit:206,flow:[],fluctuat:[6,66,95,228,245,246,253,256,270,275,297,298,303,321,344,346,369,413],fluid:[],fluid_veloc:260,flush:[3,206,513],flux:[],flv:205,fly:[7,9,12,41,205,209,215,220,231,234,316,320,347,398,445,514,517],fmackai:9,fmag:232,fmass:299,fmax:[385,514],fmomentum:234,fmsec:[2,206,253,254,267,270,303,316,337,338,505,516,522,524],fname:375,fno:[9,15],fnorm:[385,514],fnpt:234,fnve:237,fnvt:234,foce:425,fock:395,focu:320,fogarti:[9,309,458],foil:[152,297,466],fold:[332,505],folk:7,follow:[0,1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25,26,27,28,29,30,31,34,35,37,40,41,42,43,45,46,47,48,49,51,53,54,56,61,65,66,74,75,77,88,99,100,106,107,117,124,127,128,131,152,153,156,157,158,164,166,171,174,176,178,179,184,187,188,189,190,192,193,195,196,198,202,204,205,206,209,215,216,217,218,219,220,221,222,224,229,230,231,234,235,239,240,241,243,245,246,247,250,252,253,254,256,259,268,270,275,276,277,278,290,291,293,295,298,299,301,304,305,306,307,309,311,313,315,316,317,318,320,336,337,338,339,342,343,344,345,346,348,349,357,358,362,363,364,365,366,369,371,374,379,382,385,386,387,392,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,446,447,448,449,450,451,452,454,455,456,457,458,459,460,462,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,491,493,494,496,497,499,501,503,504,505,508,510,511,512,517,518,523,524,527],foo:[4,8,11,12,202,205,243,317,494,507,523],foo_species:317,foot:6,footprint:[12,392],fopenmp:[9,15,17],forc:[],force_uvm:16,forceatom:259,forcefield:[315,424],forcegroup:256,forcezero:383,ford:411,forestgreen:206,forev:75,forget:[254,517],forgiv:270,fork:[],form:[2,3,6,8,12,18,21,44,54,57,65,69,78,79,81,86,87,95,97,98,100,103,113,114,116,127,152,153,172,173,182,186,206,209,210,211,226,246,247,253,255,259,267,293,298,309,311,315,316,317,346,351,355,360,361,364,369,382,384,386,387,394,395,398,405,413,415,417,420,424,425,429,441,442,444,445,449,450,451,452,455,457,458,459,465,466,467,475,477,479,480,481,487,490,493,494,496,501,506,513,517,523],formal:[6,82,85,99,246,247,253,270,299,334,342,465],format:[2,3,6,7,8,9,12,13,21,37,41,44,56,57,71,81,186,198,202,203,204,205,206,207,218,221,222,224,226,240,241,298,301,305,307,309,312,316,317,318,329,345,346,357,358,361,382,386,387,393,394,398,405,415,418,419,429,442,444,449,450,456,457,458,460,466,477,478,484,485,493,494,496,497,498,501,512,513,514,523,525,526],formation:241,former:[6,12,15,39,41,206,224,346,350,398,400,502,508,523],formerli:[7,13],formul:[1,6,9,40,66,153,212,236,253,270,293,307,309,315,320,345,376,394,398,415,417,421,442,454],formula:[2,3,6,7,13,20,21,36,44,54,55,74,77,95,97,98,99,104,106,107,116,123,130,131,153,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,177,178,183,185,186,197,201,202,210,211,212,213,218,219,220,221,222,223,230,236,248,249,251,253,254,267,297,298,304,313,319,327,332,334,337,338,339,348,351,354,356,357,359,360,361,363,370,379,386,394,395,397,398,403,404,405,406,411,412,415,416,421,422,423,424,426,429,430,432,433,434,436,437,439,440,442,446,447,448,459,460,467,475,476,477,479,480,481,484,486,487,492,496,499,506,513,514,522,523,524],forth:[1,6,11,12,13,14,391,494,499,503],fortran:[3,6,9,11,12,13,243,415,425,442,457,458],fortun:8,forward:[3,8,95,375,387,392],foster:[398,454,455],foul:181,found:[3,6,9,12,77,172,202,227,229,237,245,250,256,262,298,341,347,359,375,388,405,408,411,491,497,498,513],four:[6,11,54,87,113,114,152,174,268,346,369,386,387,445,491],fourier:[],fourth:[6,115,315,330,341,403,419,451,465],fox:[6,130,184,473,508],fphi:[37,56,477,478],fpic:12,fplo:[37,56,477,478],fprime:[477,478],fqdn:252,fqq:411,fraction:[1,3,6,8,12,15,39,41,85,120,153,181,201,205,206,216,225,226,227,228,268,302,306,313,314,334,339,340,379,387,392,398,400,419,422,439,440,501,506],fragment:[42,250,313],fraig:42,frame:[91,152,206,215,268,306,353,421],framer:[205,206],framework:[5,247,393,466],franc:9,frattl:237,fraunhof:9,free:[5,6,7,9,13,28,62,65,74,95,172,210,211,297,334,343,344,345,346,384,387,395,417,438,445,448,455,487,493],freedom:[3,6,8,104,106,107,109,111,112,123,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,218,227,234,245,247,253,254,259,270,271,275,276,277,278,290,291,293,295,299,301,316,320,337,338,339,344,385,411,514,517,524],freeli:[0,6,7,12,156,157,171,176,205],freez:[],frenkel:[6,237,245,344],freq:214,frequenc:[3,6,15,39,113,206,220,284,298,299,306,311,374,412,417,458,465,491,505,510,523,527],frequent:[3,66,70,74,76,77,81,96,100,117,152,206,225,226,237,242,342,349,447,482,503,515],fri:[268,306],friction:[4,5,6,9,10,42,209,247,253,306,311,316,346,350,352,422,506],friedrich:323,from:[],front:[268,306,353],frontend:[205,310],frozen:[6,123,182,244,246,254,388,420],fs2:[6,99],fscale:250,fstr:523,fstring:494,ftol:[385,387,491,510],fuchsia:206,fuction:408,fudg:320,fugac:245,fugacity_coeff:245,fulfil:6,full:[1,2,3,6,9,12,16,37,39,40,99,205,219,220,229,237,256,297,317,376,377,392,398,415,417,418,421,458,482,496,498,503,504,508,510,515,517,527],full_energi:[3,245],fuller:385,fulli:[3,6,82,247,252,297,385,387,408,455,456,496,518,525,526],fulton:415,fumi:399,func:[494,523],funcfl:415,functionaliri:229,fund:[0,7],fundament:[334,522],funnel_flow:329,funrol:445,further:[3,4,6,8,12,13,63,65,67,72,75,83,94,101,115,118,127,205,206,209,218,221,222,225,231,235,256,260,299,307,318,321,323,334,346,348,357,377,383,385,386,387,388,393,397,407,445,465,491,510,511,523],furthermor:[26,187,237,317,413,417],furthest:63,futher:3,futur:[],g_ewald:3,g_ewald_6:3,g_ewald_disp:3,g_jik:455,g_p:346,ga3:177,gaa:398,gahler:384,gai:[3,421,475],gain:341,gainsboro:206,galindo:446,game:250,gamma0:28,gamma:[3,6,28,253,256,260,298,306,307,309,311,350,412,413,416,421,442,446,469,472,473,476,479,481,484,514],gamma_:[3,346,352],gamma_ijk:479,gamma_n:[352,422],gamma_p:[3,346],gamma_t:[352,422],gammaa:446,gammafactor:256,gammar:446,gan:[455,476,479,481,484],gan_sw:455,gan_tersoff:455,ganzenmuel:[7,9],ganzenmul:9,gao:[6,19,184,403,508],gap:[198,439,440,456,466],gap_2014_5_8_60_17_10_38_466:456,gap_exampl:456,gaseou:7,gass:245,gather:[11,504],gather_atom:11,gather_scatter_loop_unrol:9,gathert_atom:11,gauch:190,gaug:12,gauss:[],gaussian:[6,40,65,99,113,115,246,247,253,299,315,334,338,356,376,412,414,417,420,456,475,491,523,524],gave:[3,447],gaybern:[],gcc:16,gcmc:[],gcores:234,gd3:177,gdot:440,gdrudes:234,ge4:177,gec:[479,481],gen:[270,271],gener:[],genom:7,gentler:[351,354,356],gentli:416,geom:[6,376,414,491,524],geometr:[3,6,7,8,42,59,61,75,86,129,168,169,178,180,202,206,212,223,224,231,236,249,270,276,277,278,290,291,293,295,316,319,327,337,338,339,355,357,376,379,387,397,400,404,406,408,411,417,419,421,423,430,431,432,433,434,435,436,437,438,439,440,441,446,447,450,459,467,478,482,483,486,487,489,496,499,506,514,523],geometri:[3,6,7,9,13,24,38,41,58,75,86,166,178,199,224,225,226,228,231,251,321,372,379,447,496,499],georg:[7,9],georgia:13,gerar:523,gerber:438,germani:9,germann:[275,432,491,510],germano:421,gerolf:13,get:[],get_natom:[11,494],get_rank:11,get_siz:11,getenv:523,gettimeofdai:12,gewald:[6,376],gezelt:[408,430],gflop:12,gflp:12,gfortran:9,ghost:[3,6,7,12,15,60,63,64,77,176,181,182,228,230,254,270,305,316,318,374,376,388,392,412,413,414,417,422,429,489,501,506,517],ghostwhit:206,giacomo:9,gif:[4,205],gifsicl:205,gigabit:17,giko:2,gikot:2,gillan:466,gingold:[469,470,472],gio:2,git:[7,12,518],github:[],give:[0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,54,75,100,117,124,158,161,165,178,202,203,206,212,214,218,219,221,222,228,230,247,270,293,297,298,303,311,313,316,348,376,377,385,388,389,392,394,398,414,417,424,425,442,445,447,459,479,480,481,491,493,494,496,506,510,517,524],given:[3,4,5,6,7,9,11,12,15,16,21,26,36,44,55,63,65,66,70,75,117,124,135,136,137,139,140,143,144,145,146,147,148,149,150,151,152,153,172,176,180,186,187,197,198,202,203,204,206,209,216,218,220,225,226,228,230,231,235,237,245,246,247,248,250,256,262,264,267,269,270,275,296,297,298,299,306,307,313,315,317,320,329,330,332,334,336,341,346,347,350,351,352,355,361,370,376,377,392,393,394,398,399,401,402,404,405,406,407,408,409,412,413,414,415,417,418,419,421,424,430,431,432,434,442,443,444,445,446,447,448,449,450,451,452,455,459,460,462,464,465,466,475,488,491,494,496,498,499,505,506,510,522,527,528],gjf:253,gjwagn:7,gkio:2,gko:2,gkot:2,gld:[],gle4md:[247,252],gle:[],glitch:3,glob:507,global:[],glosli:[377,445],glotzer:[316,412],glue:11,gmail:[7,9,13],gmake:[12,16],gmask:[3,523],gnu:[0,7,9,12,16],gnuplot:[11,13],goal:[5,12,39],goddard:[6,9,24,307,308,309,371,417,424,457,458,508],goe:[12,54,152,178,201,237,267,326,385,388,411,416,423,432,435,467,488,499,503],gold:[74,206],goldenrod:206,goldman:306,gone:3,good:[1,3,6,10,12,16,41,77,130,176,177,224,253,268,270,303,307,313,320,341,376,387,388,393,406,414,415,445,447,477,478,484,491,505,510,514,518],googl:250,gordan:152,gordon:6,got:[2,518],gould:[6,184,508],gov:[0,7,9,13,393,415,418,522],govern:256,gpa:394,gpl:[0,7,8,12],gpt:[9,445],gpu:[],gpuid:392,grab:[3,6],gracefulli:3,grad:[6,9,212,236,269],gradient:[6,7,8,12,13,134,139,228,236,237,248,249,269,293,308,342,346,383,384,387,440,449,450,458,477,478],gradient_correction:464,graduat:301,graft:227,grai:206,grain:[5,6,7,9,10,28,35,40,54,70,178,181,190,209,241,297,301,316,317,334,419,423,445,450,460,478,505,508],gram:[218,415,522],grama:[9,309,458],gran:[],grana:381,grand:[3,9,209,216,245],granflow:5,granular:[],graph:11,graphen:500,graphic:11,grasp:5,gravit:248,graviti:[],grdient:215,great:[3,13,306,518],greater:[1,3,10,63,75,94,176,206,228,246,270,297,339,353,392,397,399,401,402,428,447,491,493,496,499,505,510,523,524],greathous:13,greatli:[130,237,510],green:[2,6,99,142,143,205,206,298,299,342,398,518],green_kubo:6,greenyellow:206,greffet:311,greg:[7,9],grest:[45,46,227,334,377,402,422,434,508],grew:75,grid:[3,12,41,64,130,166,177,180,203,224,256,311,334,346,347,374,376,377,490,493,496,498,500,505],grigera:6,grime:40,grmask:[3,523],gromac:[],gromacs:[6,7,202,385,423,475],gronbech:[253,376],groot:412,ground:[6,88,89,239,321,417],group1:[160,181,388],group2:[96,154,160,179,181,388],group2ndx:[],group:[],group_id:11,groupbig:334,groupid1:[259,316],groupid2:[259,316],groupid:496,groupnam:388,grouptyp:245,grow:[3,6,8,214,230,231,251,253,270,297,348,422,496,508],grow_arrai:8,grow_reset:8,growth:[6,341],grueneisen:9,gsmooth_factor:442,gstyle:[3,493],gtl:7,guarante:[68,73,84,102,119,126,178,181,202,235,307,375,379,506],guess:[3,202,303,497,518],gui:[7,11,518],guid:[1,16,40,82,85,109,110,111,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,209,263,264,323,324,325,326,329,347,454,462,464,468,469,470,471,472,473,506],guidelin:[1,8,14,15,16,17,18,376,477,478],guidlin:16,gullet:442,gulp:6,gumbsch:384,gunnel:445,gunsteren:[303,337,438],gunzenmul:7,gunzip:12,guo:[6,19,184,190,403,508],gwald:3,gyrat:[],gzip:[3,12,202,203,205,206,345,387,496,497,501],h12:421,h2o:[40,386,419,450,478],h5cc:204,h5md1:204,haak:[303,337],had:[3,6,11,13,61,65,129,202,203,206,207,221,222,227,228,246,247,249,253,254,255,268,270,272,273,274,275,276,277,278,290,291,293,295,302,303,334,337,338,339,346,412,414,422,474,498,502,505,511,514],hafskjold:[6,237],half:[1,3,6,8,9,15,16,39,41,60,61,180,205,217,224,230,253,270,346,351,355,388,392,395,398,406,417,445,458,461,463,496,498,499,506,517],halfwai:[41,205,206,428,518],halperin:100,halsei:422,halt:[41,206,224,237,249,359,513],halv:205,ham:[37,56],hamak:[351,355,406,459],hamilton:74,hamiltonian:[209,247,270,271,338,417,505],hammond:[376,377],han:415,hand:[3,6,9,18,54,129,154,178,196,201,205,256,267,317,379,408,417,496,499,506,509],handl:[3,15,205,229,286,309,392,395,417,439,458,484,494,510,517],hang:[3,12,493,494],happen:[3,6,8,12,14,17,63,127,182,206,216,219,388,392,494,497,504],happi:8,haptic:250,hara:480,hard:[1,259,309,315,316,414,457,465,499],harden:[9,467],harder:[351,355,517],hardi:[215,254,376,377,517],hardwar:[1,9,10,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,198,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,376,377,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,499,509],hardwir:[3,16,352],hardy2:377,harm:395,harmon:[],harmonic_1:57,harmonic_fix_wal:440,harpertown:17,harrison:394,hart:334,hartre:[395,415,417,445,522],hasan:9,hash:[39,496],hassl:315,hat:[6,269],have:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,45,46,47,48,49,51,53,54,56,59,61,65,66,68,69,70,73,74,75,76,77,79,81,86,87,94,98,99,100,103,113,114,115,116,117,123,124,125,126,127,142,152,153,154,155,156,157,158,159,161,165,167,170,171,173,174,175,176,178,179,180,181,182,184,185,187,188,189,190,192,193,195,196,198,201,202,203,204,205,206,207,212,214,216,217,218,219,222,223,224,225,226,227,228,230,231,236,238,242,244,245,246,247,248,249,250,251,253,254,255,256,259,262,265,267,268,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,294,295,297,299,301,302,303,305,306,307,308,309,311,314,316,319,320,327,329,334,335,337,338,339,340,341,345,346,347,348,350,351,352,353,354,355,356,357,358,359,360,362,363,365,366,367,369,371,376,377,379,383,384,385,386,387,388,389,392,393,394,395,396,398,399,400,401,402,403,404,406,407,408,411,412,413,414,415,416,418,420,421,422,423,424,425,426,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,447,448,449,450,451,452,454,455,457,458,459,460,464,465,467,476,477,478,479,480,481,482,483,484,486,487,488,490,491,493,494,496,497,498,499,500,501,502,503,504,505,506,508,510,511,513,514,515,517,518,522,523,524,526,527,528],haven:494,hayoun:311,hayr:253,hbcut:457,hbnewflag:457,hbond:[],hbond_cutoff:458,hcn:317,hcp:[66,70,77,379,442],hdf5:[9,204],he1:177,head:[6,20,185,360,394,420,424,457,458,511,518],header:[3,6,7,8,12,179,202,205,206,207,218,219,221,222,268,306,313,318,346,386,393,398,415,474,493,496,506,513],heal:505,heat:[],heatconduct:[],heavi:[305,334],heavili:[41,224],heavisid:346,hecht:334,heenen:9,height:[205,231,302,387,420],held:[6,75,334,387,422],helic:190,helium:396,helix:[],hello:494,help:[3,8,12,14,15,16,17,18,202,228,230,268,297,374,398,448,479,481,518,526],henc:[1,3,13,19,20,25,31,34,35,74,75,119,158,160,168,185,218,270,309,334,350,351,355,357,360,362,366,369,377,408,420,438,455],henderson:53,hendrik:9,henin:[9,229],henkelman1:[269,387],henkelman2:[269,387],henkelman:[269,384,387],here:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,21,36,40,41,44,55,65,71,73,74,75,129,130,158,176,177,186,189,197,202,205,206,209,218,224,227,230,245,246,254,256,297,306,309,311,318,346,351,354,356,357,359,361,370,375,381,385,387,391,392,394,395,398,405,418,421,424,425,429,441,455,459,462,464,465,475,477,478,488,494,498,501,517,518,523],herist:347,herrmann:334,hertizian:352,hertz:[],hertzian:[6,352,422,475],hertzsch:422,hess:376,hessian:[5,384],heterogen:115,heurist:[347,497],hex:[3,178,237,249,379],hexagon:[70,100,442],hexahedron:203,hexat:100,hexord:[],hey:[121,153],hf4:177,hfo:407,hftn:[262,286,292,384,385,387],hg1:177,hg2:177,hgrid:334,hibb:299,hidden:[16,494],hienergi:357,hierarch:[7,505],hierarchi:[377,402,403,430,431,434,441,446,505],higdon:[9,439,440],high:[1,3,6,7,9,12,18,41,117,198,202,205,224,228,235,254,268,342,346,349,377,384,385,392,394,398,417,421,445,449,450,459,477,478,488,493,505,510,517],higher:[1,152,181,206,218,222,225,226,231,237,251,302,311,341,354,356,385,394,417,426,465,523],highest:[231,237,359,386,387,523],highli:[3,6,7,178,205,230,253,270,284,306,316,383,385,417,491,510],highlight:[4,6,7,13],hight:420,hilger:[376,377],hill:299,hill_height:13,him:9,hing:9,hint:12,histo:[],histogram:[1,3,6,12,65,127,176,209,219,221,222],histor:418,histori:[],hit:[3,334,353],hmaktulga:[7,9],ho3:177,hoc:369,hocknei:[376,377],hofl:204,hoh:[6,408,430,434],hold:[6,32,61,75,191,218,230,261,300,315,316,330,385,387,422,438,487,507],holdem:315,holder2:377,holder:[376,377],hole:330,holian:[275,432],holm:[297,377],holonom:345,home:[11,12,207],homebrew:12,homepag:[203,205,250],homogen:[293,447],hone:299,honeydew:206,honor:207,hood:445,hook:[],hookean:422,hoomd:207,hoover:[6,7,8,168,209,234,253,254,270,271,272,273,274,275,276,277,278,290,291,292,293,294,295,299,303,311,316,337,338,339,344,412,517],hop:[227,387,398,465],hope:[5,13,16,41,42,224,504],hopefulli:[8,385],horizon:454,horn:6,host:[3,12,15,16,229,392],hot:[6,249,271],hotpink:206,hottest:342,hour:[12,515],hourglass:[],hove:442,how:[],howev:[1,2,3,6,7,9,11,12,14,15,16,35,39,41,75,96,99,114,130,152,177,198,202,205,206,219,220,222,224,227,228,231,234,245,246,247,252,253,254,255,256,259,270,297,299,302,303,305,306,311,316,318,334,335,337,338,341,342,346,347,348,349,350,377,379,382,383,387,392,404,406,415,416,422,425,442,445,449,450,453,455,464,476,477,478,481,491,493,494,497,498,504,510,513,514,517,518,523,524],howto:[6,9,65,75,155,156,157,159,161,164,165,166,167,168,170,171,202,209,253,254,270,303,337,338,339,408,424,430,434,524],hoyt:215,hpc:[1,14],hsw:16,htm:415,html:[0,8,9,11,12,14,67,154,252,420,440,505,506],htmldoc:0,htst:510,http:[0,6,7,9,11,13,14,229,247,250,252,297,393,415,439,456,457,458,518],https:518,htype:[408,430,434,438],hubbard:409,huge:[10,12,180,284,334,496,501,513,518],huggin:[7,399,401,475],hugh:215,hugoniostat:[4,9,209,275],hugoniot:[268,275,306],hull:176,hummer:376,hundr:[7,237],hura:6,hwat:305,hwloc:[12,16],hybrid:[],hydrat:420,hydrocarbon:[394,407,417],hydrodyanm:40,hydrodynam:[7,9,40,109,111,256,258,259,260,400,439,440,462,464,475,506],hydrogen:[3,6,7,9,242,305,311,394,398,408,417,424,430,434,438,457,458,475,496,505,517],hydrostat:[3,9,228,270,275,303,316],hynninen:[409,420],hyoungki:444,hyper:299,hyperbol:409,hyperradiu:381,hyperspher:152,hyperthread:[15,16,392],i_0:346,i_1:455,i_csid:6,i_flag1:305,i_mpi_pin_domain:15,i_myflag1:305,i_myflag2:305,i_n:455,i_nam:[124,202,305,336,506],ialloi:442,iatom1:126,iatom2:126,iatom3:126,iatom4:126,ibar:442,ibead:299,ibm:[202,376,445],icc:[9,12,445],ice:6,icm:[250,518],icms:[9,250,518],ico:66,icosohedr:77,ictp:13,id1:[316,387,429,496,499],id2:[316,322,330,387,429,496,499],id_press:[228,268,270,272,273,274,275,276,277,278,303],id_temp:[227,228,268,270,272,273,274,275,276,277,278,290,291,293,295,303,337,338,339],idea:[1,3,6,11,12,41,153,205,206,224,251,297,322,334,342,377,447,504,517,518],ideal:[6,9,40,77,127,245,297,379,439,469,518],idealga:[],idealiz:6,idealli:[12,134,234,517],ident:[1,3,9,12,39,40,75,152,202,206,221,228,229,246,247,253,254,267,270,297,299,303,311,313,316,377,386,387,392,399,401,408,410,415,430,432,438,451,457,458,465,466,484,488,491,494,497,510,522,523,524,527],identi:392,identif:70,identifi:[1,3,6,12,37,40,56,74,154,176,178,198,240,241,305,313,334,357,424,429,442,449,450,477,478,491,493,496,499,510,511,513,515],idflag:302,idl:[17,510],idn:[316,387],idr:523,ids:[12,497],ielement:442,ieni:13,ifdef:[8,12],iff:254,iffp:494,ifort:9,ignor:[3,6,11,15,38,41,42,58,63,67,72,75,83,91,95,101,108,118,131,182,199,202,203,205,206,210,211,219,220,221,222,224,228,229,230,231,245,248,252,253,267,270,275,281,287,302,303,304,305,315,316,318,334,337,338,339,345,346,348,351,355,356,357,367,372,378,382,386,387,392,393,404,405,406,415,416,418,421,428,429,442,449,450,451,455,459,476,477,478,479,480,481,483,484,489,491,493,496,497,501,506,508,510,513,523],ignore:3,ihle:334,iii:[6,9,24,307,309,371,424,508],ijj:484,ijk:[365,369,371,398,455,484,493],ijl:369,ikeshoji:[6,237],ikj:484,iko:2,ill:[158,168,218,307],illeg:3,illegal:3,illinoi:[250,376,377,439],illog:494,illustr:[1,4,6,8,9,11,12,15,16,17,18,297,299,387,425,494,517,523],ilmenau:7,ilya:[7,9],imag:[],image2pip:205,image:[3,12,202,205,318],imageint:3,imagemagick:[4,205],imagin:[330,345,398,416,425,426,428,443,444,451,455,476,479,480,481,484,508],imaginari:[6,100,245,299,496],imbal:[1,12,41,224,392,515],imbalanc:[41,224],imbu:334,imd:[],img:205,immedi:[0,2,3,8,12,178,225,226,231,317,320,335,336,353,493,494,496,498,510,523,527],immediat:[329,523],immens:3,immers:[256,316],impact:[1,4,6,8,9,235,341,394,515],impart:[3,6,248,334,356],impei:[6,430],implement:[1,3,6,8,9,12,16,17,26,82,88,89,95,117,130,160,166,177,178,186,187,197,218,229,233,237,239,247,249,250,253,256,258,259,260,268,270,293,296,298,299,305,306,309,310,311,317,320,321,322,334,341,346,350,369,375,376,377,385,387,392,393,395,398,407,408,410,412,413,415,416,417,425,430,434,438,442,454,457,458,459,479,481,493,494,505,510,517,523,525,526],impli:[3,6,40,61,95,153,201,205,210,211,212,230,236,253,315,337,339,340,376,379,405,494],implicit:[],implicitli:8,implict:409,imporop:386,important:344,impos:[2,6,75,123,167,201,209,212,213,223,236,237,238,243,248,251,260,261,269,284,297,300,319,327,330,331,333,334,341,342,343,344,349,350,351,354,355,356,385,387,389,490,504,515],impose:248,imposs:[1,3,305,496],improp:[],improper:[3,8,361,367,369,370,386,496],improper_coeff:[],improper_styl:[],impropercoeff:[3,372],impropertyp:226,imprortant:107,improtant:[210,211],improv:[0,1,9,15,39,41,206,224,237,249,270,298,392,424,430,445,447,458,476,480],imrop:368,in3:177,inaccur:[1,3,6,181,268,376],inaccuraci:355,inact:424,inappropri:178,incid:[130,177,231],includ:[],include:[12,373],includelink:9,includig:[359,375],inclus:[],inclusion:12,incom:250,incompat:[3,11,262,286,292,426],incomplet:[3,11,496],incompress:[271,417],inconsist:[3,182,227,497],inconveni:379,incorpor:[306,398,409,518],incorrect:[3,161,253,442],incorrectli:[3,379,422,523],increas:[1,3,6,17,37,56,59,61,120,130,153,198,202,203,205,206,220,225,226,227,230,237,240,241,245,253,303,314,315,316,342,345,349,376,377,387,392,394,417,421,449,450,458,477,478,480,494,505,510,523],increasingli:417,increment:[3,11,140,212,213,223,224,231,236,242,270,302,322,323,357,375,391,428,465,491,494,508,510,523],incur:[16,218,242,346,493],inde:161,indefatig:7,indefinit:343,indent:[],independ:[4,6,9,11,12,15,16,41,61,65,86,99,128,131,164,178,201,209,217,218,219,221,222,224,227,228,229,230,231,246,248,253,254,256,259,270,298,303,307,311,316,318,322,333,344,346,379,422,445,491,494,513,524],indetermin:[202,203,206],index:[0,3,6,8,11,12,37,39,40,56,57,71,73,128,129,131,176,198,202,206,217,219,240,241,250,252,299,318,346,357,358,359,382,391,447,449,450,457,458,477,478,485,496,511,523],indianr:206,indic:[2,3,6,8,11,12,15,20,40,42,54,67,70,72,78,83,87,88,89,96,97,99,101,113,115,123,126,128,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,174,185,198,202,205,210,211,228,270,298,316,346,357,360,369,376,386,388,407,414,418,425,442,445,447,451,457,458,465,479,481,493,495,496,498,514,518,523],indigo:206,indirectli:[6,305,523],indistinguish:253,indium:466,individu:[],induc:[],industri:7,ineffici:[3,6,40,66,70,74,76,77,81,100,117,152,166,205,230,270,298,376,389],inelig:216,inerti:440,inertia:[],inertiai:129,inertiax:129,inertiaz:129,inexpens:[247,505],inf:[2,3,12,349,499],infer:[3,104,106,107,172,212,213,224,225,226,236,250,301,334,342,349,379,405,418,496,508,514],infil:[3,13,316,493],infin:[3,385,501,514],infininti:205,infinit:[3,231,244,251,253,256,298,334,346,352,353,377,379,417,496,500,522],infinitesim:6,inflect:[409,432,475],influenc:[3,9,41,85,160,267,302,376,377,447,479,480,481],inform:[0,1,2,3,6,7,8,9,11,12,13,14,16,39,41,42,61,63,64,65,71,96,126,128,129,130,177,178,184,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,242,243,244,245,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,269,279,280,281,282,283,284,285,286,287,288,289,292,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,318,319,320,323,330,331,332,334,335,337,338,339,340,341,342,343,345,348,349,350,351,353,354,355,356,358,374,376,377,380,384,385,386,387,388,390,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,486,487,488,489,493,494,496,497,498,500,501,503,508,510,511,513,515,523,525,526,527,528],informat:[8,12,497],infrequ:[6,270,412,491,510,515],infti:[409,439,440],ingtegr:398,inher:[376,385,447],inherit:[6,482],inhomogen:[17,346,447],inidividu:385,init:[3,8,314,465],init_fil:346,init_list:8,init_on:8,init_styl:8,initi:[2,3,4,6,7,8,11,12,13,37,39,40,41,56,59,61,64,75,85,87,94,95,113,114,142,174,179,180,198,201,202,203,205,206,207,210,211,214,215,219,224,226,227,228,230,238,240,241,245,246,250,251,252,253,254,256,261,266,267,268,269,270,275,284,286,298,299,300,305,306,311,314,315,316,319,321,331,333,334,336,341,343,344,345,346,347,348,351,352,353,354,356,357,359,376,380,384,385,387,394,395,411,412,414,445,449,450,456,457,458,465,477,478,491,493,494,496,498,499,501,503,504,506,510,511,514,517,523,524,526,528],initial:[2,3,6,87,113,180,523],initial_integr:8,initial_integrate_respa:8,initialis:456,initialt:346,inlclud:11,inlin:494,inner2:[403,423],inner:[3,8,15,57,202,251,359,375,383,384,385,387,391,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,485,486,487,488,489,505,510,523],inner_distance_cutoff:424,innergroup:259,innermost:[37,56,75,390,477,478,505],innernod:259,innner:436,inordin:347,inorgan:[6,484],inp:[229,359,466,484],input1:[68,71,73,84,102,119,124,125,126,128,129,131,336],input2:[68,71,73,84,102,119,124,125,126,128,129,131,336],input:[],input_doubl:3,inquir:323,insensit:12,insert:[3,5,7,8,9,12,61,178,209,231,245,251,302,376,466,474,494,500,517],insertion:[3,231,245,302],insid:[2,3,6,8,11,75,129,141,147,178,202,203,206,217,231,232,237,242,245,251,256,259,302,316,334,351,353,354,355,356,357,374,379,494,495,496,498,499,506,523],inside:[256,432,494,510],insight:[6,13],instabl:[256,411,464],instal:[1,3,6,8,9,11,12,14,15,16,176,202,204,205,207,377,387,402,403,426,430,434,438,445,491,497,498,503,511,518,528],install:[],instanc:[6,9,11,210,229,247,353,420,425,447,455,494,517],instantan:[6,65,227,228,246,247,270,275,298,303,306,311,313,316,341,502,514],instanti:[6,11,12,215,425,493],instead:[1,3,6,8,11,12,13,16,17,40,41,61,63,65,74,75,98,113,128,156,160,182,184,198,202,203,211,218,221,222,224,228,229,245,253,256,259,260,298,304,305,314,316,336,354,374,376,377,380,388,392,401,402,415,429,431,438,442,445,448,458,475,482,491,499,503,510,512,517,523],institut:[9,250,301],instruct:[3,4,6,8,9,10,11,12,13,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,176,184,185,187,188,189,190,192,193,195,196,198,200,205,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,377,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,499,505,517],instruction:11,insuffici:[3,6,12],insult:270,insur:[3,6,11,12,16,39,40,63,77,112,114,178,179,198,202,203,205,206,212,225,226,231,236,238,242,243,245,248,253,266,304,305,314,316,334,346,351,355,356,357,359,375,386,388,392,406,421,425,453,459,477,489,493,494,496,497,501,504,505,513,514,523,524],insure:16,int_max:3,inteatom:10,integ:[3,6,8,11,12,39,40,42,66,71,74,75,117,124,126,128,131,152,176,178,181,182,184,188,189,193,198,201,202,205,206,216,218,225,226,227,231,233,243,245,246,247,250,253,254,255,256,298,301,302,305,306,311,316,334,336,338,341,345,346,365,376,379,400,412,413,414,428,442,457,458,462,464,466,491,493,494,495,496,504,505,506,510,513,523,524],integer:[3,496],integr:[],integral:[299,449,450],integrate_ulsph:[],intel:[],intel_cpu:[12,15],intel_phi:[12,15],intend:[3,6,8,12,13,35,220,246,456,496],intens:[1,3,6,9,65,69,78,79,86,94,97,98,99,103,113,114,115,116,123,125,127,128,130,131,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,173,174,175,177,209,218,219,221,222,224,225,226,227,235,242,249,259,268,270,275,313,316,318,334,342,346,348,349,513,514,522],intensiv:[65,209,514],intepol:523,inter:[17,42,63,64,158,181,182,202,227,253,255,269,308,316,376,387,398,506,517,523,526,528],interact:[1,3,6,7,8,9,10,11,12,14,15,16,21,28,32,33,36,39,40,42,44,50,52,54,55,57,59,63,65,68,73,76,81,84,95,96,100,102,117,118,119,121,123,126,127,134,135,136,137,139,140,141,142,143,144,145,147,148,149,150,152,153,154,156,157,171,172,176,179,180,181,182,183,184,186,190,191,194,197,202,203,209,210,211,225,226,227,244,245,250,251,253,255,259,284,297,299,301,302,307,309,315,316,317,324,325,334,335,341,346,350,351,352,355,356,361,362,363,364,366,368,370,376,377,385,386,387,388,389,390,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,450,452,453,454,455,458,459,460,462,464,465,466,467,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,491,494,496,498,500,501,505,506,508,513,514,517,526],interatom:[3,4,7,9,10,178,202,269,343,344,393,398,415,417,426,442,445,465,480,523],intercept:130,interchang:6,interconnect:17,interconvert:417,intereract:39,interesect:355,interest:[1,5,7,8,9,11,13,75,177,299,341,344,377,416,440,457,458,494,523],interf:[392,518],interfac:[],interfer:[12,270,394],interg:[6,517],intergr:505,interi:440,interior:[3,6,41,355,499],interlac:442,interleav:[6,178,504],intermedi:[6,12,61,205,269,297,369,387,494,495,504,508],intermix:491,intermolecular:[154,394],intern:[],internal:[3,205,211,302,523],internal_element_set:215,internal_quadratur:215,internat:[130,177,215],internet:252,interpenetr:442,interpentr:[469,470,472],interpol:[6,14,37,56,110,198,205,206,215,240,241,256,297,376,377,387,398,447,449,450,458,471,477,478,479],interpret:[2,6,11,205,221,422,467,491,494,510,523],interrupt:306,intersect:[3,6,130,206,355,357,499],intersert:355,interspers:385,interstiti:[176,445],intertia:[3,103],interv:[3,6,99,204,219,253,270,306,311,312,325,465,471,491,510,523],intestieti:130,intial:[6,392,394],intiial:[41,501],intiti:[3,333],intra:316,intra_energi:245,intramolecular:[28,154,245],introduc:[6,9,100,117,205,237,270,306,311,316,369,376,393,408,417,430,434,438,476,510,523],introduct:[],intuit:379,inv:[130,177,318],invalid:[3,12,75,97,181,284,387,439,440,498],invari:[117,145,150,152],invent:320,invers:[],inverse:517,invert:[1,6,182,298],invis:355,invoc:[176,227,392,462,464,494],invok:[1,3,6,7,8,9,11,12,13,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,43,45,46,47,48,49,51,53,54,56,57,61,65,69,75,78,79,86,87,95,96,97,98,103,113,114,116,121,122,123,128,131,155,165,172,173,176,178,179,181,182,184,185,187,188,189,190,192,193,195,196,198,202,203,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,233,235,236,237,238,242,243,244,245,246,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,267,269,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,316,318,319,320,322,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,360,362,363,365,366,369,371,375,376,377,378,379,385,387,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,426,430,431,432,433,434,435,436,437,438,439,440,443,447,448,451,452,454,458,459,460,462,464,466,467,476,477,479,480,481,482,484,485,486,487,488,490,493,494,495,497,499,501,504,505,507,508,510,513,514,517,523,524],invokd:3,invoke:[3,12,16],involv:[3,6,7,8,12,65,119,126,127,128,158,182,209,216,225,245,256,301,304,309,334,376,384,385,387,397,414,421,428,476,479,481,492,493,499,501,505,510,511],ioff:[386,496],ion:[6,7,9,160,296,330,346,377,398,409,418,420,442,445,465,475,481,488,496,517],ionic:[6,9,399,401,409,417,418,452,465,517],ioniz:[407,417],ionocoval:9,iparam:[3,226],ipi:[],ipp:[],ir3:177,ir4:177,irregular:[6,41,60,224,228,230,270,316],irrelev:451,irrespect:[439,440],irrevers:[234,317],is_act:[3,523],is_avail:[3,523],is_defin:[3,523],isbn:487,isele:[376,377],isenthalp:[9,270,271,272,273,274],ismail:[376,377,402,434],isn:[3,8,11,12,237,249],iso:[3,228,234,254,270,271,272,273,274,275,276,277,278,303,311,316,517],isobar:[9,270,271,276,277,278,321,413],isodem:417,isoenerget:[9,321,413],isoenthalp:[321,413],isol:[3,181,357],isomorph:299,isotherm:[9,245,270,271,276,277,278,303,321,413],isotop:305,isotrop:[6,100,253,303,376,377,400,421,439,440],isovolum:318,isralewitz:322,issu:[1,3,6,9,11,12,13,14,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,61,75,77,87,113,123,155,165,184,185,187,188,189,190,192,193,195,196,198,205,212,223,227,228,230,231,236,237,238,244,245,248,253,268,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,299,303,305,308,309,316,319,320,333,337,338,339,344,354,356,359,360,362,363,365,366,369,371,377,386,387,390,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,474,476,477,479,480,481,482,484,486,487,488,496,498,499,505,508,513,514,523,524],issue:215,ital:[457,458],itali:13,item:[6,7,8,41,202,206,224],iter:[3,6,12,39,41,65,204,212,213,223,224,228,234,236,243,251,286,292,298,307,308,316,320,331,341,357,359,375,383,384,385,387,391,465,491,501,505,510,514,515,523],iterat:[12,385],ith:[75,128,131,217,218,219,220,221,222,336,348,514,523],itself:[2,3,6,7,8,9,11,12,13,17,42,61,99,118,169,202,204,205,206,207,219,220,229,234,254,265,269,310,316,346,357,359,386,387,408,418,421,425,426,449,450,477,478,494,500,503,504,508,523,528],itset:506,ityp:[3,57,126,127,178,214,226,309,485],itype1:127,itype2:127,itypen:127,ivector:8,ivori:206,ixcm:316,ixi:[42,316,386],ixx:[42,103,316,386,523],ixy:[103,386,523],ixz:[42,103,316,386,523],iycm:316,iyi:[42,103,316,386,523],iyz:[42,103,316,386,523],izcm:316,izrailev:322,izumi:480,izz:[42,103,316,386,523],j0jt:99,j20:219,j_m:152,jackson:446,jacobi:3,jacobsen:384,jacs:[6,184,508],jagreat:13,jame:[9,18],janssen:297,januari:442,jaramillo:[7,9,13,417],jarzynski:322,jatempl:9,jcc:9,jcp:351,jec:13,jeff:13,jello:270,jensen:[253,376],jeremi:[9,444],jerom:9,jewett:13,jiang:[254,517],jiao:[9,13],jiht:[7,9],jik:398,jim:7,jku:[7,9],jmake:12,jmm:152,joannopoulo:268,job:[12,62,320,504],jochim:[270,271],john:[7,9,13,204],johnson:[9,13],join:[6,422,499],joint:[3,301,424],jon:[9,74],jonathan:9,jone:[1,3,6,7,9,10,12,13,45,46,66,95,118,121,184,209,215,237,303,334,351,355,377,379,385,394,397,401,402,403,404,406,411,421,423,424,425,428,429,430,431,432,434,435,437,438,441,446,447,455,459,460,470,475,483,508,517],jonsson:[77,269,384,387,465],jorgensen:[6,195,408,430,434],joul:522,journal:[172,190,215,309,377,415,445,457,458,469,470,472],jparam:[3,226],jpeg:[3,12,205],jpeglib:12,jpg:[4,8,12,202,205,206,527],jpg_inc:12,jpg_lib:12,jpg_path:12,jpl:[7,9],jth:523,jtype1:127,jtype2:127,jtype:[3,57,127,226,485],jtypen:127,judg:510,judici:6,julien:9,jump:[],june:207,just:[3,6,8,11,12,13,16,18,21,28,42,44,61,63,99,118,121,127,153,156,157,171,182,186,202,205,218,230,234,242,259,267,303,305,316,341,346,357,359,361,386,387,392,394,397,405,425,455,483,494,498,500,501,503,504,515,517,518,523,527,528],justo:416,jusufi:[409,420],jut:355,jzimmer:9,k11:99,k22:99,k33:99,k_2:364,k_4:364,k_d:517,k_sigma:398,k_ub:19,kadiri:70,kalia:484,kamberaj:316,kapfer:117,kappa:[4,6,99,321,342,408,413,430,486,487],kappa_:346,karplu:95,karttunen:256,kate:[],kayser:409,kbit:206,kboltz:334,kbp:206,kbt:311,kcal2j:99,kcal:[250,505,517,522],kde:13,ke_eta_dot:270,ke_etap_dot:270,ke_omega_dot:270,keblinski:[408,465],kecom:158,keef:130,keep:[3,7,12,61,75,196,226,230,251,262,298,314,344,349,376,385,408,438,466,491,496,502,504,510,514,518,523],keflag:3,kei:[6,16,61,334,484,510],keir:13,kelchner:74,kelkar:349,kelvin:522,kemper:[308,407],kepler30:16,kepler32:16,kepler35:16,kepler37:16,kepler:[1,9,10,12,14,16,392],kept:[6,209,275,343,344,517],kernel:[7,13,16,40,110,141,147,215,246,247,325,445,468,469,470,471,472,473,496,506],keword:205,keyboard:12,keyword:[],keywrod:417,kforc:517,khaki:206,khersonskii:152,kick:[212,213,214,236,353],kilogram:522,kim:[],kimvirial:[3,426],kind:[1,2,3,4,6,7,8,9,10,11,12,16,39,40,41,42,57,63,64,65,77,128,158,202,203,205,209,216,218,219,221,224,227,229,233,245,248,267,316,320,334,341,356,387,389,391,398,417,457,458,485,491,495,496,501,502,509,510,517,523],kinemat:[9,439,440],kinet:[3,6,8,65,90,91,92,93,95,99,104,105,106,107,108,123,153,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,209,216,218,228,234,237,245,249,253,266,268,270,271,272,273,274,275,276,277,278,303,306,317,334,342,349,350,385,417,419,450,478,491,506,510,514,517],kio:2,kiss:[9,12],kjl:369,klahn:345,klapp:376,klein:[6,9,215,229,270,271,294,316,430,460],kloss:7,kmax:[3,130,318,376],knc:16,knock:346,know:[3,9,11,12,41,65,67,72,83,101,118,127,209,234,252,254,284,334,385,416,426,482,494,497,500,505,517,518],knowledg:[4,8,9,205,426],known:[3,12,152,205,237,249,298,307,316,343,493,510,524],kohlmey:[7,9,13,17,376,377],kokko:[1,3,9,12,16,319,392,458,499,509,523],kokkos:[],kokkos_arch:[9,16],kokkos_cuda:[9,12,16],kokkos_cuda_options:16,kokkos_debug:16,kokkos_device:16,kokkos_devices:16,kokkos_omp:[9,12,16],kokkos_pg:16,kokkos_phi:[9,12,16],kokkos_use_tpls:16,kolafa:377,kollman:[6,184,508],kondor:456,kone:[343,344],kong2011:298,kong:[9,13,298],konglt:9,koning00a:343,koning00b:343,koning96:[343,344],koning97:344,koning99:343,kooser:13,koskinen:384,kosztin:322,krau:13,kremer:[45,46,508],kress:[443,444],kspace:[],kspace_modifi:[],kspace_styl:[],kspce:12,kspring:269,kstart:315,kstop:315,kth:[246,299],kub:19,kubo:[6,99,342],kumagai:480,kumar:[9,439,440],kuronen:455,kurt:301,kuster:[286,292,381],kutta:317,l12:442,l_box:417,l_skin:346,la3:177,laa:9,laas:9,lab:[5,7,9,12,122,454],label:[],laboratori:[0,88,89,239,268,306,321],lack:[3,268,417],lackmann:398,ladd:[293,344],lafitt:446,lag:346,lagrang:[142,143],lagrangian:[6,134,135,136,137,139,140,141,142,143,144,145,147,148,149,150,215,268,306,307,324,325,462,464,517],lagrangian_posit:[268,306],lagrangian_spe:[268,306],lai:490,lambda1:[479,480,481,484],lambda2:[479,480,481],lambda3:[479,481],lambda4:484,lambda:[95,122,130,172,177,256,318,343,344,346,393,416,438,448,476],lambda_fin:343,lambda_initi:343,lamda:[3,53,334,448],laminar:473,lammp:[0,3,4,7,8,9,11,12,13,14,16,203,298,380,387,391,405,442,445,491,494,505,507,510,511,518,523],lammps2pdb:[6,13],lammps_clos:6,lammps_command:6,lammps_extract_atom:6,lammps_extract_comput:6,lammps_extract_fix:6,lammps_extract_glob:6,lammps_extract_vari:6,lammps_fil:6,lammps_gather_atom:3,lammps_get_coord:6,lammps_get_natom:6,lammps_ns:[6,12],lammps_open:6,lammps_potentials:[405,407,507],lammps_put_coord:6,lammps_quest:[6,243],lammps_rk4:317,lammps_scatter_atom:3,lammps_set_vari:6,lammps_sppark:6,lammps_vers:6,lammpsplot:13,lammpstrj:[497,501,517],lammpsvirial:[3,426],lamms:6,lamoureux:[6,234,482,517],landron:465,lane:1,lang:517,langevin:[],langston:42,languag:[6,11,12,16,494,523],lanl:9,lapack:12,laps:347,laptop:7,larentzo:[9,88,89,239,321],larg:[0,1,3,4,5,6,7,8,9,10,12,13,15,16,17,39,40,41,60,61,74,75,120,127,129,153,158,161,166,178,179,180,190,198,201,202,203,205,206,218,224,227,228,230,231,235,237,245,256,270,284,293,298,301,302,303,305,306,311,313,314,315,316,320,330,334,342,346,347,349,351,355,369,376,377,381,383,385,388,392,406,412,417,421,422,429,445,447,449,450,453,459,477,478,491,494,496,498,499,503,505,510,513,515,517,524,528],larger:[1,2,3,6,11,12,13,39,41,56,61,74,75,127,178,180,205,219,221,222,231,237,249,256,265,270,293,294,302,307,311,315,316,318,321,329,334,341,346,350,351,352,355,376,377,383,384,385,387,388,389,392,398,406,408,409,417,422,430,434,440,447,453,474,475,483,496,500,501,504,505,510,523],largest:[3,6,12,39,75,176,178,235,376,385,389,449,450,474,477,478,496,498,504,505,516,523],laroch:311,laser:346,last:[1,2,3,5,6,11,12,14,37,42,56,61,63,75,121,128,153,176,198,202,203,205,206,207,208,218,219,221,222,224,235,269,314,318,330,334,359,374,385,386,387,388,392,396,397,398,399,406,407,412,413,415,420,421,422,423,424,428,431,433,435,436,437,440,446,448,459,465,467,474,477,478,482,483,486,487,491,492,494,497,501,503,504,508,510,511,514,515,523],lat:442,late:5,latenc:[10,250],later:[6,9,11,12,15,16,40,61,75,114,180,182,219,231,275,293,301,322,341,357,359,376,385,386,391,392,394,398,494,496,498,500,510,513,515,518,523,526],latest:[7,218,219,220,221,222,318,498],latex:8,latgen:298,latitud:152,lattc:442,latter:[2,6,9,11,14,15,16,41,42,95,156,206,210,211,217,218,219,224,228,251,260,270,272,273,274,276,277,278,301,303,305,309,316,317,334,348,350,355,375,386,398,400,401,402,403,404,411,428,430,434,438,445,452,460,465,482,491,493,494,499,502,513,514,523,527],lattic:[],launch:[1,3,6,11,12,16,17,392,493,494],laupretr:369,lavend:206,lavenderblush:206,lavgevin:230,law:[6,268,390,462,464],lawngreen:206,lawrenc:9,layer:[6,75,342,346,349],layout:[1,3,16,180,374,493,496,505],lb_fluid:256,lbl:[7,9,176],lbnl:9,lbtype:256,lcbop:[],ld_library_path:[11,12],ldfftw:12,ldrd:7,lead:[2,3,6,12,21,24,39,41,44,61,63,81,95,127,172,176,182,186,206,210,211,221,224,231,247,256,275,306,316,320,334,341,342,349,361,369,376,382,387,392,405,408,430,434,436,445,464,490,496,506,517,518,523,524],least:[3,6,12,17,75,130,177,204,216,237,247,301,350,388,392,425,477,478,483,494,523],leav:[3,7,11,12,16,20,41,59,153,168,185,224,228,231,270,272,273,274,276,277,278,302,303,316,320,360,447,496,500,508],lechman:334,lectur:322,led:[3,5],lee2:442,lee:[215,442],left:[6,11,12,41,118,154,197,205,206,227,251,296,297,317,334,357,359,379,496,498,503,518,523,528],leftmost:[41,224],legaci:[12,203],legal:7,lehoucq:454,leimkuhl:354,leiu:412,lemonchiffon:206,len:506,lenart:[409,420],length:[3,6,8,11,12,17,20,37,39,40,41,42,44,53,54,55,56,57,60,61,63,67,68,71,72,73,75,78,83,84,85,88,90,95,96,97,98,99,101,102,113,115,118,119,123,125,126,128,129,130,131,140,142,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,174,176,177,180,185,198,202,203,205,206,209,216,220,221,222,224,225,226,227,228,230,240,241,245,248,256,268,269,270,271,275,284,292,297,303,313,316,318,320,321,330,334,341,345,346,348,351,355,377,379,381,383,385,387,388,390,394,395,398,399,401,408,409,414,417,420,424,428,430,442,447,449,450,457,458,468,477,478,479,482,486,487,489,496,499,504,506,513,514,517,523],lengthi:245,lennard:[],lennardjones612_universal__mo_826355984548_001:210,lenoski:[443,444],less:[1,3,6,13,14,15,16,17,37,41,56,59,60,61,75,80,100,117,119,126,127,129,156,157,171,198,206,218,221,222,224,226,227,228,230,231,237,242,251,268,270,297,309,311,318,334,353,354,356,377,379,385,389,392,398,403,421,422,428,439,440,447,459,476,477,478,481,487,496,515,523,524],let:[1,12,37,56,161,189,198,219,240,241,320,334,352,392,406,449,450,477,478,505,509,517,526],lett:[152,166,247,254,256,268,311,322,343,344,384,398,415,417,421,438,449,450,466,517],letter:[2,12,41,59,61,206,224,233,234,254,299,359,391,456],leuven:9,level:[2,3,8,11,12,16,202,205,210,211,212,213,220,223,232,236,248,250,251,265,267,269,270,297,308,315,319,322,330,331,332,333,350,351,355,359,374,377,391,398,402,403,430,431,434,441,445,446,457,458,493,505,510,515,523],lever:474,levin:422,lewi:323,lexicon:7,lgr_po:[268,306],lgr_vel:[268,306],lgvdw:458,li1:177,liang:407,lib:[1,3,9,11,12,14,16,203,310,392,407,426,494,497],libatom:[9,456],libcolvar:12,libdir:11,libfftw3:12,libgpu:[9,14],libjpeg:12,liblammp:[11,12],liblammps_foo:[11,12],liblammps_g:[11,12],liblink:9,libmeam:9,libmpi:11,libmpi_stub:12,libmpich:12,libpackag:12,libpng:12,libpoem:9,librar:9,librari:[],libreax:9,librt:16,licens:[0,7,8,12,205],license:[7,12],lie:[6,318],lieu:376,life:7,lifo:8,ligand:330,liggghts:7,light:305,lightblu:206,lightcor:206,lightcyan:206,lightest:341,lightgoldenrodyellow:206,lightgreen:206,lightgrei:206,lightli:330,lightpink:206,lightsalmon:206,lightseagreen:206,lightskyblu:206,lightslategrai:206,lightsteelblu:206,lightweight:334,lightyellow:206,like:[3,4,6,7,8,9,11,12,15,16,17,39,42,54,61,162,169,205,207,212,228,229,231,234,236,250,253,254,255,268,270,271,276,277,278,283,284,286,290,291,293,294,295,297,303,305,306,307,311,316,318,321,334,336,337,338,339,340,341,342,349,350,351,354,355,356,359,376,379,381,384,387,392,398,406,411,412,413,417,418,422,424,425,435,436,442,466,477,478,481,482,486,487,493,494,496,497,498,499,501,506,511,514,515,517,518,523,524],likelihood:[130,177,227],likewis:[1,6,12,14,15,17,39,41,75,96,126,215,224,225,226,245,253,254,270,271,275,294,311,334,337,338,339,377,387,393,397,398,408,415,418,445,475,494,496,498,508,523],likhtman:220,lime:206,limegreen:206,limit:[],limit_eradiu:417,limit_veloc:[324,325],lindahl:376,line:[],linear:[],linearli:[6,10,128,206,230,298,351,353,354,356,386,387,389,496,523],lineflag:[6,496],lineforc:[],linen:206,linesearch:[8,12,383],ling:[9,13],lingo:[11,426],link:[5,6,7,8,9,11,12,13,14,16,21,36,44,55,65,186,197,203,205,209,226,250,254,301,310,312,322,330,361,370,395,405,442,456,457,458,475,482,494],linker:12,linkflags:[9,15,17],linux:[9,10,11,12,14,205,207,250],linuxamd64:497,liouvil:270,lip:13,lipid:[4,9,10,13,28,316],lipton:301,liquid:[6,7,9,28,39,40,41,61,95,100,153,164,176,224,228,230,245,270,303,306,311,341,411,445,447,452,480,505],lisal:[321,413,474],lism:9,list:[],listen:[250,252],listfil:429,liter:[496,507],literatur:[6,8,442,465,476],lithium:417,littl:[1,3,12,66,237,270,388,491,499],littmark:[442,475,481,488],liu:[424,458],livermor:9,lj1043:[],lj126:[],lj12_4:460,lj12_6:460,lj1d:298,lj6:3,lj93:[],lj96:[],lj9_6:460,lj_flag:394,llnl:[5,7,9],lmp1:11,lmp2:11,lmp2arc:[],lmp2cfg:[],lmp2vmd:[],lmp:[11,494,517],lmp_auto:12,lmp_cuda:16,lmp_foo:12,lmp_g:[6,11,12,13,16,375],lmp_gpu:14,lmp_ibm:[12,375],lmp_inc:12,lmp_kokkos_cuda:16,lmp_kokkos_omp:16,lmp_kokkos_phi:16,lmp_linux:[4,6,12],lmp_mac:12,lmp_machin:[1,12,14,15,392],lmp_mpi:[12,16,17,18,299],lmp_mvapich:16,lmp_openmpi:16,lmp_win_mpi:12,lmp_win_no:12,lmpptr:[11,494],lmpqst:243,lmpsdata:13,lmptype:[3,12,243],load:[1,3,4,6,7,9,11,12,15,16,17,41,205,207,209,224,250,306,392,407,493,494,515],loadabl:11,loca:206,local:[],localhost:250,localized_lambda:215,localonli:12,localtemp:317,localvector:65,locat:[3,6,8,11,12,26,63,127,130,176,177,187,198,202,231,232,237,256,333,344,355,383,405,408,418,419,420,430,432,434,482,493,496,497,499,506,508],lock:[3,391,523],lockstep:[228,270,303,316],log:[],logarithm:[148,149,523],logfil:[0,3,6,12,304,380,492],logfreq2:523,logfreq:[206,503,512,523],logic:[7,10,11,12,16,41,178,224,357,359,491,493,494,497,505,510,523],lomdahl:[275,432],london:[13,245,458],lone:[457,458],longer:[1,3,4,6,8,12,13,54,127,202,206,217,218,219,220,221,222,225,245,253,297,301,306,316,320,341,351,355,357,383,392,394,422,465,493,501,505,510,520],longest:[41,224,225,388,483],longitudin:330,look:[1,3,6,8,11,12,17,54,63,202,205,208,405,466,477,478,517,518,523],lookup:[3,39,198,447,449,450,477,478],lookup_table:318,loop:[3,4,6,7,11,12,17,39,42,68,71,73,84,96,102,119,126,127,129,153,205,218,225,226,235,341,357,359,375,378,385,387,388,390,391,414,445,465,491,492,494,500,501,504,505,510,515,516,523,524],loopa:[359,375,391],loopb:[359,375,391],loopmax:465,loopvar:523,lopez:[270,271],lorant:307,lorentz:177,lose:[6,60,61,180,228,230,254,270,422,496],loss:[6,522],lossi:205,lossless:205,lost:[3,12,13,59,112,231,314,323,334,447,496,497,498,505,513],lot:[17,322,376],low:[1,3,6,7,12,41,161,176,202,205,224,234,254,293,311,316,342,349,377,445,449,450,458,477,478,487,510,517],lower:[2,3,6,9,11,12,41,59,61,75,96,154,167,201,205,206,219,220,221,224,228,234,250,253,254,256,270,306,311,342,349,351,352,357,358,376,379,391,409,442,510,519,521,524],lowercas:[],lowest:[56,152,359,386,506,510,511,523],lps:[454,475],lrt:392,ls_:146,lsfftw:12,lsurfac:346,lu3:177,lubric:[],lubricateu:[],lubricuteu:281,luci:[],lucki:12,luigi:13,lumped_lambda_solv:215,lussetti:342,lustig:[7,13],lybrand:377,lyulin:369,m4v:205,m_d:517,m_eff:[352,422],m_fill:3,m_i:332,m_lambdai:454,m_taubi:454,m_u:256,m_v:256,m_yield_stress:454,mac:12,mac_mpi:12,mach:[9,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,323,324,325,326,329,506],machin:[1,3,4,6,7,9,10,11,12,14,15,16,17,18,202,203,205,250,270,347,376,383,385,390,445,493,498,503,504,505,518,524,528],machines:12,mackai:[9,256,258,259,260],mackerel:[6,19,184,254,403,508,517],macos:205,macro:16,macroparticl:414,macroscop:[7,248,268,454],made:[3,6,9,11,12,14,15,32,41,42,50,66,67,72,83,86,101,179,191,202,205,207,209,210,211,216,224,231,235,250,259,302,310,314,316,344,357,367,388,392,421,422,425,457,459,467,493,500,506,509,518,519,521,524,526],madura:[6,430],magazin:415,magda:351,magenta:206,magic:[3,11],maginn:[172,349],magnitu:336,magnitud:[6,74,115,119,124,154,178,201,202,203,206,231,232,248,249,251,253,322,330,331,333,334,341,352,377,385,411,422,506],mai:[0,1,2,3,6,7,8,11,12,13,14,15,16,17,28,37,39,40,41,56,60,61,63,65,68,71,73,75,84,94,95,96,97,98,100,102,112,113,115,117,118,119,120,121,123,124,125,126,128,129,130,152,153,156,157,158,166,167,171,172,176,177,178,179,180,181,182,197,198,201,202,203,204,205,206,207,209,210,211,212,214,216,218,219,220,221,222,223,224,225,226,228,230,231,234,235,236,237,240,242,245,246,247,249,250,251,253,254,255,256,257,259,265,266,267,268,270,271,275,284,286,288,292,298,299,302,303,304,305,306,307,308,311,313,314,315,316,318,319,320,322,324,325,327,334,336,337,338,341,342,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,374,375,376,377,379,383,384,385,386,387,388,389,390,392,394,395,397,398,406,412,417,422,425,426,428,436,438,440,442,443,444,445,447,449,450,457,458,460,466,474,477,478,484,488,491,492,493,494,496,497,498,499,500,501,502,503,504,505,506,508,510,511,513,514,517,518,523,524,526,528],mail:[3,7,9,12,357,518],main:[3,6,8,11,12,203,250,256,316,343,344,415,465,482,494,511],mainboard:1,mainli:452,maintain:[8,9,13,39,163,226,230,293,334,347,384,393,415,505,508,518],major:12,make:[],makefil:[3,7,9,11,12,13,14,15,16,17,18,202,203,377,392,445,494],makelist:12,maks:422,malloc:[3,12],manag:[5,8,12,202,250,299,336,505],manbi:466,mandadapu:215,mandatori:[8,202,229],manh:398,mani:[1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,37,39,40,41,42,56,63,65,71,75,96,99,112,113,127,154,158,178,179,198,201,202,203,204,205,206,207,209,210,211,212,216,217,218,219,220,221,222,224,225,226,227,228,230,231,237,240,241,242,245,246,249,250,256,257,266,268,270,271,275,284,296,297,298,302,303,305,307,308,309,311,313,316,318,320,334,345,346,348,357,359,376,385,387,388,390,392,405,407,414,417,420,424,425,449,450,465,466,475,477,478,479,481,494,496,498,500,501,503,504,505,506,508,509,510,511,515,523,524,528],manifold:[],manifoldforc:[],manipul:[12,41,224,250,408,455,507],manner:[2,3,6,9,11,12,16,41,153,174,205,210,211,212,213,221,224,230,235,236,243,249,253,254,270,276,277,278,290,291,293,295,310,337,338,339,342,343,344,349,351,355,359,377,386,387,391,392,415,417,425,428,439,483,491,493,496,497,498,499,501,505,510,511],manolopoulo:252,mantissa:3,manual:[0,1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,60,65,71,75,123,130,155,156,157,159,160,161,164,165,166,167,168,170,171,177,184,185,187,188,189,190,192,193,195,196,198,202,203,205,207,212,223,230,238,244,248,252,253,254,269,270,272,273,274,275,276,277,278,279,280,282,285,288,289,290,291,293,295,303,305,308,309,316,318,319,320,337,338,339,349,354,359,360,362,363,365,366,369,371,377,387,391,392,393,394,396,397,399,400,401,402,403,404,406,407,408,410,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,491,499,505,509,510,511,514,523],manybodi:[3,7,8,9,12,153,154,385,425,508,523],map:[2,3,11,12,16,17,39,61,66,75,130,134,152,166,177,178,201,205,206,215,237,298,315,376,377,379,387,393,394,398,407,415,416,418,425,426,427,442,443,444,447,451,455,456,457,458,465,466,474,476,477,478,479,480,481,484,493,496,498,510,523],map_fil:298,mapflag:12,mara:[9,465],march:[9,442],margin:510,mari:13,mark:[423,438,462,464,465],marker:304,maroon:206,maroonmpi:11,marrink:423,marsaglia:[3,246,247,253,254,311],marseil:9,martin:[298,442],martinez:216,martyna:[270,271,316,505],mashayak:16,mask:[3,297,523],mask_direct:215,mass:[],mass_matrix:215,massdelta:320,massiv:[0,205,256,299,342,349],massless:[6,254,377,408,430,434,438,517],masstot:316,master:[3,387,491,510],mat:[70,215,407,480],match:[3,6,9,11,12,16,37,41,56,61,75,127,161,198,206,207,224,227,230,240,241,250,270,271,293,313,318,334,341,376,377,398,424,436,442,449,450,456,457,458,477,478,490,494,496,497,498,501,505,510,517,523],matchett:42,mater:[77,393,444,455,465],materi:[6,7,9,61,74,136,137,181,214,215,230,245,251,268,297,303,311,342,346,352,408,415,416,417,422,426,442,443,445,454,457,458,461,462,463,464,491,496,510,517,522],material_fil:215,math:[],mathemat:[130,152,177,178,201,210,211,212,213,223,228,236,246,248,249,251,253,254,304,319,327,337,338,339,351,354,356,466,492,499,506,524],mathrm:518,matlab:[],matric:[9,152,247,298,421],matrix:[3,6,9,99,176,219,228,247,298,307,376,379,445],matter:[6,12,39,59,61,75,160,346,388,394,410,415,417,442,460,465,479,481,484,488],mattox:9,mattson:[88,89,123,153,239,321],max2theta:177,max:[3,6,8,12,14,17,75,128,206,221,224,226,228,231,265,302,320,334,359,379,383,385,387,388,392,465,491,496,510,514,523],max_alpha:8,max_cell_s:414,max_group:3,max_nn:325,max_travel:326,max_vel:[324,325],max_veloc:325,maxangl:245,maxbody:3,maxbond:[3,226],maxedg:176,maxev:[385,491,510],maxfoo:8,maxim:[341,387],maximum:[3,6,8,12,14,16,24,41,42,45,53,54,59,61,63,100,117,127,128,130,133,176,177,179,180,201,202,214,219,220,221,224,226,230,231,235,237,245,265,284,286,292,297,302,307,320,323,324,325,334,347,376,377,383,387,388,392,395,398,414,420,439,440,465,496,499,504,514,523,524],maxit:[286,292,307,385,491,510,514],maxsize_restart:8,maxspeci:3,maxwel:[16,296],maxwell50:16,maxwell52:16,maxwell53:16,maxx:455,mayb:13,mayer:[7,399,401,465,475],mayo:[6,7,13,24,371,424,508],mbt:185,mbyte:[12,311],mcc:[457,458],mcdlt:[168,249],mcgraw:299,mdatom:245,mdf:[],mdnvt:245,mdregion:215,mdtemp:245,mdump:[41,224],meam:[],meam_sw_splin:444,meamf:442,mean:[2,3,4,6,7,8,11,12,16,21,33,36,37,38,39,41,42,44,52,54,55,56,58,59,61,63,65,71,75,76,80,81,90,92,93,95,99,100,113,114,115,117,123,124,125,126,127,128,129,131,152,153,155,156,157,159,160,161,164,165,166,167,168,170,171,172,178,179,181,182,184,186,194,197,198,199,200,201,202,203,205,206,207,209,210,211,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,236,237,240,243,245,246,247,248,249,251,253,254,255,259,267,270,272,273,274,275,276,277,278,284,286,290,291,292,293,295,297,299,301,302,303,305,311,313,314,316,319,320,322,327,330,334,336,337,338,339,341,342,345,346,348,349,350,351,352,353,354,355,356,357,361,362,363,364,366,368,370,372,376,377,379,382,383,385,386,387,388,390,392,395,399,401,402,403,405,408,412,414,415,417,421,422,424,425,428,430,431,434,441,442,446,447,449,450,452,453,455,457,458,459,460,474,476,477,478,479,480,481,483,487,490,491,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,510,511,513,514,517,522,523,524,525,526,528],meaning:[127,136,137,139,142,146,425],meaningless:[70,341],meant:[6,316,482,500],measur:[],meaur:515,mech:454,mechan:[6,8,9,11,12,15,16,40,88,89,138,154,215,237,239,249,299,310,398,417,426,432,445,462,464,490,494,496],mechanic:310,mechanim:134,meck:117,media:205,medium:487,mediumaquamarin:206,mediumblu:206,mediumorchid:206,mediumpurpl:206,mediumseagreen:206,mediumslateblu:206,mediumspringgreen:206,mediumturquois:206,mediumvioletr:206,mee:341,meet:[3,12,179,205,206,226,227,347,501],mehl:393,mei:441,meloni:39,melros:[439,440],melt1:207,melt2:207,melt3:207,melt:[4,10,227,298,398,445,480],mem:14,member:[181,184,301,398],membran:[28,296,487],memori:[3,5,6,7,8,9,12,14,15,16,17,39,40,62,75,206,218,220,246,247,311,346,374,388,392,398,447,453,458,493,496],memory_usag:8,mendelev:415,mention:[1,6,7,11,40,42,230,249,256,275,351,379,387,394,457,458,498,523],menu:[205,250],mep:[269,387],mer:[4,10,227],mercuri:518,meremianin:152,merg:[],merz:[6,184,508],mescscop:454,mesh:[],meshless:9,meso:[],mesocop:40,mesoparticl:[239,240,241,413],mesoscal:7,mesoscop:[7,109,110,111,263],mess:[3,506],messag:[],met:[8,41,127,224,359,375,377,385,387,391,483,504],metadynam:[9,13,229],metal:[3,5,7,9,10,40,61,75,167,178,214,215,230,231,249,251,306,307,311,350,351,353,354,356,377,379,389,393,394,398,407,415,416,417,418,425,427,442,443,444,445,455,456,465,476,479,480,481,484,499,513,514,516,522],meter:[389,522],methan:[306,311],methanol:4,methin:369,method:[1,3,4,5,6,7,8,9,11,12,13,15,16,18,37,39,40,41,56,66,95,99,121,153,198,209,210,211,215,219,220,224,229,240,241,243,253,256,260,265,268,270,298,299,306,307,308,309,311,316,317,320,321,322,341,342,343,344,349,376,377,383,384,385,387,392,393,395,398,407,408,415,417,418,442,443,444,447,449,450,455,465,475,477,478,484,491,493,494,496,497,499,510,517],methodolog:[6,77,153,299,376],metin:[7,9],metric:[3,10,66,499,514],metropoli:[216,245,511],mezei:95,mf1:207,mf2:207,mf3:207,mg2:177,mglob_default_function_attr:9,mgoh:451,mgpt:[],mgptfast:445,miai:311,mic:[9,16],micel:[4,9,13,332],micelle2d:[],michael:[9,13,444],michel:13,mickel:117,micro:[3,516,522],microcanon:[279,280,282,283,285,288,289],microelast:454,micromet:522,micropor:245,microscal:439,microsec:522,microsecond:522,mid:[5,9,61,230,445,474],middl:[3,6,8,15,21,41,44,81,95,127,167,172,182,185,186,206,210,211,217,224,302,314,315,316,342,349,360,361,382,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,446,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,490,494,504,505,506,523],middlebondtors:[3,185,496],midnightblu:206,midpoint:474,mie:[],might:[3,6,7,8,12,24,75,160,243,245,247,249,286,316,465,494,504,518,523],migrat:[3,8,16,41,42,61,63,68,73,84,102,119,126,129,202,209,224,297,305,311,334,376,389,392,504,526,528],mikami:[6,270,271],mike:[7,9,13,14,15],mil:[9,415],militz:297,mill:384,miller:316,million:[3,7,39,41,75,224],mimic:[6,42,54,254,268,302,408,420,430],mimim:[228,387],min2theta:177,min:[3,4,6,8,12,128,152,206,221,376,379,465,474,491,510,523],min_cap:3,min_cg:8,min_clearstor:8,min_dof:8,min_modifi:[],min_nn:325,min_popstor:8,min_post_forc:8,min_pre_forc:8,min_pushstor:8,min_setup:8,min_setup_pre_forc:8,min_step:8,min_stor:8,min_styl:[],minarea:176,mincap:458,mind:[7,246,298],mine:[12,96,168,169,209,357,520],minim:[],minima:[190,371],minimi:[387,483],minimizaiton:387,minimizi:311,minimum:[3,12,24,25,26,42,45,59,61,75,94,115,128,176,177,179,181,187,201,202,205,214,221,228,229,235,252,269,313,315,318,323,325,329,334,351,355,359,371,376,379,383,384,385,387,388,403,417,419,421,423,424,430,432,434,439,440,458,460,474,491,504,510,523,524],minlength:176,minmiz:[8,228],minn:9,minord:[3,376],minstep:317,mintcream:206,mintmir:[4,7,307,408,475],minu:[12,61,158,230,359,387,523],minut:[4,8,515],mirror:[63,353],misc:[],miscellan:[2,215],mise:[145,150],mishin:[393,475],mismatch:3,miss:[3,5,12,181,221,245,284,311,334,429,447,513,514],mistak:[3,523],mistakenli:3,mistyp:3,mistyros:206,mitchel:[6,122,160,376,377,410,454],mitchell2011:454,mitchell2011a:454,mitig:270,mivi2:311,mix:[1,3,6,9,14,15,75,126,160,221,347,376,377,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489,494,496,509,517,526],mixtur:[6,40,270,305,316,334,356,406,419,442,450,478,496],mixture_ref_t:442,mjpeg:205,mkdir:507,mkl:12,mkv:205,mldivide3:3,mlpark:7,mlutipl:222,mn2:177,mn3:177,mn4:177,mo3:177,mo5:[177,445],mo6:177,mobil:[6,115,153,155,156,157,159,164,171,205,316,357,358],moccasin:206,mod:[],mode:[1,3,4,6,9,10,11,12,13,14,15,16,17,63,69,79,86,96,98,103,114,116,125,127,128,154,158,173,175,176,177,202,203,205,206,221,222,229,230,243,247,270,299,311,322,334,374,376,389,392,408,417,445,465,493,498,503,505,514,522,523,528],model:[],model_ar_p_mors:426,modern:[12,253,255],modest:[1,390],modif:[6,13,95,442,445,459,481,517,518],modifi:[],modify_param:8,modin:215,modul:[3,9,11,12,13,229,311,381,494],modular:8,modulo:[3,523],modulu:[303,422,442,454,461,463],moementum:267,mofil:497,mol1:523,mol:[],molchunk:[69,79,86,98,103,114,116,158,173,175,218],mole:[216,415,419,522],moleclu:[225,226,231,242],molecul:[],molecular:[0,2,3,5,6,7,8,9,12,13,39,40,53,75,119,124,126,155,156,157,159,161,164,165,166,167,170,171,178,179,180,181,182,190,202,203,204,207,215,226,229,237,245,252,298,299,306,310,311,315,322,345,346,377,386,395,396,398,402,414,417,425,475,496,497,498,500,501,505,506,508,514,516,517,523],molfil:[],molfrac:[231,302],molnar:322,molpe:120,moltempl:[],molybdenum:445,mom:[6,99,315,524],momementum:[156,157,272,273,276,277,280,281,282,290,291],momemtum:69,moment:[3,6,9,40,42,86,90,92,93,116,124,129,156,171,178,200,202,203,253,256,259,270,288,302,316,332,336,386,411,416,465,496,506,517,522],momenta:[237,247,281,349,417],momentum:[],momon:227,monaghan:[9,469,470,472],monitor:[3,6,9,12,106,107,161,228,230,231,242,250,253,268,270,302,304,306,316,320,334,385,387,411,514],mono:[77,439],monodispers:[3,352,400,422,439,440],monom:[13,54,227],monoton:[3,240,241,322,345,387,510],monoval:377,mont:[4,6,7,9,209,216,227,245,316,341,414,475],montalenti:[491,510],month:0,moor:[9,16,88,89,153,239,321,449,450],more:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,60,61,63,64,65,66,67,68,70,71,72,73,74,75,76,81,82,83,84,85,88,89,91,94,95,96,98,100,101,102,106,107,108,109,110,111,112,113,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,164,165,166,167,169,170,171,172,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,201,202,203,204,205,206,207,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,322,323,324,325,326,327,329,334,336,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,369,370,371,374,376,377,379,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,491,492,493,494,496,497,499,500,501,502,503,504,505,506,507,508,509,510,511,513,515,517,518,523,524,526,527,528],morefoo:8,moreov:[225,226,482],moriarti:[9,445],moriarty1:445,moriarty2:[9,445],moriarty3:445,morri:[],morriss:[166,293],mors:[],morse_fe:[477,478],mosel:384,mosi2:442,moskalev:152,most:[0,1,2,3,4,5,6,7,8,10,11,12,14,16,17,18,36,39,41,55,75,113,119,166,197,202,203,205,206,218,221,222,224,225,226,228,249,270,271,299,303,304,305,306,307,316,318,347,349,357,359,370,377,384,388,390,392,394,417,421,442,456,457,458,481,491,492,493,505,510,511,514,515,518,523,526],mostli:[8,9,11,13,75,180,205,388,496,505,508,523,527],motiion:6,motion:[3,6,7,9,42,94,107,113,155,156,157,159,161,163,164,165,166,167,168,170,171,230,234,237,247,256,259,260,267,270,271,275,286,293,297,299,301,311,315,316,321,342,346,352,355,387,411,417,439,440,499,505,517],motiv:297,mous:250,mov:205,move:[],movement:[3,6,12,267,341,385,514],movi:[],mp2:394,mp4:205,mpeg:205,mpg:205,mpi4pi:11,mpi:[],mpi_allreduc:[316,494],mpi_barrier:1,mpi_cart:493,mpi_cart_creat:493,mpi_cart_get:493,mpi_cart_rank:493,mpi_cart_shift:493,mpi_comm:6,mpi_get_processor_nam:493,mpi_inc:12,mpi_lib:12,mpi_lmp_bigint:3,mpi_lmp_tagint:3,mpi_path:12,mpi_wtime:12,mpicc:11,mpich2:12,mpich:[12,14,15,16,17,392],mpich_icc:15,mpicxx:[12,16],mpiexec:[12,14,15,16,17,392],mpiio:[],mpirun:[1,6,11,12,14,15,16,17,18,299,375,392],mplayer:205,mri:[457,458],msd:[],msi2lmp:[],msi:13,msm:[],msmse:[130,177,318],msse3:445,msst:[],mtchell2011:454,mtchell2011a:454,mtd:229,mth:[8,131,206,513],mtk:[270,271,275],mtotal:386,mu_j:28,muccioli:421,much:[1,3,6,11,12,39,154,202,203,205,220,228,306,341,388,389,392,394,421,459,491,494,510,515,517,518,523],mui:[124,202,203,236,336,496],mukherje:[7,9,301],mulder:345,muller:[6,99,209,342,349,446],mult:8,multi:[],multibodi:[3,9,63,301,449,450],multicent:417,multicor:[1,9,493,509],multidimension:13,multielectron:395,multilevel:[9,376,377],multiphys:11,multipl:[],multipli:[3,95,99,127,186,197,210,211,219,253,256,297,303,379,385,394,496,523],multiscal:11,multisect:[41,224],multistag:95,multithread:[392,458],multitud:7,mundi:294,munich:9,murdick:398,murti:480,murtola:376,muser:298,must:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,58,59,61,63,64,75,90,92,94,95,114,118,120,123,126,127,128,129,130,131,156,160,167,171,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,199,200,201,202,203,204,205,206,207,210,211,212,214,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,234,236,237,240,241,243,245,246,247,249,250,251,252,253,254,256,257,258,259,260,265,266,267,268,269,270,271,272,274,275,276,278,280,281,282,284,286,288,290,292,295,297,301,302,303,304,305,306,307,309,311,313,314,315,316,317,318,319,320,321,327,329,330,331,333,334,337,338,339,341,342,344,345,346,348,349,351,352,353,354,355,356,357,359,360,361,362,363,364,365,366,367,369,371,372,376,377,379,382,385,386,387,388,389,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,462,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,491,492,493,494,496,497,498,499,501,503,504,505,506,507,510,511,513,514,517,522,523,524,526,528],mutli:6,mutlipl:496,mutual:[3,379,515],mutut:505,muvt:245,mux:[124,202,203,205,236,336,496],muz:[124,202,203,236,336,496],mv2_comm_world_local_rank:12,mvapich2:[16,392],mvapich:12,mxn:[12,299],my_ga:245,my_one_wat:245,my_post_process:507,my_qeq:307,my_setup:507,my_swap_region:216,myblock:[231,302],mybox:180,mychunk1:125,mychunk2:125,mychunk:[6,69,79,86,98,103,114,116,158,173,175],mycmap:496,mycom:221,mydump:[202,206],myer:[5,7],myfil:[493,523],myfix:[216,511],myflux:99,myforc:[202,203,527],myhug:275,myke:99,mymol:[40,320,386],mympi:11,mymultipli:[494,523],myn:494,mype:99,mypi:523,mypress:265,myramp:153,myrdf:[127,222],myreg:379,myregion:357,myrigid:[91,108,129,302],mysocket:252,myspher:[206,355],mystr:359,mystress:99,mytemp:[2,112,155,156,157,159,161,162,164,166,171,265,359,375,391,513,524],myvec:523,myz:496,n_dephas:491,n_element:204,n_f:[306,311],n_hbond:424,n_ij:422,n_ion:346,n_k:246,n_particl:88,na1:177,nabla:346,nacl:[4,6,442],nacl_cs_x0:6,nakano:[307,309,387,484],namd:[7,202,250],name1:[172,230],name2:[172,230],name:[0,1,2,3,4,5,6,8,9,11,12,13,32,42,50,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,191,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,298,299,300,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,347,348,349,350,351,352,353,354,355,356,357,358,359,367,374,375,377,378,380,386,387,391,393,394,398,401,415,416,418,421,422,425,426,427,429,442,443,444,451,455,457,458,465,466,476,479,480,481,482,484,485,489,493,494,496,497,498,499,503,506,509,511,512,514,517,518,523,524,525,526,527,528],namespac:[6,8,12],nan:3,nangl:[3,496],nangletyp:[386,496,506],nano:[316,516,522],nanoindent:74,nanolett:316,nanomet:[202,206,522],nanoparticl:[224,316],nanosec:522,nanosecond:[237,522],nappli:243,narea:3,narrow:[6,198],narulkar:[479,481],nasa:7,nasr:298,natdef:3,nation:[0,7,9,12,122,454],nativ:[1,6,7,9,12,15,16,202,207,497],natoli:[9,18],natom1:126,natom2:126,natom:[3,6,11,39,386,494,496,513,514,523],nattempt:302,natur:[6,9,152,230,270,297,311,352,415,417,418,442,455,493,523],navajowhit:206,navi:[206,415],navier:256,nb3:177,nb3b:[],nb3bharmon:451,nb3d:9,nb5:177,nbin:[127,221,342,349],nbodi:[259,316,445],nbond:[3,124,496],nbondtyp:[206,386,496,506],nbot:398,nbounc:334,nbrhood_cutoff:458,nbtype:126,nbuild:514,ncall:243,ncbin:75,nchar:206,ncheck:515,nchunk:[3,6,69,75,79,86,98,103,114,116,125,158,173,175,218],ncoeff:466,ncorr:220,ncorrel:220,ncount:[218,219,220],nd3:177,ndanger:514,nden:[6,99],ndihedr:[3,496],ndihedraltyp:[386,496],ndirango:316,ndof:[270,275],ndoubl:496,ndp:517,ndx2group:[],ndx:358,neal:316,nearbi:[7,64,179,231,267,308,334,355,388,394,439,440,475,487,517],nearest:[3,74,75,77,100,117,129,176,179,256,269,297,341,355,376,429,442,449,450,465,477,478,523],nearli:[4,6,9,17,54,61,224,253,334,417,445,447,491,494,500,508],neb:[],neb_combin:387,neb_fin:387,neb_log:510,neb_step:510,neb_styl:510,necessari:[6,11,12,13,14,16,32,63,95,186,191,197,207,224,228,229,245,246,310,321,334,347,357,376,438,445,447,465,496,497,501,504,505,506,510,517,527],necessarili:[12,237,311,341,362,363,364,366,379,447,524],necessit:305,need:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,32,36,37,39,40,41,42,50,54,55,56,60,63,65,66,70,74,76,77,81,90,99,100,112,114,117,120,123,140,152,153,155,156,157,158,159,161,164,165,166,167,168,170,171,178,180,182,184,186,191,197,198,201,202,204,205,206,210,211,212,213,215,216,218,219,220,221,222,224,225,226,228,229,230,234,236,240,241,243,244,245,249,250,252,253,254,256,263,264,270,284,298,302,303,305,311,315,316,322,329,334,342,345,346,348,349,350,351,357,367,370,376,377,386,387,388,389,392,393,394,395,396,398,399,400,401,402,403,404,406,407,408,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,489,491,494,496,497,498,499,501,503,504,506,508,509,510,511,517,518,523,525,526,527,528],needless:[6,388],neelov:377,neg:[3,6,12,26,46,68,73,97,112,119,126,152,153,180,182,187,189,198,205,228,230,231,246,275,297,322,330,345,349,351,356,376,384,418,433,442,475,496,499,515],neglect:[424,440],neglig:[6,11,95,270,476],neigh:[],neigh_modifi:[],neighbor:[],neighborhood:[25,100,134,466],neighbour:254,neighobr:[6,408,430,434],neither:[2,3,12,41,65,203,215,227,230,231,394,400,417,439,440,501],nelem:466,nelement:[393,415],nelson:[100,117],nemd:[],nest:[2,359,373,391,523],net:[3,6,11,39,86,94,96,159,170,249,297,307,316,440,458],netherland:9,netpbm:205,network:[12,202,225,226,250,493],neumann:376,neutral:[3,96,245,376,408,430,465],never:[7,12,65,75,209,219,228,245,270,297,320,336,347,351,354,356,376,388,415,442,466,484,493,496,510,513,523],neveri:[3,8,75,212,217,218,219,220,221,222,225,226,227,237,256,257,298,307,308,309,312,313,318,342,348,349,387,465,501,510],newatom:231,newer:[12,218,442,523],newfil:[373,375],newli:[231,302,517,524],newlin:206,newn:316,newt:165,newtemp:[65,112],newtion:[398,445,455],newton:[],newtonian:246,newtyp:[3,226],next:[],neyt:341,nfile:[3,37,56,198,202,203,206,240,241,449,450,477,478,498,503,528],nfirst:501,nfirt:501,nfreak:318,nfreq:[39,75,217,218,219,220,221,222,224,313,318,501],nfs:202,ngb:297,nghost:[3,12],ngp:115,ngpu:392,nguyen:[14,398],nharmon:[],nhc:299,nht:316,ni2:177,ni3:177,ni_000:[130,318],nialh_jea:415,nialhjea:[405,425],nice:[6,8,518],nickla:444,nicola:9,nimprop:[3,496],nimpropertyp:[386,496],nine:[139,146,418,465],ninteg:496,nissila:[256,465],nist:[393,415,522],niter:[41,224],nitrid:408,niu3:[405,415,425],nkb:306,nlast:501,nlen:220,nline:386,nlocal:[3,8,11,12,243],nlog:377,nlvalu:117,nmax:42,nmin:42,nmol:496,nmpimd:299,nn2:442,nneighmaxdef:3,nnn:[100,117],no2:[241,317,419,478],no_affin:[15,392],no_gradient_correction:464,no_histori:6,no_velocity_gradient:464,noced:385,nocheck:429,nocit:12,nocoeff:[38,58,199,372,489,496,525,526],nodal:[6,37,56,198,215,240,241,346,449,450,477,478],node:[1,3,10,12,14,15,16,17,41,130,134,177,204,224,250,256,346,392,429,493,509],node_area:256,node_group:215,nodeless:417,nodes:[41,224],nodeset:215,nodeset_to_elementset:215,nodess:15,nof:198,noforc:[],nois:[6,246,247,253,254,255,256,306,311,316,338,346],nomenclatur:[6,75,379],nomin:[202,270],non:[],nonbond:[4,12,451,475],none:[],noneq:247,nonequilibrium:[343,344,417],nonetheless:253,nongauss:[],nongaussian:115,nonlinear:[],nonloc:[454,506],nonperiod:3,nonzero:3,noordhoek:407,nopreliminari:198,nor:[2,3,41,61,203,215,323,324,325,326,327,329,407,461,462,463,464,496,499],nord:[455,479,481],norder:493,nordlund:[455,479,481],norm:[6,12,65,128,209,218,318,324,325,385,387,474,513,514,522],normal:[3,6,9,11,12,39,41,60,63,65,70,74,75,77,96,99,112,113,123,127,128,163,166,176,178,179,180,184,198,206,209,218,219,221,224,228,230,231,244,245,249,253,254,262,267,270,284,297,299,300,305,307,311,313,314,322,334,335,337,338,339,346,351,352,355,356,360,362,363,364,366,381,382,384,385,387,392,406,407,421,422,425,445,474,488,490,491,494,496,498,499,501,502,506,510,513,514,515,517,522,523,527],norman:346,nornal:3,nose:[6,7,8,168,209,234,253,254,270,271,272,273,274,275,276,277,278,290,291,292,293,294,295,299,303,311,316,337,338,339,344,412,517],noskov:[482,517],noslip:[334,356],nosync:515,notabl:[5,39],notat:[6,63,65,74,152,172,209,267,270,415,484,523],note:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,21,23,24,27,31,32,34,35,36,37,38,39,40,41,42,44,47,54,55,56,58,60,61,62,63,64,65,68,69,71,73,75,77,79,84,86,95,97,98,99,102,103,107,113,114,115,116,119,121,123,124,125,126,127,128,129,130,131,152,153,158,160,161,162,166,168,172,173,175,176,177,178,179,180,181,182,184,186,189,191,195,197,198,199,201,202,203,204,205,206,207,209,210,211,212,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,234,235,236,239,240,241,242,243,245,247,248,249,251,252,253,254,255,256,265,266,267,268,270,272,273,274,275,276,277,278,284,286,290,291,293,295,299,301,302,303,305,306,307,309,314,315,316,317,318,321,322,330,331,332,334,337,338,339,342,345,346,348,349,350,351,352,355,356,357,359,360,361,362,363,364,366,370,372,375,376,377,379,382,385,386,387,388,392,393,394,398,399,401,402,403,405,406,408,409,411,412,413,414,415,418,421,422,423,424,425,429,430,432,434,439,440,442,443,444,445,446,447,449,450,451,455,457,458,459,460,462,464,465,466,467,470,474,476,477,478,479,481,483,484,487,488,489,491,493,494,496,497,498,499,500,501,503,504,506,508,510,511,513,514,517,518,522,523,524,527,528],notes:[95,438],noth:[216,252,378,392,494,507,518],notic:[0,6,7,8,12,344,346,517],noutcol:8,noutput:298,noutrow:8,novemb:442,novik:13,novint:250,now:[2,3,6,10,11,12,13,46,63,64,75,202,210,211,226,246,250,251,305,316,352,355,377,379,415,417,422,457,458,467,492,497,517,518,524],nowait:250,nozforc:376,np3:177,np4:177,np6:177,npair:[127,219],nparticl:[3,40,42,397],npartit:514,npernod:[14,15,16,17,392],nph:[],nphi:[15,392],nphug:[],npoli:302,nproc:[3,11,202],npt:[],npt_aspher:[272,278,290],npt_bodi:[273,291],npt_sphere:[274,295],nrecomput:414,nrepeat:[75,217,218,219,220,221,222,313,318,501],nreset:[228,270,271,275],nreset_ref:228,nrho:[393,415],nrl:415,nsall:9,nsampl:414,nsbin:75,nsbmax_most:3,nsec:516,nskip:[131,501],nsq:[3,389,453],nstart:[131,219,220,221,222,318,496,501],nstat:297,nstep:[3,13,228,270,357,471,494,497],nsteplast:494,nstop:[131,501],nswap:[342,349],nswaptyp:3,ntabl:[37,56,198,240,449,450,477,478],nterm:322,nth:[12,81,127,128,202,203,206,221,230,501,511],ntheta:398,nthread:[3,392],ntpc:392,ntptask:392,ntype1:126,ntype2:126,ntype:[3,152,178,202,206,307,309,417,424,455,496,506],nuclear:[9,106,107,164,247,271,306,311,386,417,488],nuclei:[106,107,162,164,169,203,255,271,283,294,340,395,417,496],nucleu:[106,107,307,481,517],nudg:[4,6,7,9,209,269,384,387],nulcear:9,num:[],num_of_collis:3,num_step:317,numa:[1,3,12,392,493],numactl:15,number:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,21,26,37,38,39,40,41,42,44,56,57,58,65,66,67,68,69,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,88,95,98,99,100,101,102,103,112,113,114,116,117,119,122,123,124,125,126,127,128,129,130,131,141,147,152,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,172,173,175,176,177,178,179,180,181,182,186,187,197,198,199,201,202,203,204,205,206,207,209,210,211,214,216,218,219,220,221,222,224,225,226,227,229,230,231,240,241,242,243,245,246,247,249,250,251,252,253,254,255,256,259,265,267,270,271,275,284,286,292,297,298,299,301,302,305,306,307,311,313,316,317,320,321,325,331,334,335,336,338,341,342,343,344,346,347,348,349,351,353,354,356,357,359,361,372,374,376,377,379,382,383,385,386,387,388,389,392,393,394,398,400,405,407,412,414,415,416,417,418,424,425,426,427,428,442,443,444,445,447,449,450,451,455,456,457,458,459,462,464,465,466,474,476,477,478,479,480,481,483,484,485,488,489,490,491,493,494,496,497,498,499,500,502,503,504,505,506,508,510,511,513,514,515,517,522,523,524,528],number_of_a:3,number_of_b:3,numbond:3,numer:[],numpi:11,nvalu:[218,222,494],nvaluelast:494,nvc_get_devic:14,nvcc:[1,9,16],nve:[],nve_aspher:[272,276,290],nve_bodi:[273,277,291],nve_spher:[274,278,295],nvida:16,nvidia:[1,3,9,14,16,392],nvt1:517,nvt2:517,nvt:[],nvt_aspher:[272,276,295],nvt_bodi:[273,277],nvt_sphere:[274,278],nvtfe:215,nwait:298,nwchem:7,nxnode:346,o_core:160,o_shell:160,oascr:7,obei:[3,230,379,491],ober:7,obj_shared_foo:12,obj_target:12,object:[6,8,11,12,14,40,42,205,228,250,256,259,302,322,329,385,386,494,499],observ:[270,306,337,338,341,342,349],obsolet:13,obstacl:[4,251],obtain:[1,3,9,12,28,77,95,113,117,176,207,211,244,247,256,275,298,299,341,376,394,411,442,447,456,465,479,481,505],obviou:[12,488,523],obvious:205,obviousli:[302,511,523],occ:420,occasion:[3,270,491],occlus:205,occup:[3,176,392,420],occur:[1,3,6,11,12,16,39,59,61,63,64,75,94,115,176,179,181,198,202,203,206,216,224,227,228,230,240,241,245,248,251,259,268,284,307,316,334,343,356,357,359,376,388,392,414,417,438,449,450,458,477,491,493,494,499,501,505,510,513,523],occurr:[369,496,510,523],oct:11,octahedr:24,octant:493,odd:[41,117,206,224,270,316,337,338,346,511],ode:[9,317],off:[1,3,6,12,14,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,43,44,45,46,47,48,49,50,51,53,54,55,56,61,63,68,73,75,118,119,123,124,126,152,153,155,161,165,176,177,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,202,203,205,206,209,212,216,222,223,226,227,230,238,244,245,246,248,250,253,254,259,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,295,301,303,304,308,309,316,319,320,334,349,351,354,355,360,361,362,363,365,366,367,369,370,371,376,377,385,387,388,390,392,393,394,396,399,400,401,402,403,404,406,407,408,410,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,442,443,447,448,449,450,451,452,454,458,459,460,462,464,465,467,474,475,476,477,479,480,481,482,484,486,487,488,491,492,493,496,498,499,503,505,508,509,510,515,520,522,523,526,528],offend:[3,494],offer:[6,17,181,384,408,465,491,505],offic:7,offload:[1,9,15,16,250,392],offset:[3,6,59,178,205,230,231,302,386,408,430,434,475,496],offsite:8,often:[1,3,6,7,12,13,14,15,16,17,36,55,75,172,197,205,212,221,222,224,228,243,250,270,299,318,370,379,384,385,387,388,389,392,407,412,430,477,479,481,491,510,515,517,518,522],ohio:444,old:[3,6,209,228,231,270,442,457,467,497,500,504,507,522,526],older:[3,5,12,13,16,206,228,270,467,523],oldlac:206,oleinik:398,olfason:[6,24,371,424,508],oliv:206,olivedrab:206,olivier:9,ollila:[256,258,259,260],olmsted:[215,297],omega0:371,omega:[],omega_dot:270,omega_ij:413,omega_ijk:481,omega_ik:479,omegadd:[449,450],omegai:[124,129,202,203,336],omegax:[124,129,202,203,336],omegaz:[124,129,202,203,336],omgea:6,omiss:[0,7],omit:[198,206,237,353,402,411,434],omp:[],omp_num_threads:[3,15,17,392],omp_proc_bind:16,ompi_comm_world_local_rank:12,ompi_icc:15,on_the_fli:215,onc:[0,1,3,6,11,12,15,41,61,65,75,114,184,204,205,209,210,211,224,243,245,247,254,302,305,316,334,342,347,349,357,383,386,387,388,421,423,425,455,459,493,494,503,513,517,523],once:[0,2,6,8,12,40,41,62,99,206,224,225,226,231,298,347,426,510,518],one:[3,6,12,13,16,28,42,76,81,99,127,152,160,205,225,226,230,266,270,275,314,330,334,341,346,348,377,386,398,409,440,458,465,491,494,496,497,505,508,523],onelevel:493,onewai:[],ongo:250,oniom:[9,310],onli:[1,2,3,6,7,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,58,61,62,63,65,66,68,69,70,71,73,74,75,77,79,82,84,85,86,88,89,91,94,95,96,98,100,102,103,106,107,108,109,110,111,112,113,114,115,116,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,161,162,164,165,166,168,169,170,171,172,173,175,176,177,178,181,182,184,185,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,206,207,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,234,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,305,306,307,308,309,310,311,312,313,316,317,318,319,320,321,322,323,324,325,326,327,329,334,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,362,363,364,365,366,367,369,370,371,372,374,376,377,379,382,385,386,387,388,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,493,494,496,497,499,500,501,503,504,505,506,507,508,510,511,512,513,514,515,517,518,523,524],only:[2,3,6,13,15,41,61,74,76,112,131,156,157,158,181,202,203,204,205,206,207,219,222,228,237,245,248,262,265,269,286,292,297,301,307,308,316,342,348,349,357,359,376,385,387,393,394,398,400,403,407,415,416,418,424,426,427,439,440,442,443,444,451,455,456,457,458,466,476,479,480,481,484,505,514,517,523,526],only_group:176,onn:505,onset:[306,369],ontario:9,onto:[152,180,227,231,237,256,474],onward:2,open:[],opencl:[1,3,7,14,392],opengl:6,openkim:9,openmp:[1,3,4,7,9,10,12,15,16,17,374,392,458,509],openmpi:[12,14,15,16,17,392],opensourc:7,oper:[1,3,6,7,8,11,12,15,16,39,41,42,61,75,99,128,131,166,168,169,178,181,182,206,209,216,218,219,221,222,224,225,226,227,231,237,245,248,255,265,266,267,268,270,271,272,273,274,275,276,277,278,283,290,291,293,294,295,302,304,305,314,316,318,320,322,333,334,335,336,340,344,346,350,352,357,359,374,376,377,384,387,389,392,445,462,464,490,491,492,493,494,496,497,498,499,501,502,504,505,509,510,513,518,523,524,527],operat:[],opl:[],opls:[7,186,195,197,425],oppelstrup2:9,oppelstrup:[9,445],oppos:[6,39,200,202,203,315,353,377,386,496],opposit:[6,28,74,184,214,253,260,297,316,349,387,408,438,482,494],opt:[],optic:156,optim:[],optimiz:[15,308,385,407],option:[],optional:[226,245,313,352,392,458,466,504],optionn:16,options:[9,12,15,16,445],orang:[2,205,206],orbit:[307,309,398,408,417,465,475],orchid:206,order:[2,3,6,9,11,12,26,28,37,39,41,56,61,65,68,73,75,84,95,97,98,100,102,103,117,119,123,126,129,142,152,153,154,155,156,157,158,159,160,161,164,165,166,167,168,170,171,182,187,197,198,202,203,205,206,209,212,217,219,221,222,223,225,226,227,228,229,234,236,237,241,245,247,249,250,252,256,257,259,268,270,297,305,306,310,313,314,315,316,317,318,319,320,322,327,329,335,341,345,346,347,348,358,359,360,362,363,364,366,369,370,376,381,386,387,393,394,395,398,407,413,414,415,417,418,421,422,425,427,430,438,442,445,449,450,457,458,459,465,475,476,477,478,479,480,481,482,484,485,491,493,494,496,497,501,503,505,506,510,513,517,523,528],orderomg:3,ordinari:[122,317,424,454],org:[6,7,11,12,13,297,456],organ:[0,3,6,7,8,407],organis:[462,464],organometal:24,orien:506,orient:[],orientord:[],origid:218,origin:[3,6,7,9,12,75,87,113,114,125,130,174,178,180,201,205,206,209,210,211,218,225,226,230,234,237,254,267,270,293,299,302,312,316,318,326,333,344,373,375,376,379,384,393,394,396,398,408,411,412,414,415,424,427,442,454,457,458,479,481,482,483,493,496,497,498,499,500,501,518,522,526],orlikowski:445,ornl:[7,9,14],orsi:28,ortho:[3,61,180,496],orthogon:[],orthograph:205,orthong:61,orthongon:[61,316],orthonorm:231,orthorhomb:306,os4:177,oscil:[],oscillatori:[267,326],ose:205,oserror:11,other:[],otherswis:15,otherwis:[1,3,9,12,15,16,17,36,39,55,57,75,112,122,130,156,157,158,171,179,184,197,203,206,207,216,218,225,226,230,243,245,247,254,270,316,370,371,381,385,392,400,425,429,439,440,455,485,489,491,494,496,497,517,523],otyp:[408,430,434,438],our:[5,6,7,8,13,256,320,447,479,481,517],out:[1,2,3,4,6,7,8,11,12,13,17,18,20,41,66,69,75,79,86,98,99,103,104,107,113,114,115,116,118,125,126,155,156,157,158,159,161,162,164,165,166,167,168,170,171,173,175,181,185,202,203,205,206,207,209,224,225,226,229,238,244,245,251,253,256,261,284,286,298,300,301,302,305,311,312,313,316,330,346,355,357,358,359,360,362,366,374,375,379,383,387,391,417,425,441,475,490,491,493,494,499,500,501,503,504,505,507,510,512,513,514,519,521,523,524,525,526,527,528],outcom:[316,524],outer2:[403,423],outer:[3,8,15,57,75,235,251,359,375,383,385,391,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,485,486,487,488,489,491,504,505,510,515,516,523],outer_distance_cutoff:424,outermost:[37,56,75,210,211,212,213,223,232,236,248,251,265,267,270,297,308,315,319,322,330,331,332,333,350,351,355,388,477,478,505],outfil:[13,493],outlin:[6,205],outmost:250,output:[],output_frequ:215,outputss:139,outsid:[3,8,59,61,75,168,178,201,202,203,204,205,206,207,221,231,237,245,251,316,318,334,339,340,353,354,355,356,357,374,387,399,401,408,417,430,432,452,460,494,496,497,499,506,513,524],outut:6,outward:[75,176,351,355,356,496,505],over:[1,3,5,6,7,12,15,17,26,39,41,42,55,62,68,71,73,75,84,85,95,96,97,98,100,102,111,113,115,117,119,126,127,129,137,138,144,149,152,153,158,161,164,172,174,187,198,205,207,209,210,211,217,218,219,220,221,222,223,224,225,226,230,231,243,246,247,251,253,254,255,259,267,268,269,270,271,272,273,274,276,277,278,290,291,293,294,295,297,302,303,306,313,314,315,316,317,318,322,330,334,337,338,339,340,342,345,348,349,351,353,354,355,356,357,360,375,378,387,388,389,406,412,415,416,417,418,424,439,442,445,455,466,467,475,476,477,479,480,481,484,492,493,494,499,501,502,504,505,510,511,513,514,522,523,524],overal:[6,17,24,61,172,228,234,270,271,299,320,334,359,383,417,424,425,466],overalap:316,overcom:[284,334],overflow:[3,386,388],overhead:[6,11,18,41,206,218,220,224,237,242,305,388,389,499,515],overkil:316,overlai:[],overlaid:7,overlap:[3,13,15,64,80,178,181,198,206,214,217,218,221,222,231,235,262,284,302,307,313,316,318,334,352,356,376,379,383,385,386,392,412,417,422,425,428,438,461,463,467,483,496,499,505],overload:1,overrid:[3,9,12,15,16,21,44,75,164,178,186,205,206,210,211,228,235,265,270,319,361,376,388,405,424,425,442,447,457,493,494,498,506,508,513,523],overridden:[6,178,205,275,316,428,439,447,467,475,504,523,526],overview:[],overwrit:[11,12,21,44,186,206,218,219,220,221,222,318,361,374,380,405,442,494,497,498],overwritten:[203,304,345,374,424,425,491,492,497],own:[],oxford:[28,95,411],oxid:[9,407,408,465],oxygen:[6,40,242,305,408,430,434,465,496],oxygen_c:160,p10:422,p_e:346,p_ik:455,p_pi:398,pacakg:392,pack:[5,8,70,352,392,398,442],pack_bord:8,pack_border_bodi:8,pack_border_hybrid:8,pack_border_vel:8,pack_comm:8,pack_comm_bodi:8,pack_comm_hybrid:8,pack_comm_vel:8,pack_exchang:8,pack_restart:8,pack_revers:8,pack_reverse_comm:8,pack_reverse_hybrid:8,packaag:392,packag:[],packakg:14,packet:[7,9,40,205,395,417],pad:[3,202,203,205,206,299,523],padua:[9,13],page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,36,40,42,44,55,59,61,65,69,71,79,86,95,98,103,112,114,115,116,118,120,123,125,128,129,131,153,156,157,158,171,173,175,178,179,180,186,197,201,202,203,204,205,206,207,209,210,211,216,217,218,219,220,221,222,231,245,252,253,254,265,270,271,276,277,278,282,290,291,293,294,295,302,305,316,330,334,337,338,339,348,352,355,357,359,361,370,375,385,386,387,388,392,393,394,397,405,407,408,415,416,418,424,425,427,428,442,443,444,447,451,455,456,466,475,476,479,481,483,484,494,496,497,498,499,501,504,505,506,508,513,514,523,524,526,527],pai:[14,17],painless:518,pair:[],pair_:[95,210,211],pair_airebo:427,pair_charmm:438,pair_class:8,pair_coeff:[],pair_dpd:9,pair_dzugatov:518,pair_eam:393,pair_eff:164,pair_foo:8,pair_gayberne_extra:9,pair_hybrid:[425,482],pair_interact:215,pair_kim:210,pair_list:429,pair_lj:438,pair_lj_cut:8,pair_lj_soft_coul_soft:95,pair_modifi:[],pair_resquared_extra:9,pair_sph:[468,469,470,471,472,473],pair_styl:[],pair_tally_callback:8,pair_writ:[],paircoeff:[3,489],pairfoo:8,pairij:[3,496],pairkim:3,pairstyl:8,pairwis:[],pakketeretet2:518,palegoldenrod:206,palegreen:206,paleturquois:206,palevioletr:206,pan:205,panagiotopoulo:[409,420],pandit:[9,309,458],papaconstantopoulo:393,papayawhip:206,paper:[3,6,7,8,9,13,39,40,66,152,166,172,190,253,256,260,269,301,307,309,316,334,342,346,349,376,384,387,394,402,408,422,424,427,432,434,454,457,458,479,481,491,510],paquai:[],paradyn:5,paraemt:459,paragraph:[75,166,351,379,449,450,477,497,498],parallel:[],parallelepip:[6,180,379,496,499],parallelipip:[180,298],paralleliz:[9,301],param:[3,307,309,419,428,493,499],param_free_:210,param_free_sigma:210,paramet:[],parameter:[130,177,394,398,407,408,415,416,417,418,427,442,443,444,455,457,458,465,476,479,480,481,484],parameter_fil:215,parameterizaion:408,parametr:[6,9,35,416,456,460],paramt:[115,307,353,459],paramter:407,paratem:438,paraview:[203,318],parent:[3,8,357],parenthes:[37,56,198,240,241,317,419,422,449,450,477,478,523],parenthesi:[2,218,359,523],parinello:[6,7],pariticl:224,paritlc:3,park:[3,7,9,215,322,444,454],parmin:445,parrinello1981:228,parrinello:[228,247,268,270,271,306,338],pars:[],parser:[12,523],part:[0,1,2,3,6,7,8,9,11,12,16,19,20,22,23,24,25,26,27,28,29,30,31,34,35,36,37,40,41,43,45,46,47,48,49,51,53,54,55,56,66,70,74,75,76,82,85,88,89,91,100,106,107,108,109,110,111,113,115,118,119,122,123,126,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,160,162,164,165,169,170,172,176,177,181,184,185,187,188,189,190,192,193,195,196,197,198,202,203,204,206,207,209,212,213,214,216,220,223,224,225,226,227,228,229,230,231,233,236,237,238,239,240,241,242,243,244,245,246,247,248,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,306,307,308,309,310,311,312,313,315,316,317,319,320,321,322,323,324,325,326,327,329,330,331,333,334,337,339,340,341,342,343,344,345,346,347,349,351,352,353,354,355,357,358,359,360,362,363,365,366,369,370,371,376,377,385,386,387,388,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,493,494,496,497,498,499,503,504,505,508,514,518,523,528],partai:[9,456],parti:[4,9],partial:[],partic:6,particip:[226,397,428,483],particl:[],particleenergi:3,particleviri:3,particular:[1,3,4,6,8,10,12,40,65,68,73,74,75,84,102,119,124,126,127,152,178,201,202,203,209,210,214,224,227,245,246,251,252,256,267,270,297,302,315,316,320,341,352,357,360,377,379,383,386,392,397,398,399,401,403,404,406,410,413,416,417,421,423,425,430,434,438,441,448,451,452,459,460,475,476,479,480,481,482,484,491,493,496,497,498,503,504,506,514,518,523,524,527,528],particularli:[6,7,9,12,14,15,24,39,205,228,316,377,417],particuolog:42,partilc:334,partit:[],partitoin:64,partner:[3,7,63,225,226,227,254,334,349,482,506,511,517],pascal:[9,13,522],pass:[6,7,8,9,11,69,78,79,86,87,97,98,103,113,114,115,116,129,173,202,203,205,206,207,228,229,243,245,267,268,270,305,334,351,375,381,388,392,425,428,457,474,494,496,497,501,507,523,527],passphras:12,password:518,past:[],patch:[0,12],patchi:316,patel:445,path:[3,6,7,11,12,13,14,207,252,269,299,322,334,341,346,387,393,394,398,405,415,416,418,427,442,443,444,451,455,456,457,465,466,476,479,481,484,497],pathtolammp:465,patient:12,patom1:126,patom2:126,patrick:480,pattern:[3,7,12,64,77,498],pattnaik:316,paul:[0,7,13,253,255],pauli:[417,465],paus:504,paves:299,payn:[152,456,466],pb2:177,pb4:177,pbc:[75,351,395],pchain:[270,271,275,316],pcie:1,pd2:177,pd4:177,pdamp:[270,271,275,303,316],pdb:[6,13,207],pdebuyl:9,pdf:[0,8,9,13,16,40,109,110,111,122,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,229,252,263,264,323,324,325,326,329,454,468,469,470,471,472,473,506],pdim:349,pdlammps:[82,85,454],pdlammps_eps:[9,122,454],pdlammps_overview:9,pdlammps_ves:[9,454],pe_eta:270,pe_etap:270,pe_omega:270,pe_strain:270,peachei:13,peachpuff:206,peak:420,pearlman:95,peculiar:12,pedersen:377,peform:[39,308],penalti:[457,458],pencil:[6,75,166],pend:3,penetr:[42,132,461,463,506],penetret:40,peng:177,penn:13,peopl:[7,8,9,12],peptid:[4,9,229],per:[],peratom:[3,121,153,176],perceiv:205,percent:[3,12,15,228,392,476],percentag:[1,12,228,270,302,303,316],percol:226,perfect:[6,41,74,77,100,224,297,387],perfectli:[41,224,497],perfom:[6,387],perform:[],performac:1,pergamon:[442,481,488],perhap:379,peri:[],peridyma:82,peridynam:[3,4,6,7,9,40,65,82,85,122,454,475,496,506],perimitt:409,period:[],perioid:351,perl:[6,13],perm0:522,perman:[3,39,54,75,182,225,226,250,315,357,392,424,500,508],permeabl:296,permiss:[226,494],permit:[6,256,445],permitt:[409,481,487,488],permut:[12,416,476,479,481,484],perpendicular:[6,75,156,205,230,251,261,267,269,297,300,326,351,352,384,496],perram:[377,421],persepct:205,persist:[3,8,75,243,316,392,493,494,498,502,523],person:[9,518],persp:[3,205],perspect:205,pertain:[405,475],perturb:[9,13,74,95,266,314,351,354,356,501],peru:206,peskin:256,pessimist:377,petersen:[334,377],pettifor:[398,475],pettifor_1:398,pettifor_2:398,pettifor_3:398,pfactor:205,pforc:494,phantom:250,pharmaceut:7,phase:[3,12,15,270,341,349,398,430,480,493],phd:456,phenol:517,phenomena:417,phi0:[196,315],phi1:185,phi2:[185,416,476],phi3:[185,416,476],phi:[1,3,4,7,9,10,12,15,16,84,100,117,152,197,198,205,248,315,363,392,393,398,415,418,442,443,444,509],phi_ij:[398,418,455],philadelphia:9,phillip:[254,412,517],phillpot:[308,407,408,465],philosoph:415,philosophi:[6,7,252],phonon:[],phophor:466,phosphid:466,phy:[6,7,13,19,20,24,39,43,45,46,66,74,77,95,96,100,117,121,123,152,153,160,166,184,185,195,204,216,220,228,229,234,237,246,247,252,253,254,255,256,268,269,270,271,275,286,292,293,294,298,299,303,306,308,311,316,320,321,322,334,337,338,341,342,343,344,346,349,351,360,369,371,376,377,384,387,394,398,399,403,404,406,407,408,409,410,411,412,413,415,416,417,420,421,422,423,424,427,430,432,434,435,438,439,440,441,442,444,446,447,449,450,452,454,455,459,465,466,474,476,477,478,479,480,481,482,484,491,505,508,510,517],physic:[3,6,12,15,16,17,40,42,53,61,132,160,172,215,230,237,247,253,255,256,258,259,260,268,298,307,309,345,346,377,379,387,392,394,396,402,406,415,424,425,445,456,457,458,461,469,470,472,473,491,493,505,506,511,522],physica:[439,440],physik:[7,9],pic:9,picki:8,picocoulomb:522,picogram:522,picosecond:[206,230,514,522],picosend:417,pictur:7,piec:[3,11,152,206,270,503,528],pierr:9,pieter:13,pimd:[],pin:15,pink:206,pipe:[6,202,205],pipelin:[3,6],pisarev:346,pishevar:412,piston:[],pitera:6,pixel:205,pizza:[6,7,11,13,41,202,205,224],pjintv:13,pka:346,place:[3,6,7,11,12,32,41,50,75,95,172,178,182,191,198,202,205,206,208,209,210,211,226,227,230,237,245,246,247,249,252,253,254,255,257,259,260,270,276,277,278,290,291,295,302,305,314,316,337,338,339,346,351,354,356,375,405,424,475,483,493,494,497,504,506,511,514,523],placehold:[32,191,393,394,407,415,418,426,427,442,443,444,451,455,457,458,466,474,476,479,480,481,484],placement:[379,430],plai:[6,205,341],plain:[9,438,494],plan:[3,5,6,16,180,496],planar:[6,40,42,251,297,352,369,371],planck:[245,299],plane:[3,6,9,41,42,59,61,70,75,100,205,209,215,224,248,251,261,297,300,310,330,333,346,352,360,362,363,364,365,366,371,379,381,440,483,499,506],plane_wiggl:381,planeforc:[],plasma:[96,271,346,417],plastic:[],plastic_strain:133,platform:[1,3,7,9,12,13,14,16,202,205,207,498,503,528],plath:[6,99,209,342,349],player:205,pleas:[0,3,7,11,12,13,215,247,256,260,298,301,305,312,341,357,416,418,454,462,464,465],plen:395,plimpton:[0,5,7,74,123,153,227,297,307,334,422,454],plog:[3,12,505],ploop:[270,271,275],plos:28,plot:[7,11,13,57,306,436,438,477,478,485],plu:[3,11,12,39,61,71,106,176,181,206,223,228,230,231,275,316,389,417,428],plug:9,plugin:[9,13,207,497],plum:206,pm3:177,pmb:[],pme:377,pmf:[229,322,330],png:[3,12,202,205],pni:205,poariz:6,poem:[],poems:[],point1:496,point2:496,point3:496,point:[],point_data:318,pointer:[3,7,8,9,11,243,494],pois:522,poiseuil:[4,212,248],poisson:[61,230,377,422],poisson_solv:215,polak:384,polar:[6,7,117,152,160,177,215,233,407,408,430,482,517],polar_off:407,polar_on:407,polariz:[],poli:[],politano:[9,465],pollock:[7,377],polya:357,polybond:13,polychain:316,polydispers:[3,386,400,406,422,439,440,475,487],polyethylen:394,polygon:[6,42,176],polyhedron:176,polym:[],polymer:7,polymorph:[],polynomi:[9,37,56,198,415,436,447,465,470,477,478],polytechn:301,poor:[15,16,41,224,293,294,320,392,436],poorli:[384,385],pop:[3,8],popen:12,popul:[12,311,379,414,496],popular:[12,202,416],pore:330,poros:181,porou:[256,259],port:[250,252],portabl:[7,9,12,202,204,229,457,498],portion:[1,3,9,11,12,14,15,41,54,67,72,75,83,96,99,101,118,119,121,124,153,154,168,202,203,206,217,218,221,222,224,228,237,242,256,270,272,273,274,276,277,278,308,313,314,316,318,359,375,388,392,399,401,402,403,404,408,409,411,412,417,419,420,421,423,424,430,434,438,441,452,459,460,481,485,495,496,501,505,506,515,518,523],poschel:422,posfreq:313,posit:[3,6,26,39,40,41,42,46,59,61,74,75,86,87,97,98,113,114,119,128,130,134,152,153,161,176,177,178,180,181,182,187,189,198,201,203,204,205,206,209,210,212,214,216,217,218,221,224,225,226,227,228,229,230,231,234,236,237,245,246,247,248,250,251,253,254,255,256,258,259,263,264,267,268,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,293,294,295,297,298,299,301,302,303,306,307,311,313,314,316,320,322,326,329,330,333,334,336,337,338,339,341,343,344,345,346,349,351,352,353,354,355,356,357,360,376,379,387,394,395,397,400,412,413,414,417,420,433,449,450,458,465,474,477,478,483,491,496,499,506,517,523,524],posix:250,posix_memalign:12,possibl:[1,3,6,8,9,11,12,14,37,40,41,55,61,65,74,75,95,124,126,152,153,156,157,171,201,202,203,204,206,209,211,215,216,224,225,226,227,231,233,239,247,254,265,297,302,310,311,313,316,329,334,336,346,347,365,375,377,385,388,389,392,414,424,442,458,462,464,465,477,478,484,494,500,509,510,514,517,523,524,527],post:[],post_forc:8,post_force_integr:8,post_force_respa:8,post_integrate_respa:8,postit:284,postiv:94,postma:[303,337],postprocess:13,pot:[422,458],potentail:418,potenti:[],potentials:10,potentiel:438,potetni:425,potin:445,potpourri:9,pour:[],pourtoi:341,pow:230,powderblu:206,power7:16,power8:16,power:[3,9,11,115,152,206,311,376,392,398,494],pparam:[95,210,211],ppm:[12,202,205],ppn:[14,15,16,17,392],pppm:[],pppm_disp:3,pppmdisp:3,pproni:[3,246],pr3:177,pr4:177,practic:[3,12,228,270,271,298,305,484,493,518],prb:[479,481],prd:[],pre:[],pre_exchang:8,pre_forc:8,pre_force_respa:8,pre_neighbor:8,prec:465,prece:464,preced:[2,6,61,184,203,217,218,219,220,221,222,252,313,317,318,359,379,387,392,398,424,510,513,514,523],preceed:[11,12,75,166,219,351,494,523],precipit:176,precis:[1,3,9,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,113,123,155,165,178,184,185,187,188,189,190,192,193,195,196,198,202,206,212,218,222,223,228,230,237,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,307,308,309,316,319,320,354,360,362,363,365,366,369,371,376,377,385,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,430,431,432,433,434,435,436,437,438,439,443,445,448,451,452,454,457,458,459,460,465,467,476,477,479,480,481,482,484,486,487,488,498,499,505,506,509,514,517,522,523,524],precv:493,predefin:[196,206,357,417],predict:[1,6,10,12,284,316,392],preexponenti:510,prefactor:[23,24,27,31,34,35,172,186,197,210,211,219,351,362,366,369,385,406,420,451,459,460,467,487],prefer:[7,8,12,249,315,347,394,518],prefix:[11,12,205,229,298,317,490,493],preliminari:[37,56,198,240,241,449,450,477,478],prematur:385,prepar:[8,9,307,310,334,507,517],prepend:457,preprint:[152,286,292,381,466],preprocessor:250,prerecord:229,prescrib:[6,8,156,157,158,171,209,210,215,218,231,267,287,347],presenc:[202,225,226,256,259,439,440,445,487,526],present:[1,3,9,12,17,176,198,204,205,231,246,247,252,256,257,259,260,311,329,352,355,358,407,417,429,438,445,458,459,465,493,517],preserv:[3,61,228,230,270,320,334,356,497],press:[],pressdown:223,pressur:[],pressure_with_eviri:417,presum:[77,167,209,210,211,230,387,425,499],prevent:[2,3,6,40,132,231,244,302,334,345,369,376,383,385,387,392,412,425,453,469,470,472,474,494,498,504,506,517,523],previou:[],previouli:231,previous:[3,9,11,61,63,75,94,112,128,131,167,178,180,182,201,202,203,204,206,214,216,217,218,219,221,222,230,231,245,251,265,267,302,314,316,319,320,346,348,351,352,353,354,356,357,378,422,475,491,494,498,499,509,511,513,514,519,520,521,523,524],prevoiu:352,price:[6,411],primari:[0,6,346],primarili:[5,7,9,16,154],prime:[234,254,423,445,479,481,493],primit:[3,6,354,355,379],princip:[3,129,250,465],principl:[6,9,11,250,271,307,417,426,445,476,493,518],prinicp:[42,316,386],print:[],printabl:2,printflag:426,printfluid:256,prior:[176,200,321,378,527],priori:505,prism:[3,6,166,180,499],priveleg:3,privileg:[11,12,250],prob:[225,226],probab:467,probabl:[3,8,12,40,75,168,181,182,216,224,225,226,227,231,245,254,270,302,351,357,385,447,449,450,477,491,510,517],probe:523,problem:[],problemat:245,proc:[1,3,8,11,12,14,124,202,203,375,493],proce:[41,54,182,224,235,387,445,503,511,514],procedur:[6,12,39,41,206,216,224,245,253,254,255,270,272,273,274,275,276,277,278,290,291,293,294,295,298,337,338,339,340,343,344,385,387,394,400,497,517],proceed:[12,445],procesor:[41,493],process:[],processor:[],processsor:[41,224,493],procp1:[202,203],procsessor:515,procssor:505,produc:[1,3,4,6,7,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,42,43,45,46,47,48,49,51,53,54,56,65,68,71,73,75,84,102,119,121,123,124,125,126,128,129,131,153,155,165,176,184,185,187,188,189,190,192,193,195,196,198,202,203,206,209,212,217,218,219,221,222,223,224,227,230,238,243,244,246,247,248,253,254,255,265,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,302,306,307,308,309,311,316,318,319,320,335,336,346,347,348,351,354,359,360,362,363,365,366,369,371,377,385,387,390,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,455,458,459,460,467,476,477,478,479,480,481,482,484,486,487,488,491,493,498,499,501,502,505,510,511,514,523,524],product:[6,15,16,17,152,176,230,293,307,317,347,392,395,417,419,450,458,478,493,523],proessor:392,prof:301,profi:167,profil:[],program:[3,4,6,7,9,11,12,13,16,154,202,205,206,207,209,229,243,250,256,310,415,494,495,507,523],programm:[13,16],progress:[1,41,224,250,268,306,384,385,387,514,517],prohibit:506,project:[6,7,13,384,475,518],promis:7,promot:398,prompt:[8,11,12,250,507],proni:[3,246,247],pronounc:249,proofread:8,prop:[6,305],propag:[4,9,214,270,306,323,417,425],propens:6,proper:[227,297,442,494,518],properati:305,properli:[212,236,316,321,329,386,387,413,494,524],properti:[],propoerti:334,proport:[6,39,41,95,113,114,174,224,253,254,255,306,342,349,350,422],proportion:253,propos:[6,152,216,228,245,270,293,311,430,444,480,482],prospect:7,protect:334,protein:[7,10,178,314,316,332,496,504],protocol:250,proton:[481,488,522],prototyp:[42,454],prouduc:[222,348],prove:[88,89,239,256,321],proven:293,provid:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,28,40,42,63,70,74,130,151,154,172,176,177,178,204,205,207,210,217,218,222,227,228,229,230,243,245,250,252,256,260,268,270,298,305,306,307,310,311,316,321,322,341,343,344,347,348,359,374,376,377,383,387,392,394,398,400,405,407,408,412,416,417,422,424,427,429,438,439,442,444,445,455,456,457,458,465,466,474,475,476,479,480,481,484,493,498,504,506,509,510,514,515,518,523],proxim:201,psa:354,pscreen:[3,12,505],pscrozi:[0,7,13],psec:[206,230,249,253,254,270,303,316,337,338,516,522],psend:493,pseudo:[417,491,496,501],pseudodynam:341,pseudopotenti:[9,445],psf:6,psi:[418,487],psi_ij:418,pstart:[3,270,271,275,303,316],pstop:[3,270,271,275,303,316],pstyle:[95,118,210,211],psu:[457,458],psuedo:501,pt2:177,pt4:177,ptarget:228,pthread:[12,16],ptr:[6,11,243,494],ptype1:126,ptype2:126,pu3:177,pu4:177,pu6:177,publicli:5,publish:[7,256,260,286,292,307,381,408,442,445,479,481],pull:[322,330,518],puls:346,pump:[439,440],punctuat:[2,491,510],purchas:205,purdu:[9,13],pure:[11,334,425,443,444,479,481,505],purg:[3,497],purpl:[2,206],purport:11,purpos:[3,6,7,9,12,42,63,75,130,140,146,161,162,177,178,180,182,198,202,222,227,228,253,297,299,302,304,315,334,376,402,428,434,445,447,483,489,496,499,503,506,508,509,523,528],push:[3,8,212,223,230,251,269,297,314,322,385,422,467,518],pushd:251,put:[3,6,8,11,12,13,39,61,166,178,202,231,235,353,354,357,379,457,494,496,500],putenv:[507,523],px1:505,px2:505,pxx:[228,270,303,316,376,377,513,514],pxy:[3,6,514],pxz:[3,6,514],py1:505,py2:505,pydir:11,pyi:[228,270,303,316,376,377,514],pymol:[7,11,13],pymol_aspher:[],pympi:11,pypar:11,python:[],pythonpath:11,pyz:[3,6,514],pz1:505,pz2:505,pzz:[228,268,270,303,306,316,376,377,514],q_1:465,q_2:465,q_3:465,q_d:517,q_i:[418,438],q_j:438,qbmsst:[],qcore:307,qdamp:307,qdist:[408,430,434,438],qeq1:307,qeq2:307,qeq:[],qeqall:465,qeqallparallel:465,qfile:[307,408],qin:249,qinitmod:465,qmin:384,qmmm:[],qmol:310,qout:249,qstep:307,qtb:[],quad:[12,17,392,493],quadrat:[],quadratur:[95,215],quadrupl:393,quadruplet:[194,197,199,360,362,363,364,366,368,369,370,372],qualifi:[3,252],qualiti:[7,205,206,394],quantic:465,quantit:[78,87,113,114,115,174,422],quantiti:[],quantum:[6,9,152,243,247,299,306,310,311,394,398,417,445,465,475],quantum_temperatur:306,quartic:[],quartic_spher:215,quartz:[306,311],quasi:299,quat:[3,506],quaternion:[3,6,40,90,124,129,142,156,157,178,272,273,276,277,280,281,282,290,291,421,496,506],quati:[124,129,496],quatj:[124,129,496],quatk:[124,129,496],quatw:[124,129,496],queen:13,quench:[357,491,510],queri:[3,11,54,287,494,523],quest:[6,243],question:[8,9,12,13,286,297,357,454,518,523],queteschin:9,quick:[0,4,12,14,15,16,17,18],quickli:[3,4,8,12,13,39,100,224,230,245,250,334,384,385,387,394],quickmin:[262,286,292,383,384,385,387,510],quicktim:[4,205],quip:[],quit:[],quot:[2,3,12,204,304,359,442,491,492,494,504,523],quotat:465,r0m:331,r10:398,r12:421,r_1:152,r_2:152,r_c:[409,411,420,481],r_cut:[398,441],r_d:517,r_e:418,r_ewald:318,r_fu:[439,440],r_i:[28,152],r_ii:152,r_ij:[28,398,417,455,488],r_ik:455,r_j:28,r_jik:455,r_m:441,r_me:409,r_mh:420,r_min:410,r_ub:19,r_x86_64_32:12,ra2:177,rad2theta:177,rad:357,radhi:499,radial:[65,75,106,107,124,127,152,162,164,169,218,255,271,283,294,330,340,385,417,424,447,449,450,496,499],radian:[19,20,23,27,31,34,35,37,129,177,185,196,198,315,360,362,366,369,496,499,506],radians:198,radiat:[130,177,346],radic:[180,496],radii:[75,80,152,227,231,406,415,421,422,439,440,445,461,463,487,499],radit:417,radiu:[],radlo:499,rafferti:349,rahman:[6,7,228,268,270,271,306,454],rai:[9,16,177],ram:481,ramirez:220,ramp:[],ran:[3,6,11],random:[3,6,39,178,181,201,205,214,216,225,226,227,229,231,242,245,246,247,253,254,255,256,266,270,299,302,306,311,314,316,321,334,338,341,346,350,353,400,412,413,414,491,506,511,517,523,524],random_se:491,randomli:[178,181,216,231,245,253,302,334,356,510,511],rang:[1,3,6,7,8,9,10,12,14,15,17,37,39,56,63,75,76,81,96,117,119,120,121,123,127,128,133,152,153,164,172,177,179,182,183,190,198,202,203,205,206,215,216,226,230,231,245,247,265,302,318,334,335,341,342,347,349,376,377,385,388,389,392,394,396,398,399,400,401,402,403,404,406,408,409,410,411,412,414,415,417,419,421,423,424,425,427,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,447,448,452,455,458,459,460,465,474,475,477,478,481,482,486,487,488,490,494,505,506,514,527],rank:[6,11,12,250,347,374,493],rankin:275,raphson:3,rapid:[4,6,11],rapidli:[3,8,12,75,227,253,268,270,316,337,338,350,408,412],rapp:[307,308,309],rappe_and_goddard:308,rare:6,rasmol:[6,7],rasmussen:421,raster3d:[6,7],rate:[],rather:[2,6,9,12,40,41,64,123,161,205,224,230,246,247,316,338,346,350,352,353,354,357,417,449,450,457,477,478,497,501,506,508,513,523],ratio:[6,61,95,111,152,216,224,230,253,255,334,342,349,350,376,390,421,422,459,469,483,493,496,506,510],rational:[347,508],rattl:[],rattle:[3,9,209,237,247,286,292,320],rattle_debug:320,ravelo:[275,432],rayleigh:[268,306],rb1:177,rbb:465,rbg:206,rcb:[3,41,224],rcm:[97,98],rcmx:[97,98],rcmy:[97,98],rcold:237,rcut:63,rcutfac:[152,466],rd1:387,rdc:16,rdf:[],rdn:387,rdt:387,rdx:4,reach:[6,12,41,131,220,224,226,228,254,275,326,334,341,359,375,391,409,515,517,523],reacquaint:518,react:6,reactant:[317,417],reaction:[9,241,317,322,332,345,356,387,417,419,450,478],reactiv:[9,313,394],read:[2,3,6,7,8,9,11,12,13,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,37,38,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,61,126,176,178,179,181,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,201,202,203,205,206,207,208,209,215,216,227,228,230,231,240,241,245,247,250,267,268,270,272,273,274,275,276,277,278,290,291,293,294,295,298,299,301,302,304,305,309,316,317,320,322,326,329,333,336,344,345,346,352,358,360,361,362,363,364,365,366,368,369,370,371,372,373,375,382,386,387,391,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,485,486,487,488,489,491,493,496,497,498,500,501,502,503,504,506,507,508,510,523,524,525,526,528],read_data:[],read_dump:[],read_restart:[],read_restart_set:8,readabl:[203,205,386,503,528],reader:[3,13,497],readi:[11,12,179,181,182,250,506,517,526,527,528],readme:[1,4,6,8,9,10,11,12,13,176,202,203,207,310,426,445,457,458,494],real:[3,6,7,11,26,29,30,61,75,99,100,117,152,167,178,187,201,206,214,230,231,234,250,251,254,267,299,306,311,314,350,351,353,354,356,365,376,377,379,383,389,408,445,447,457,458,481,496,499,505,513,516,522,524],realist:[3,231,500],realiz:[75,209,494],realli:[1,3,8,12,123,134,153,206,251,388,425,508,518],realloc:3,realtim:250,reamin:[351,355],rearrang:[203,387],reason:[3,6,7,11,12,18,39,159,170,178,218,253,303,316,343,344,347,357,386,387,392,405,409,417,418,420,440,447,483,485,500,505,524],reax:[],reax_def:3,reaxc:[],reaxff:[3,4,5,7,9,13,209,307,309,312,313,425,457,458,475,508],rebal:[41,224],rebalanc:[41,224],rebo:[],rebuild:[11,12,14,15,245,388,412,514],rebuilt:[3,12,202,203,204,205,207,388,392],recalcul:[75,95,334],receiv:[3,223,250,252,297,493],recent:[],reciproc:[6,12,130,176,177,298,376,399,401,402,408,411,417,430,434,452,460,510],recog:12,recoginz:3,recogn:[3,12,15,77,180,225,226,270,317,386,415,442,457,494,496,503,504,517],recomend:6,recommend:[7,12,15,205,206,237,306,344,376,417,425,439,440,445,458,459,462,464,465,505,515,518],recompil:[1,3,9,12,207,320],recomput:[112,140,182,235,322,414,508],reconstruct:[3,229,465],record:[207,229,322],recov:[228,237,270],recreat:358,rectangl:[41,224,379],rectangular:[7,41,64,180,224,245,379,496,498,500],rectilinear:[130,177,203],rector:53,recurs:[41,224,398,483],recust:41,recv:493,red:[2,205,206,227,299],redefin:[3,498,504,523],redirect:12,redo:12,reduc:[],reduct:[17,18,128,130,177,268,306,376],redund:418,ree:470,reed:[268,306],rees:[7,9,13],ref:[343,344,384],refactor:6,refer:[],referenc:[3,6,12,65,71,75,125,131,202,203,209,219,245,305,348,377,408,424,451,459,494,514,523],reflect:[],refman:9,reformat:7,refresh:215,reg:499,regard:[6,61,267,320,321,326,454,458],regardless:[14,75,178,181,201,221,230,253,270,272,273,274,276,277,278,303,316,327,334,392,493,499,506],regim:[6,342,349,409,505],region:[],region_spher:8,region_styl:355,regist:[8,127,154,329],regoin:6,regress:523,regspher:178,regstrip:357,regul:6,regular:[1,3,41,64,96,176,180,202,205,216,224,245,305,346,377,409,428,493,496,498,500],reigon:523,reinhardt:[343,344],reject:[178,227,457,511],rel:[1,6,26,35,41,61,75,100,113,134,142,152,156,160,161,163,178,187,206,209,216,224,230,231,234,237,245,251,254,266,267,293,297,302,311,313,314,322,330,334,336,341,342,346,353,357,376,377,385,417,421,422,439,440,442,459,487,497,505,510,514,517,524],relat:[],relationship:[6,240,307,359,376,465,487,517,523],relax:[],releas:[0,5,7,8,13,225],relect:[3,447],reles:42,relev:[2,6,12,41,82,85,122,140,178,182,206,210,211,214,215,216,217,218,219,220,221,222,224,225,226,230,231,235,237,238,242,244,245,246,249,250,256,257,258,260,261,262,263,264,266,267,269,279,280,281,282,283,284,285,286,287,288,289,292,296,300,301,302,304,305,310,312,313,314,318,320,327,332,334,335,336,341,342,345,346,347,348,349,350,351,352,353,354,356,357,376,381,385,395,396,400,406,408,409,411,412,414,417,420,421,422,423,424,429,431,432,433,435,436,437,439,440,447,448,449,450,454,459,467,474,477,478,486,487,488,493,509,524],reli:[3,12,308,417,458,488,496,506],reloc:12,remain:[7,12,32,36,41,50,55,61,75,95,114,158,159,160,161,165,166,167,168,170,181,191,197,198,202,210,211,216,218,219,228,230,253,254,261,270,271,276,277,278,290,291,293,295,300,301,325,334,337,338,339,345,346,357,359,367,370,386,398,417,425,438,445,447,475,491,496,497,501,506,508,510,514,517,518,523,524],remaina:398,remaind:[9,178,202,231,302,334,347,481,496],remap:[3,6,12,61,63,75,161,178,201,230,251,267,293,376,496,497,498],remedi:[6,517],rememb:[2,518],remot:518,remov:[2,3,6,8,13,54,75,76,81,100,117,125,127,152,156,157,158,159,160,161,165,166,167,168,170,171,178,181,182,203,209,218,225,242,253,254,259,262,266,268,270,276,277,278,290,291,293,295,301,307,316,317,318,320,334,337,338,339,341,357,376,387,411,440,445,496,499,507,508,518,523,524],remove_bia:8,remove_bias_al:8,remove_molecul:215,remove_sourc:215,remove_speci:215,ren:177,renam:[12,358,507,518],render:[12,13,202,205,206],rendon:[270,271],reneighbor:[3,8,12,39,59,75,224,245,334,347,357,412,513,514],renssela:301,renumb:75,reorder:[3,12,39,493],rep:511,repeat:[2,6,205,206,227,228,245,326,379,398,479,481,483,491,510],repeatedli:2,repel:251,repes:202,replac:[2,3,6,11,12,41,65,97,98,128,155,156,157,158,159,160,161,164,165,166,167,168,170,171,202,203,205,206,207,218,219,221,222,224,227,231,253,275,304,305,311,313,392,394,408,432,449,450,477,497,498,503,504,514,523,524,526,528],replic:[],replica:[],replica_fil:12,report:[],repositori:[],reprens:346,repres:[1,3,6,8,9,12,14,40,41,42,61,70,75,98,124,127,129,190,198,202,203,205,218,219,220,221,222,228,234,241,246,248,253,256,270,299,301,303,311,316,317,318,322,330,331,346,348,355,377,387,393,398,421,428,438,439,440,442,443,444,452,455,457,458,482,483,491,493,496,506,508,511,517,523,526],represent:[3,6,8,9,59,61,146,180,202,246,247,299,346,398,417,421,445,459,496,499,517],reprocess:501,reproduc:[3,270,352,408,415,422],repul:442,repuls:[6,7,35,40,45,46,119,251,307,351,352,355,394,398,406,408,412,417,419,422,424,438,442,446,465,474,481,484,487,488,506],reqir:[307,309],request:[3,6,8,12,41,113,181,198,202,250,256,314,321,334,336,374,376,447,457,458,491,501,506,510,518,523,524,526],requir:[],rerun:[],rescal:[],research:[5,7,88,89,239,256,260,321,445,491,510],resembl:[311,518],resepct:6,reserv:[12,250,517],reservoir:[99,237,245,249,253,346],reset:[],reset_atomic_reference_posit:215,reset_dt:8,reset_target:8,reset_tim:215,reset_timestep:[],resid:13,residu:250,residue1:388,resist:[6,250],resolut:[220,465,477,478],resolv:[228,299,334,440,518],resort:3,resourc:[7,393,415],respa:[3,15,212,213,223,232,235,236,248,250,251,265,270,297,308,315,319,322,330,331,332,333,350,351,355,390,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,446,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,504,505,515,516,523],respecifi:445,respect:[1,6,9,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,42,43,45,46,47,48,49,51,53,54,56,61,74,75,95,97,106,107,123,130,134,154,155,160,163,165,172,176,177,184,185,187,188,189,190,192,193,195,196,198,203,205,206,221,226,227,228,230,237,248,251,253,254,256,270,272,273,274,275,276,277,278,279,280,286,288,290,291,293,295,307,308,309,316,318,322,330,333,346,351,354,360,362,363,365,366,369,371,374,376,377,382,385,386,391,392,393,394,396,398,399,400,401,402,403,404,406,407,408,411,412,415,416,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,442,443,445,447,448,451,452,454,458,459,460,464,465,466,467,476,477,479,480,481,482,484,486,487,488,493,497,506,509,515,517,523,525,526,528],respon:9,respond:[6,7,161,230,417,454],respons:[6,7,268,342,349],resquar:[],rest:[6,8,12,38,58,199,305,309,315,372,398,440,442,489,513,514,517],restart1:299,restart2:299,restart2data:[],restart:[],restartfil:[12,13],restor:[3,8,62,63,113,178,210,211,265,305,322,330,331,336,358,513,514],restore_bia:8,restore_bias_al:8,restrain:[],restraint:[9,229,268,315,333,429],restratin:315,restrict:[],result:[1,2,3,6,7,9,10,11,12,13,14,15,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,43,45,46,47,48,49,51,53,54,56,65,66,69,70,75,79,86,95,98,99,103,113,114,116,121,123,125,126,127,128,130,131,153,155,158,161,165,172,173,175,177,178,181,184,185,187,188,189,190,192,193,195,196,198,201,202,203,205,206,209,212,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,234,237,238,240,244,245,246,248,253,254,256,260,268,270,272,273,274,275,276,277,278,279,280,288,290,291,293,294,295,298,299,307,308,309,313,314,316,317,319,320,334,342,343,344,346,347,348,351,352,354,356,359,360,362,363,365,366,369,371,376,377,387,390,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,442,443,445,447,448,449,450,451,452,454,458,459,460,467,476,477,478,479,480,481,482,484,486,487,488,491,493,496,498,499,500,501,505,506,507,508,510,522,523,524],resum:523,retain:[2,225,226,394,398,445,493],retart:[32,50,191,367],retir:[3,457],retreiv:8,retriev:[6,8,243,443,444,523],reus:[3,508],rev:[6,13,66,74,100,117,121,152,153,166,216,247,253,255,268,270,271,275,293,298,308,311,316,322,334,338,341,343,344,349,384,398,406,407,408,411,415,416,417,421,422,427,432,439,440,441,442,444,449,450,455,459,466,476,479,480,481,484,491],revers:[2,6,8,95,189,227,251,270,296,297,307,326,342,343,349,387,438,505,517],review:[152,307,322,341,445,456,466,491,510,517,518],rewind:375,rewrap:202,rewrit:[5,12],rewritten:18,rezwanur:454,rfac0:[152,466],rfactor:334,rfile:316,rg0:332,rgb:206,rh3:177,rh4:177,rhaphson:3,rheolog:6,rhi:[449,450,477,478],rho0:[442,462,464,472,473],rho0_meam:442,rho:[],rho_0:[472,473],rho_alpha_beta:415,rho_bkgd:442,rho_colloid:351,rho_e:346,rho_fin:345,rho_i:[443,444],rho_initi:345,rho_ref_meam:442,rho_wal:351,rhodo:[9,10],rhodopsin:[1,10],rhohi:302,rholo:302,rhosum:[],rhot:237,ribier:384,richard:9,richardson:316,richi:[9,18],rick:[307,308,407,465],rick_and_stuart:308,ridg:[9,18],right:[3,6,11,12,41,154,178,196,197,201,203,224,227,251,256,267,296,297,317,359,379,408,496,499,506,518,523],rightmost:[41,224],rigid:[],rigidid:129,rigidifi:316,rii:[97,98],rij:[100,117,225,226,297,412,413,449,450,474],rin:[424,435,436],ring:[],rino:[77,484],rinv:376,rirj:[352,422],risi:[152,466],risk:[8,315,505],rix:[97,98],rjk:[225,226],rjone:[7,9,13],rk4:317,rlo:[449,450,477,478],rmask:[3,523],rmass:[3,305],rmax:[75,179,225],rmdir:507,rmin0:[152,466],rmin:[75,179,226,432],rms:[376,377],rmsd:345,rnemd:6,robert:9,robin:206,robust:[383,384,385,458],rock:442,rockett:455,rod:316,rodata:12,rodnei:311,roi:7,role:[6,341],roll:12,ronchetti:117,room:[59,61],root:[11,95,97,98,204,341,345,415,503],rosati:39,rose:442,ross:442,rosski:299,rosybrown:206,rot:[6,99,299,315,341,524],rotat:[],rotate:326,rotation:117,rotaton:499,rough:[6,178,205,356],roughli:[7,10,12,41,161,205,220,245,253,254,262,269,270,284,303,316,334,337,338,341,377,387,392,461,463,498,505],round:[1,3,12,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,42,43,45,46,47,48,49,51,53,54,56,75,123,155,165,184,185,187,188,189,190,192,193,195,196,198,206,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,377,390,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,428,430,431,432,433,434,435,436,437,438,439,443,448,449,450,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,498,499,505,522,523],rous:246,rout:[95,424,438],routin:[5,6,8,11,14,15,37,39,56,96,182,256,445,456,477,478,509],roux:[6,234,254,482,517],row:[6,68,69,71,73,79,84,86,98,102,103,114,116,119,125,126,127,129,131,158,166,173,175,176,177,218,219,221,222,259,316,346,348,356,417],royalblu:206,rozero:442,rperp:[267,326],rpi:301,rpm:12,rrespa:[1,3,5,7,8,15,210,211,267,270,388,393,394,395,396,397,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,446,448,449,450,452,454,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,505],rspace:3,rsq:[449,450,477,478,485],rsurfac:346,ru3:177,ru4:177,rub:19,rubia:[443,444],rudd:[447,477,478],rudra:[7,9],rudranarayan:[7,301],ruiz:216,rule:[],run1:[6,391,523],run2:[6,373,375,391,523],run3:[6,391,523],run4:[6,391,523],run5:[6,391,523],run6:[6,391,523],run7:[6,391,496,497,501,523],run8:[6,391,523],run:[],run_styl:[],rung:317,runloop:375,runtim:[12,16,205,392],russia:9,rutherford:346,rutuparna:[479,481],rxn:[317,478],ryan:9,ryckaert:[320,369],rycroft:176,rydberg:445,s00:454,s0st:6,s2050:1,s2629:415,s319:215,s_fact:323,s_i:[6,417],s_ij:6,sack:7,saddl:[269,387],saddlebrown:206,sadigh:[216,415,443,444],saed:318,saed_vtk:130,safe:[12,205,234,254,392,518],safe_zone:3,safest:[3,334],safeti:323,safezon:458,safran:487,sagui:[377,411],sai:[1,3,12,13,206,457,458,494,518],said:385,sakai:480,sall:[9,465],salmon:206,salt:[409,420,442,496],salter:465,same:[1,2,3,4,6,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,41,43,44,45,46,47,48,49,50,51,53,54,56,59,61,64,65,68,73,75,76,81,84,87,90,92,93,95,96,97,98,99,100,102,104,107,113,114,115,117,119,121,123,124,126,127,128,152,153,154,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,174,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,200,201,202,203,204,205,206,209,210,211,212,215,216,218,221,222,223,224,225,226,227,228,230,231,235,236,237,238,244,245,246,247,248,249,250,251,252,253,254,255,256,259,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,294,295,297,298,299,301,302,303,305,306,307,308,309,311,312,313,314,315,316,319,320,322,327,330,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,352,353,354,355,357,358,359,360,361,362,363,365,366,369,371,376,377,379,380,381,382,386,387,388,389,390,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,429,430,431,432,433,434,435,436,437,438,439,440,442,443,446,447,448,451,452,454,455,458,459,460,465,467,474,475,476,477,479,480,481,482,484,486,487,488,491,493,494,496,497,498,499,501,504,505,506,507,508,509,510,514,517,518,522,523,524,527],sampl:[1,2,4,6,9,11,12,99,113,156,157,171,176,201,205,209,218,219,229,231,243,245,247,249,270,271,292,299,302,311,313,318,330,332,334,338,341,344,356,388,398,414,496,510],sample_frequ:215,san:454,sandia:[0,5,7,9,13,16,74,122,418,442,454],sandybrown:206,saniti:[315,388],satellit:[6,160],satifsi:523,satisfi:[3,12,77,130,152,177,228,237,256,262,275,286,292,320,354,385,388,422,510],satur:409,save:[6,8,12,18,40,61,198,203,205,220,227,246,247,253,254,255,302,311,346,358,377,388,390,398,498,501,508],sb3:177,sb5:177,sc3:177,scalabl:[],scalar:[],scalars:318,scale:[0,1,3,5,6,9,10,13,17,40,61,65,75,76,99,112,124,127,128,152,164,172,184,198,201,202,203,205,206,209,210,211,215,216,219,228,230,245,249,250,251,253,255,256,268,270,272,273,274,275,276,277,278,299,303,306,307,316,324,325,334,336,338,341,343,344,346,350,357,376,377,379,386,389,393,394,395,409,414,417,419,422,425,439,440,442,445,454,461,463,482,497,499,501,505,508,510,513,514,523,524],scale_factor:[461,463],scalegamma:256,scalexi:[3,228,270,275],scalexz:[228,270,275],scaleyz:[228,270,275],scan:[206,226,375,497],scatter:[11,130,177],scatter_atom:11,scatter_coord:11,scenario:[6,40,63,227,305,314,334,347,355,388,500,501,505,513],scf:517,schaik:438,schedul:491,schell:480,schemat:227,scheme:[6,9,17,246,247,270,299,311,320,346,376,458,482],schlitter1:345,schlitter2:345,schlitter:345,schmid:412,schneider:[253,255],schoen:376,schroding:417,schroeder:[117,517],schulten:[254,322,377,517],schunk:334,schwen:9,sci:[77,354,407,444,455,465],scienc:[8,215,227,250,297,322,343,415,443,465,480],scientif:[9,152,415,523],scm:11,scratch:[12,41,224],screen:[],screenshot:11,scripe:11,script:[],scripta:70,scsl:12,sdk:[],sea:11,seagreen:206,seamlessli:305,search:[0,2,3,8,12,100,117,179,181,206,207,334,383,384,385,387,389,491,497,498,510,523],seashel:206,sec:[12,516,522],secant:241,second:[1,3,6,9,11,12,15,54,59,61,63,75,96,99,113,115,117,123,145,146,150,153,154,166,172,176,177,179,180,181,201,202,206,209,210,218,219,221,222,227,237,241,245,246,251,267,269,299,305,313,315,316,320,322,330,332,334,343,344,346,357,376,379,384,385,387,388,397,398,399,401,402,407,408,415,417,418,419,422,423,425,428,429,432,442,447,451,465,476,480,481,482,484,488,491,492,493,494,496,498,503,505,509,510,514,515,517,522,523,524,526,528],second_mo:465,secondari:[3,190],sectinn:527,section:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,60,61,65,66,67,68,69,70,71,72,73,75,78,79,82,83,84,85,86,87,88,89,91,94,95,96,97,98,99,101,102,103,106,107,108,109,110,111,113,114,115,116,118,119,122,123,124,125,126,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,179,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,207,209,212,213,214,215,216,218,219,220,221,222,223,224,225,226,227,229,230,231,233,234,236,237,238,239,240,241,242,244,245,246,247,248,250,252,253,254,255,256,257,258,259,260,262,263,264,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,305,306,307,308,309,310,311,312,313,316,317,319,320,321,322,323,324,325,326,327,329,334,337,338,339,340,341,342,343,344,345,346,347,349,352,353,354,357,358,360,361,362,363,364,365,366,367,369,370,371,372,377,378,379,382,386,387,389,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,491,492,493,494,496,497,499,501,504,505,506,507,509,510,511,514,515,517,523,524,525],section_acceler:[9,12,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,198,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,377,393,394,396,399,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,499,505],section_accerl:415,section_command:[0,1,9,359],section_error:[7,12],section_exampl:[2,6],section_histori:[7,12],section_howto15:89,section_howto:[6,8,9,11,12,40,42,59,61,66,69,70,71,74,75,76,77,79,80,81,82,85,86,87,90,91,92,93,94,95,97,98,100,103,104,105,106,107,108,109,110,111,114,116,117,120,121,122,125,127,128,132,147,148,149,150,152,153,158,160,172,173,175,176,180,200,218,269,282,285,289,349,397,410,491,496,499,510],section_modifi:[6,7,42,202,203,205,514],section_packag:[12,458],section_perf:7,section_python:[6,12],section_start:[3,6,9,11,380,387,490,491,505,511,514],section_tool:[6,7],see:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,60,61,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,322,323,324,325,326,327,329,330,333,334,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,373,376,377,379,380,381,382,384,385,386,387,388,389,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489,490,491,492,493,494,496,497,498,499,501,502,503,504,505,506,508,509,510,511,512,513,514,515,516,517,518,523,524,526,527,528],seed1:511,seed2:511,seed:[3,178,181,201,205,214,216,225,226,227,229,231,242,245,246,247,253,254,255,256,299,302,306,311,316,334,338,341,346,353,400,412,413,414,491,506,511,517,523,524],seed_com:254,seed_drud:254,seek:[41,224],seem:[6,228,347,384,442,505],seen:[12,256,355],segement:3,segment:[3,6,7,12,40,42,90,124,205,209,285,302,316,334,412,428,458,474,475,496,504,506],select:[3,6,9,12,14,61,63,75,128,130,167,172,177,178,198,205,207,214,216,230,231,242,245,250,251,265,267,322,333,341,342,347,349,351,353,354,356,374,376,383,387,389,392,424,429,442,465,493,497,499,505,506,510,515,523],self:[],sellerio:13,semi:[3,207,215,216,296,298,497],semiax:156,semimet:417,send:[0,3,5,7,8,11,12,206,250,493],sender:[3,493],sens:[1,3,6,7,17,39,41,42,61,75,113,197,202,218,221,222,224,227,230,246,247,252,253,254,255,302,306,311,318,334,341,342,346,349,357,387,408,430,434,479,480,481,491,496,501,505,508,513],sensabl:250,sensibl:114,sensit:[2,6,77,228,311,524],sent:[206,250,374],sep:[6,11,523],separ:[2,3,6,7,9,12,13,40,41,80,127,134,152,178,181,203,205,206,207,215,219,224,225,226,227,228,231,234,245,253,254,270,284,299,302,303,305,307,311,316,320,334,337,338,339,342,349,357,377,392,399,401,408,409,411,413,430,439,440,442,449,450,451,456,466,475,476,477,478,481,487,494,496,497,498,505,508,513,515,517,524,525,526,527],seper:409,sequec:523,sequenc:[2,3,12,41,61,202,203,205,206,207,224,247,269,357,379,387,425,455,511,523],sequenti:[61,62,206,455,497],sequestr:7,seri:[3,4,6,9,13,17,152,202,203,205,206,219,222,246,247,302,391,394,421,442,445,447,449,450,459,467,477,478,494,503,504,511,513,514,523],serial:[],serial_icc:12,serious:8,serv:[6,140,180,334,474],server:[1,252],set:[],set_callback:243,set_energi:243,set_vari:[6,11,494],setarea:256,sete:[218,227],setenv:[11,12,405],setfl:[13,393,415],setforc:[],setgamma:256,setmask:8,settl:228,setup:[3,6,7,8,11,12,13,15,36,40,55,61,75,95,99,166,179,180,181,182,197,206,215,227,230,334,347,370,388,389,392,475,493,496,504,526,528],setup_pre_exchang:8,setup_pre_forc:8,setup_pre_force_respa:8,setvel:[],seven:444,seventh:[145,150],sever:[1,4,5,6,7,8,9,10,11,12,13,14,17,39,40,65,75,95,172,179,182,197,202,203,204,207,209,215,225,226,228,247,253,256,260,270,301,303,305,316,322,334,341,350,374,379,385,395,398,402,414,415,425,434,438,442,447,455,457,458,464,465,491,494,498,502,510,514,517,523,524],sexton:445,sfactor:[3,205,206,386],sfftw:12,sgi:12,sgmc:216,sgrid:334,sgroup:176,shade:205,shake:[],shan:[16,307,308,407],shanghai:[9,13],shape:[],shape_upd:8,shapei:[124,496],shapex:[124,496],shapez:[124,496],shapshot:501,shardlow:[],share:[],sharon:316,sharp:[355,442,481],shawn:9,shear:[3,4,5,6,7,9,61,63,161,201,228,230,256,270,293,334,349,352,422,439,440,454,462,464],sheet:500,shell:[],shen:9,shenderova:394,sheppard:384,shflags:12,shield:[],shift:[],shiftse:334,shiga:[6,270,271],shini:[205,527],shinoda:[6,9,270,271,460],shiny:205,ship:207,shlib:[11,12],shlibflags:12,shock:[],shockvel:[268,306],shortcut:[228,270,303,316],shorter:[3,131,245,297,389,447,504],shortest:[205,389,395,505],shorthand:[206,482],shoul:483,should:[1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,63,74,75,77,87,91,95,99,106,107,108,112,113,114,121,123,129,153,155,156,157,160,161,164,165,166,168,171,174,178,180,182,184,185,186,187,188,189,190,192,193,195,196,198,200,201,202,203,205,206,210,211,212,213,216,220,223,224,225,226,227,228,230,231,233,234,236,238,240,242,243,244,245,246,247,248,249,251,253,254,255,256,258,259,260,261,267,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,295,297,298,299,300,301,302,303,304,306,307,308,309,310,311,312,313,314,315,316,317,319,320,327,330,334,335,337,338,339,340,341,342,345,346,347,349,350,351,352,353,354,355,356,357,359,360,361,362,363,365,366,369,371,376,377,379,380,381,383,385,386,387,388,389,390,392,393,394,396,397,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,442,443,445,447,448,449,450,451,452,453,454,456,457,458,459,460,461,463,465,467,474,476,477,478,479,480,481,482,484,486,487,488,491,492,493,494,496,497,498,499,500,501,503,504,505,506,508,512,513,514,517,518,523,524,526],shouldn:[3,8],show:[6,10,11,12,127,387,424,442,445,477,478],shown:[1,12,15,16,41,106,107,130,152,164,177,197,224,227,237,253,270,293,297,299,302,311,341,376,417,418,421,422,438,445,459,465,496],shrank:75,shrink:[3,6,41,59,61,75,180,201,202,205,210,211,214,224,230,231,251,256,297,334,353,357,376,377,385,408,430,434,447,496,497],shrink_spher:286,shrunk:75,shut:[6,11,388,495],si4:177,siam:354,sic:[4,408,425,442,451,476,479,481,484],sic_tersoff:455,sicc:[416,476,479,481,484],sicg:[479,481],sicsi:[416,476,479,481,484],side1:499,side2:499,side3:499,side4:499,side:[3,8,41,59,63,75,168,178,216,217,224,227,231,245,251,256,267,297,302,310,317,330,351,355,356,357,387,408,421,422,459,483,494,496,499,506],sidewai:4,sienna:206,siepmann:349,sige:[479,481],sigma0:398,sigma14:438,sigma1:398,sigma2:398,sigma:[3,6,10,45,46,50,54,95,129,184,202,203,206,210,211,245,256,297,321,334,350,351,355,379,389,392,394,397,398,399,403,404,406,411,412,413,414,416,417,421,423,424,428,429,430,431,432,433,434,435,436,437,438,441,446,447,459,460,470,476,482,483,505,522,523,524],sigma_14:403,sigma_:409,sigma_c:406,sigma_cc:[394,406],sigma_h:420,sigma_i:[418,447],sigma_ii:483,sigma_ij:[447,483],sigma_j:447,sigma_max:414,sigma_ss:406,sign:[3,6,12,189,197,296,330,354,359,445,504,513,518,523],signal:495,signicantli:16,signifi:[3,69,79,86,98,103,114,116,125,158,173,175,419,450,478],signific:[7,12,17,94,246,268,271,311,334,347,417,421,442,445,447,526],significantli:[1,6,39,153,176,256,270,315,417,476],sij:219,sikandar:16,silbert:422,silent:[206,494,507],silicon:[416,442,476,496],sill:454,silver:206,sim:[9,460],similar:[5,6,7,8,9,10,11,12,16,17,40,41,42,46,61,71,76,95,123,126,127,129,153,154,178,179,202,203,206,209,210,211,218,220,224,243,244,246,253,259,260,271,305,306,311,315,316,338,341,351,352,354,356,377,383,384,386,394,397,398,412,415,417,422,438,439,447,448,454,455,464,477,482,493,498,503,505,510,512,514,517,523,524,526,528],similarli:[3,6,7,8,38,58,61,123,174,180,182,199,201,202,205,206,217,218,221,222,226,230,236,251,270,272,273,274,276,277,278,301,303,316,318,320,334,341,342,349,355,360,372,377,379,387,390,394,402,422,434,476,489,493,496,499,500,505,506,510,523,527],simluat:[6,39,206,334,439,497,498],simlul:[316,346],simmul:349,simpl:[],simpler:[8,11,42,206,316],simplest:[3,8,9,40,69,79,86,98,103,114,116,125,127,158,173,175,307,517],simpli:[1,3,6,8,9,11,12,16,40,69,75,79,86,96,98,103,105,114,116,124,125,129,131,158,173,175,181,182,206,209,210,211,218,221,222,226,228,230,234,243,252,254,259,270,299,303,314,316,318,342,348,349,376,377,379,386,387,392,402,411,425,434,442,447,493,494,501,504,511,514,522,523],simplif:417,simplifi:[9,216,315,445],simplist:11,simualt:377,simul:[],simulatan:[245,392],simulation_nam:458,simulationub:465,simulatoin:[12,497],simult:392,simultan:[6,7,14,15,230,392],sin:[230,267,351,354,356,381,455,496,499,506,523],sinc:[0,1,2,3,6,8,9,10,11,12,13,14,15,20,21,32,39,41,44,54,61,63,66,70,75,77,97,98,121,127,129,130,154,156,158,168,176,180,181,183,184,186,191,202,203,205,206,209,210,211,212,213,216,217,218,219,220,221,222,223,224,227,228,229,230,231,235,236,245,247,249,252,253,255,256,267,270,272,273,274,275,276,277,278,281,284,293,297,299,302,304,305,311,314,316,322,333,334,342,346,347,348,349,351,352,355,356,357,358,360,361,375,377,385,386,387,388,391,392,393,394,398,401,402,403,404,406,407,411,412,414,415,416,421,422,423,425,426,427,428,429,430,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,449,450,452,455,456,457,458,459,460,465,466,467,476,477,478,479,480,481,484,488,491,493,494,496,497,499,501,504,505,506,507,508,510,514,517,518,522,523,524,527],sinclair:[7,297,415,475],sine:455,singapor:152,singh:393,singl:[1,2,3,6,7,8,9,10,11,12,14,15,16,17,40,41,42,59,61,63,65,68,69,71,73,79,81,84,86,95,96,98,102,103,113,114,116,119,124,125,126,127,128,129,131,154,158,173,175,176,178,202,203,205,206,207,209,214,217,218,219,221,222,224,226,227,228,231,234,242,244,249,256,259,267,270,271,275,284,286,292,299,301,302,304,315,316,318,320,323,329,334,336,346,348,351,352,354,356,357,359,376,377,383,386,387,388,389,391,392,393,394,398,403,405,407,414,415,416,417,418,422,423,424,425,426,427,442,443,444,445,451,452,455,456,457,458,459,465,466,467,476,479,480,481,484,491,492,494,496,503,504,505,506,507,508,509,510,511,513,515,523,527,528],singleel:398,singular:[438,439,440,448],sinnott:[308,394,407],sinusoid:[178,230,351,352,354,356,381],sio2:484,sio:407,sirk:[153,474],sisic:[416,476,479,481,484],sisisi:[416,476,479,480,481,484],sister:405,sit:[298,496],site:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,70,74,95,237,250,256,257,320,377,393,398,408,415,419,420,430,434,438,448,450,452,478,482],situat:[176,228,245,256,270,299,318,384,398],sival:177,six:[6,145,150,152,219,221,451,455],sixth:451,sixthpow:[404,447],size:[],size_restart:8,sizei:428,sizej:428,sizescal:3,sizex:278,sjplimp:[0,7,11,12],sjtu:9,skew:[3,6,60,61,180,205,230,270,496,499],skin:[3,12,39,63,77,126,179,181,245,284,316,321,346,388,389,392,428,453,514,522],skip:[12,15,32,129,184,191,301,302,375,386,391,429,496,501,504,513,515,523],skyblu:206,slab:[3,6,75,166,302,330,376,377,388,447],slateblu:206,slategrai:206,slater:[],sleight:54,slepoi:442,slice:[],slider:11,slight:[3,12,237,346],slightli:[1,6,39,40,202,203,204,205,207,311,316,377,394,408,430,434,457,479,481,484,491,504,526],sligthli:411,sliozberg:474,slip:[3,209,334,350,356],sllod:[],slope:[6,113,114,342,344,349,409,523],slot:[1,154],slow:[3,6,7,12,39,246,250,253,254,268,270,286,334,341,376,387,447,465,505,515,517,524],slower:[1,16,39,254,377,392,398],slowest:[346,493],slowli:[12,75,224,350,385,445,467,498],slurm:12,slurm_localid:12,sm3:177,small:[],smallbig:3,smaller:[1,3,6,12,15,16,39,56,61,63,75,131,180,202,203,205,206,216,231,235,245,256,298,316,317,334,344,359,376,377,383,392,447,475,483,485,496,503,505,523,528],smallest:[3,42,74,75,76,176,268,313,523],smallint:3,smallq:377,smallsmall:[3,12],smart:247,smd:[],smd_lammps_userguid:9,smi:3,smirichinski:9,smit:245,smith:452,smmoth:506,smooth:[],smoother:178,smoothli:[54,152,342,349,403,423,436,438,441,481,488],smpd:12,smt:392,smtb:[9,465],smtbq:[],smulat:445,sn2:177,sn4:177,sna:[],snad:[],snap:[],snapcoeff:466,snaphot:501,snapparam:466,snapshot:[],snav:[],snb:16,snow:206,soc:424,socket:[12,16,17,252,493],soderlind:445,soft:[],softer:[351,355],softwar:[1,6,9,11,14,15,16,17,18,176,250,301,318],sole:[225,226,387,455,462,464],solid:[4,6,7,9,10,39,40,41,61,74,77,99,113,153,176,215,224,228,230,235,259,270,272,273,274,276,277,278,297,298,303,316,341,344,377,379,399,432,445,454,462,464,496],solut:[3,6,13,176,228,235,268,314,320,334,355,523],solv:[3,9,12,17,237,256,307,317,320,344,346,377,384,440],solvat:[4,10,178],solvent:[4,7,9,13,63,75,179,181,224,242,246,247,253,270,314,316,330,334,342,349,350,403,406,408,409,420,430,439,440,459,475,496,506],solver:[],some:[1,2,3,4,6,7,8,9,11,12,13,15,16,17,39,40,41,55,63,65,75,112,115,118,124,128,129,131,156,157,158,159,170,171,172,176,178,181,186,189,197,200,202,203,205,206,209,210,211,214,216,217,218,219,221,222,224,226,227,228,229,242,245,268,270,271,302,304,305,307,309,316,322,335,341,346,347,348,350,351,357,374,375,376,377,383,384,385,386,387,388,389,392,395,397,398,405,408,415,417,425,428,445,447,457,458,475,477,478,489,491,493,494,495,496,498,501,502,503,504,505,506,508,510,513,514,518,522,523,524,525,528],somehow:3,someindex:358,someon:[7,385],someth:[2,3,7,8,11,12,61,228,270,351,354,356,388,425,494,503,518],sometim:[2,3,6,8,12,17,228,270,342,349,376,389],somewhat:[7,9,12,74,113,158,168,218,270,376],somewher:[16,271,417],soon:[3,42,216,227,242,245,250,457],sophist:[7,154],sorensen:510,sort:[3,13,15,39,75,202,203,206,207,250,387,388,414,497,498,527],sound:[140,256,268,323,472,473],soundspe:[472,473],sourc:[],source_integr:215,sourceforg:11,south:152,souza:342,space:[2,3,6,8,11,12,17,41,57,61,75,130,152,167,172,177,178,198,201,205,210,211,214,221,224,226,230,231,251,256,264,267,270,298,299,314,318,323,334,351,353,354,356,359,376,377,379,386,387,388,399,401,402,408,411,415,417,428,430,434,442,445,449,450,452,455,460,477,478,485,487,493,496,499,508,514,517,523,524],spahn:422,span:[2,12,37,75,210,211,237,251,316,376,393,394,398,407,415,418,426,427,442,443,444,451,455,466,476,479,480,481,484,490,491,499,500,523],spars:[75,198],spatial:[3,5,6,7,17,39,41,69,75,79,86,98,103,114,116,125,142,158,166,173,175,202,203,212,215,218,219,222,224,236,249,253,319,327,331,346,461,463,506,524],spawn:250,spc:[],spce:237,spcpu:514,speak:[16,334,341],spearot:[130,177,318],specfi:[12,118,251,499],speci:[],special:[],special_bond:[],species1:[241,450,478],species2:[241,450,478],species:317,speciesn:241,specif:[1,2,3,4,6,7,8,9,12,13,14,15,16,17,21,28,32,40,41,42,50,65,75,119,124,126,127,158,160,163,176,178,186,191,202,203,205,206,207,209,210,211,214,215,218,219,221,222,224,227,229,242,243,245,246,250,256,265,302,304,305,308,316,341,346,347,351,357,361,377,385,387,392,394,397,398,410,415,421,422,425,426,427,442,445,447,457,458,459,475,476,482,483,493,496,497,501,502,503,505,506,512,513,514,522,523,524,526],specifi:[2,3,6,7,8,9,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,63,65,67,68,69,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,91,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,153,155,158,160,165,166,167,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,240,241,244,245,246,247,248,249,251,252,253,254,256,257,258,259,261,262,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,284,288,290,291,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,317,318,319,320,321,322,326,327,330,331,332,333,334,335,336,337,338,339,341,344,345,346,348,350,351,352,353,354,355,356,357,358,359,360,361,362,363,365,366,367,369,370,371,372,375,376,377,379,380,382,385,386,387,388,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,522,523,524,525,526,527,528],specifii:[247,256],speciti:505,spectral:[9,466],spectrum:[9,152,306,311],sped:[39,268],speed:[1,3,6,9,12,14,15,16,17,18,39,41,140,202,206,224,253,256,268,306,323,334,341,347,353,376,377,387,392,398,408,445,447,472,473,479,491,505,511],speedup:[1,17,377,505],spefici:[178,205,424],spell:499,spellmey:[6,184,508],spend:[12,217],spent:[1,12,13,14,491,510,515],sperhic:496,sph:[],sph_lammps_userguid:9,sphere1:256,sphere:[],spheric:[],spheriod:[3,6],spherioid:334,spheroid:[6,270,288,316,334],spike:127,spin:[40,124,203,352,395,417,496],spine:381,spine_two:381,spirit:[7,220],spit:3,spline:[],split:[1,3,6,9,11,12,17,41,218,224,237,254,270,321,354,376,392,413,483,490,493,505],splittol:[6,376],spparks:6,spread:[1,6,12,359,504],spring:[],springer:322,springgreen:206,sptial:75,sputter:231,sq2:[3,379],sqrt:[2,3,42,61,87,97,117,245,253,255,297,334,350,352,379,381,406,412,415,420,422,442,447,523],squar:[],squares:[41,224],squeez:[228,251,439,440],squibb:[5,7],sr2:177,src:[0,1,3,4,6,7,8,9,11,12,14,15,16,17,18,176,202,243,320,445,518],srd:[],srmax:75,srmin:75,srolovitz:415,srp:[],srtio:465,srun:12,ssa:321,ssao:[205,527],stabil:[6,9,253,270,398,457,482],stabl:[6,66,140,256,275,315,323,398,517],stabli:246,stack:[3,8,74],stage:[3,8,95,209,243,269,310,357,387,491,510,523],stagger:[1,2,3,206,377,503,512,523],stai:[3,16,210,211,268,287,306,392,496],stamp:[209,341,497],stamped:12,stan:[9,16],stand:[0,6,7,9,12,13,312,457,458,494],standard:[],stanford:9,starikov:346,start:[],start_6:420,start_7:505,startstep:523,stat:[12,40,54,182,297,311,385],statcoul:522,statcoulomb:522,state:[],statement:[3,494,495,518],stationari:[],statist:[3,6,12,33,39,41,52,66,194,220,225,226,227,246,247,253,254,255,301,302,306,311,316,320,334,345,346,347,368,385,387,394,412,414,422,439,487,491,498,504,506,510,513,514],statu:[3,12,54,62,133,182,229,234,254,407,495,510],statvolt:522,std:12,stdin:[3,12,375],steadi:[6,268,275,306],steelblu:206,steep:[477,478],steepest:[7,384],steer:[7,9,229,232,322],stefan:[],stegailov:346,steinhardt:[65,117],steinhaus:517,stencil:[3,256,376],step:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,39,75,99,106,107,121,127,128,140,153,164,174,176,202,204,205,206,207,209,210,211,215,216,218,219,220,221,222,224,225,226,227,228,230,231,234,235,237,242,243,245,247,250,251,254,262,268,284,286,292,297,298,302,304,305,306,307,308,309,317,318,320,321,322,323,334,336,339,340,341,342,343,344,345,346,347,348,349,356,357,359,375,376,383,385,387,388,394,412,420,424,442,445,457,458,465,491,493,494,498,500,501,503,504,505,510,511,513,514,515,517,523,528],stepani:322,stepwis:95,stesman:341,steve:[0,5,7,13],steven:227,stiff:[6,40,51,225,226,298,299,385,454,517],stile:409,still:[1,3,6,9,11,12,13,16,37,38,41,58,63,75,100,119,127,176,182,198,199,200,202,203,206,210,211,224,249,253,284,307,311,334,346,359,372,376,377,383,404,415,421,422,425,429,439,453,457,459,467,475,496,498,504,518],stilling:[3,5,7,9,14,96,154,416,444,455,475,476,484,508],stipul:250,stl:[9,75,326,329],stl_surf:329,stochast:[4,7,9,209,247,321,334,341,356,413,414],stockmay:40,stoddard:411,stoichiometr:317,stoichiometri:465,stoke:[256,350],stokesian:9,stoll:[253,255],stone:[9,18,377,411],stop:[],stopstep:523,stopthresh:[41,224],storag:[3,12,14,348,392,508],store:[],store_st:335,storm:12,stouch:7,str:523,straatsma:6,straddl:[3,61,63,168,251,316,330,357,496,500,506],straight:316,straightforward:[4,13,417,517],strain:[],strang:[198,205,523],strategi:[],stratford:256,strcmp:359,stream:[3,6,123,153,158,161,162,205,215,230,246,247,253,254,293,302,311,334,524],streamlin:[12,504],streitz:[],streiz:408,strength:[3,9,152,172,183,205,315,351,355,425,458,459,508],stress:[],stretch:[3,54,61,128,225,322],strict:466,strictli:[6,41,198,224,268,306,341,496],stride2:523,stride:[206,247,503,512,523],strietz:408,strike:231,string:[2,3,6,11,12,41,178,202,203,204,206,218,219,220,221,222,224,245,304,317,318,359,378,391,442,455,456,457,466,492,494,496,506,507,513,514,523],strip:523,strong:[10,307,394],stronger:6,strongest:[439,440],strongli:[1,6,13,231,316,320,346,445,517],structrur:3,structur:[],structured_points:318,strucur:77,stuart:[307,308,394,407,465,475],stub:12,stubs:12,stuck:228,student:301,studi:[6,115,286,305,432,465],stukowski:[216,415],style1:[32,50,191,367,425,496],style2:[32,50,191,367,425,496],style:[],style_nam:[270,271],stylecomput:465,stylist:8,sub1:507,sub:[1,3,4,6,7,8,9,11,12,13,17,32,36,39,40,41,42,50,55,60,63,65,67,71,72,83,95,99,101,118,152,172,180,191,197,204,205,206,210,211,224,228,230,270,271,275,306,311,320,321,346,347,355,357,367,370,379,382,392,394,397,407,414,421,422,424,425,428,447,457,458,459,465,482,483,488,493,496,499,505,513],sub_styl:[67,72,83,101],subbox:[128,205,206],subcutoff:428,subdivis:256,subdomain:256,subequ:11,subgroup:[202,527],subinterv:204,subject:[6,41,181,224,482],submit:[],subramaniyan:13,subscript:[11,346,360,418,484,523],subsequ:[3,6,11,12,41,61,113,179,206,220,224,228,245,341,346,347,348,379,391,415,475,494,496,497,503,506,507,515,516,523,528],subset:[6,11,12,15,41,85,152,202,203,206,224,266,270,272,273,274,275,276,277,278,302,303,307,316,387,392,394,398,425,447,490,493,496,498,501,505,523],subspac:9,substanti:[6,15,476,505],substep:270,substitut:[1,2,3,12,202,252,305,387,391,417,447,494,507,523],substract:408,substrat:[180,228,270,272,273,274,276,277,278,303,316,496],substyl:[438,505],subsystem:346,subtl:[104,106,107,247],subtleti:164,subtract:[3,6,54,65,75,86,99,104,107,112,113,115,123,129,153,155,156,157,158,159,160,161,162,164,165,166,167,168,170,171,202,203,209,218,237,245,246,249,253,254,255,257,261,262,266,293,300,316,357,388,437,496,506,514,523,524],succe:12,succeed:[219,220],succes:220,succesfulli:3,success:[2,6,11,12,14,127,202,206,216,219,228,231,245,284,302,316,334,341,359,385,387,494,495,503,504,511],successfulli:[3,11,202,231,494,507],successulli:11,successv:501,sucessfulli:3,sudden:35,suddenli:355,sudo:[11,12],sufac:42,suffer:[15,16,17,292,349,355,392],suffici:[2,3,6,7,16,17,41,63,75,204,224,268,270,298,334,341,348,351,359,429,447,496,517],suffix2:12,suffix:[],suggest:[0,6,7,12,268,306,494,517],suit:[7,13,211,256,417],suitabl:[4,12,13,16,54,95,202,227,305,338,398,405,422,438,442,457,458,491,510],sukumaran:220,sum:[3,6,8,12,40,74,75,80,85,91,96,97,98,100,104,108,113,115,117,120,121,123,127,128,135,151,152,153,155,158,159,160,161,164,165,166,167,168,170,172,174,175,176,218,219,221,222,231,243,246,253,254,259,297,298,302,306,311,316,318,322,333,344,346,348,351,355,357,376,377,385,397,408,412,417,418,428,430,433,442,457,458,466,483,494,514,517,522,523,524],summar:[6,12,418,465],summari:[],summat:[6,9,42,74,96,117,376,377,402,408,415,416,430,434,445,465,476,479,480,481,484],summer:[3,13,457,458],sumsq:128,sun:[20,43,185,360,404,447,458],sunderland:16,sup:[306,311,407,465],supercomput:[12,17,494],superpos:[425,475],superposit:7,superspher:381,supinski:445,supplement:[247,457,458],supplementari:[229,421,459],suppli:[9,12,198,245,268,346],support:[1,3,4,6,7,8,9,11,12,13,14,15,16,17,18,40,41,42,63,95,96,112,118,202,203,204,205,206,207,210,211,212,213,218,223,224,227,228,229,232,236,243,247,248,251,253,254,255,256,265,268,270,272,273,274,275,276,277,278,286,290,291,292,293,294,295,297,298,303,306,308,310,315,316,319,322,323,324,325,326,327,329,330,331,332,333,337,338,339,340,344,349,350,351,355,374,375,376,377,381,384,385,386,392,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,493,497,498,499,503,505,506,507,509,510,511,516,517,522,523,527,528],suppos:[3,8,418,518,523],suppress:[6,12,176],surc:8,sure:[6,8,11,13,198,210,211,228,302,316,320,356,415,477,478,518],surf:[8,146,179],surfac:[2,3,4,6,8,9,40,42,59,74,130,146,152,176,178,181,205,209,231,242,251,256,259,286,292,297,308,315,326,329,330,334,341,346,351,355,356,376,387,398,425,439,440,445,463,465,483,487,493,499],surface_exterior:8,surface_interior:8,surface_mov:346,surfact:[409,420],surpris:417,surround:[37,56,74,178,198,206,228,240,241,270,272,273,274,276,277,278,297,303,316,449,450,477,478,517],suspect:3,suspens:[439,440],sustain:[202,203,228,422],suzuki:[270,316],svg:6,svn:[7,11,12],sw_exampl:456,swamp:316,swap:[],swegat:345,swiggl:[3,267,351,354,356,499,523],swiler:[152,466],switch7_section_start:420,switchflag:[152,466],swm4:517,swol:53,swope:6,sxx:206,sy0302:9,symbol:[6,12,130,177,313,398,417,466],symmetr:[6,74,95,103,123,143,144,145,148,149,150,153,210,211,228,270,271,342,349,393,405,411,415,479,481,523],symmetri:[3,5,6,7,8,65,66,74,100,117,180,202,203,268,297,360,377,393,496,517],sync:[3,6,515],synchron:[1,247,387,515],synechococcu:7,syntax:[],sysdim:298,sysmt:16,sysstem:398,syst:465,system:[],system_:299,systemat:[6,9,220,245,253,445],systemx:3,t10:511,t11:511,t12:511,t13:511,t14:511,t15:511,t3e:12,t_chain:3,t_corr:3,t_correl:491,t_dephas:491,t_e:346,t_e_min:346,t_equil:[343,344],t_event:[3,491,510],t_hi:510,t_infil:346,t_init:[306,346],t_iter:3,t_j:28,t_lb:256,t_lo:510,t_order:3,t_oufil:346,t_out:346,t_outfil:346,t_qm:306,t_switch:[343,344],t_target:400,ta06a:466,ta4:445,ta5:177,ta6:445,tab:[2,496],tabbernor:130,tabinn:447,table:[240,241],tabul:[3,7,13,21,36,37,44,55,56,57,68,75,84,102,198,240,241,317,334,376,393,398,399,401,402,403,404,405,408,415,417,419,430,434,441,449,450,452,455,458,460,475,477,478,479,485,498],tabular:455,tabulate_long_rang:458,tad:[],tadmor:9,tag:[215,241,317,419,450,478,517],tagint:3,tail:[3,95,96,118,121,172,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,486,487,488,489,514,523],tailor:[75,347],tait:[9,472,473],taitwat:[],take:[1,2,3,6,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,81,95,97,99,123,124,127,128,153,155,165,172,176,182,184,185,186,187,188,189,190,192,193,195,196,198,202,205,206,210,211,212,223,224,228,230,237,238,244,248,252,253,254,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,303,305,308,309,316,319,320,330,332,333,334,336,337,338,339,347,354,357,360,361,362,363,365,366,369,371,376,377,382,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,411,412,415,416,418,420,421,422,423,424,430,431,432,433,434,435,436,437,438,439,443,445,448,451,452,454,457,458,459,460,465,467,474,476,477,479,480,481,482,484,486,487,488,490,494,497,499,504,505,506,511,513,514,515,523],taken:[6,61,160,178,201,227,231,245,246,247,253,254,255,256,302,306,309,346,365,415,417,421,449,450,476,484,491,505,506],talk:[6,7],talli:[],tally:[],tan:[206,523],tandem:[15,316],tang:445,tangent:[42,269],tangenti:[6,119,334,352,356,422],tanh:346,tantalum:[4,445,466],taper:[3,309,381,441],tar:12,tarbal:[0,8,11,12],target:[3,6,7,8,11,12,16,39,41,206,214,224,228,229,231,237,245,246,247,253,254,255,270,271,272,273,274,275,276,277,278,290,291,293,294,295,299,303,306,311,316,322,332,337,338,339,340,345,346,349,350,353,374,377,400,412,491,502,504,524],target_fil:345,task:[1,6,7,10,12,13,14,15,16,17,54,206,250,299,347,392,494,515],taskset:15,tatb:[4,312],tatom:517,tatoms:517,tau:[3,167,220,253,254,256,270,303,316,337,338,343,344,346,516,522],tau_1:246,tau_k:246,tau_n_k:246,tb3:177,tbead:170,tbp:398,tchain:[270,271,275,286,292,293,294,316],tcl:311,tcom:254,tcsh:[11,12,405],tdamp:[253,270,271,275,292,316,337,338],tdephas:491,tdrude:[163,234,254,517],teal:206,tech:[7,13],technic:[6,7,9,256,309,334,458],techniqu:[6,7,9,95,209,228,268,306,316,350,353,377,447,477,478,517],technolgi:9,technolog:[9,18,250],tediou:305,tell:[2,6,11,12,36,55,197,209,298,370,388,457,458,475,494,496,498,517],telsa:16,temeperatur:11,temp:[],temp_drud:517,temp_eff:107,tempcom:[156,157,171],temper:[],temperar:299,temperatur:[],temperature_definit:215,tempfix:511,templ:[7,9,17],templat:[3,8,13,16,18,40,178,179,181,231,245,302,316,320,386,496],templeton2010:215,templeton2011:215,templeton:[9,215],tempor:246,temporari:[2,3,503],temporarili:[198,315,509,510],tend:[28,270,297,317],tensil:[7,230],tensor:[3,6,8,65,90,91,97,98,99,103,116,123,129,139,142,143,144,145,148,149,150,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,228,256,259,270,271,275,301,303,316,349,376,377,386,417,439,440,445,462,464,514,523],tenth:[139,210,375],term:[0,1,3,5,6,7,8,9,12,19,20,21,26,37,40,45,46,63,95,96,97,99,121,123,153,154,156,157,166,171,172,185,186,187,198,206,210,211,217,219,221,222,230,236,237,246,247,248,253,254,255,256,269,270,271,272,273,274,275,276,277,278,290,291,293,295,299,303,306,315,316,332,337,338,339,346,348,350,352,360,361,371,376,385,388,393,394,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,415,416,417,418,419,421,422,423,430,434,437,438,439,440,442,443,444,445,447,448,452,459,465,474,476,479,480,481,484,487,505,506,508,514,517],termin:[130,270,385,387,462,464,495,504],termostat:338,terrel:384,terri:7,tersoff:[],tersoff_1:[479,480,481],tersoff_2:[479,480,481],tersoff_mod:480,tertiari:190,tessel:[9,176],test:[],test_descriptor_str:3,testf:198,testu:198,tether:[6,265,314,322,330,331,333,344,420],tetot:[9,465],tex:8,texa:454,texas_holdem:315,text:[2,3,4,6,7,8,12,13,37,41,56,198,202,203,205,206,209,215,218,219,220,221,222,224,229,240,241,250,304,345,346,358,377,379,387,415,418,429,442,449,450,466,477,478,492,496,497,513,518,523,525,526],textur:16,tfac_insert:245,tfactor:[3,206],tfinal:523,tfix:315,tflag:205,tfmc:[],th4:177,than:[1,2,3,6,8,9,11,12,13,14,15,16,17,26,37,39,40,41,42,56,59,60,61,63,65,71,75,80,94,96,100,115,117,119,123,126,127,129,131,153,176,179,180,181,187,198,201,202,204,206,209,214,216,218,221,222,224,225,226,227,228,230,231,232,235,240,242,245,246,247,248,251,252,253,256,265,268,297,298,302,303,304,306,307,309,311,314,315,316,318,321,322,323,329,330,332,334,338,339,341,342,346,349,350,351,352,353,354,355,356,357,359,376,377,383,384,385,386,387,388,389,392,394,397,398,399,401,402,403,415,417,421,422,428,439,440,442,447,449,450,457,458,459,465,467,474,475,476,477,478,481,483,485,487,488,491,492,493,494,496,497,498,499,500,501,504,505,508,510,511,513,515,523,524,526],thank:[250,479,481],thb:458,thb_cutoff:458,thb_cutoff_sq:[457,458],thei:[0,1,2,3,4,6,7,8,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,36,37,39,40,41,42,43,45,46,47,48,49,51,53,54,55,56,59,61,63,65,66,69,71,74,75,78,79,86,87,90,92,95,96,97,98,99,103,113,114,116,118,119,123,125,126,127,128,129,131,152,155,156,158,160,161,164,165,171,173,175,176,178,180,181,182,184,185,187,188,189,190,192,193,195,196,197,198,202,203,205,206,209,210,211,212,214,217,218,219,221,222,223,224,225,226,227,228,230,231,236,238,244,245,246,248,249,250,253,254,256,259,267,270,272,273,274,275,276,277,278,279,280,281,282,288,290,291,293,295,301,302,303,304,305,307,308,309,315,316,318,319,320,334,335,338,341,345,346,348,349,352,354,355,357,358,359,360,362,363,364,365,366,369,370,371,374,376,377,379,381,382,384,385,386,387,388,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,448,450,451,452,454,455,457,458,459,460,465,466,467,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,492,494,496,497,498,499,500,501,505,506,508,509,514,517,518,523,526,527],them:[1,2,3,6,7,8,9,11,12,13,16,39,40,41,54,61,75,99,113,118,125,128,131,154,180,185,202,205,206,207,217,218,219,221,222,224,227,228,230,242,250,253,254,262,266,270,272,273,274,275,276,277,278,290,291,295,297,303,305,313,314,315,316,320,334,337,338,339,341,345,346,348,352,353,354,356,357,360,377,379,381,386,387,388,392,393,398,405,415,418,421,425,428,447,459,467,482,483,491,494,496,503,508,511,517,518,523,524],themselv:[6,9,11,181,210,211,224,254,376,377,387,389,393,398,408,415,438,442,443,444,466,523],theor:341,theorem:[246,253,321,398,413],theoret:[115,250,306,476],theori:[3,6,9,12,40,152,215,229,247,270,298,376,377,398,445,487,510],thereaft:[75,261,300,316,331,342,349,494],therebi:[347,439,440],therefor:[3,6,12,66,95,163,234,237,245,254,256,320,341,377,410,456,458,476,482,505,517],therein:[6,442],thereof:95,thermal:[],thermo:[],thermo_modifi:[],thermo_p:[3,65,120,494,514],thermo_press:[65,123,228,234,270,272,273,274,275,276,277,278,303,513,514,517],thermo_styl:[],thermo_temp:[65,123,155,227,228,245,270,272,273,274,275,276,277,278,290,291,293,295,298,303,337,338,339,513,514,517],thermoberendsen:6,thermochem:522,thermochemistri:417,thermodyam:[514,522],thermodyanm:[65,227,334,357,505],thermodynam:[],thermophys:447,thermost:[6,160,214,229,234,254,353,517],thermostat:[],thermostatequ:6,thesi:[376,377,439,456],thess:399,theta0:[19,20,23,25,26,27,31,32,34,35,152,187,315,369],theta0max:152,theta10:398,theta1:[185,360,398],theta2:[185,360,398],theta3:[360,398],theta4:398,theta5:398,theta6:398,theta7:398,theta8:398,theta9:398,theta:[3,6,25,26,36,37,38,65,68,85,100,117,152,177,178,187,199,201,205,248,311,315,346,360,369,424,455,480,496,499,506],theta_0:451,theta_:[369,398],theta_c:424,theta_ijk:398,theta_ijl:360,theta_jik:[443,444],theta_pi:398,theta_sigma:398,thex:307,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,519,520,521,522,523,524,525,526,527,528],thick:[75,130,205,499],thie:121,thijss:341,thin:[127,205],thing:[3,6,11,12,54,71,75,228,270,303,316,334,493,494,498,518,523],think:[3,6,7,8,11,13,206,316,357,362,366,379,385,425,457,458,477,478,494,498,501,523],third:[6,9,12,28,99,146,152,153,176,218,219,221,222,246,313,330,332,346,407,418,419,442,451,482,484,491,492,494,496,499],thirumalai:190,thistl:206,tho:416,thole:[],thompson:[0,5,7,9,13,123,152,153,307,379,466],those:[1,2,3,5,6,7,8,9,10,12,13,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,42,43,45,46,47,48,49,50,51,53,54,56,63,75,76,81,95,99,100,117,119,120,121,123,127,152,153,155,158,165,168,176,178,182,184,185,187,188,189,190,191,192,193,195,196,198,201,202,203,205,206,216,217,218,219,222,228,230,231,237,242,248,250,251,252,253,259,267,269,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,302,305,308,309,316,336,343,344,348,352,353,354,357,358,360,362,363,365,366,367,369,371,376,377,385,387,388,392,393,394,396,399,400,401,402,403,404,405,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,442,443,447,448,451,452,454,457,458,459,460,466,467,475,476,477,479,480,481,482,484,486,487,488,491,493,494,496,498,499,500,501,503,505,506,508,510,513,514,515,517,518,523,527,528],though:[6,8,12,39,40,65,75,99,114,178,199,202,206,216,225,226,228,230,235,262,271,314,316,319,329,342,349,359,372,376,379,387,412,414,415,417,418,421,422,438,439,447,484,491,496,498,499,504,508,515,523],thought:[161,253,293,316,350,351,384,422,429,517],thread:[1,3,9,12,15,16,17,250,347,374,392,509,515],threads_per_atom:3,three:[1,3,6,54,65,78,95,99,100,115,128,130,142,152,156,177,178,190,209,227,228,233,237,257,270,275,298,303,307,316,317,334,341,343,346,364,365,369,376,377,386,392,393,394,398,415,416,418,421,422,426,429,442,443,444,445,451,455,458,459,465,466,476,479,480,481,484,494,496,499,515,523],threebodi:476,thresh:[41,202,203,205,206,224,494],threshhold:[3,41,205,224,357,494],threshold:[3,41,94,176,206,224,297,388,458,491,510],thrid:494,through:[3,6,7,9,11,12,65,178,182,202,203,207,228,241,243,245,250,251,256,258,259,260,270,271,299,307,317,326,341,346,351,355,375,381,383,394,413,416,417,419,422,428,430,445,450,460,465,467,474,478,482,491,494,497,505,507,513,517],throughout:[6,15,127,130,347,392,445,496],thru:[3,6,7,11,12,69,78,79,86,87,97,98,103,113,114,115,116,129,173,201,202,206,221,267,334,354,359,375,385,391,499],thrust:1,thu:[1,2,3,6,8,11,12,17,32,37,39,41,42,50,61,63,65,66,69,70,74,75,76,77,79,81,86,87,96,98,99,100,103,113,114,116,117,119,120,124,125,126,127,128,152,153,154,158,161,166,168,173,174,175,178,180,181,182,184,186,191,197,198,201,202,203,205,206,207,209,210,211,212,213,217,218,219,221,222,223,224,225,226,227,228,230,231,234,236,237,242,246,247,248,249,250,251,253,254,259,265,270,275,287,297,303,305,307,311,314,316,318,319,320,322,326,327,330,331,332,333,334,335,337,338,339,341,342,345,346,348,349,350,351,354,355,356,357,359,360,367,376,377,379,383,385,386,387,391,392,393,394,397,398,399,400,401,402,403,404,405,406,407,408,412,413,414,415,416,417,418,419,420,421,422,425,426,427,428,430,434,438,439,440,442,443,444,445,447,448,449,450,452,454,455,456,457,458,459,465,466,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,488,491,493,494,496,497,498,499,500,501,503,504,505,506,508,510,511,512,513,514,515,517,522,523,524,526,527],thumb:[8,16,178,201,267,316,392,406,499,505],thylakoid:381,thz:311,ti2:177,ti3:177,ti4:177,tidi:518,tight:[9,398,465],tightli:305,tij:411,tildeslei:[28,95,411],tile:[3,6,41,64,178,224,428,483,493,523],tilt:[3,6,59,60,61,75,166,180,202,203,206,228,230,231,248,268,270,271,297,306,377,379,484,496,499,514],time:[],time_integr:215,timedelta:219,timelin:5,timeout:515,timer:[],timescal:[3,217,218,219,221,222,268,306,311,417,491,505],timespan:[253,254,270,303,316,337,338],timestamp:[3,501],timestep:[],timesteppnig:320,timothi:9,tin:[407,408],tinfoil:377,tini:[76,127,178,385,398,524],tinker:7,tio2:465,tio:465,tip3p:[],tip4:6,tip4p:[],tip:[],tirrel:351,titan:14,titer:316,titl:[218,219,220,221,222,304,458,518],title1:[218,219,220,221,222],title2:[218,219,220,221,222],title3:[218,219,221,222],tji:411,tkin:506,tl1:177,tl3:177,tlbr_msw:455,tlo:510,tloop:[270,271,275],tlsph:[],tlsph_defgrad:134,tlsph_dt:323,tlsph_stress:133,tm3:177,tmax:[3,235,510],tmd:[],tmd_dump_fil:345,tmdatom:345,tmin:235,tmm:9,tmp1:[221,222,507],tmp2:[221,222,507],tmp3:507,tmp:[6,12,41,69,71,73,79,86,98,103,114,116,125,127,129,158,173,175,202,203,205,206,224,305,316,342,349,391,503,507,523],tobia:[270,271,316],todd:293,toe:172,toff:[386,496],togeth:[2,3,6,9,11,12,16,39,41,75,126,153,158,172,178,179,202,203,210,211,218,221,224,228,234,247,254,270,303,316,322,327,330,334,352,356,357,420,425,494,499,504,517,527],toggl:[61,182,503],togther:3,tol:[286,292,320,334,376,476],toler:[3,228,286,292,307,308,309,320,334,385,387,476,491,510],toma:9,tomato:206,tong:[9,13],too:[1,3,6,7,39,41,66,70,74,76,77,81,96,100,117,152,166,179,181,205,220,224,225,226,228,231,237,242,245,249,270,298,303,307,311,313,320,334,341,342,346,349,377,387,388,392,412,428,491,499,510,513,515,517,523],took:[75,467],tool:[],toolkit:[6,7,13,14,203],top:[0,3,8,9,11,12,13,61,161,176,201,209,223,230,249,256,269,293,318,353,354,356,387,392,457,458,466,496,500,506,518],top_group:327,top_veloc:327,topic:[523,527],toplog:[3,493],topolgi:40,topolog:[2,3,6,7,8,12,13,36,39,40,55,95,119,126,181,182,197,206,225,226,250,301,370,386,425,447,493,496,497,498,500,501,508],topwal:223,torder:316,torqu:[],torsion:[6,185,186,197,394,457,458],torsion_flag:394,toru:381,tosi:399,tot:[311,465],total:[3,6,11,12,14,15,16,17,39,41,42,65,67,72,75,83,86,87,88,89,96,97,98,99,101,108,112,113,114,115,118,120,121,128,129,134,135,136,137,139,140,141,142,143,144,145,152,153,155,158,159,160,161,164,165,166,167,168,170,172,174,175,176,202,209,212,213,216,218,220,221,223,224,226,232,234,236,243,244,245,246,251,253,254,255,256,257,259,268,270,271,275,286,287,298,299,301,302,305,306,311,313,315,316,317,318,319,322,324,327,330,331,333,342,343,344,346,349,351,355,376,385,386,387,388,389,392,393,394,395,397,398,407,415,417,422,442,443,444,445,455,457,458,462,465,466,483,491,493,494,496,498,504,505,510,511,514,515,523],touch:[12,251,352,498],toukmaji:[377,411],toward:[9,28,176,205,209,231,232,251,256,269,275,297,314,330,345,347,369,387],toxvaerd:435,tpa:392,tparam:316,tpartial:158,tpc:392,tpcpu:514,tperiod:316,tptask:[15,392],tqx:[124,129,202,203,336],tqy:[124,129,202,203,336],tqz:[124,129,202,203,336],trace:417,track:[3,7,12,226,230,256,346,356,491,496,502,510,514,523],track_displac:215,tracker:250,trade:[6,12,308,376,377,408,430,434,505,510],tradeoff:447,tradit:[6,9,377],traffic:12,trail:[2,21,44,81,95,127,172,182,186,206,210,211,316,361,382,386,387,405,418,442,458,466,490,496,504,506],train:458,traingul:329,traj:229,traj_titl:458,trajectori:[3,6,12,39,95,202,250,270,272,273,274,276,277,278,279,280,282,283,285,288,289,290,291,293,294,295,299,316,320,322,326,347,356,412,447,458,498,506,511,517,522],tran:[189,190],transfer:[1,6,15,215,234,250,252,342,346,349,376,392,398,445,517],transform:[],transit:[6,9,94,269,322,345,387,409,438,444,445,481,491,510],translat:[3,6,63,65,104,105,106,107,108,156,157,158,162,171,218,237,245,249,253,254,259,270,276,277,278,290,291,295,299,316,337,338,339,341,379,417,496,514],transmiss:250,transmit:[6,250],transpar:16,transport:[215,346,468],transpos:12,trap:[3,6,99,174,219,251,348,523],trapezoid:[219,523],trate:[3,230,250],travel:334,treat:[2,3,6,8,9,16,40,42,75,90,92,93,131,153,156,160,171,182,200,218,219,221,222,231,244,271,298,301,302,316,334,346,348,355,359,375,376,385,386,388,397,410,417,418,421,424,428,443,444,445,459,483,496,499,501,504,506,517,523],treatment:[9,311,410],tree:[3,301,438],tref:414,tri:[],tri_surfac:[],trial:[231,245,395,505],triangl:[],triangle_mesh_vertic:[326,329],triangleflag:496,triangul:[2,6,13,329,463],triangular:[6,42,90,124,228,289,329,463,496],tricki:[493,517],triclin:[],triflag:6,trigger:[3,11,12,64,94,224,227,245,385,453,489,514],trigon:24,trilinear:256,trilino:16,trim:[3,497],tringl:205,tripflag:457,tripl:[2,152,230,398,457,492,494],triplet:[3,33,36,38,416,451,455,476,479,480,481,484],trivial:[8,11,307],trj:458,trott:[7,9,16,152,466],troubl:[11,12],truli:8,truncat:[3,5,6,12,75,237,305,311,351,355,384,396,408,417,422,430,432,435,447,454,465,506],trung:14,tscale:[3,268,306],tschopp:70,tsige:402,tsrd:[334,356],tstart:[246,247,253,255,270,271,292,316,337,338,339,340,412,502],tstat:[],tstop:[246,247,253,255,270,271,292,316,337,338,339,340,412,502,510],tsuzuki:[77,484],tthi:139,ttm:[],ttm_mod:346,tucker:[152,466],tuckerman:[270,271,294,299,316,505],tue:9,tune:[],tunnel:299,turkand:117,turn:[3,4,6,12,21,32,36,39,44,50,54,55,61,68,73,75,119,126,152,176,177,182,186,191,197,205,206,209,216,225,226,227,228,245,250,270,284,301,304,305,316,334,361,367,370,376,385,387,388,390,392,394,410,424,425,442,447,458,474,475,492,496,498,503,508,509,514,515,520,526],turquois:206,tutein:394,tutori:[],tweak:[12,178,250,392],twice:[3,6,15,16,65,96,184,206,209,210,211,228,267,270,309,321,392,425,494,496,503],twin:70,twist:[439,440],two:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,21,37,39,41,42,44,54,56,59,61,63,65,68,71,73,75,80,81,84,95,96,100,102,113,118,119,124,125,126,127,128,129,130,152,154,156,160,161,163,164,166,172,176,177,178,179,181,186,201,202,203,204,205,206,209,210,211,216,217,218,219,221,222,224,225,226,227,228,231,234,242,245,246,247,249,251,252,253,254,256,259,269,270,271,275,297,298,299,302,303,305,306,307,311,313,316,322,330,334,341,342,344,346,349,352,355,357,359,361,371,376,377,379,381,382,383,385,386,387,390,392,393,394,395,397,398,399,400,401,402,405,406,407,408,410,411,412,414,415,416,417,418,419,421,422,425,428,429,430,434,438,439,440,442,445,447,450,452,455,456,457,458,459,461,465,466,467,474,475,476,478,479,480,481,482,483,484,487,488,490,491,493,494,496,497,498,499,500,503,506,508,509,510,511,513,514,515,517,522,523,524,525,526,527,528],two_temperatur:215,twobodi:[479,481,484],twogrid:3,twojmax:[152,466],twolevel:[3,493],txt2html:8,txt:[8,13,57,202,207,304,305,346,374,386,429,465,485,501,518,523],typcial:[41,224],type1:[81,130,177],type2:[81,130,177],type:[],typei:428,typej:428,typen:[81,130,177],typic:[1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,28,39,40,41,45,46,55,59,61,63,65,74,75,94,95,112,118,129,131,140,172,178,179,181,202,203,204,205,206,209,210,211,212,214,215,218,220,224,225,226,227,228,230,231,236,242,243,245,248,254,270,284,298,301,302,305,307,309,315,316,320,323,325,334,341,349,350,356,376,379,384,385,386,387,388,389,392,403,405,406,408,420,421,424,425,429,430,434,439,440,442,447,459,462,464,475,477,478,481,491,492,494,496,497,498,499,505,508,510,511,513,518,522,523,526,528],typicali:12,tzou:346,u_chem:[88,89],u_cond:[88,89,239],u_f:256,u_i:[239,240,241],u_ij:455,u_j:241,u_mech:[88,89,239],u_prom:398,uberuaga:[269,387],ubiquit:[11,398],uchem:[40,419,450,478],ucond:40,uhf:395,uiuc:[9,16],uloop:[3,299,387,391,523],ulsph:[],ultim:510,ultra:176,umbrella:[],umech:40,umin:[25,26,48,49,187],unabl:[3,11,41,224],unaffect:[202,228,270,316,497,508,513],unalt:[210,211,284],unambigu:[75,484],unari:[359,523],unbalanc:3,unbias:[166,417],unbond:[226,496],unbroken:85,uncertainti:40,unchang:[61,228,231,269,270,272,273,274,276,277,278,287,303,316,496,497,500,506],uncharg:[40,377],uncom:[1,4],uncompress:[12,75,205],uncomput:[],uncorrel:[246,341,491],uncoupl:299,undefin:[3,12],under:[0,5,6,7,8,9,12,17,20,21,44,152,185,186,205,250,268,270,302,306,307,321,360,361,382,413,417,438,458,466,494,510,517],underestim:176,underflow:205,undergo:[6,94,95,113,166,246,253,254,270,322,334],undergon:[227,334],underli:[6,12,16,74,205,270,346,379],undermin:39,underpredict:6,underscor:[2,3,65,203,209,227,228,268,270,272,273,274,275,276,277,278,290,291,293,295,303,305,337,338,339,359,386,523],understand:[1,4,6,8,245,271,445],understood:[202,398],undesir:[61,228,230,270,316],undetermin:334,undisturb:[439,440],undo:[182,250],undump:[],unexpect:[3,502],unfix:[],unfix_flux:215,unfold:332,unfortun:[347,504,505],uniaxi:[3,156,275],uniform:[7,15,41,96,127,215,224,225,226,253,256,259,271,341,414,421,459,491,493,523,524],uniformli:[61,127,201,256,302,346,449,450,455,477,478,524],uninstal:12,uninterrupt:[216,231,245,267,268,270,272,273,274,275,276,277,278,290,291,293,294,295,305,306,316,322,333,336,344,346,352],union:[3,6,40,206,305,355,357,496,499],uniqu:[3,6,7,8,12,39,75,134,220,246,247,253,254,275,305,311,313,387,415,417,496,523,524],unit:[],unit_styl:3,uniti:[416,447,470],unitless:[66,70,74,75,125,129,183,218,230,245,268,270,306,317,352,385,395,422,448,452,454,476,479,480,481,484,522],unitlesss:[82,85,122],univ:[9,13],univers:[3,6,9,12,13,17,95,250,376,377,387,391,439,444,454,456,481,490,493,523],universit:[9,13],unix:[12,16,252,507],unknown:[3,12,66,77,496],unless:[2,3,9,11,12,14,15,55,59,70,113,130,163,177,178,202,203,206,207,214,228,231,245,253,270,272,273,274,276,277,278,302,303,316,334,345,378,385,406,447,477,478,494,499,503,508,523],unlik:[12,97,178,220,253,309,376,393,398,415,418,425,442,443,444,466,475],unlike:[32,50,61,168,191,202,253,270,275,303,311,337,338,339,367,375,415,424,429,443,444,458,493,498,503,508,523,528],unlimit:[455,515],unlucki:3,unmark:7,unmodifi:335,unnecessari:15,unoccupi:346,unoptim:205,unpack:[0,8,11,392],unpack_bord:8,unpack_border_bodi:8,unpack_border_hybrid:8,unpack_border_vel:8,unpack_comm:8,unpack_comm_bodi:8,unpack_comm_hybrid:8,unpack_comm_vel:8,unpack_exchang:8,unpack_restart:8,unpack_revers:8,unpack_reverse_comm:8,unpack_reverse_hybrid:8,unpad:206,unperturb:95,unphys:[3,6,254,270,316,496],unpredict:[314,506],unpublish:445,unrecogn:3,unrel:[8,9,13,184,518],unreli:447,unrestrain:315,unrestrict:395,unscal:[3,124,129,172,202,203,336,497],unset:[3,376,417],unshift:411,unsmooth:436,unsolv:[389,403],unsort:206,unspecifi:[230,496],unsplit:517,unstabl:[3,256],unstag:518,unstrain:230,unsuccess:[3,302],unsupport:[3,511],untar:12,until:[2,3,6,12,37,39,41,56,75,131,198,205,224,228,231,240,241,245,250,286,302,326,334,336,343,359,375,376,388,391,392,398,422,449,450,477,478,491,496,497,501,502,504,510,515,522,523],untilt:499,unus:398,unusu:[3,8,388],unwant:[3,178,376],unwrap:[3,69,78,79,86,87,97,98,103,113,114,116,124,129,153,173,202,203,206,207,217,227,229,250,267,316,330,336,496,497,500,506],unwrapexpand:202,unzip:12,up_intern:205,updat:[0,3,6,8,12,13,129,135,136,137,147,148,149,150,201,202,203,209,216,225,226,234,243,246,253,254,256,259,263,264,267,268,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,293,294,295,301,303,305,306,311,316,325,326,336,337,338,339,341,346,357,358,392,398,411,445,447,457,458,464,491,496,498,506,507,510,517],update:258,upenn:[11,13],upgrad:12,upon:[6,216,250,398,482,510],upper:[2,3,41,59,61,75,96,113,115,154,167,174,201,206,219,220,224,228,234,254,256,270,306,311,351,352,357,358,385,422,465,499,524],uppercas:[],upsid:6,upsilon:421,upstream:518,upto:[3,498,504],upward:231,urbana:[250,376,377,439],urey_bradlei:19,url:518,usa:9,usabl:[12,245,415],usag:[3,6,8,297,311,334,425,438,496],usage:254,use:[],use_ldg:16,usec:516,used:[206,253,255],useful:445,user:[],user_manifold:518,user_misc:[29,30,34,188,193,196,365],userguid:9,usernam:518,using:[],usr:[11,12,497],usual:[2,3,6,12,14,16,17,23,27,31,34,35,47,63,75,95,128,156,157,158,163,171,176,195,202,203,205,210,211,216,218,227,228,229,230,245,248,253,255,268,275,298,306,307,313,315,316,334,342,346,349,351,355,359,366,374,387,388,392,403,406,409,411,421,425,426,429,438,439,440,447,451,462,464,466,474,476,482,491,495,497,501,505,507,510,513,514,523,528],usualli:[3,461,463],util:[8,12,16,17,392,421,515],utilizi:12,utilz:[12,515],utsa:454,uttormark:13,uwo:9,v11:6,v22:6,v33:6,v_0:[3,346],v_2:445,v_3:445,v_4:445,v_a:[8,230],v_abc:[494,514,523],v_area:[2,523],v_atomfil:506,v_c:172,v_cluster:305,v_dc:172,v_delta:95,v_dhug:[268,306],v_diff:[174,348],v_displac:230,v_dk:172,v_dlj:172,v_drai:[268,306],v_dx:[267,499],v_dy:[267,499],v_dz:267,v_e_hbond:424,v_ea:[457,458],v_eb:[457,458],v_eqeq:[457,458],v_espac:212,v_f:494,v_fac:494,v_flux:249,v_foo:[494,523],v_ij:455,v_increas:248,v_integr:348,v_jx:99,v_jy:99,v_jz:99,v_k11:99,v_k22:99,v_k33:99,v_k:172,v_ke:[202,203,527],v_left:499,v_lgr_po:[268,306],v_lgr_vel:[268,306],v_linear:[351,354,356],v_lj:[172,394],v_mol:206,v_mu:439,v_myi:267,v_myindex:523,v_myke:128,v_mystep:503,v_myvar:[8,206],v_myvec:[131,523],v_myx:267,v_n:[256,445],v_name1:[172,230],v_name2:[172,230],v_name:[3,6,75,95,128,131,201,202,203,205,206,210,211,212,213,217,218,219,220,221,222,223,236,248,249,251,253,254,267,319,327,336,337,338,339,348,351,354,356,494,499,503,506,512,514,523,524],v_nstep:357,v_occ:420,v_omega:267,v_oscil:[212,213,223,236,319],v_phi:248,v_prefactor:[210,211,467],v_press:153,v_pressdown:[354,356],v_push:212,v_pxy:6,v_pxz:6,v_pyz:6,v_r0:251,v_r1:176,v_r2:176,v_r:[176,251,286],v_rad:357,v_radiu:251,v_ramp:[351,354,356],v_rate:[230,251],v_rebo:394,v_scale1:[210,211],v_scale2:[210,211],v_size:[210,211],v_t_qm:306,v_temp:342,v_theta:[248,499],v_torsion:394,v_tp:230,v_up:499,v_v0:523,v_v11:6,v_v22:6,v_v33:6,v_v:[267,523],v_valu:[205,494],v_vx:267,v_vy:267,v_vz:[267,524],v_wiggl:[351,354,356],v_x:[2,178,251,267,351,354,356,494,499,523],v_xave:6,v_xmax:6,v_xx:178,v_y:[178,251,499],v_yi:178,v_z:499,vacanc:[4,176,343,445],vacf:[],vacuum:[346,377,409,481,488],valanc:398,vale:3,valenc:[309,398,417,457,458],valent:398,valeriu:9,valid:[2,3,6,9,11,12,75,130,164,177,206,228,245,253,297,316,334,357,359,374,379,415,417,421,445,455,496,497,504,506,523],valon:442,valu:[],value0:523,value1:[12,158,217,218,219,220,221,222,275,348,357,507],value2:[12,158,217,218,219,220,221,222,275,348,357,507],valuei:219,valuej:219,valuev:[7,9],valus:305,van:[9,53,95,118,303,307,312,337,406,407,438,442,457,458,487,524],vanadium:445,vanderwa:[447,514],vanilla:[6,8,12],vanillia:42,vanish:[234,311,320],vapor:[41,224,245,513],vapour:341,var1:507,var2:507,varaibl:[3,499],varavg:12,vare:346,vari:[1,10,17,41,63,64,75,95,130,166,168,177,210,211,215,218,219,224,228,230,268,270,303,315,316,337,338,346,351,376,403,412,413,423,436,439,454,467,477,478,493,511],variabl:[],variable_hill_factor:13,variable_nam:458,varianc:[128,412,523],variant:[1,3,6,9,12,91,108,129,270,275,316,321,376,384,392,443,444,448,479,481,505,509,524],variat:[12,41,224,523],varieti:[1,2,4,6,7,9,13,14,75,205,250,374,379,425,442,457,458,475,484,523],variou:[],varreturn:494,varshalovich:152,varshnei:13,vartiabl:3,vashishta1990:484,vashishta2007:484,vashishta:[],vbia:6,vcm:[],vdim:[167,342,349,524],vdisplac:[3,251,267,351,354,356,523],vdw:[3,407,458],vec1:[128,305],vec2:[128,305],vec:297,vector:[],vector_styl:523,vel:[3,6,63,218,230,254,302,322,353,412,413,417,422,491,498,499,501,517,523],veld:[13,334,377,402,434],veloc:[],velocit:[249,412,413,417,422],velocity_bottom:256,velocity_gradient:464,velocity_temp:524,velocity_top:256,vendor:[9,12],verbatim:494,verbos:[12,465],veri:[1,3,6,7,8,9,10,12,13,16,41,75,76,95,127,128,129,131,202,203,205,206,217,218,219,220,221,222,224,225,226,228,245,259,262,270,271,284,286,292,299,303,314,320,337,338,348,387,388,389,392,417,422,439,440,449,450,454,457,466,467,477,478,504,514,515,517,518,522,526],verifi:[8,392,447,505,511,518],verlag:322,verlet:[1,3,7,8,9,12,17,215,237,253,270,284,293,299,320,335,346,354,357,392,490,493,505],versa:[3,6,13,61,172,180,227,240,251,253,254,316,496,497,517],versu:[6,14,15,17,39,41,85,113,114,127,174,206,224,316,320,377,402,411,422,434,447,514,523],vertex:[42,146,329],vertic:[],ves:[454,475],vfinal:523,vfrac:124,vhi:[167,524],vhs:414,via:[],vibrat:[6,9,231,247,297,306,311,369,417,491,505],vice:[3,6,13,61,172,180,227,240,251,253,254,316,496,497,517],video:205,view:[4,6,7,13,202,205,334,398,417,418,465],viewer:[202,205],viewpoint:205,vij:412,vika:13,vim:[],vincent:[9,18],violat:341,violet:206,virial:[3,65,99,123,152,153,172,210,211,228,234,270,271,272,273,274,275,276,277,278,301,303,316,320,376,392,395,412,413,414,417,426],virialmod:426,virtual:[6,7,8,12,476],virut:9,visa:7,viscoelast:[122,422,454],viscoelsat:454,viscos:[],viscosity:[4,6],viscou:[],viscous:316,vision:465,visit:318,vista:202,visual:[],viz:[11,13],viz_tool:11,vizplotgui_tool:11,vizualiziton:318,vlo:[167,524],vmax:[228,334],vmd:[6,7,9,11,13,202,207,250,497],vmdarch:207,vmdhome:207,vname:523,voigt:[6,152],vol:[],volfactor:376,volpress:445,volt:[456,522],volum:[2,3,6,40,41,60,61,65,85,95,99,110,123,127,130,138,142,151,153,176,177,178,181,216,218,224,228,230,231,239,245,256,268,270,271,275,279,280,282,283,285,286,288,289,290,291,293,294,295,302,303,306,316,322,346,351,355,357,376,379,386,400,439,440,445,454,472,473,488,492,493,496,499,506,514,517,522,523],volumetr:85,von:[145,150],voro:[3,9,176],vorobyov:517,voronoi:[],vorselaar:220,voter2:[491,510],voter:[443,444,491,510],voth:[40,299],vpz:353,vratio:523,vri:423,vrpn:250,vshear:352,vstream:6,vtarget:[3,349],vtk:[],vtp:203,vtr:203,vtu:203,vv0210:13,vx0:174,vxcm:316,vxhi:[231,302],vxlo:[231,302],vy0:174,vycm:316,vyhi:[231,302],vylo:[231,302],vz0:174,vzcm:316,vzhi:231,vzi:353,vzlo:231,w_1:152,w_2:152,w_i:152,w_ik:455,waal:[95,118,406,407,438,457,458,487],wadlei:[13,398],wag:[7,9,13],wagner:[7,9,215,256,442],wai:[1,2,3,6,7,8,9,10,11,12,14,17,21,33,44,52,61,65,68,69,73,75,76,79,81,84,86,95,98,99,100,102,103,114,116,117,119,125,126,127,152,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,173,175,178,181,186,194,198,201,202,203,205,206,209,210,211,218,221,222,223,226,227,228,230,243,246,251,253,254,256,268,270,275,284,286,299,302,303,305,314,316,318,322,330,331,334,336,337,338,339,342,345,346,348,351,354,356,357,361,362,363,364,366,368,369,377,379,382,385,387,388,392,393,394,405,408,409,412,414,415,416,418,421,424,425,427,430,442,443,444,447,451,453,455,456,459,465,466,467,474,476,479,481,484,490,491,494,496,497,498,499,500,501,504,505,506,518,523,524,525],wait:[1,12,250,298,491,493],walk:[3,246,253,254,270],wall:[],wall_surac:146,wall_surfac:[],wallhi:351,wallstyl:352,walltim:515,wander:330,wang:[377,442,455],want:[0,1,2,3,5,6,7,8,9,11,12,16,37,40,56,65,67,69,71,72,75,79,83,86,87,88,89,98,101,103,113,114,116,118,120,121,123,125,127,129,153,158,173,174,175,176,178,181,198,202,203,205,206,209,210,211,212,217,218,224,227,230,231,234,236,240,243,245,251,254,265,287,297,302,305,315,316,319,330,331,333,335,342,344,349,351,355,357,359,377,379,387,393,394,398,406,407,412,415,418,425,426,427,428,442,449,450,451,455,457,458,465,467,476,477,478,479,481,483,484,492,494,496,497,498,499,501,503,504,511,514,517,518,523,526,528],ward:398,warm:[15,417],warn:[],warner:393,warning:[2,3,12,442,457],warp:[5,442],warranti:7,warren:[412,449,450],wasn:3,wast:3,watanab:[343,344],watch:387,water:[],watkin:195,wave:[7,9,40,214,268,310,353,395,417],wavefunct:[395,417],wavelength:[130,177],wavepacket:[40,395,417,496],wavevector:298,wbodi:91,weak:[10,100,307],web:[1,4,8,10,14,15,16,405],webb:215,weber:[3,5,7,9,14,96,154,416,444,455,475,476,484,508],websit:[8,457,458],weckner:454,weight:[],welcom:494,well:[1,3,6,7,8,9,11,12,13,14,15,16,17,26,40,51,70,75,100,117,123,153,156,164,178,187,205,206,212,216,218,222,224,225,226,228,231,236,245,249,253,256,260,262,267,270,275,286,292,302,303,316,319,327,341,344,352,385,387,392,397,420,421,424,425,426,439,440,442,445,459,467,479,480,481,494,496,498,500,505,510,515,517,518,522,527],wennberg:376,went:[3,11],were:[3,5,6,7,9,11,12,13,14,15,18,33,41,42,52,56,62,74,75,113,117,120,123,127,155,158,178,181,182,194,202,205,206,209,212,218,221,222,224,230,236,242,249,250,284,293,318,352,353,357,368,376,389,391,394,417,422,425,429,454,458,477,491,493,494,496,497,498,499,501,503,511,514,518,523,524,527,528],weren:501,western:9,westview:487,what:[],whatev:[8,12,14,119,124,127,128,129,131,205,206,210,211,228,270,303,305,352,379,384,385,387,392,404,406,445,457,458,510,517,523],wheat:206,whelan:177,when:[0,1,2,3,4,6,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,61,63,64,65,67,72,75,76,83,87,94,96,100,101,113,114,115,117,118,120,123,124,127,128,131,154,155,156,161,165,166,168,174,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,202,203,204,205,206,207,209,210,211,212,213,214,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,235,236,238,240,242,243,244,245,247,248,250,253,256,257,259,260,265,270,271,272,273,274,275,276,277,278,279,280,284,287,288,290,291,293,295,297,301,302,303,304,305,306,308,309,310,311,315,316,318,319,320,322,330,332,334,335,336,341,342,346,347,348,349,351,352,353,354,355,356,357,358,359,360,362,363,365,366,367,369,370,371,373,374,375,376,377,379,383,384,385,386,387,388,389,391,392,393,394,396,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,447,448,449,450,451,452,454,455,457,458,459,460,466,467,474,476,477,478,479,480,481,482,483,484,486,487,488,489,491,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,510,511,513,514,515,516,518,522,523,524,526,528],whenev:[0,8,12,75,206,217,316,379,424,494,505,509,523,528],whenth:3,where:[1,3,6,8,9,10,11,12,14,17,20,22,23,24,25,26,27,28,31,34,35,36,39,40,41,43,47,48,49,51,55,63,65,67,68,69,71,72,73,74,75,77,79,83,84,85,86,88,90,91,92,93,95,96,97,98,100,101,102,103,104,105,106,107,108,114,116,119,123,124,125,126,127,128,129,130,131,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,173,175,177,179,181,182,185,187,197,201,202,205,206,209,210,211,212,213,218,219,223,224,227,228,230,231,235,236,237,239,241,242,243,245,246,247,248,249,251,253,254,255,256,259,260,263,265,267,268,270,271,275,284,288,296,297,298,299,302,304,305,306,309,311,316,317,318,319,320,322,326,327,330,331,333,336,337,338,339,342,343,344,346,349,350,351,352,354,355,356,357,360,362,363,364,365,366,369,370,371,374,377,379,384,385,386,387,388,389,392,393,394,397,398,399,401,405,406,407,408,409,410,411,412,413,415,416,417,418,419,420,421,422,423,424,425,426,427,430,434,439,440,441,442,443,444,445,447,450,451,452,454,455,456,457,458,459,465,466,469,472,473,474,475,476,477,478,479,480,481,484,487,488,490,491,493,494,495,496,498,499,500,501,503,505,506,508,510,511,512,513,514,517,522,523,524,526,528],wherea:[6,11,100,216,246,270,307,341,346,517],wherebi:308,wherev:249,whether:[6,8,11,12,16,39,40,54,61,63,65,74,75,112,118,120,154,165,166,198,205,206,208,209,210,211,218,222,225,226,227,228,229,230,234,242,245,254,267,270,275,305,320,334,342,348,349,357,359,374,376,377,386,390,392,401,403,407,423,425,429,439,440,442,447,458,465,475,491,494,496,497,499,501,508,509,510,513,523,524],which:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,31,32,36,37,38,39,40,41,42,44,45,46,47,50,51,53,54,55,56,58,60,61,63,65,66,67,69,70,72,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,93,95,96,97,98,99,101,103,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,121,122,123,124,125,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,189,190,191,192,195,197,198,201,202,203,205,206,207,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,259,260,264,265,267,268,269,270,271,272,273,274,275,276,277,278,280,282,284,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,318,319,320,322,323,324,325,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,359,360,361,363,366,367,370,371,374,375,376,377,379,382,383,384,385,386,387,388,389,391,392,393,394,395,397,398,399,401,402,403,405,406,407,408,409,410,411,412,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,432,433,434,436,438,439,440,442,443,444,445,447,448,449,450,451,452,453,455,456,457,458,459,460,461,462,463,464,465,466,467,470,474,475,476,477,478,479,480,481,482,483,484,487,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,523,524,526,527,528],whichev:[12,391,491,510],white:[206,246,253,254,255,316,338,346,496,523,527],whitesmok:206,whitespac:[2,3,206,386,496],who:[0,3,6,7,8,9,13,393,415],whole:[234,250,298,311,322,517],wholli:231,whose:[3,6,7,8,9,17,18,37,39,42,56,61,80,95,163,181,198,205,206,216,230,240,241,251,252,267,270,272,273,274,276,277,278,297,298,314,315,317,320,334,348,355,357,379,387,388,417,419,432,449,450,461,463,476,477,478,479,481,517,523,524],why:[3,6,254,342,349,518],wicaksono1:297,wicaksono2:297,wicaksono:297,wide:[1,6,7,63,65,209,342,349,379,389,403,406,417,457,458],width:[205,206,381,395,420],wiggl:[3,230,267,326,351,352,354,356,499],wiggle:326,wigner:152,wih:6,wikipedia:6,wild:[3,12,21,44,81,95,127,186,210,211,316,361,382,405,424,490,498,503,526,528],wildcard:[3,12,172,182,202,203,205,206,313,405,474,503,506,527,528],wildli:[270,303],win:392,window:[3,4,12,13,75,202,205,207,218,219,220,221,222,250,318,339,340,405,497,518],wipe:[209,425,475,519,521],wire:315,wirnsberg:[6,237],wirt:206,wisconsin:13,wise:[3,12,412,476,505],wish:[2,3,5,6,7,8,11,12,16,40,42,59,60,61,75,128,153,158,179,180,182,184,202,203,206,210,217,218,219,222,226,230,231,242,245,251,256,260,302,305,316,320,334,335,351,352,376,379,387,392,401,424,425,442,447,449,450,457,477,478,494,496,497,498,504,508,514,523,524,528],within:[1,2,3,6,8,9,11,12,13,14,15,16,28,39,40,41,42,55,61,63,65,68,73,74,75,76,77,81,84,100,102,117,119,123,126,127,128,129,131,134,152,169,178,181,204,205,206,210,211,216,217,218,221,222,224,225,226,227,231,233,240,241,242,245,251,253,297,301,302,303,305,307,316,317,318,320,323,325,329,330,335,346,349,351,355,357,359,375,379,385,386,387,388,389,392,397,399,401,408,413,414,415,416,417,419,420,425,426,429,430,442,445,450,452,453,454,459,460,475,476,478,479,480,481,482,484,489,491,493,494,496,504,505,508,510,517,522,523],without:[1,2,3,4,6,7,8,9,11,12,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,61,95,123,155,160,165,179,184,185,187,188,189,190,192,193,195,196,198,202,205,206,207,209,212,218,220,221,222,223,228,230,238,240,241,244,246,248,250,253,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,294,295,302,305,307,308,309,310,314,316,317,318,319,320,326,334,350,354,358,360,362,363,365,366,369,371,375,376,377,387,388,392,393,394,396,399,400,401,402,403,404,405,406,407,408,411,412,415,416,417,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,445,447,448,449,450,451,452,454,458,459,460,467,475,476,477,478,479,480,481,482,484,486,487,488,494,496,499,504,505,511,514,517,518,522,523],wolf:[],wolff:[447,477,478],won:[3,314,440],wong:[215,398],word:[2,3,6,8,12,28,65,206,209,216,217,218,219,222,229,251,281,287,304,309,315,348,359,375,406,447,492,494,496,523,524],work:[1,3,6,7,8,9,11,12,15,17,39,54,61,62,96,128,129,130,156,157,159,160,161,165,166,167,168,170,171,176,177,202,205,207,210,211,218,227,243,245,252,253,254,256,260,267,270,276,277,278,286,290,291,293,294,295,303,305,313,315,318,320,337,338,339,344,375,376,388,392,405,407,410,412,425,439,440,442,445,447,465,491,493,494,497,498,500,504,505,507,510,523],workaround:[76,127,316,447,524],worker:[12,457,458,484],workflow:518,workhors:8,workstat:494,world:[3,12,152,375,387,391,490,493,494,511,523],worlei:412,worri:16,worsen:17,worst:355,worth:[218,219,221,222,306,318],would:[1,3,4,5,6,7,8,11,12,21,28,36,41,42,44,55,74,75,76,97,99,127,129,153,158,166,178,179,180,181,182,184,186,197,202,203,205,206,207,209,210,211,213,216,218,224,227,229,230,234,235,237,242,245,248,249,250,254,267,270,271,284,297,299,303,305,307,311,314,334,341,345,353,354,357,359,360,361,362,363,364,366,367,370,376,379,382,384,385,387,388,391,392,393,394,398,405,406,407,408,412,413,414,415,416,418,425,426,427,428,442,443,444,445,451,455,457,458,462,464,466,474,476,479,480,481,484,491,494,496,499,500,501,503,504,505,506,507,511,513,514,517,518,523,524,527,528],wrap:[1,3,6,9,11,12,59,61,129,178,180,201,202,203,204,206,207,217,229,230,231,250,256,267,316,330,334,351,353,355,376,377,387,494,496,497,499,504],wrapper:[],wrigger:322,wright:385,writabl:3,write:[],write_atom_weight:215,write_coeff:[],write_data:[],write_dump:[],write_freq:458,write_head:8,write_restart:[],writen:318,written:[],wrong:[3,11,228,270,296,351,355,356,388,458,498,503],wrote:[3,9,498],wt1:447,wt2:447,wt3:447,wurtzit:379,www:[0,2,3,5,6,7,8,10,11,12,13,14,393,415,439,456,457,458,522],x86:[12,445],x_ij:455,x_ijkl:360,x_kjli:360,x_ljik:360,xave:6,xavx:15,xcm:[8,316,523],xdr:[12,202],xeon:[1,7,9,10,12,15,16,17,392,509],xflag:[165,166,257,259,266,316,341],xhi:[2,6,59,61,180,202,230,345,351,354,356,496,499,514,523],xhi_bound:[6,202],xhi_new:496,xhost:[9,15],xi_ij:455,xiaowang:[13,418,479,481],xiij:297,xk7:9,xlat:[178,230,251,514],xlo:[2,6,11,59,61,180,202,230,251,345,351,354,356,496,499,514,523],xlo_bound:[6,202],xlo_new:496,xmax:[6,214,235,284,523],xmgrace:[],xmin:523,xml:[203,207,456],xml_label:456,xmovi:[],xmu:[352,422],xorig:75,xplane:352,xplor:202,xpo:178,xrd:[],xsph:9,xsu:[3,202,203,336,497],xt3:202,xt4:[17,202],xt5:[17,202],xtc:[3,6,7,12,202,204,205,206,207],xtcdump:206,xvf:12,xwall:[353,354,356],xxx:12,xyz:[3,6,7,9,13,42,69,75,116,119,166,173,178,202,204,205,206,207,228,259,270,271,275,303,313,314,316,330,333,352,354,356,378,386,493,497,524,527],xzhou:[13,418],xzy:493,yang:[445,455],yate:445,yb2:177,yb3:177,ybox:230,ycm:316,year:[5,7],yeh:376,yellow:[205,206],yellowgreen:206,yet:[3,7,16,39,42,205,210,313,351,377,384,385,392,404,406,407,417,487,494,496,497,518,523,525,526,527],yflag:[165,166,257,259,266,316,341],yhi:[6,61,180,202,230,345,351,354,356,496,499,514],yhi_bound:[6,202],yield:[6,99,121,128,153,161,166,206,219,228,234,270,293,307,317,342,348,349,352,357,376,397,412,422,447,454,514,523],yip:343,ylat:[178,230,251,514],ylo:[6,61,180,202,230,345,351,354,356,496,499,514],ylo_bound:[6,202],ymax:[214,523],ymin:523,yorig:75,york:[299,377],yoshida:[270,316],you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,56,59,60,61,63,65,67,69,71,72,75,76,77,78,79,81,83,86,87,88,89,95,96,97,98,99,100,101,103,112,113,114,116,117,118,120,121,123,125,127,128,129,152,153,155,156,157,158,161,165,166,171,172,173,174,175,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,202,203,205,206,207,209,210,211,212,213,216,217,218,219,221,222,223,224,225,226,227,228,230,231,234,236,237,238,240,242,243,244,245,246,247,248,249,250,251,253,254,255,265,267,270,272,273,274,275,276,277,278,279,280,284,287,288,290,291,293,294,295,298,299,301,302,303,305,307,308,309,311,314,315,316,319,320,322,330,331,333,334,335,337,338,339,340,342,343,344,345,346,348,349,350,351,352,354,355,356,357,359,360,362,363,365,366,367,369,371,375,376,377,379,382,384,385,386,387,388,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,442,443,444,445,447,448,449,450,451,452,453,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,484,486,487,488,490,491,492,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,513,514,515,517,518,522,523,524,525,526,528],young:[422,461,463],your:[],yourself:[6,8,12,13,228,386,518],yplane:352,ypo:178,ysu:[3,202,203,336,497],yuan:9,yukawa:[],yukawa_1_1:485,yxz:493,yzx:493,z_i:[417,481,488],z_j:[481,488],z_meam:442,zachari:13,zannoni:421,zbl:[],zblcut:481,zblcutinn:466,zblcutout:466,zblexpscal:481,zblz:466,zcm:316,zcylind:352,zepeda:216,zero:[],zeta:[3,256,307,418],zfactor:205,zflag:[165,166,257,259,266,316,341],zhang:[316,342,422],zhi:[3,6,180,202,214,345,351,354,356,496,499,514],zhi_bound:[6,202],zhou:[13,398,418,455,479,481],zhu:473,ziegenhain:13,ziegler:[301,442,475,481,488],zimmerman2004:215,zimmerman2010:215,zimmerman:[9,74,215,398],zlat:[230,251,514],zlib:[9,202],zlim:465,zlo:[3,6,180,202,214,345,351,353,354,356,496,499,514],zlo_bound:[6,202],zmax:[214,256,523],zmin:[256,523],zn2:177,zone:[130,318],zoom:[3,202,205,206],zorig:75,zplane:352,zr4:177,zrest:333,zsu:[3,202,203,336,497],zwall:351,zwall_veloc:256,zxy:493,zybin:458,zyx:493},titles:["LAMMPS Documentation","5. Accelerating LAMMPS performance","3. Commands","12. Errors","7. Example problems","13. Future and history","6. How-to discussions","1. Introduction","10. Modifying & extending LAMMPS","4. Packages","8. Performance & scalability","11. Python interface to LAMMPS","2. Getting Started","9. Additional tools","5.GPU package","5.USER-INTEL package","5.KOKKOS package","5.USER-OMP package","5.OPT package","angle_style charmm command","angle_style class2 command","angle_coeff command","angle_style cosine command","angle_style cosine/delta command","angle_style cosine/periodic command","angle_style cosine/shift command","angle_style cosine/shift/exp command","angle_style cosine/squared command","angle_style dipole command","angle_style fourier command","angle_style fourier/simple command","angle_style harmonic command","angle_style hybrid command","angle_style none command","angle_style quartic command","angle_style sdk command","angle_style command","angle_style table command","angle_style zero command","atom_modify command","atom_style command","balance command","Body particles","bond_style class2 command","bond_coeff command","bond_style fene command","bond_style fene/expand command","bond_style harmonic command","bond_style harmonic/shift command","bond_style harmonic/shift/cut command","bond_style hybrid command","bond_style morse command","bond_style none command","bond_style nonlinear command","bond_style quartic command","bond_style command","bond_style table command","bond_write command","bond_style zero command","boundary command","box command","change_box command","clear command","comm_modify command","comm_style command","compute command","compute ackland/atom command","compute angle command","compute angle/local command","compute angmom/chunk command","compute basal/atom command","compute body/local command","compute bond command","compute bond/local command","compute centro/atom command","compute chunk/atom command","compute cluster/atom command","compute cna/atom command","compute com command","compute com/chunk command","compute contact/atom command","compute coord/atom command","compute damage/atom command","compute dihedral command","compute dihedral/local command","compute dilatation/atom command","compute dipole/chunk command","compute displace/atom command","compute dpd command","compute dpd/atom command","compute erotate/asphere command","compute erotate/rigid command","compute erotate/sphere command","compute erotate/sphere/atom command","compute event/displace command","compute fep command","compute group/group command","compute gyration command","compute gyration/chunk command","compute heat/flux command","compute hexorder/atom command","compute improper command","compute improper/local command","compute inertia/chunk command","compute ke command","compute ke/atom command","compute ke/atom/eff command","compute ke/eff command","compute ke/rigid command","compute meso/e/atom command","compute meso/rho/atom command","compute meso/t/atom command","compute_modify command","compute msd command","compute msd/chunk command","compute msd/nongauss command","compute omega/chunk command","compute orientorder/atom command","compute pair command","compute pair/local command","compute pe command","compute pe/atom command","compute plasticity/atom command","compute pressure command","compute property/atom command","compute property/chunk command","compute property/local command","compute rdf command","compute reduce command","compute rigid/local command","compute saed command","compute slice command","compute smd/contact/radius command","compute smd/damage command","compute smd/hourglass/error command","compute smd/internal/energy command","compute smd/plastic/strain command","compute smd/plastic/strain/rate command","compute smd/rho command","compute smd/tlsph/defgrad command","compute smd/tlsph/dt command","compute smd/tlsph/num/neighs command","compute smd/tlsph/shape command","compute smd/tlsph/strain command","compute smd/tlsph/strain/rate command","compute smd/tlsph/stress command","compute smd/triangle/mesh/vertices","compute smd/ulsph/num/neighs command","compute smd/ulsph/strain command","compute smd/ulsph/strain/rate command","compute smd/ulsph/stress command","compute smd/vol command","compute sna/atom command","compute stress/atom command","compute force/tally command","compute temp command","compute temp/asphere command","compute temp/body command","compute temp/chunk command","compute temp/com command","compute temp/cs command","compute temp/deform command","compute temp/deform/eff command","compute temp/drude command","compute temp/eff command","compute temp/partial command","compute temp/profile command","compute temp/ramp command","compute temp/region command","compute temp/region/eff command","compute temp/rotate command","compute temp/sphere command","compute ti command","compute torque/chunk command","compute vacf command","compute vcm/chunk command","compute voronoi/atom command","compute xrd command","create_atoms command","create_bonds command","create_box command","delete_atoms command","delete_bonds command","dielectric command","dihedral_style charmm command","dihedral_style class2 command","dihedral_coeff command","dihedral_style cosine/shift/exp command","dihedral_style fourier command","dihedral_style harmonic command","dihedral_style helix command","dihedral_style hybrid command","dihedral_style multi/harmonic command","dihedral_style nharmonic command","dihedral_style none command","dihedral_style opls command","dihedral_style quadratic command","dihedral_style command","dihedral_style table command","dihedral_style zero command","dimension command","displace_atoms command","dump command","dump custom/vtk command","dump h5md command","dump image command","dump_modify command","dump molfile command","echo command","fix command","fix adapt command","fix adapt/fep command","fix addforce command","fix addtorque command","fix append/atoms command","fix atc command","fix atom/swap command","fix ave/atom command","fix ave/chunk command","fix ave/correlate command","fix ave/correlate/long command","fix ave/histo command","fix ave/time command","fix aveforce command","fix balance command","fix bond/break command","fix bond/create command","fix bond/swap command","fix box/relax command","fix colvars command","fix deform command","fix deposit command","fix drag command","fix drude command","fix drude/transform/direct command","fix dt/reset command","fix efield command","fix ehex command","fix enforce2d command","fix eos/cv command","fix eos/table command","fix eos/table/rx command","fix evaporate command","fix external command","fix freeze command","fix gcmc command","fix gld command","fix gle command","fix gravity command","fix heat command","fix imd command","fix indent command","fix ipi command","fix langevin command","fix langevin/drude command","fix langevin/eff command","fix lb/fluid command","fix lb/momentum command","fix lb/pc command","fix lb/rigid/pc/sphere command","fix lb/viscous command","fix lineforce command","fix manifoldforce command","fix meso command","fix meso/stationary command","fix_modify command","fix momentum command","fix move command","fix msst command","fix neb command","fix nvt command","fix nvt/eff command","fix nph/asphere command","fix nph/body command","fix nph/sphere command","fix nphug command","fix npt/asphere command","fix npt/body command","fix npt/sphere command","fix nve command","fix nve/asphere command","fix nve/asphere/noforce command","fix nve/body command","fix nve/eff command","fix nve/limit command","fix nve/line command","fix nve/manifold/rattle command","fix nve/noforce command","fix nve/sphere command","fix nve/tri command","fix nvt/asphere command","fix nvt/body command","fix nvt/manifold/rattle command","fix nvt/sllod command","fix nvt/sllod/eff command","fix nvt/sphere command","fix oneway command","fix orient/fcc command","fix phonon command","fix pimd command","fix planeforce command","fix poems","fix pour command","fix press/berendsen command","fix print command","fix property/atom command","fix qbmsst command","fix qeq/point command","fix qeq/comb command","fix qeq/reax command","fix qmmm command","fix qtb command","fix reax/bonds command","fix reax/c/species command","fix recenter command","fix restrain command","fix rigid command","fix rx command","fix saed/vtk command","fix setforce command","fix shake command","fix shardlow command","fix smd command","fix smd/adjust_dt command","fix smd/integrate_tlsph command","fix smd/integrate_ulsph command","fix smd/move_tri_surf command","fix smd/setvel command","<no title>","fix smd/wall_surface command","fix spring command","fix spring/chunk command","fix spring/rg command","fix spring/self command","fix srd command","fix store/force command","fix store/state command","fix temp/berendsen command","fix temp/csvr command","fix temp/rescale command","fix temp/rescale/eff command","fix tfmc command","fix thermal/conductivity command","fix ti/rs command","fix ti/spring command","fix tmd command","fix ttm command","fix tune/kspace command","fix vector command","fix viscosity command","fix viscous command","fix wall/lj93 command","fix wall/gran command","fix wall/piston command","fix wall/reflect command","fix wall/region command","fix wall/srd command","group command","group2ndx command","if command","improper_style class2 command","improper_coeff command","improper_style cossq command","improper_style cvff command","improper_style distance command","improper_style fourier command","improper_style harmonic command","improper_style hybrid command","improper_style none command","improper_style ring command","improper_style command","improper_style umbrella command","improper_style zero command","include command","info command","jump command","kspace_modify command","kspace_style command","label command","lattice command","log command","Description","mass command","min_modify command","min_style command","minimize command","molecule command","neb command","neigh_modify command","neighbor command","newton command","next command","package command","pair_style adp command","pair_style airebo command","pair_style awpmd/cut command","pair_style beck command","pair_style body command","pair_style bop command","pair_style born command","pair_style brownian command","pair_style buck command","pair_style buck/long/coul/long command","pair_style lj/charmm/coul/charmm command","pair_style lj/class2 command","pair_coeff command","pair_style colloid command","pair_style comb command","pair_style coul/cut command","pair_style coul/diel command","pair_style born/coul/long/cs command","pair_style lj/cut/dipole/cut command","pair_style dpd command","pair_style dpd/fdt command","pair_style dsmc command","pair_style eam command","pair_style edip command","pair_style eff/cut command","pair_style eim command","pair_style exp6/rx command","pair_style gauss command","pair_style gayberne command","pair_style gran/hooke command","pair_style lj/gromacs command","pair_style hbond/dreiding/lj command","pair_style hybrid command","pair_style kim command","pair_style lcbop command","pair_style line/lj command","pair_style list command","pair_style lj/cut command","pair_style lj96/cut command","pair_style lj/cubic command","pair_style lj/expand command","pair_style lj/long/coul/long command","pair_style lj/sf command","pair_style lj/smooth command","pair_style lj/smooth/linear command","pair_style lj/cut/soft command","pair_style lubricate command","pair_style lubricateU command","pair_style lj/mdf command","pair_style meam command","pair_style meam/spline","pair_style meam/sw/spline","pair_style mgpt command","pair_style mie/cut command","pair_modify command","pair_style morse command","pair_style multi/lucy command","pair_style multi/lucy/rx command","pair_style nb3b/harmonic command","pair_style nm/cut command","pair_style none command","pair_style peri/pmb command","pair_style polymorphic command","pair_style quip command","pair_style reax command","pair_style reax/c command","pair_style resquared command","pair_style lj/sdk command","pair_style smd/hertz command","pair_style smd/tlsph command","pair_style smd/tri_surface command","pair_style smd/ulsph command","pair_style smtbq command","pair_style snap command","pair_style soft command","pair_style sph/heatconduction command","pair_style sph/idealgas command","pair_style sph/lj command","pair_style sph/rhosum command","pair_style sph/taitwater command","pair_style sph/taitwater/morris command","pair_style srp command","pair_style command","pair_style sw command","pair_style table command","pair_style table/rx command","pair_style tersoff command","pair_style tersoff/mod command","pair_style tersoff/zbl command","pair_style thole command","pair_style tri/lj command","pair_style vashishta command","pair_write command","pair_style yukawa command","pair_style yukawa/colloid command","pair_style zbl command","pair_style zero command","partition command","prd command","print command","processors command","python command","quit command","read_data command","read_dump command","read_restart command","region command","replicate command","rerun command","reset_timestep command","restart command","run command","run_style command","set command","shell command","special_bonds command","suffix command","tad command","temper command","thermo command","thermo_modify command","thermo_style command","timer command","timestep command","Tutorial for Thermalized Drude oscillators in LAMMPS","LAMMPS GitHub tutorial","uncompute command","undump command","unfix command","units command","variable command","velocity command","write_coeff command","write_data command","write_dump command","write_restart command"],titleterms:{"break":225,"default":[36,39,40,55,59,60,61,63,64,75,95,96,100,112,113,115,117,118,130,134,135,152,158,166,167,171,177,178,181,183,197,200,201,202,203,205,206,207,208,210,211,212,214,215,216,218,222,225,226,228,229,230,231,235,242,245,246,251,253,254,255,256,257,259,265,268,270,271,275,293,294,298,299,302,303,304,305,306,308,311,313,314,316,318,334,336,341,342,343,344,347,349,351,353,357,370,374,376,377,379,380,383,384,386,388,389,390,392,395,398,400,417,439,440,445,447,457,458,474,475,491,492,493,496,497,499,501,503,504,505,508,510,512,513,514,515,516,522,524,526,527],"function":523,"long":[220,399,401,402,403,404,408,410,411,430,434,438,452,460,482],"new":8,"static":12,acceler:1,account:518,ackland:66,acknowledg:7,adapt:[210,211],addforc:212,adding:518,addition:[12,13,518],addtorqu:213,adiabat:6,adjust_dt:323,adp:393,after:518,airebo:394,alloi:415,amber2lmp:13,amber:6,angl:[8,67,68],angle_coeff:21,angle_styl:[2,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],angmom:69,append:214,arrai:6,aspher:[6,90,156,272,276,280,281,290],asphere:9,atc:[9,215],atom:[6,7,8,66,70,74,75,76,77,80,81,82,85,87,89,93,100,105,106,109,110,111,117,121,122,124,152,153,176,214,216,217,305,523],atom_modifi:39,atom_styl:40,attract:5,aveforc:223,awpmd:[9,395],axel:518,balanc:[41,224],barostat:6,basal:70,bcc:297,beck:396,berendsen:[303,337],between:6,binary2txt:13,bodi:[6,8,42,71,157,273,277,282,291,397],body:9,bond:[8,13,72,73,225,226,227,312],bond_coeff:44,bond_styl:[2,43,45,46,47,48,49,50,51,52,53,54,55,56,58],bond_writ:57,bop:398,born:[399,410],boundari:[7,59],box:[6,60,228],branch:518,brownian:400,buck:[401,402,410,441],bug:3,build:[11,12],calcul:6,call:12,categori:2,centro:74,ch2lmp:13,chain:13,chang:518,change_box:61,charmm:[6,19,184,403,438],chunk:[6,69,75,79,86,98,103,114,116,125,158,173,175,218,331],citat:7,class2:[9,20,43,185,360,404],clear:62,cluster:76,cmm:9,cna:77,code:6,coeffici:6,colloid:[9,351,406,487],colvar:[13,229],colvars:9,com:[78,79,159],comb3:407,comb:[308,407],come:5,comm_modifi:63,comm_styl:64,command:[2,6,8,12,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],common:3,comparison:1,compos:6,compress:9,comput:[2,6,8,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,523],compute_modifi:112,condit:7,conduct:[6,342],constant:[6,523],constraint:7,contact:[80,132],coord:81,core:6,coreshell:9,correl:[219,220],cosin:[22,23,24,25,26,27,187],cossq:362,coul:[399,401,402,403,404,408,409,410,423,430,434,438,452,460],coupl:6,creat:226,create_atom:178,create_bond:179,create_box:180,createatom:13,creation:7,csld:338,csvr:338,cubic:432,custom:[8,202,203],cut:[49,395,401,404,408,411,417,420,430,431,438,446,452,482],cvff:363,damag:[82,133],data2xmovi:13,data:6,databas:13,deby:[408,430],defgrad:139,deform:[161,162,230],delete_atom:181,delete_bond:182,delta:23,deposit:231,descript:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],diagnost:7,diel:409,dielectr:183,diffraction:9,diffus:6,dihedr:[8,83,84],dihedral_coeff:186,dihedral_styl:[2,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199],dilat:85,dimens:200,dipol:[6,28,86,411],dipole:9,direct:234,directori:4,discuss:6,disp:6,displac:[87,94],displace_atom:201,distanc:364,distribut:[7,12],document:0,dpd:[9,88,89,412,413],drag:232,dreid:424,dreiding:6,drude:[6,9,163,233,234,254,517],dsf:[408,430],dsmc:414,dump:[6,8,202,203,204,205,207],dump_modifi:206,dynam:307,eam:[13,415],echo:208,edip:416,eff:[9,13,106,107,162,164,169,255,271,283,294,340,417],efield:236,ehex:237,eim:418,elastic:6,emac:13,energi:[135,413],enforce2d:238,ensembl:7,erot:[90,91,92,93],error:[3,134],evapor:242,event:94,exampl:[4,6,11,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],exp6:419,exp:[26,187],expand:[46,433],extend:[8,11],extern:243,fcc:297,fdt:413,featur:[7,8,518,523],fene:[45,46],fep:[9,13,95,211],field:[6,7],file:6,finit:6,fire:307,fix:[2,6,8,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,523],fix_modifi:[210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],flow:6,fluid:256,flux:[99,154],forc:[6,7,154,335],fork:518,fourier:[29,30,188,365],freez:244,from:[6,11],futur:5,gauss:420,gaybern:421,gcmc:245,gener:[1,6,7,13],get:12,github:518,gld:246,gle:247,global:6,gpu:[9,14,396,399,401,403,404,406,408,411,412,415,420,421,423,430,431,432,433,446,448,459,460,467,476,477,479,480,481,486,487,488],gran:[352,422],granular:[6,9],graviti:248,gromac:423,group2ndx:358,group:[96,357,523],gyrat:[97,98],h5md:[9,202,204],harmon:[31,47,48,49,189,192,351,366,451],hbond:424,heat:[99,154,249],heatconduct:468,helix:190,hertz:[422,461],hexord:100,histo:221,histori:[5,422],hook:422,hourglass:134,how:6,hybrid:[32,50,191,367,425],idealga:469,imag:[202,205],imd:250,implicit:403,improp:[8,101,102],improper_coeff:361,improper_styl:[2,360,362,363,364,365,366,367,368,369,370,371,372],includ:373,inclus:8,indent:251,indice:0,individu:2,induc:6,inertia:103,info:[0,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,374],input:[2,6,8],install:11,integr:6,integrat:7,integrate_tlsph:324,integrate_ulsph:325,intel:[9,15,19,31,45,47,184,189,195,270,279,280,293,363,366,401,403,421,430,476,479],interfac:[6,11],intern:135,introduct:7,invers:234,ipi:252,ipp:13,jump:375,jun:0,kate:13,keyword:[447,523],kim:[9,426],kokkos:[9,16],kspace:[2,8,9,347],kspace_modifi:376,kspace_styl:[6,377],label:378,lammps:[0,1,2,6,7,8,11,12,517,518],langevin:[253,254,255],lattic:379,lcbop:427,lennard:441,librari:[6,11,12],limit:284,line:[12,285,428],linear:[437,448],lineforc:261,list:[2,429],lj1043:351,lj126:351,lj93:351,lj96:431,lmp2arc:13,lmp2cfg:13,lmp2vmd:13,local:[6,68,71,73,84,102,119,126,129],log:380,lowercas:4,lubric:439,lubricateu:440,luci:[449,450],make:[12,518],manifold:[9,286,292],manifoldforc:262,manybody:9,mass:382,math:523,matlab:13,mdf:441,meam:[9,442,443,444],measur:1,merg:518,mesh:146,meso:[109,110,111,263,264],messag:3,mgpt:[9,445],micelle2d:13,mie:446,min_modifi:383,min_styl:384,minim:[8,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,385],misc:9,mod:[346,480],model:[6,7],modifi:8,mol:154,molecul:386,molecule:9,molfil:[202,207],molfile:9,moltempl:13,momentum:[257,266],morri:473,mors:[51,394,424,448],move:267,move_tri_surf:326,movi:[202,205],mpi:11,mpiio:9,msd:[113,114,115],msi2lmp:13,msm:[399,401,403,408,430],msst:268,multi:[6,7,192,449,450],multipl:6,nb3b:451,ndx2group:358,neb:[269,387],neigh:[141,147],neigh_modifi:388,neighbor:389,nemd:6,newton:390,next:391,nharmon:193,noforc:[281,287],non:[6,7],none:[33,52,194,368,453],nongauss:115,nonlinear:53,nph:[270,271,272,273,274,316],nphug:275,npt:[270,271,276,277,278,316],num:[141,147],numer:523,nve:[279,280,281,282,283,284,285,286,287,288,289,316],nvt:[270,271,290,291,292,293,294,295,316],omega:116,omp:[9,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,43,45,46,47,48,49,51,53,54,56,184,185,187,188,189,190,192,193,195,196,198,248,270,272,274,275,276,278,279,288,290,293,295,308,360,362,363,365,366,369,371,393,394,396,399,400,401,402,403,404,406,407,408,409,411,412,415,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,444,448,451,452,454,459,460,467,476,477,479,480,481,482,484,486,487,488],onewai:296,open:7,operat:523,opl:195,opt:[9,18,403,415,430,434,448],optim:1,option:[6,8,12],orient:297,orientord:117,orthogon:6,oscil:517,other:6,output:[6,7,8,12,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],overlai:425,overview:11,own:518,packag:[1,9,12,14,15,16,17,18,392],pair:[6,118,119],pair_coeff:405,pair_modifi:447,pair_styl:[2,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489],pair_writ:485,pairwis:8,paquai:518,parallel:11,paramet:6,pars:2,partial:165,particl:[6,7,42],partit:490,past:5,per:6,perform:[1,10],peri:[9,454],period:24,phonon:[9,13,298],pimd:299,piston:353,planeforc:300,plastic:[122,136,137],pmb:454,poem:301,poems:9,point:307,polariz:6,poli:[400,439,440],polym:13,polymorph:455,post:7,potenti:[2,6,8],pour:302,pppm:6,prd:491,pre:7,press:303,pressur:123,previou:12,print:[304,492],problem:[3,4],process:[6,7],processor:493,profil:166,properti:[6,124,125,126,305],pymol_aspher:13,python:[9,11,13,494],qbmsst:306,qeq:[9,307,308,309],qmmm:[9,310],qtb:[9,311],quadrat:196,quantiti:6,quartic:[34,54],quip:[9,456],quit:495,radiu:132,ramp:167,rate:[137,144,149],rattl:[286,292,320],rdf:127,read_data:496,read_dump:497,read_restart:498,reax:[9,13,309,312,313,457,458],reaxc:9,rebo:394,recent:314,reduc:128,refer:523,reflect:354,region:[8,128,168,169,355,499,523],relat:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,97,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,244,245,246,247,248,249,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,311,312,313,314,316,317,318,319,321,322,323,324,325,326,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,373,374,375,376,377,379,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,501,502,503,504,505,506,508,509,510,511,512,513,514,515,516,519,520,521,523,524,525,526,527,528],relax:228,replic:500,replica:[6,7,9],report:3,repositori:518,requir:12,rerun:501,rescal:[339,340],reset:235,reset_timestep:502,resquar:459,restart2data:13,restart:[6,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,503],restrain:315,restrict:[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],rho:[110,138],rhosum:471,rigid:[6,9,91,108,129,259,316],ring:369,rotat:170,rule:2,run:[6,11,12,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,504],run_styl:505,scalabl:10,scalar:6,screen:12,script:[2,6,8,11],sdk:[35,460],self:333,serial:11,set:[6,506],setforc:319,setvel:327,shake:320,shape:142,shardlow:321,share:[11,12],shell:[6,507],shield:307,shift:[25,26,48,49,187],shock:9,simpl:30,simul:6,size:6,slater:307,slice:131,sllod:[293,294],small:316,smd:[9,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,322,323,324,325,326,327,329,461,462,463,464],smooth:[436,437,448],smtbq:[9,465],sna:152,snad:152,snap:[9,466],snapshot:6,snav:152,soft:[438,448,467],solver:2,sourc:7,spc:6,speci:313,special:[7,447,523],special_bond:508,sph:[9,468,469,470,471,472,473],sphere:[92,93,171,259,274,278,288,295],spheric:6,spline:[443,444],spring:[330,331,332,333,344],squar:27,srd:[9,334,356],srp:474,standard:9,start:[12,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],state:336,stationari:264,stefan:518,stop:[210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],store:[335,336],strain:[136,137,143,144,148,149],strategi:1,streitz:408,stress:[145,150,153,154],structur:2,style:[1,2,6,8],submit:8,suffix:509,summari:6,swap:[216,227],syntax:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,298,299,300,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],system:6,tabl:[0,6,37,56,198,240,241,477,478,479],tad:510,taitwat:[472,473],talli:154,tally:9,temp:[155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,337,338,339,340],temper:511,temperatur:6,tersoff:[479,480,481],test:11,tfmc:341,thermal:[6,342,517],thermo:[6,512,523],thermo_modifi:513,thermo_styl:514,thermodynam:[6,8],thermostat:6,thole:482,time:[6,222],timer:515,timestep:516,tip3p:6,tip4p:[6,408,430,434,438],tip:12,tlsph:[139,140,141,142,143,144,145,462],tmd:345,tool:[12,13],torqu:173,transform:234,tri:[289,483],tri_surfac:463,triangl:146,triclin:6,tstat:412,ttm:346,tune:347,tutori:[517,518],type:7,ulsph:[147,148,149,150,464],umbrella:371,uncomput:519,undump:520,unfix:521,unit:522,uppercas:4,use:447,user:[9,12,15,17],using:[6,11],vacf:174,valu:[6,523],variabl:[6,8,523],variou:1,vashishta:484,vcm:175,vector:[6,348,523],veloc:524,version:[0,5,12],vertic:146,via:12,vim:13,viscos:[6,349],viscou:[260,350],visual:6,vol:151,voronoi:[9,176],vtk:[9,202,203,318],wall:[6,351,352,353,354,355,356],wall_surfac:329,warn:3,water:6,weight:221,what:[7,12],wisdom:518,wolf:[399,408],wrapper:11,write:6,write_coeff:525,write_data:526,write_dump:527,write_restart:528,written:518,xmgrace:13,xmovi:13,xrd:177,your:518,yukawa:[486,487],zbl:[481,488],zero:[38,58,199,372,489]}}) \ No newline at end of file +Search.setIndex({envversion:50,filenames:["Manual","Section_accelerate","Section_commands","Section_errors","Section_example","Section_history","Section_howto","Section_intro","Section_modify","Section_packages","Section_perf","Section_python","Section_start","Section_tools","accelerate_gpu","accelerate_intel","accelerate_kokkos","accelerate_omp","accelerate_opt","angle_charmm","angle_class2","angle_coeff","angle_cosine","angle_cosine_delta","angle_cosine_periodic","angle_cosine_shift","angle_cosine_shift_exp","angle_cosine_squared","angle_dipole","angle_fourier","angle_fourier_simple","angle_harmonic","angle_hybrid","angle_none","angle_quartic","angle_sdk","angle_style","angle_table","angle_zero","atom_modify","atom_style","balance","body","bond_class2","bond_coeff","bond_fene","bond_fene_expand","bond_harmonic","bond_harmonic_shift","bond_harmonic_shift_cut","bond_hybrid","bond_morse","bond_none","bond_nonlinear","bond_quartic","bond_style","bond_table","bond_write","bond_zero","boundary","box","change_box","clear","comm_modify","comm_style","compute","compute_ackland_atom","compute_angle","compute_angle_local","compute_angmom_chunk","compute_basal_atom","compute_body_local","compute_bond","compute_bond_local","compute_centro_atom","compute_chunk_atom","compute_cluster_atom","compute_cna_atom","compute_com","compute_com_chunk","compute_contact_atom","compute_coord_atom","compute_damage_atom","compute_dihedral","compute_dihedral_local","compute_dilatation_atom","compute_dipole_chunk","compute_displace_atom","compute_dpd","compute_dpd_atom","compute_erotate_asphere","compute_erotate_rigid","compute_erotate_sphere","compute_erotate_sphere_atom","compute_event_displace","compute_fep","compute_group_group","compute_gyration","compute_gyration_chunk","compute_heat_flux","compute_hexorder_atom","compute_improper","compute_improper_local","compute_inertia_chunk","compute_ke","compute_ke_atom","compute_ke_atom_eff","compute_ke_eff","compute_ke_rigid","compute_meso_e_atom","compute_meso_rho_atom","compute_meso_t_atom","compute_modify","compute_msd","compute_msd_chunk","compute_msd_nongauss","compute_omega_chunk","compute_orientorder_atom","compute_pair","compute_pair_local","compute_pe","compute_pe_atom","compute_plasticity_atom","compute_pressure","compute_property_atom","compute_property_chunk","compute_property_local","compute_rdf","compute_reduce","compute_rigid_local","compute_saed","compute_slice","compute_smd_contact_radius","compute_smd_damage","compute_smd_hourglass_error","compute_smd_internal_energy","compute_smd_plastic_strain","compute_smd_plastic_strain_rate","compute_smd_rho","compute_smd_tlsph_defgrad","compute_smd_tlsph_dt","compute_smd_tlsph_num_neighs","compute_smd_tlsph_shape","compute_smd_tlsph_strain","compute_smd_tlsph_strain_rate","compute_smd_tlsph_stress","compute_smd_triangle_mesh_vertices","compute_smd_ulsph_num_neighs","compute_smd_ulsph_strain","compute_smd_ulsph_strain_rate","compute_smd_ulsph_stress","compute_smd_vol","compute_sna_atom","compute_stress_atom","compute_tally","compute_temp","compute_temp_asphere","compute_temp_body","compute_temp_chunk","compute_temp_com","compute_temp_cs","compute_temp_deform","compute_temp_deform_eff","compute_temp_drude","compute_temp_eff","compute_temp_partial","compute_temp_profile","compute_temp_ramp","compute_temp_region","compute_temp_region_eff","compute_temp_rotate","compute_temp_sphere","compute_ti","compute_torque_chunk","compute_vacf","compute_vcm_chunk","compute_voronoi_atom","compute_xrd","create_atoms","create_bonds","create_box","delete_atoms","delete_bonds","dielectric","dihedral_charmm","dihedral_class2","dihedral_coeff","dihedral_cosine_shift_exp","dihedral_fourier","dihedral_harmonic","dihedral_helix","dihedral_hybrid","dihedral_multi_harmonic","dihedral_nharmonic","dihedral_none","dihedral_opls","dihedral_quadratic","dihedral_style","dihedral_table","dihedral_zero","dimension","displace_atoms","dump","dump_custom_vtk","dump_h5md","dump_image","dump_modify","dump_molfile","echo","fix","fix_adapt","fix_adapt_fep","fix_addforce","fix_addtorque","fix_append_atoms","fix_atc","fix_atom_swap","fix_ave_atom","fix_ave_chunk","fix_ave_correlate","fix_ave_correlate_long","fix_ave_histo","fix_ave_time","fix_aveforce","fix_balance","fix_bond_break","fix_bond_create","fix_bond_swap","fix_box_relax","fix_colvars","fix_deform","fix_deposit","fix_drag","fix_drude","fix_drude_transform","fix_dt_reset","fix_efield","fix_ehex","fix_enforce2d","fix_eos_cv","fix_eos_table","fix_eos_table_rx","fix_evaporate","fix_external","fix_freeze","fix_gcmc","fix_gld","fix_gle","fix_gravity","fix_heat","fix_imd","fix_indent","fix_ipi","fix_langevin","fix_langevin_drude","fix_langevin_eff","fix_lb_fluid","fix_lb_momentum","fix_lb_pc","fix_lb_rigid_pc_sphere","fix_lb_viscous","fix_lineforce","fix_manifoldforce","fix_meso","fix_meso_stationary","fix_modify","fix_momentum","fix_move","fix_msst","fix_neb","fix_nh","fix_nh_eff","fix_nph_asphere","fix_nph_body","fix_nph_sphere","fix_nphug","fix_npt_asphere","fix_npt_body","fix_npt_sphere","fix_nve","fix_nve_asphere","fix_nve_asphere_noforce","fix_nve_body","fix_nve_eff","fix_nve_limit","fix_nve_line","fix_nve_manifold_rattle","fix_nve_noforce","fix_nve_sphere","fix_nve_tri","fix_nvt_asphere","fix_nvt_body","fix_nvt_manifold_rattle","fix_nvt_sllod","fix_nvt_sllod_eff","fix_nvt_sphere","fix_oneway","fix_orient","fix_phonon","fix_pimd","fix_planeforce","fix_poems","fix_pour","fix_press_berendsen","fix_print","fix_property_atom","fix_qbmsst","fix_qeq","fix_qeq_comb","fix_qeq_reax","fix_qmmm","fix_qtb","fix_reax_bonds","fix_reaxc_species","fix_recenter","fix_restrain","fix_rigid","fix_rx","fix_saed_vtk","fix_setforce","fix_shake","fix_shardlow","fix_smd","fix_smd_adjust_dt","fix_smd_integrate_tlsph","fix_smd_integrate_ulsph","fix_smd_move_triangulated_surface","fix_smd_setvel","fix_smd_tlsph_reference_configuration","fix_smd_wall_surface","fix_spring","fix_spring_chunk","fix_spring_rg","fix_spring_self","fix_srd","fix_store_force","fix_store_state","fix_temp_berendsen","fix_temp_csvr","fix_temp_rescale","fix_temp_rescale_eff","fix_tfmc","fix_thermal_conductivity","fix_ti_rs","fix_ti_spring","fix_tmd","fix_ttm","fix_tune_kspace","fix_vector","fix_viscosity","fix_viscous","fix_wall","fix_wall_gran","fix_wall_piston","fix_wall_reflect","fix_wall_region","fix_wall_srd","group","group2ndx","if","improper_class2","improper_coeff","improper_cossq","improper_cvff","improper_distance","improper_fourier","improper_harmonic","improper_hybrid","improper_none","improper_ring","improper_style","improper_umbrella","improper_zero","include","info","jump","kspace_modify","kspace_style","label","lattice","log","manifolds","mass","min_modify","min_style","minimize","molecule","neb","neigh_modify","neighbor","newton","next","package","pair_adp","pair_airebo","pair_awpmd","pair_beck","pair_body","pair_bop","pair_born","pair_brownian","pair_buck","pair_buck_long","pair_charmm","pair_class2","pair_coeff","pair_colloid","pair_comb","pair_coul","pair_coul_diel","pair_cs","pair_dipole","pair_dpd","pair_dpd_fdt","pair_dsmc","pair_eam","pair_edip","pair_eff","pair_eim","pair_exp6_rx","pair_gauss","pair_gayberne","pair_gran","pair_gromacs","pair_hbond_dreiding","pair_hybrid","pair_kim","pair_lcbop","pair_line_lj","pair_list","pair_lj","pair_lj96","pair_lj_cubic","pair_lj_expand","pair_lj_long","pair_lj_sf","pair_lj_smooth","pair_lj_smooth_linear","pair_lj_soft","pair_lubricate","pair_lubricateU","pair_mdf","pair_meam","pair_meam_spline","pair_meam_sw_spline","pair_mgpt","pair_mie","pair_modify","pair_morse","pair_multi_lucy","pair_multi_lucy_rx","pair_nb3b_harmonic","pair_nm","pair_none","pair_peri","pair_polymorphic","pair_quip","pair_reax","pair_reax_c","pair_resquared","pair_sdk","pair_smd_hertz","pair_smd_tlsph","pair_smd_triangulated_surface","pair_smd_ulsph","pair_smtbq","pair_snap","pair_soft","pair_sph_heatconduction","pair_sph_idealgas","pair_sph_lj","pair_sph_rhosum","pair_sph_taitwater","pair_sph_taitwater_morris","pair_srp","pair_style","pair_sw","pair_table","pair_table_rx","pair_tersoff","pair_tersoff_mod","pair_tersoff_zbl","pair_thole","pair_tri_lj","pair_vashishta","pair_write","pair_yukawa","pair_yukawa_colloid","pair_zbl","pair_zero","partition","prd","print","processors","python","quit","read_data","read_dump","read_restart","region","replicate","rerun","reset_timestep","restart","run","run_style","set","shell","special_bonds","suffix","tad","temper","thermo","thermo_modify","thermo_style","timer","timestep","tutorial_drude","tutorial_github","uncompute","undump","unfix","units","variable","velocity","write_coeff","write_data","write_dump","write_restart"],objects:{},objnames:{},objtypes:{},terms:{"00a":343,"00b":343,"02214e23":99,"03275e":522,"0892e":12,"0b1":11,"0e20":[359,499,523],"0e4":[268,352,422],"0e5":268,"0x98b5e0":205,"100k":1,"1024x1024":205,"10e":410,"10f":3,"10g":523,"10th":[491,497,510],"10x":[3,384,385,387,388,398],"10x10x10":166,"10x20x20":379,"15g":[206,523],"16e":317,"16g":[218,222],"16x":1,"18986e":385,"1_12":379,"1_3":379,"1_6":379,"1_prop":6,"1fluid":[419,450,478],"1st":[2,6,8,12,19,21,37,44,56,59,60,62,75,95,172,184,186,198,210,211,218,219,220,221,222,226,230,240,241,270,304,314,317,345,357,361,382,388,393,394,398,405,407,415,417,418,419,426,427,436,437,442,443,444,449,450,451,455,466,476,477,478,479,480,481,484,490,496,504,505,508,523],"1x2x2":493,"2000k":205,"20x":398,"23899e":385,"2400k":205,"2697v2":15,"2697v4":15,"298k":409,"2_3":379,"2k_ss":417,"2nd":[2,3,6,11,12,14,16,37,45,46,56,59,62,75,81,96,160,167,198,206,218,219,220,221,222,226,228,230,240,241,270,316,322,330,357,360,367,375,385,386,387,388,392,394,407,417,424,425,442,449,450,466,475,476,477,478,479,480,481,484,496,503,505,508,523],"2pi":198,"2theta":177,"2x1x2":493,"2x2x1":493,"2x2x2":493,"2x4x10":493,"2x5":417,"300k":[247,316,511,524],"310k":511,"3419e":268,"36x":15,"3806504e":[6,99],"3n_k":246,"3nk":306,"3nkb":311,"3rd":[4,9,14,16,19,37,56,75,115,125,198,218,219,221,222,226,240,241,316,318,357,386,390,392,407,417,419,424,425,449,450,466,476,477,478,479,480,481,484,496,503,508,523],"3x3":[99,379],"4857990943e":417,"49e":317,"4_94":11,"4th":[6,37,56,87,113,114,127,174,184,198,206,317,330,357,377,391,393,394,398,415,418,419,422,426,442,449,450,451,455,466,476,477,478,479,481,484,496,503,508,511,528],"4x10":375,"4x2x10":493,"4x6x10":493,"50k":1,"512k":15,"524k":15,"53xx":17,"54xx":17,"58i":210,"5_1":398,"5_12":379,"5_6":379,"5kx":[212,236],"5nlog_2":12,"5th":[127,385,419,513],"6021765e":522,"66e":317,"6863e22":454,"6x6":6,"7120p":15,"72360e":268,"7797e":268,"7842e":12,"8032044e":522,"8706e":465,"8706q":465,"8730m":465,"8730n":465,"8e12":220,"8x1":6,"8x2":[6,12],"948q":465,"9e18":[12,39],"9e9":454,"9jan09":[352,422],"9th":387,"__main__":494,"__pthread_key_cr":12,"_boundingbox":203,"_compute_group_group":154,"_compute_heat_flux":154,"_compute_t":8,"_j1m1m1":152,"_j2m2m2":152,"_manifold_rattl":518,"_pair_lj":9,"_serial":12,"_wirnsberg":237,"abstract":16,"boolean":[3,357,359],"break":[],"byte":[3,12,220,513],"case":[1,2,3,6,8,11,12,13,14,15,16,17,39,40,41,45,46,61,63,65,75,77,113,114,119,125,127,128,155,156,157,158,159,161,164,165,166,167,168,170,171,172,176,178,180,181,182,184,201,202,203,204,205,206,212,213,217,218,219,221,222,223,224,226,228,230,234,236,242,245,248,249,251,252,253,254,256,268,270,271,272,273,274,275,276,277,278,286,290,291,293,295,297,298,302,303,305,306,307,308,315,316,317,319,322,324,325,327,330,334,337,338,339,341,342,346,348,349,351,352,354,355,356,357,359,375,376,377,379,382,384,385,386,387,389,391,392,394,403,406,408,410,415,417,421,422,424,425,426,438,439,440,442,445,447,449,450,451,455,458,461,463,467,474,477,478,479,481,488,489,491,494,496,498,499,503,504,506,508,510,512,513,514,515,517,518,522,523,524,527,528],"catch":[1,3,494],"char":[6,8,465],"class":[1,3,5,6,7,8,9,11,12,13,21,36,44,55,186,197,243,305,361,370,404,425,457,458,475,484,494,496],"default":[],"else":[8,204],"export":[15,205,405],"false":[359,523],"final":[3,5,6,7,8,9,11,12,16,41,61,95,153,206,217,218,219,221,222,224,228,230,245,269,270,275,306,310,316,317,318,322,343,345,346,353,359,385,387,393,394,398,415,418,419,426,438,442,451,455,456,476,477,478,479,481,484,491,504,510,517,518,523,526],"float":[3,6,8,12,15,40,42,75,124,202,206,218,222,250,305,318,336,417,462,464,494,496,506,513,523],"function":[],"import":[1,2,3,6,9,11,16,75,115,178,189,209,228,245,248,249,253,254,270,311,337,338,339,341,346,356,358,438,445,458,494,496,505,513,517],"int":[3,6,8,11,111,243,245,253,255,311,346,513],"long":[],"new":[],"null":[3,6,99,100,117,123,153,178,209,223,229,232,235,267,305,314,317,319,322,326,327,330,332,352,393,394,407,415,418,422,425,426,427,442,443,444,451,455,457,458,466,476,479,480,481,484,496,499,504,506,524],"public":[0,7,8,12,243,252,418,449,450,456,465],"return":[2,3,6,8,11,14,15,16,17,18,41,75,118,119,128,146,147,151,176,178,206,218,230,243,270,359,373,375,422,493,494,495,503,506,512,514,523],"short":[1,3,6,7,9,13,15,176,270,316,334,347,377,381,388,389,392,394,398,399,401,402,403,407,408,410,417,425,428,430,434,438,441,442,447,448,452,460,465,477,482,491,494,504,506,510,517,518],"static":[],"switch":[1,3,6,10,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,99,123,152,155,165,177,184,185,187,188,189,190,192,193,195,196,198,205,208,212,216,223,230,238,244,248,252,253,256,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,343,344,354,360,362,363,365,366,369,371,373,375,377,380,387,391,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,445,448,451,452,454,457,458,459,460,467,476,477,479,480,481,482,484,486,487,488,490,491,493,496,498,499,503,505,509,511,518,523,526,528],"throw":513,"true":[6,12,13,16,119,126,129,202,203,218,224,226,230,270,271,297,298,299,303,316,341,345,357,359,392,417,422,465,476,494,498,506,523],"try":[1,3,8,12,16,18,218,250,256,342,343,344,349,494,518,523],"var":[3,11,12,178,357,375,507,523],"void":[4,6,7,8,41,181,224,243,499],"while":[1,3,9,11,12,13,17,75,115,152,161,176,189,202,207,216,228,230,234,246,247,252,253,254,256,262,270,293,306,307,311,313,347,377,385,392,398,409,415,457,458,479,481,484,491,494,505,510,517],a10:359,a123:359,a12:459,a2m:[6,99],a_0:[256,346,398],a_0_real:256,a_1:346,a_2:346,a_3:346,a_4:346,a_c:406,a_cc:406,a_f:481,a_ij:398,a_pi:398,a_sigma:398,a_ss:406,aat:185,aatom1:126,aatom2:126,aatom3:126,ab_23_cd:359,abbrevi:12,abc:[3,12,359,494,523],aberdeen:[88,89,239,321],abf:229,abf_integr:13,abi:207,abil:[3,228,270,303,316,417],abl:[3,8,9,11,12,39,94,202,207,227,236,244,286,342,349,392,494,523,527],ablat:346,abort:511,about:[0,1,3,6,8,9,11,12,13,15,16,39,41,42,63,65,82,119,126,127,130,172,178,202,203,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,234,235,236,237,238,242,243,244,245,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,269,275,279,280,281,282,283,284,285,286,287,288,289,292,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,318,319,320,330,331,332,334,335,337,338,339,340,341,342,343,344,345,346,348,349,350,351,353,354,355,356,357,374,377,384,385,387,392,397,403,408,425,454,458,487,494,497,498,503,504,506,511,515,518,523,526,528],abov:[1,2,6,7,8,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,37,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,59,65,66,71,74,75,76,77,80,81,94,95,97,98,99,103,104,106,107,123,125,127,130,152,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,176,177,178,180,181,184,185,186,187,188,189,190,191,192,193,195,196,198,202,203,204,205,206,209,210,211,212,213,218,219,221,222,224,227,228,230,231,236,240,243,245,249,251,253,254,255,259,269,270,275,299,302,304,309,315,316,317,322,330,334,337,338,339,340,357,359,360,361,362,363,364,365,366,367,369,371,377,379,382,386,387,391,392,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,428,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,447,448,449,450,452,454,455,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,490,491,492,493,494,496,497,498,499,500,503,504,505,506,507,510,511,514,517,518,523,524,527,528],abscissa:[449,450,477,478],absenc:213,absent:517,absolut:[3,206,216,229,230,234,322,336,376,377,385,422,430,497],absorb:346,absoult:377,ac3:177,academ:245,acc:341,acceler:[],accelri:[6,13],accept:[7,12,95,176,178,206,227,230,245,341,402,434,504,511,518],acceptanc:216,acceptor:424,access:[0,3,6,7,8,9,11,12,15,38,40,58,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,93,96,97,98,99,100,101,102,103,105,106,109,110,111,113,114,115,116,117,118,119,121,122,123,124,125,126,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,173,174,175,176,177,199,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,235,236,237,238,242,243,244,245,246,247,248,249,250,251,253,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,275,279,280,281,282,283,284,285,286,287,288,289,292,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,327,330,331,332,333,334,335,336,337,338,339,340,342,343,344,345,346,348,349,350,351,352,353,354,355,356,372,376,392,394,420,422,424,425,442,457,458,467,493,494,497,502,514,515,523],accident:518,accidenti:369,accler:[9,12],accommod:214,accomod:270,accompani:8,accomplish:[15,230,257,287],accord:[6,66,75,88,133,139,142,160,205,216,225,226,241,256,270,286,298,306,322,324,343,344,346,351,352,354,355,356,388,417,422,433,436,455,462,464,465,467,469,470,472,473,474,510,523],accordingli:[11,112,156,157,171,176,182,388,439,440,474],account:[],accuml:[3,316,342,349],accumul:[6,8,14,75,88,154,209,219,220,253,316,322,348,374,392,502,522],accur:[1,3,6,9,14,16,37,41,56,161,224,268,311,316,317,320,334,342,349,355,357,377,398,417,421,422,447,459,475,477,478,479,481,510,515,523],accuraci:[1,3,6,12,41,201,202,206,224,237,247,270,308,320,347,357,376,377,384,394,417,447,449,450,457,458,477,478,485,505,510,515,517,523,527],accuractli:515,ach:376,achiev:[1,3,6,9,10,15,16,17,28,41,224,237,245,247,270,271,286,298,299,306,376,425,505],achiv:17,acid:9,ackag:[212,223,238,244,320],ackland1:415,ackland2:415,ackland:[],acknowledg:[],acml:12,aco:523,acolor:[205,206],acoust:298,acquir:[3,6,60,63,64,181,182,226,228,230,270,453,489,501,517],across:[1,2,3,6,9,12,13,14,41,59,63,68,71,73,75,84,102,119,126,128,166,180,182,218,221,224,235,249,316,318,323,342,346,349,355,359,387,392,491,496,499,500,504,513,515],act:[3,6,119,129,163,234,248,251,252,253,254,256,259,269,316,327,341,343,344,346,355,356,357,385,400,411,421,422,424,459,474],acta:[130,177,393],actinid:[9,445],action:[2,6,11,12,75,246,251,344,517],activ:[5,8,11,12,13,15,55,61,95,176,229,246,250,253,259,265,269,296,316,317,325,345,374,438,475,505,517,520,523],active:[265,490],actual:[1,3,6,8,12,56,64,134,161,202,203,206,210,211,223,225,226,234,253,254,293,297,302,303,311,314,322,334,337,338,339,341,347,356,357,376,388,421,423,428,433,439,440,474,493,494,505,506,514,523],actualli:336,adam:[376,377],adapt:[],adapti:297,adaptiv:[9,229,394],add:[0,1,3,5,6,7,8,9,11,12,13,14,15,16,17,18,40,42,75,95,99,112,125,128,129,131,176,178,179,202,203,204,205,209,210,211,212,213,215,217,218,219,221,222,226,229,234,236,237,243,247,248,249,251,253,255,256,260,268,269,270,271,272,273,274,275,276,277,278,290,291,293,294,295,297,305,315,316,319,320,330,331,333,337,339,340,344,345,346,348,350,351,355,357,377,379,384,386,394,399,401,404,408,417,425,430,442,447,448,452,458,460,494,496,497,502,504,506,508,515,517,518],add_molecul:215,add_speci:215,add_to_nodeset:215,added:[497,518],addforc:[],adding:[],addit:[1,2,3,4,6,7,8,9,12,13,14,15,16,17,19,21,28,32,36,37,39,40,41,42,44,50,55,56,65,118,119,124,154,178,179,181,182,186,191,197,198,199,200,205,206,207,209,212,220,223,224,228,229,234,236,237,240,241,245,247,248,249,253,256,270,271,272,273,274,275,276,277,278,290,291,293,294,295,297,305,316,319,320,321,323,347,350,351,355,361,367,370,372,377,379,387,389,392,393,394,398,399,401,403,405,407,408,411,413,414,415,416,417,418,422,423,425,426,427,429,430,438,440,441,442,443,444,445,447,449,450,451,452,455,457,458,460,465,466,475,476,477,478,479,480,481,484,488,491,496,497,498,503,504,505,508,510,517,518,519,521,523,526,527,528],addition:[],additionali:203,addres:9,address:[7,8,11,205,252,518],addtorqu:[],adequ:[262,334,347,376,387,505],adher:28,adhikari:256,adiabat:[],adiam:[205,206],adjac:[39,176,178,237,387,447,477,478,479,510,511],adjiman:446,adjust:[2,3,6,15,16,41,61,130,140,156,157,158,161,162,165,166,171,172,177,182,202,205,218,224,228,230,250,253,257,261,266,267,270,271,275,293,297,300,302,303,306,307,308,309,314,316,325,334,338,342,347,349,350,351,353,354,356,376,377,385,387,392,394,414,439,440,465,481,506,524],adjust_radiu:325,adjust_radius_factor:325,admiss:275,adof:[158,218],adopt:[315,517],adp:[],adri:[9,312,457,458],adust:172,advanc:[3,15,250,398,491,502],advantag:[1,6,8,11,17,39,40,41,224,392,416,505,510],advect:[3,6,334],advertis:8,advis:[387,456,515],afer:3,affect:[1,6,10,14,16,40,62,63,75,96,128,153,162,176,182,205,206,211,218,219,221,222,225,226,227,228,230,231,237,243,249,251,253,259,265,267,271,272,273,274,276,277,278,284,290,291,293,295,316,318,332,346,356,369,376,383,384,385,387,388,389,392,417,439,440,447,493,494,496,498,499,501,504,506,515],affin:[15,16,17,230,392,407],affiniti:392,afile:247,aforement:17,afresh:[304,504,523],afshar:412,after:[],afterrun:504,afterward:3,afterword:41,ag1:177,ag2:177,again:[6,11,12,16,64,152,158,164,172,202,206,230,237,249,302,360,375,387,439,440,491,493,494,496,498,503,510,512,523,526],against:[11,12,13,66,231,387,457,458],aggreg:[6,12,68,71,73,84,102,119,126,249,266,314,316,332,491,524],aggress:[237,249,510],agilio:[9,13],agre:[3,8,198,385,394,427,458],agreement:[5,7],ahd:424,ahead:353,aidan:[0,5,7,9,13,379],aij:13,aim:6,airebo:[],ajaramil:[7,9,13],aka:205,akohlmei:[7,9,13,207,250],aktulga:[7,9,309,458],al2o3:465,al2o3_001:[130,318],al3:177,ala:[256,465],alain:9,alat:[297,442],albe:[455,479,481],albeit:315,albert:9,alchem:[95,172],alcohol:349,alcu:[393,398],alcu_eam:455,alderton:411,alejandr:[270,271],alessandro:13,algebra:445,algorithm:[0,1,6,7,8,9,41,63,206,209,215,224,227,230,237,249,256,258,259,284,299,307,316,320,321,341,342,346,349,354,383,384,385,389,392,413,417,440,445,462,464,491,493,510],alia:[9,15],alias:[1,377],aliceblu:206,align:[6,9,12,28,41,75,180,198,224,251,379,496,499,517],alkali:417,all:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,32,36,38,39,40,41,42,44,50,54,55,57,58,59,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,171,172,173,174,175,176,177,178,179,180,181,182,184,186,191,197,198,199,202,203,204,205,206,207,209,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242,243,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,262,263,265,266,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,329,330,331,333,334,335,336,337,338,341,342,343,344,345,346,347,348,349,351,352,353,354,355,356,357,358,359,360,361,365,370,372,374,375,376,377,378,379,382,385,386,387,388,389,391,392,393,394,395,397,398,399,401,402,403,404,405,407,408,411,412,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,434,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,487,488,489,490,491,493,494,495,496,497,498,499,500,501,503,504,505,506,507,508,509,510,511,513,514,515,517,518,522,523,524,526,527,528],allen:[28,95,411,421],allentildeslei:95,allign:3,allindex:358,alloc:[3,5,6,8,9,11,12,62,243,348,386,388,392,453,458,496,504],allocat:3,alloi:[],allosw:75,allow:[1,2,3,6,8,9,11,12,13,14,15,16,17,21,36,38,39,40,41,55,57,58,59,60,61,63,64,65,81,100,117,119,154,156,157,158,171,176,177,178,180,186,197,198,199,201,202,203,205,206,207,209,210,212,213,214,215,216,218,219,220,221,222,223,224,226,227,228,229,230,231,232,235,236,243,245,246,247,248,250,251,253,256,259,260,265,267,270,271,297,301,302,303,304,305,306,308,310,315,316,318,319,320,322,324,325,329,330,331,332,333,334,341,342,343,344,346,347,348,349,350,351,355,357,359,361,370,372,376,377,379,385,386,387,388,391,392,394,395,398,399,400,401,402,403,408,415,417,422,423,424,425,430,434,439,440,445,447,455,458,459,462,464,465,474,482,485,487,489,491,494,496,498,499,500,501,502,503,506,508,509,510,513,514,518,523,524],almost:[2,3,12,15,62,251,306,346,377,389,392,474],alo:408,alon:[6,7,227,312,457,458,494],alond:13,along:[6,8,12,28,40,75,95,130,176,177,178,201,202,205,218,227,237,251,256,257,261,262,267,269,306,316,320,322,326,330,332,341,345,346,352,355,357,379,381,383,384,385,387,408,411,422,425,428,430,434,442,457,458,477,478,496,499,506,507,523],alonso:[443,444],alpha:[6,12,51,210,256,306,307,311,385,393,396,399,408,412,413,415,416,418,419,424,429,430,442,448,454,480,482,514,517],alpha_c:438,alpha_i:466,alpha_lj:438,alphabet:[2,3,21,36,44,55,65,186,197,209,361,370,386,405,475,496],alphanumer:[3,65,209,305,313,359,386,523],alreadi:[3,7,8,9,12,16,17,42,57,178,179,181,204,214,218,224,226,230,260,304,306,334,357,358,386,387,412,423,425,432,440,474,485,488,492,496,497,501,506,522,523],also:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,28,35,36,37,39,40,41,42,44,54,55,56,60,61,63,65,69,75,76,77,79,81,86,87,88,89,95,97,98,100,103,113,114,115,116,117,118,123,125,127,128,131,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,170,171,172,173,174,175,178,179,180,181,182,184,186,197,198,200,201,202,203,204,205,206,207,209,210,211,212,214,217,218,219,220,221,222,223,224,225,226,227,228,230,231,236,239,240,241,243,244,245,246,247,249,250,253,254,255,256,265,267,268,270,271,272,273,274,275,276,277,278,283,287,288,290,291,293,294,295,297,298,299,301,302,303,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,326,327,330,332,334,337,338,339,340,341,345,346,347,348,350,352,355,357,358,359,361,367,370,374,376,377,379,380,382,385,386,387,388,389,391,392,398,402,403,405,409,410,411,412,413,415,416,417,421,422,424,425,426,434,438,439,442,445,447,451,453,454,455,456,458,459,460,462,469,470,472,473,475,476,477,478,479,480,481,482,484,491,493,494,495,496,497,498,499,500,501,503,504,505,506,508,509,510,511,514,515,516,517,518,519,521,522,523,524,526,528],alter:[3,6,8,9,11,12,41,61,155,156,157,158,159,161,164,165,166,167,170,171,178,182,202,203,205,207,210,211,218,225,226,227,228,230,269,270,311,314,316,319,327,334,342,349,356,384,387,425,496,501,503,506,523,524,528],altern:[1,6,8,9,11,12,15,16,17,99,178,202,209,219,230,239,250,254,270,305,316,317,341,342,349,362,366,376,384,385,393,394,408,413,415,416,418,427,430,438,442,443,444,451,455,456,466,476,479,481,484,494,496,497,509,511,514],alternat:[385,517],although:[15,28,42,198,259,270,303,307,316,341,375,503,517,528],aluminum:488,alwai:[0,6,11,12,15,16,17,54,59,65,75,176,206,218,219,220,222,226,229,245,247,251,308,311,316,334,351,355,356,360,376,377,383,385,386,388,389,392,401,404,415,433,445,449,450,457,458,465,467,477,478,479,481,488,491,496,497,499,501,508,510,513,517,523,524],amap:206,amatrix:247,amaz:11,amazingli:13,amber2lmp:[],amber:[],ambient:205,ambigu:[3,65,209,523],amd:[16,392,445],amino:9,amit:9,among:[15,153,216,256],amorph:[178,480],amount:[1,3,6,12,61,96,126,176,180,201,205,216,220,228,229,245,249,253,270,297,303,316,325,334,339,342,347,349,357,376,392,412,453,496,499],amplitud:[230,267,326,352,369,499,523],amu:245,amzallag:465,analag:[6,523],analalog:6,analog:[6,117,152,180,198,422],analys:[7,501],analysi:[7,9,13,65,66,77,207,312,313,323,358,445,466,496,506],analyt:[1,3,9,13,130,172,177,320,376,398,426,427,432,445,455,477],analyz:[6,8,9,13,387,445],andersen:[286,292,320],anderson:[301,412],andre:[7,9,13],andrew:13,andzelm:474,ang:[15,297,517],angl:[],angle1:315,angle2:315,angle:[3,8,15,21,28,32,36,37,68,386,496],angle_coeff:[],angle_cosine_shift:26,angle_cosine_shift_exp:[25,187],angle_cutof:424,angle_cutoff:424,angle_hybrid:[28,67],angle_info:458,angle_styl:[],angle_typ:40,angleangl:[3,360,367,496],angleangletors:[3,185,496],anglecoeff:[3,38],angles:206,angletors:[3,185,191,496],angletyp:226,angmom:[],angmomi:[124,129,202,203,336],angmomx:[124,129,202,203,336],angmomz:[124,129,202,203,336],angstrom:[6,10,61,75,129,130,167,177,178,201,202,203,205,206,214,230,231,245,250,251,267,309,314,351,353,354,356,377,379,383,389,393,394,403,415,438,442,451,456,457,458,481,488,499,505,522,524],angular:[6,28,40,63,65,69,90,91,92,93,116,124,129,152,156,157,170,171,178,202,203,209,253,259,266,267,272,273,274,276,277,278,280,281,282,285,288,289,290,291,295,314,316,320,326,336,393,398,407,422,439,440,442,445,455,475,479,480,496,506,523,524],angularm:281,anharmon:[26,53,187,311,510],ani:[1,3,6,7,8,9,10,11,12,13,15,16,21,28,37,38,39,40,41,42,44,55,56,58,60,61,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,184,186,198,199,201,202,203,204,205,206,209,212,213,214,216,218,219,222,223,224,225,226,227,228,229,230,231,233,234,236,237,241,242,245,248,249,251,253,256,259,266,267,270,275,297,299,301,302,303,305,307,308,309,311,313,314,316,319,320,322,326,327,330,333,334,335,336,345,346,351,353,355,357,358,359,361,372,375,376,377,379,382,383,385,386,387,389,390,391,392,394,398,402,403,407,408,411,412,415,416,418,421,425,426,427,434,445,447,449,450,455,457,458,459,466,475,476,477,478,479,480,481,482,483,484,489,490,491,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,514,515,517,518,519,521,522,523,524,526,527,528],anihil:[438,448],anim:[2,4,7,11,13,205,387],animat:[4,205],anion:[418,465],aniso:[3,228,230,270,271,272,273,274,275,276,277,278,303,316],anisotrop:[253,421,459],ann:446,annoi:518,annot:[7,476,479,480,481,484,496],annual:[491,510],anoth:[3,6,7,8,9,11,12,15,16,28,40,65,75,131,204,205,209,210,216,218,221,222,227,230,231,237,246,249,253,254,259,270,271,275,302,316,318,337,338,339,346,356,359,383,385,387,388,391,408,412,417,418,421,424,425,429,430,438,457,459,467,474,477,479,480,481,490,491,494,497,503,511,517,518,523,528],another:[1,6,12,76,95,127,305,316,381,505],ansi:[9,12,15],answer:[3,4,8,12,316,389,390],anthoni:344,antiquewhit:206,antisymmetr:[9,40,395],antisymmetri:417,antonelli:[343,344],antonio:454,any:[1,3,6,12,14,42,61,68,73,176,201,202,205,206,212,213,223,226,230,232,248,251,267,303,319,327,352,354,356,425,457,474,491,493,494,496,497,499,507,510,524],anymor:344,anyon:7,anyparticl:94,anyth:[8,11,178,230,252,476,479,481,507,518],anywai:[181,392,517,526],anywher:[12,178,405,442,466,523],aoff:[386,496],aparam:[95,210,211],apart:[3,179,259,330,388,397,467,496,505],aperiod:298,api:[9,11,12,207,426,494],appar:3,appear:[2,3,6,11,12,13,39,40,41,76,81,95,100,117,119,126,127,152,161,178,179,181,202,203,205,206,218,224,228,231,234,245,250,302,313,345,357,359,360,376,385,386,387,406,415,442,447,449,450,465,477,478,484,492,493,494,496,497,498,501,503,517,523,528],append:[],appendix:[28,411,465],appl:[228,270,271,484],appli:[2,3,4,5,6,8,9,12,16,17,28,32,41,50,59,61,63,65,75,76,95,96,115,127,152,153,158,164,166,168,172,177,178,180,184,186,191,197,201,202,203,205,206,209,210,211,212,213,215,218,224,228,229,230,232,235,236,237,239,240,241,243,244,245,246,247,248,250,251,253,254,255,256,260,270,271,275,276,277,278,284,290,291,295,296,297,299,303,306,314,315,316,319,320,322,323,326,330,331,333,335,337,338,339,340,342,344,345,346,349,357,376,379,385,386,387,397,399,401,403,408,411,417,419,422,423,424,425,427,428,430,436,440,445,447,450,452,457,460,461,462,463,464,474,478,482,487,496,497,499,500,501,505,506,508,513,515,517,523,524,526,527],applic:[1,6,9,12,15,16,207,227,231,232,243,245,247,250,297,302,305,315,322,330,342,349,376,392,481,506,517],applicat:215,appling:228,apply:[95,223,228,232,247,253,254,255,320,330,331,332,333],applyt:3,appopri:[9,16],approach:[6,7,15,202,215,246,298,299,311,316,341,342,344,346,349,376,398,408,410,413,414,421,425,445,459,461,463,474,485],appropri:[1,2,3,6,8,9,11,12,13,14,16,32,37,42,50,56,57,63,77,96,99,127,128,129,156,157,158,186,191,197,198,201,202,203,206,218,219,222,227,228,230,243,244,247,256,265,267,268,270,272,273,274,275,276,277,278,290,291,293,295,299,302,303,306,311,316,321,334,337,338,339,342,349,351,352,354,355,356,367,377,387,394,398,402,406,407,408,416,422,425,427,434,438,445,456,457,458,476,477,478,479,480,481,484,485,496,497,498,500,501,509,510,513,523,524],approri:248,approxim:[6,9,130,134,177,245,247,256,299,318,320,341,376,381,383,384,385,400,410,417,419,421,439,440,445,447,450,456,459,465,478,482,487,510,517],april:11,aprpopri:491,apu:[439,440],aqua:[205,206],aquamarin:206,ar_thermal:215,ar_ttm:215,ara:13,arbitrari:[6,40,60,127,202,203,205,207,229,230,248,270,299,303,307,317,476,494,507,523],arbitrarili:[11,61,127,152,201,228,270,408,523],arcco:3,arch:[1,9,12,14,16],architect:374,architectur:[392,445],archiv:[6,7,9,12,336,405,503],archive:[11,12],arcsin:3,area:[6,41,99,123,127,176,224,230,256,342,349,414,422,454,483,493,506],aren:[127,359,458],arflags:12,arg:[3,11,12,21,40,41,44,55,61,65,75,95,128,166,172,176,178,181,182,186,201,202,203,204,206,209,210,211,212,214,216,218,219,220,221,222,223,224,225,226,229,230,231,236,237,243,245,248,249,250,251,259,262,267,272,273,274,286,292,302,315,316,318,319,323,326,327,329,341,344,351,352,353,354,356,357,361,374,387,392,399,400,401,403,404,405,410,411,413,417,423,425,430,434,438,439,440,441,448,452,460,462,464,475,482,493,494,496,499,501,503,505,507,509,514,515,523,524,527,528],argon:245,argonn:12,args:494,argument:[2,3,6,8,11,12,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,65,77,95,99,117,123,127,152,153,155,160,165,166,167,172,176,178,179,180,182,184,185,186,187,188,189,190,192,193,195,196,198,202,203,206,209,210,211,212,214,217,218,219,220,221,222,223,224,228,229,230,238,240,241,243,244,245,247,248,252,253,259,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,301,302,304,308,309,313,316,317,318,319,320,334,346,348,352,354,357,359,360,361,362,363,365,366,367,369,371,374,375,377,378,379,382,387,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,410,411,412,413,415,416,418,419,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,441,442,443,444,447,448,449,450,451,452,454,455,457,458,459,460,465,466,467,475,476,477,478,479,480,481,482,484,486,487,488,490,491,492,493,494,495,496,497,499,501,504,505,506,507,511,513,514,523,524,527],aris:[12,487],arithmet:[3,6,113,376,403,406,433,447,482,483],arkansa:9,arl:[9,88,89,239,321],armv8:16,army:[88,89,239,321],arnold:376,around:[1,3,4,6,9,12,42,59,60,61,69,74,75,76,77,81,127,129,152,156,173,176,178,180,184,201,205,206,213,214,228,230,231,251,267,270,303,305,307,311,316,326,330,334,351,352,355,375,381,386,465,496,499,506,507,517,523],aroung:3,arrai:[],arrang:152,arrheniu:[317,510],arriv:15,art:[9,491,510],artefact:247,articl:[6,465],articul:[7,9,301],artifact:[96,176,517],artifici:[268,306,469,470,472],arun:13,arxiv:[152,204,286,292,381,466],ascend:[41,206,250,259,316,501],asci:7,ascii:[13,203,318,345,387,415,418,442,496],ash:[439,440],asid:[8,392],aside:[178,442],asin:523,ask:[3,11,518],askari:454,askoos:13,asoci:205,aspect:[6,7,61,230,245,421,459,483,496,506,510],aspect_ratio:318,asper:4,aspher:[],asphere:[],asq:[439,440],assembl:4,assign:[1,2,3,6,7,11,12,14,16,17,32,38,39,40,41,50,58,59,61,63,65,69,75,76,79,86,98,103,114,116,121,124,125,129,130,152,153,158,173,175,177,178,181,191,201,202,203,204,205,206,207,209,210,211,214,218,221,224,226,227,228,231,233,245,250,253,254,255,256,267,270,272,273,274,275,276,277,278,288,290,291,293,294,295,299,302,303,305,307,313,316,318,337,338,339,340,357,367,377,379,382,386,387,391,392,398,415,418,421,424,425,449,450,458,459,488,493,494,496,497,498,499,500,505,506,511,514,523,524],assignemnt:[6,505],assignment:14,assing:305,assingn:477,assist:[7,268],associ:[3,5,6,8,12,21,36,39,40,44,55,61,69,78,79,86,87,95,97,98,103,109,111,113,114,116,129,142,173,186,197,202,203,205,206,210,211,212,216,228,230,236,243,245,246,252,256,267,270,301,311,315,316,317,318,332,334,358,359,361,370,379,385,387,391,392,405,408,412,413,414,415,417,424,425,427,430,434,449,450,461,463,474,475,477,478,494,497,504,516,517,520,523],associd:70,assum:[2,3,4,6,9,11,12,16,17,39,61,70,75,96,106,112,114,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,176,178,181,206,210,211,216,218,219,221,222,228,230,242,250,252,256,259,272,273,274,276,277,278,280,282,285,288,289,290,291,295,297,298,302,303,304,307,316,319,322,330,342,345,346,351,354,357,364,376,377,386,387,392,398,400,402,405,406,414,417,424,425,429,434,439,440,491,493,494,496,498,501,506,510,513,514,517,518,524],assume:[172,387,483],assumpt:[176,250,393,447],astar:442,astart:467,asterisk:[21,44,63,81,95,127,172,182,186,206,210,211,259,316,361,382,405,424,474,490,493,506,522],astop:[385,467],asu:415,asub:442,asubrama:13,asum:305,asymmetr:[139,237,354,398,415],asynchron:[14,15],atan2:523,atan:523,atc:[],atc_fe_output:215,athomp:[0,7,9,13],atm2pa:6,atmospher:522,atobodi:129,atol:12,atom1:[301,315,386,496],atom2:[301,315,386,496],atom3:[301,315,386,496],atom4:[315,386,496],atom:[],atom_element_map:215,atom_forc:458,atom_info:458,atom_modifi:[],atom_styl:[],atom_vec:8,atom_vec_atom:8,atom_vec_electron:8,atom_veloc:458,atom_weight:215,atomey:[6,7,11,13,202,205,206],atomfil:[3,6,75,305,357,391,506,523],atomic:[0,465],atomic_charg:215,atomic_numb:455,atomid:[129,496],atomist:[6,215,341,445],atomperbin:3,atoms:[202,254,517],atomt:206,atomvec:8,attach:[6,299,322,330,496],attatch:344,attempt:[3,6,41,61,75,201,216,224,225,226,227,231,245,302,303,334,354,376,380,387,425,494,511,514,523],attend:215,attent:[14,17],attogram:522,attrac:442,attract:[],attribut:[3,6,7,8,9,11,39,40,42,60,65,75,95,124,125,126,128,129,156,172,202,203,205,206,209,210,211,217,218,221,227,228,270,272,273,274,275,276,277,278,280,281,290,291,293,295,303,316,318,336,337,338,339,379,386,398,417,425,496,497,498,506,514,523],atw:[439,440],atwater:480,atwt:442,atyp:[126,172,226,408,430,434,438],atype:172,au1:177,au3:177,aug:11,augment:[9,12,124,228,305,442],augt1:442,auo:313,auoh:313,author:[3,8,9,13,204,415,416,517],auto:[3,6,8,9,11,12,99,174,209,219,220,322,348,376,386,392,493],autocorrel:[65,99,253],autom:[9,12,205],automag:7,automat:[3,6,9,12,14,15,16,17,18,35,140,198,214,220,245,247,256,316,322,347,376,392,407,415,425,442,445,458,461,462,463,464,488,496,509,517,518,523],auxiliari:[1,6,9,11,12,13,202,298,316,497,501,526],avail:[1,3,5,6,7,8,9,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,63,65,95,123,124,152,155,165,176,184,185,187,188,189,190,192,193,195,196,198,202,205,209,210,212,218,221,222,223,228,229,230,238,244,246,248,249,250,253,270,271,272,273,274,275,276,277,278,279,280,286,288,290,291,292,293,295,308,309,310,316,318,319,320,344,354,360,362,363,365,366,369,371,374,377,381,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,442,443,447,448,451,452,454,455,457,458,459,460,466,467,476,477,479,480,481,482,484,486,487,488,497,499,505,509,523],availabl:15,avalo:[321,413],ave:12,ave_chunk:6,aveforc:[],avendano:446,averag:[3,6,7,12,14,41,65,66,75,88,89,95,99,100,113,115,127,130,154,158,166,174,177,202,203,206,209,211,215,217,218,219,220,221,222,223,224,228,245,247,249,253,259,270,271,275,298,303,306,312,313,316,317,318,322,360,394,413,417,419,442,450,478,482,497,501,514,517,523],averi:334,avesq:128,avg:12,avi:205,avoid:[1,3,6,12,35,39,61,129,178,179,198,205,214,219,221,222,234,245,247,254,297,299,307,311,316,318,348,355,390,398,417,438,442,448,458,477,478,482,498,504,505,517],avx2:15,avx512:15,avx:15,awai:[3,6,63,127,202,205,218,227,231,248,251,269,297,322,330,345,351,388,408,430,434,501],awar:[392,416,493],awpmd:[],axel:[],axi:[3,6,41,75,100,130,142,156,177,178,180,201,205,218,224,245,248,251,267,302,326,330,346,352,365,371,379,381,496,499,506],axial:275,azimuth:[205,248],azur:206,b_k:466,ba2:177,babadi:459,back:[1,6,7,11,12,13,14,16,129,159,160,161,165,166,167,168,170,178,182,202,203,206,207,210,211,229,234,243,250,251,253,254,270,276,277,278,290,291,293,295,305,314,316,337,338,339,343,344,353,354,356,375,376,377,387,422,494,496,497,498,499,500,503,509,510,523,524],backbon:[227,320,369],backcolor:[206,527],backend:16,background:[9,95,96,123,153,206,224,230,253,334,342,346,349,387,406,439,440,442],backtrack:[383,385],backward:[12,207,387,510,523],baczewski:246,bad:[3,12,61,63,251,387,496,501,513],badli:[3,228,270],bal:341,balanc:[],balasubramanian:294,ball:[152,439,440],ballenegg:376,bammann:215,band:[4,6,7,9,152,209,269,384,387,398,445,465],bandwidth:[1,10,17,40],bandwith:205,bar:[95,205,522],barashev:415,bare:[234,252,254],barost:[234,517],barostat:[],barostt:6,barr:407,barrat:311,barrett:70,barrier:[3,4,6,269,371,387,407,420,510],bartel:298,bartok2010:466,bartok2013:466,bartok:[9,152,456,466],bartok_2010:456,bartok_phd:456,bary:522,barycent:329,basal:[],base:[3,4,6,8,9,11,12,13,14,15,19,65,66,75,82,95,99,113,122,130,158,160,177,178,180,202,204,205,206,209,215,224,225,226,230,231,235,245,250,253,257,259,284,292,298,299,302,305,307,309,316,317,318,322,323,334,341,377,392,394,396,398,412,417,421,424,425,426,428,430,439,443,444,452,454,455,465,476,480,481,484,491,493,496,497,498,500,503,506,507,510,511,514,518,522,523,524,528],bash:405,bashford:[6,19,184,403,508],basi:[3,6,12,40,152,158,178,214,253,255,298,334,351,379,428,506,523],basic:[6,7,8,12,16,41,124,153,205,206,215,224,270,271,297,355,393,395,445,490,498,517],basin:[94,387,491,510],bask:[415,442,455],batch:515,bath:[9,306,311],batom1:[73,126,128,202,206],batom2:[73,126,128,202,206],bayli:[6,184,508],bb13:185,bcc:[],bcolor:[3,205,206],bdiam:[3,205,206],be2:177,bead:[5,7,10,13,40,45,46,170,213,227,299,474],beam:231,bear:[6,246],becau:13,becaus:[0,1,3,6,8,12,15,16,17,40,41,42,61,66,75,76,81,100,117,127,140,152,158,163,168,178,179,180,202,203,204,205,206,207,212,218,224,225,226,227,228,230,236,244,245,246,247,252,253,254,255,267,270,271,284,286,293,302,306,307,311,316,330,336,341,342,345,346,349,353,354,355,356,357,363,376,383,385,387,388,391,392,403,405,408,410,412,417,418,421,422,423,424,425,429,438,439,440,442,447,449,450,459,474,475,477,482,483,493,494,496,498,499,500,503,505,506,508,510,511,517,518,522,523,524,526,528],beck:[],becker:[393,415],beckman:250,becom:[1,2,3,6,7,8,15,17,39,41,54,59,61,75,180,202,203,205,206,224,225,226,227,230,237,245,247,256,269,270,313,314,337,338,351,352,354,355,356,376,377,383,387,394,406,408,415,417,421,430,447,455,459,476,484,487,496,497,499,506,518,523],been:[1,2,3,6,7,8,9,11,12,13,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,45,46,47,48,49,51,53,54,56,59,61,62,65,68,73,75,95,123,124,125,126,128,129,131,155,156,157,158,159,160,161,165,166,167,168,170,171,179,180,181,182,184,185,187,188,189,190,192,193,195,196,198,201,202,203,205,206,207,212,214,216,217,218,219,221,222,223,224,227,228,229,230,231,238,244,245,248,250,251,253,254,256,257,258,259,260,265,267,268,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,301,302,303,306,308,309,310,313,314,316,319,320,329,335,337,338,339,346,347,348,351,352,353,354,356,357,360,362,363,365,366,369,371,375,376,377,385,388,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,414,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,443,444,445,448,451,452,454,457,458,459,460,467,474,476,477,479,480,481,482,483,484,486,487,488,489,491,493,494,496,497,498,499,500,502,506,510,513,514,523,524,526,527],befor:[1,2,3,6,8,12,16,21,28,39,40,41,44,57,61,69,75,78,79,86,87,97,98,103,113,114,115,116,125,158,161,166,167,173,178,179,181,182,186,200,201,206,210,211,212,213,214,216,218,221,222,223,224,228,233,234,244,245,250,252,253,254,256,259,267,270,276,277,278,290,291,295,298,305,306,307,310,311,316,318,319,335,337,338,339,345,351,352,353,357,361,382,383,385,387,392,418,419,422,438,442,445,450,475,478,485,491,493,494,497,498,499,500,501,503,504,506,510,513,514,517,518,523,524,526,527,528],began:[5,12],begin:[3,8,12,37,39,56,75,128,131,179,198,201,202,206,210,211,215,217,218,219,221,222,224,230,240,241,265,284,301,314,317,318,331,334,336,339,348,353,356,357,373,375,376,377,378,380,384,386,387,388,391,415,419,445,447,449,450,455,462,464,465,467,474,477,478,488,491,496,503,510,512,514,522,523,526],behalf:3,behav:[3,26,187,384,385],behavior:[3,182,198,202,203,205,207,227,228,231,245,246,247,250,253,254,255,270,302,306,311,334,337,338,346,384,398,417,442,488,490,498,502,522,523,526],behaviour:[6,253],behind:[8,252,268,306,334,376],beig:206,belak:7,believ:11,bellott:[6,19,184,403,508],bellow:365,belong:[2,3,40,75,129,132,181,216,218,245,259,316,357,386,461,496],below:[1,2,3,4,5,6,8,9,10,11,12,14,15,16,21,37,39,40,41,42,44,54,56,61,62,65,68,71,73,75,81,84,99,102,123,124,127,128,130,152,153,158,164,166,172,176,177,178,181,182,184,186,197,198,201,202,203,205,206,209,210,212,213,215,218,219,220,221,223,224,226,227,228,230,231,236,240,241,243,245,248,249,251,253,254,259,267,268,270,275,276,277,278,290,291,295,297,302,305,306,307,314,315,316,317,319,320,327,330,334,335,336,337,338,339,342,343,344,346,349,351,352,357,359,361,374,376,379,381,382,383,385,386,387,389,392,393,394,395,398,399,400,403,404,405,406,408,411,415,417,418,419,421,422,423,424,425,428,430,431,432,433,434,435,436,437,438,439,440,441,442,446,447,449,450,454,457,458,459,460,466,467,474,475,477,478,483,484,486,487,488,489,490,491,494,496,497,498,499,501,503,504,506,508,509,510,512,513,514,516,517,518,523,524,528],bench:[1,6,9,10,11,12],benchmark:[1,7,10,11,12,13,14,15,16,17,41,224,376,509],beneath:231,benedict:445,benefici:[63,389],benefit:[1,15,246,482,505],bennet:95,beowulf:7,berardi:[421,459],beraun:346,berendsen:[],berensen:316,berger:9,berkelei:176,berkowitz:376,berlin:[7,9,322],bern:[3,299,307,308,407,421,465,475,505],bernendsen:6,beryllium:417,besid:[8,319,499],best:[1,6,8,14,15,16,17,18,270,293,294,315,316,392,398,408,430,434,447,477,478,497,505,510],beta:[6,306,393,396,415,416,418,442,479,480,481,514,523],beta_:398,beta_k:466,beta_pi:398,beta_sigma:398,beta_t:480,better:[3,6,7,8,12,15,26,152,187,211,224,245,256,270,284,307,314,316,334,377,387,392,479,518],betwe:397,between:[],beutler:438,bewteen:[119,219,334,342,349,425,428,493],beyon:505,beyond:[3,5,6,12,16,63,75,95,176,202,206,221,245,270,376,389,420,436,447,510,514,523],bflag1:[42,205],bflag2:[42,205],bgq:[16,445],bi3:177,bi5:177,bia:[3,6,8,123,153,156,157,158,159,160,161,165,166,167,168,170,171,209,218,229,230,245,253,254,270,276,277,278,290,291,292,293,295,311,337,338,339,341,524],bias:[6,9,229,524],biaxial:156,biersack:[442,475,481,488],big:[3,4,12,202,306,311,334,388,406,518],bigbig:[3,12],bigger:3,bigint:[3,243],bilay:[4,10,330],bilayer1:330,bilayer2:330,bill:7,billion:[3,7,10,12,39,245,504],bin2d:75,bin3d:75,bin:[3,6,11,12,39,65,69,75,79,86,98,103,114,116,125,127,158,166,173,175,202,206,218,221,298,306,311,331,334,342,349,388,389,392,414,453,497,527],binari:[3,6,7,9,12,13,15,32,36,50,55,191,197,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,242,243,244,245,246,247,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,318,319,320,322,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,367,370,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,497,498,503,526,528],binary2txt:[],binchunk:218,bind:[9,16,17,204,398,465],binsiz:[15,39,206,388,392],binstyl:166,bio:[40,388],biolog:[6,7],biologi:190,biomolecul:[301,316,376,377,403],biomolecular:505,biophi:[286,292,381],biophys:250,bios:15,biosym:13,bird:414,bisect:[41,224,483],bisector:[6,408,430,434],bispectrum:[65,152,466],bisqu:206,bit:[3,11,12,16,39,243,254,447,477,478,482,504,517,518],bitmap:[3,477,478,485],bitrat:[205,206],bitzek:384,bkgd_dyn:442,bks:[306,311],black:206,blais:[9,13],blanchedalmond:206,blank:[2,3,12,37,56,118,198,205,240,241,301,316,317,386,387,398,416,419,442,449,450,451,466,476,477,478,479,480,481,484,493,494,496,523],blas:12,blast:346,blend:442,block:[2,3,6,99,152,178,180,181,302,355,379,381,392,398,417,455,466,499,510,517,518],blocksiz:392,blow:[3,284,351,355,467],blown:3,blue:[2,205,206,227],bluegen:[202,376,445],blueviolet:206,bni:75,board:[377,411],bodi:[],body_nparticl:8,bodyflag:496,bodyforc:256,bodyforcei:256,bodyforcex:256,bodyforcez:256,bodystyl:[259,316],boff:[386,496],bogaert:341,bogu:[3,161,228],bogusz:96,bohr:[415,417,445,481,522],boltzmann:[6,7,9,95,99,123,155,158,159,160,161,164,165,166,167,168,170,218,227,241,253,256,257,258,259,260,275,350,412,511,522],bond:[],bond_coeff:[],bond_graph_cutoff:458,bond_harmon:[8,48,49],bond_harmonic_shift:49,bond_info:458,bond_interact:215,bond_styl:[],bond_typ:182,bond_writ:[],bondangl:[3,20,32,496],bondbond13:[3,185,496],bondbond:[3,20,32,496],bondchk:458,bondcoeff:[3,58],bonds:206,bondtyp:[225,226,386],bonet:[321,413],bonu:[3,526],book:[487,518],bookkeep:447,bookmark:0,boost:[1,3,12,66,388],bop:[],border:[3,7,15,63,346,524],boresch:95,boreschkarplu:95,born:[],boron:417,borrow:322,bose:311,botero:[7,9,13,417],both:[1,3,4,6,7,8,9,11,12,14,15,16,26,36,39,40,54,55,59,61,63,64,65,71,73,75,91,95,96,119,124,126,127,140,154,156,157,158,163,166,168,171,176,178,180,181,182,187,197,198,202,205,208,209,210,211,216,218,219,221,222,225,226,227,228,229,230,235,237,245,247,249,251,253,254,256,257,266,267,270,271,276,277,278,284,290,291,295,301,302,305,306,313,316,320,322,330,334,338,342,343,344,346,349,351,352,354,355,356,359,360,370,377,382,385,386,387,388,390,392,394,398,399,400,401,402,403,404,406,411,412,415,416,417,421,422,424,425,426,430,432,434,435,436,438,439,440,445,446,447,448,452,457,459,460,476,479,480,481,484,491,493,494,496,497,498,499,503,508,513,514,517,523,526,527,528],bottleneck:[1,3,494,515],bottom:[8,9,161,176,206,230,244,256,293,342,349,379,508],bottomwal:223,bounc:[3,334],bound:[3,6,16,25,26,41,42,59,61,75,167,180,187,201,202,203,206,221,224,230,231,235,245,254,270,302,334,351,352,353,354,355,356,376,385,417,496,499,510,517,523,524],boundar:3,boundari:[],boundary_dynam:215,boundary_faceset:215,boundary_integr:215,bounds:[6,41,202,224],bount:11,bourgogn:9,box:[],boxcolor:[205,206],boxxlo:11,bpclermont:[9,13],bptype:474,br1:177,bracket:[2,3,6,41,65,75,128,131,209,217,218,219,221,222,224,348,514,523],bragg:[130,177],branch:[],branicio2009:484,branicio:[77,484],breakabl:[7,44,55],breakag:[82,225],breakdown:[1,12,14,96,118,394,457,458,491,510],brennan:[9,88,89,239,321,413,449,450,474],brenner:[394,475],brick:[3,41,63,64,166,180,224,496,498,500,523],bridg:381,brief:[1,5,6,7,8,12,252,270,394,398,458,510],briefli:[6,10,299,407,465,518],brilliantov:422,bristol:[5,7],brittl:454,broader:494,broadli:8,broadwel:15,broken:[2,54,68,73,74,82,113,118,126,182,225,270,398,498,508,515,526],brook:6,brought:201,brown:[7,9,13,14,15,130,153,206],brownain:400,brownian:[],brownw:7,brows:0,browser:[4,205],bryantsev:424,bsd:12,bstyle:[40,42],btype:[57,73,126,179,202,408,430,434,438,474],buc:401,buck:[],buckingham:[7,9,210,211,307,377,399,401,402,410,441,475],buckplusattr:465,buffer:[3,8,203,205,206,513],bufi:205,bug:[],bui:205,build:[],builder:[7,13],built:[1,2,3,4,6,8,9,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,40,43,45,46,47,48,49,50,51,53,54,55,56,66,70,82,85,88,89,91,94,95,106,107,108,109,110,111,115,122,123,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,162,164,165,169,170,172,176,177,184,185,187,188,189,190,191,192,193,195,196,197,198,202,203,204,207,209,212,213,214,216,220,223,225,226,227,229,230,231,236,237,238,239,240,241,242,244,245,246,247,248,250,252,253,255,256,257,258,259,260,262,263,264,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,305,306,307,308,309,310,311,312,313,316,317,319,320,321,322,323,324,325,326,327,329,334,340,341,342,343,344,346,347,349,352,353,354,358,359,360,362,363,364,365,366,367,369,370,371,377,387,388,389,392,393,394,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,448,449,450,451,452,453,454,455,456,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,491,494,497,499,505,509,510,511],bulatov:[443,444],bulk:[4,6,74,256,297,303,409,442,445,447,454,461,463,465,500],bullet:7,bump:253,bunch:8,bundl:[9,205,207,518],burlywood:206,bussi1:338,bussi2:338,bussi:[247,338],button:518,buyl:[9,204],bybe:9,bypass:6,c11:[219,442],c12:219,c13:219,c1n:219,c21:219,c22:219,c23:219,c2n:219,c31:219,c32:219,c33:219,c34:219,c3n:219,c41:219,c42:219,c43:219,c44:219,c_0:[346,394,472,473],c_1:[71,73,128,129,130,177,202,206,246,305,318,357],c_2:[73,128,130,174,176,177,202,318,348,357],c_3:[128,318],c_6:176,c_cluster:6,c_cstherm:6,c_dist:128,c_doubl:11,c_e:346,c_flux:99,c_foo:523,c_forc:128,c_gauss:420,c_hb:424,c_i:241,c_id:[6,65,75,95,128,131,202,203,217,218,219,220,221,222,318,336,348,514,523],c_ij:6,c_ijkl:6,c_index:128,c_k:246,c_ke:342,c_msdmol:131,c_my_stress:217,c_mycentro:218,c_mychunk1:125,c_mychunk2:125,c_mychunk:[6,69,79,86,98,103,114,116,158,173,175],c_mycom:221,c_mycomput:218,c_myd:203,c_myf:[202,527],c_myrdf:[127,222],c_mytemp:[8,219,220,221,222,348,514,523],c_n_k:246,c_p:153,c_pe:121,c_peratom:[121,153],c_pi:398,c_press:128,c_prop:6,c_radiu:176,c_reax:[457,458],c_saed:318,c_sigma:398,c_size:6,c_stress:202,c_tdrude:[234,254,517],c_thermo_press:[8,219,220,221,222],c_thermo_temp:222,c_xrd:221,ca2:177,cach:[15,16,39,447,509],cacul:320,cadetblu:206,cai:517,calcal:9,calcforc:256,calclat:99,calcluat:[115,121,123,153,408],calcualt:[99,218],calcul:[],caldwel:[6,184,508],calhoun:299,call:[],callabl:[3,11],callback:[3,8,11,154,209,243,494],caller:3,calori:522,caltech:[6,7,9,13,417],calucl:6,calul:[11,12,158,377],cambridg:[9,456],campana:298,can:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,369,370,371,372,373,374,375,376,377,379,380,382,383,385,386,387,388,389,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,522,523,524,525,526,527,528],cancel:[209,316,524],candid:[182,216,245],cannot:[1,2,3,6,9,11,12,13,14,15,16,38,39,40,41,54,58,59,60,61,71,75,90,92,96,128,131,154,156,158,179,181,182,199,202,203,204,205,206,217,218,219,221,222,224,227,228,230,231,245,246,247,253,254,255,259,267,270,272,274,276,278,280,281,282,288,290,295,302,303,306,311,313,316,318,319,323,334,342,346,348,349,351,352,355,356,357,359,372,376,379,385,387,390,391,392,401,402,404,415,421,423,430,434,436,438,447,452,457,459,460,461,463,474,475,477,478,491,493,494,496,497,499,500,502,505,506,508,510,513,522,523],canon:[9,209,216,245,247,270,271,290,291,292,293,294,295,299,338,341,344,445,454],cao1:299,cao2:299,cao:299,capabl:[5,7,9,11,15,16,17,353,359,377,392,394,404],capac:[9,40,111,164,239,311,346,469,496,506],capit:[233,496],capolungo:[130,177,318],captur:[6,347,394,402,417,422,434,442,517],carbid:408,carbon:[7,205,369,394,407,427,442],card:[12,15,21,44,81,95,127,186,210,211,316,361,382,405,424,490,498,503,526,528],care:[3,6,61,75,178,181,201,218,225,226,231,247,252,256,270,302,316,341,397,494,496,499,500,505,506],carefulli:[11,12,54,313,357,425,427,501],carlo:[4,6,7,9,209,216,227,245,316,341,414,475],caro:[216,415],carpent:[7,13],carri:[15,263,305,346,422,458],carrillo:15,cart:[3,493],carter:[9,16],cartesian:[3,6,64,393,493],carv:181,cascad:[235,346],cash:7,cast:[247,523],cat:[14,15,205],catastroph:307,cate:256,categori:[],cation:[418,465],cauchi:[145,150],caus:[1,2,3,6,8,12,15,16,178,180,181,182,202,206,214,228,235,245,270,284,297,302,314,316,320,351,353,354,355,356,359,375,377,385,387,391,424,430,436,439,440,447,490,494,495,496,497,500,501,503,504,523,528],caution:[1,377],cautiou:[225,226],cautious:394,caveat:[394,505],cbecker:[393,415],cc1:[6,69,79,86,98,103,114,116,125,158,173,175,218],ccc:[416,476,479,481,484],ccflag:15,ccflags:[9,15,16,17,18,202],ccm6:415,ccsi:[416,476,479,481,484],ccu:398,cd2:177,cdeam:415,cdennist:9,cdll:11,cdof:[6,158,218],cdte:398,cdte_bop:398,cdtese:398,cdzn:398,cdznte:398,ce3:177,ce4:177,ceas:384,ceil:523,cell:[3,6,61,96,127,130,176,177,178,202,214,228,229,245,250,268,270,271,275,298,306,309,321,346,376,377,379,414,417,445,514],cella:[6,514],cellalpha:[6,514],cellb:[6,514],cellbeta:[6,514],cellc:[6,514],cellgamma:[6,514],center:[3,6,24,42,65,69,75,78,79,86,94,97,98,108,113,114,115,125,127,129,130,158,159,160,163,166,170,173,175,178,205,206,209,210,211,213,218,221,228,230,231,232,234,245,246,251,253,254,259,266,270,276,277,278,290,291,293,295,302,307,313,314,316,318,322,330,331,332,334,336,337,338,339,341,342,344,351,355,360,379,381,386,397,416,417,421,422,428,439,440,442,443,444,457,458,476,479,480,481,483,484,499,506,517,523],centimet:522,centr:237,central:[3,63,74,80,81,100,117,127,134,152,176,259,297,320,332,364,386,445,451,457,458,484,496],centro:[],centroid:[3,299,483,506],cerda:376,ceriotti2:247,ceriotti:[13,247,252],certain:[1,2,3,6,8,12,16,39,75,124,128,131,182,202,203,205,217,218,219,221,222,227,243,244,316,319,335,348,359,367,375,388,425,447,458,482,498,502,517,523],certainli:251,cerutti:377,cfg:[3,6,7,9,13,202,204,205,206,207],cfile:458,cfl:[140,323],cfor:322,cg_type:460,ch2:320,ch2lmp:[],ch3:320,ch5md:204,chain3:388,chain:[],challeng:[6,322],chalopin:311,champaign:[250,376,377,439],chan:445,chandler:[393,415],chandrasekhar:[6,430],chang:[],change_box:[],changeabl:202,channel:[4,212],chapter:[299,377],charact:[2,3,6,12,37,41,56,65,198,202,203,205,206,207,209,224,240,241,305,313,317,359,386,391,417,419,429,449,450,455,457,458,465,477,478,493,494,498,503,504,523,526,527,528],character:[6,70,74,117,127,152,466,491,510],characterist:[254,334,343],charg:[1,3,4,5,6,7,9,11,14,40,86,95,96,124,130,177,178,202,203,207,209,210,211,216,231,236,245,305,307,308,309,313,336,349,376,377,386,399,401,407,408,410,411,415,417,418,425,430,434,438,452,457,458,465,475,481,482,484,485,487,488,496,497,501,506,508,517,522,523],charmm2lammp:13,charmm:[],chartreus:206,cheap:334,cheaper:[235,421,459],check:[3,6,8,9,11,12,14,16,38,39,41,58,75,99,198,199,216,224,225,226,231,242,245,251,252,302,315,320,334,342,344,349,357,359,372,375,385,386,387,388,389,392,414,426,429,447,458,489,491,493,494,496,504,510,513,514,515,523],checkf:198,checkout:518,checkqeq:458,checku:198,chem:[6,13,19,20,24,39,40,43,45,46,95,96,117,123,153,184,185,195,220,229,234,237,246,247,254,256,269,270,271,293,294,299,303,306,308,316,321,322,334,337,338,341,342,343,344,351,360,369,371,376,377,384,387,394,399,403,404,407,408,409,411,412,413,417,420,421,423,424,430,434,435,438,442,446,447,449,450,452,465,474,482,505,508,510,517],chemic:[9,40,88,89,130,172,177,202,203,215,216,245,307,312,313,341,377,419,450,457,458,470,478],chemistri:[306,307,309,394,398,417,457,458],chen:346,cheng:407,chenoweth:[457,458],chenoweth_2008:[457,458],chi:[102,167,201,297,307,309,372,418,421,524],chiefli:456,child:8,chip:[7,9,16,17,392,509],chipot:229,chiral:369,chmod:[11,12],cho:442,chocol:[7,206],choic:[3,6,9,12,14,15,17,40,41,54,95,153,156,157,171,182,198,218,224,227,230,231,247,253,256,268,270,299,303,307,316,341,370,377,383,384,387,389,392,425,438,447,453,458,496,505,506,509,510,516,517,522],choos:[1,3,6,7,8,9,12,16,17,28,39,54,95,128,168,169,205,225,226,227,228,231,242,253,256,268,270,272,273,274,275,276,277,278,302,303,321,334,338,352,376,377,384,485,491,493,505,511],chose:[479,481],chosen:[2,3,6,12,16,152,178,181,190,198,205,211,216,228,231,242,245,246,254,256,268,270,275,299,302,313,334,338,341,342,347,349,350,356,377,378,384,392,413,417,422,429,432,460,479,491,505,510,511,517],chri:176,christian:[7,9,16],christoph:7,chunk:[],chunkid:[69,79,86,98,103,114,116,125,158,173,175,218,331],chute:[4,9,10,248],ciccotti:320,cieplak:[6,184,508],cii:219,cij:219,circl:[42,75,329],circular:[3,6,156,200],circumst:17,circumv:[100,117,311],citat:[],cite:[3,7,8,12,253,465],civ:9,cl1:177,clarendon:[28,411],clarifi:[7,479,481],clariti:359,clark:452,class2:[],classic:[0,3,5,6,7,8,9,15,243,299,306,311,346,371,417],classifi:[475,484],claus:494,clean:[6,12,14,16,504],cleanli:[495,514,527],clear:[],clearli:7,clebsch:152,clermont:[9,13],clever:500,click:[2,11,21,36,44,55,178,186,197,205,250,361,370,387,405,475,518],client:[250,252],climb:[269,387,510],clinic:[7,13],clo:[167,201,524],clock:[12,491,510,515],clockwis:[184,352],clone:518,close:[3,6,11,12,13,39,41,70,75,153,181,202,226,227,228,247,254,256,270,286,293,316,320,352,355,375,377,380,383,384,387,392,394,398,408,409,428,442,447,449,450,457,461,463,477,481,500,506,517,518,520],closer:[3,10,41,127,176,201,202,224,228,232,343,387],closest:[226,297,316,349,421,459,474,485],cloud:[465,517],clovertown:17,clsuter:76,clump1:[301,316],clump2:[301,316],clump3:[301,316],clump:316,cluster:[],clutter:3,cmap:496,cmatrix:247,cmax:442,cmd:[11,12,299,507],cmdarg:11,cmin:442,cmm:[],cmoput:145,cn1:219,cn2:219,cna:[],cnn:219,cnr:13,cnrs:9,cnt:[425,500],co2:[40,177,317,320,386,419],coars:[7,9,10,28,35,40,54,190,241,301,316,317,334,419,423,450,460,478,505,508],coarser:[377,523],coarsest:152,code:[],coeff:[3,7,8,12,20,21,32,44,50,184,185,186,191,360,361,367,405,425,429,447,462,464,467,496,525],coeffcient:496,coeffici:[],coefficienct:412,coefficient0:415,coefficient1:415,coeffieci:[6,396,428],coeffincientn:415,coexist:[245,417],cohes:[6,418,442],coincid:[134,355,403,439,440,491],colberg:204,cold:[6,163,245,249,388,517],coldest:342,coleman8:9,coleman:[9,130,177,318],colin:9,collabor:[7,8,14],collect:[3,6,7,8,9,13,40,42,69,79,86,91,98,103,108,114,116,125,158,166,173,175,178,202,203,206,218,229,259,266,301,311,314,316,357,376,386,388,406,496,503,509,515,528],collid:[235,334,356],colliex:177,collinear:[3,301],collis:[3,256,334,352,356,414,422,488],colllis:334,colloid:[],colombo:39,colon:[207,357,497,515],color1:206,color2:206,color:[3,9,41,202,205,206,224,246,306,311],column:[3,6,9,12,13,42,65,68,69,70,71,73,75,79,81,84,86,87,89,98,100,102,103,114,116,117,119,121,124,125,126,127,128,129,131,152,153,158,166,173,175,176,177,198,202,203,206,209,217,218,219,221,222,259,267,268,306,316,335,336,346,356,394,420,424,457,458,497,511,513,523],columnar:176,colvar:[],colvarmodul:12,com:[],comamnd:230,comand:227,comannd:392,comb3:[],comb:[],comb_1:308,comb_2:308,combiant:409,combin:[3,6,7,9,11,13,35,40,65,68,73,84,95,102,113,119,126,156,157,171,202,205,215,221,237,245,250,259,262,270,286,292,299,305,321,338,347,355,358,360,376,377,379,384,392,406,408,409,413,417,418,419,425,437,438,466,476,479,481,482,484,487,499,504,509,517,523,525],come:[],comfort:[12,13],comid:331,comit:518,comm:[0,3,11,12,63,77,204,250,252,253,377,387,392,412,447,454,477,478,498],comm_modifi:[],comm_modift:63,comm_styl:[],comm_world:11,command:[],comment:[2,4,7,11,12,37,56,184,198,202,240,241,254,316,317,346,386,387,393,415,416,418,419,429,442,449,450,451,458,465,466,476,477,478,479,480,481,484,493,494,496,517,518,523],commerci:7,commit:[9,518],commmand:[3,6,12,61,118,294,428,490,491,493,510,527],common:[],commonli:[3,6,9,12,16,24,59,61,115,117,180,202,205,207,371,423,432,466,479,481,496,499,508],commun:[1,3,6,7,8,9,10,11,12,14,15,17,40,41,60,63,64,75,176,181,182,205,206,224,225,226,228,229,230,250,252,256,258,259,260,270,298,305,307,308,309,316,321,334,346,357,374,376,388,389,390,392,413,414,453,489,493,494,505,506,523,526,528],communc:376,comp:[7,204,252,253,286,292,320,377,387,417,447,454,459,473,477,478,480],compact:[65,209,405,475],compani:[5,7],compar:[1,3,4,6,8,12,15,16,39,94,121,130,161,177,186,197,206,234,307,357,359,376,377,385,387,442,465,491,510,511,517,522],comparison:[],compart:381,compass:[7,9,20,21,36,43,44,55,185,186,197,360,361,370,404,475],compat:[3,5,7,8,9,11,12,13,16,17,41,75,128,131,189,202,207,211,217,218,219,221,222,224,237,298,310,338,341,348,351,354,376,392,426,445,447,477,493,494,523],compens:[6,225,226,314,388,417],compet:345,competit:377,compil:[3,7,8,9,12,13,14,15,16,17,18,176,202,204,205,207,250,345,377,392,445,496,497,501,517,523],compl:16,complain:[11,12,16],complement:442,complementari:[7,408,430],complet:[3,6,9,11,12,14,41,61,75,206,224,229,259,299,302,305,334,345,347,358,359,375,387,392,418,462,464,483,491,496,501,504,508,510,513,517,523],complex:[4,6,8,11,12,13,24,40,42,64,100,117,152,154,166,178,179,256,286,329,355,374,387,417,445,477,478,494,496,499,523],compli:[341,345],complic:[6,7,9,12,13,129,216,245,494],complier:12,compon:[3,6,8,12,63,65,69,70,77,86,87,96,97,98,99,100,103,104,107,112,114,115,116,117,118,119,120,121,123,124,128,129,139,142,143,144,145,148,149,150,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,173,174,175,201,202,203,205,206,212,213,217,218,219,220,221,222,223,227,228,230,231,236,237,243,248,252,253,256,259,261,262,266,267,269,270,271,275,276,277,278,290,291,293,295,296,298,299,300,303,314,316,319,320,322,326,327,330,334,337,338,339,341,348,349,354,355,356,376,379,384,385,386,387,392,412,417,422,439,440,462,464,465,466,496,497,506,514,523,524],componenet:6,componennt:129,composit:[6,216,256,415],compound:[407,417,418,484],compres:[75,125,218],compress:[],compris:[40,355,419,459,483],compton:[130,177],comptu:3,compuat:377,comput:[],computation:[3,6,225,226,346,398],computational:517,compute_arrai:8,compute_inn:8,compute_ke_atom:8,compute_loc:8,compute_modifi:[],compute_peratom:8,compute_sa:[130,318],compute_scalar:8,compute_temp:8,compute_vector:8,compute_xrd:177,concaten:[2,3,527],concav:355,concentr:[75,241,317,415,419,450,478],concept:[6,158,168,218,505],conceptu:[3,6,75,166,228,230,387,408,425,442,501],concern:[6,77,95,204,246],concetr:75,concis:[11,345],conclud:12,concret:8,concurr:[15,377,523],conden:[346,479,481],condens:[6,160,346,394,410,415,430,484],condit:[],conducit:6,conduct:[],cone:499,confer:[15,445],confid:[3,510],config:[12,202,493],configfil:229,configur:[1,2,6,12,14,15,16,37,61,134,180,198,201,202,205,209,228,229,230,231,235,245,252,253,284,299,307,345,374,385,387,394,398,416,442,445,476,479,481,484,491,496,498,499,510,514,518],confin:[496,510],confirm:515,conflict:[3,12,40,203,447,494,518],conform:[3,6,13,61,227,228,269,315,322,345,369,387,417,508],confus:[3,484],conjuct:[9,412],conjug:[7,8,253,384,417,457,458],conjunct:[6,7,75,94,95,125,161,166,172,178,182,206,210,211,253,256,260,284,302,303,307,308,309,311,316,321,334,342,349,354,376,377,387,399,401,405,408,412,413,417,424,430,447,452,460,482,496,499,503,517,528],connect:[3,6,9,95,163,181,227,250,301,316,320,330,381,387,409,422,457,458,474,481,493,494,496,500,517],conner:394,connor:394,conput:3,consecut:[3,11,12,39,75,178,206,210,211,231,250,251,408,430,434,491,497,499],consequ:[1,6,216,346,429,510],conserv:[3,9,28,209,216,227,234,235,246,249,253,255,256,260,266,268,270,284,286,316,320,321,337,338,342,349,350,354,387,411,412,413,422,436,465,505,510],consid:[6,74,75,82,95,126,129,160,163,164,181,202,203,206,210,211,217,219,224,226,227,231,257,271,298,316,341,342,345,346,349,377,405,417,425,458,459,465,474,491,492,494,497,498,499,501,504,506,514,517,523],consider:[6,8,253,254,337,338,339,392,458,505],consist:[3,6,8,9,11,12,40,42,68,73,84,102,114,119,122,123,126,129,158,161,163,178,190,201,207,212,213,218,230,231,234,236,243,246,253,254,255,267,270,272,273,274,275,276,277,278,279,280,282,283,284,285,288,289,290,291,293,294,295,303,306,311,313,314,315,316,317,337,338,339,340,350,376,377,379,381,386,387,392,394,398,400,406,408,417,421,425,428,439,440,442,445,447,449,450,459,462,464,465,477,478,485,494,496,497,498,499,500,501,508,517,523],consistent_fe_initi:215,consit:316,constant:[],constantli:237,constitu:[3,6,259,316,351,355,406,459],constitut:[462,464],constrain:[3,6,8,9,155,156,157,158,159,161,164,165,166,167,168,170,171,209,218,231,237,245,246,251,259,262,264,286,292,301,302,314,316,320,332,342,349,385,386,417,501,508,517],constraint:[],construct:[6,8,12,37,54,56,63,66,70,74,76,77,81,100,117,130,152,177,228,270,298,315,317,355,388,392,411,445,447,474,476,477,478,499,500,515,523],constructor:[8,11],consult:[15,458],consum:[1,311,453,523],consumpt:374,contact:[],contact_stiff:[461,463],contain:[0,1,2,3,4,6,8,9,11,12,13,16,17,18,37,40,41,56,65,95,99,127,130,152,154,158,166,176,177,178,180,184,186,197,198,202,203,205,206,207,209,210,211,215,217,218,219,221,222,224,229,231,236,240,241,247,251,252,253,256,268,284,297,298,301,302,304,305,306,309,313,316,317,318,323,334,341,345,346,355,356,359,375,377,386,387,390,391,393,394,395,398,407,408,411,415,416,417,419,425,426,442,445,449,450,451,455,456,457,458,466,476,477,478,479,480,481,482,484,491,492,493,494,496,497,498,499,501,503,505,508,510,511,513,514,517,518,523,526,528],content:[4,8,9,12,17,458,512,514],context:[3,6,8,12,15,16,127,128,206,225,226,231,301,313,350,384,487,496,503,512,522,523,524],contibut:74,contigu:493,contin:15,continu:[0,2,3,5,6,9,12,13,41,75,87,113,114,174,206,209,210,211,216,218,219,220,221,222,224,227,228,229,230,231,237,245,246,247,249,250,251,253,254,255,261,267,268,270,272,273,274,275,276,277,278,290,291,293,294,295,300,302,305,306,316,318,322,333,334,336,343,344,346,352,355,359,375,391,392,398,412,414,432,435,457,458,459,462,464,480,491,494,496,498,499,504,510,511,513,514,523,526],continuum:[6,7,9,215,346,462,464],contour_integr:215,contract:[61,228,230,270,303,316],contradictori:3,contrain:320,contraint:284,contrari:[247,254],contrast:[1,6,42,55,66,160,163,203,230,357,462,464,487,527],contrib:346,contribut:[3,4,5,6,7,8,9,12,13,16,65,67,69,71,72,74,75,78,79,81,83,85,86,92,95,96,97,98,99,101,103,112,114,116,118,119,120,121,123,125,128,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,211,216,217,218,219,221,222,228,245,253,256,259,260,265,271,293,294,301,302,310,313,316,318,320,348,376,385,387,395,412,414,415,417,425,439,440,445,447,457,458,465,508,514,517,518],contributor:12,control:[3,5,6,7,8,9,11,13,15,26,28,41,95,99,134,152,187,202,203,205,209,215,216,224,228,229,230,249,250,253,254,270,272,273,274,275,276,277,278,303,308,316,317,324,325,337,338,339,346,350,374,376,389,417,421,445,457,458,461,463,476,481,491,493,505,511,512],control_typ:215,controlfil:458,convect:99,conveni:[6,12,28,202,207,222,318,379,466,482,515,518,523],convent:[3,8,28,189,196,197,203,206,315,330,358,415,417,523],converg:[3,6,41,96,202,203,205,207,212,224,227,228,236,243,275,286,292,306,308,311,315,320,383,384,385,387,407,408,430,465,491,503,510,515],convers:[3,8,152,205,206,216,219,303,376,408,409,410,417,430,434,438,452,494,510,522],convert:[2,3,4,5,6,7,8,12,13,19,20,23,27,31,34,35,61,65,75,99,178,185,202,205,206,219,222,268,302,305,357,360,362,366,369,379,387,393,415,445,479,481,488,494,496,497,498,503,513,517,522,523,526,528],convex:[42,355],convinc:[7,12],cook:9,cooki:7,cool:[7,168,237,249,314],cooordin:[202,203],cooper:[5,7],coord123:125,coord1:[3,125,218],coord2:[3,125,218],coord3:[3,125,218],coord:[],coordb:465,coordbb:465,coordiat:385,coordin:[1,3,4,6,7,8,11,13,14,16,40,41,42,61,63,64,65,69,71,75,78,79,81,86,87,95,97,98,103,113,114,116,124,125,127,129,146,152,161,167,173,175,176,178,182,201,202,203,204,205,206,207,209,212,217,218,221,224,225,226,227,228,229,230,231,234,236,237,238,243,245,248,249,250,251,252,253,254,267,269,270,272,273,274,276,277,278,293,296,297,298,301,302,303,313,314,316,319,320,322,327,330,331,332,333,334,336,344,345,346,353,354,356,357,379,385,386,387,392,393,394,397,416,465,491,496,497,498,499,501,504,506,510,517,523,524],coordn:[125,218],coords:465,copi:[0,3,4,8,9,11,12,14,16,40,131,205,346,387,405,457,494,518],copper:488,coproccesor:[],coprocessor:[1,7,9,15,16,392,509],coproprocessor:16,copy_arrai:8,copyright:[7,8,301],coral:206,core:[],core_shel:160,cores:517,coreshel:[4,6,9],coreshell:[],cornel:[6,184,508],corner123i:124,corner123x:124,corner123z:124,corner1i:124,corner1x:124,corner1z:124,corner2i:124,corner2x:124,corner2z:124,corner3i:124,corner3x:124,corner3z:124,corner:[3,6,40,124,205,355,356,379,483,496,518],cornflowerblu:206,cornsilk:206,corp:9,corpor:15,corr:407,correct:[3,6,9,11,12,16,61,86,95,96,112,113,118,121,127,160,165,172,184,203,205,230,237,245,247,253,270,271,293,301,303,306,345,351,355,376,387,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,486,487,488,489,496,511,514,517,518],correction_max_iter:215,correctli:[3,8,11,16,75,87,112,113,114,155,156,157,159,161,163,164,165,166,167,170,171,174,202,206,212,231,236,243,254,264,270,271,309,316,320,330,333,352,355,387,388,392,410,440,445,493,494,496,506,518,522,524],correl:[],correpond:[240,241],correspond:[1,2,4,6,8,9,10,11,12,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,40,42,43,44,45,46,47,48,49,51,53,54,56,74,75,95,106,107,123,124,125,126,129,130,131,139,142,143,144,145,146,148,149,150,152,155,156,165,172,176,177,184,185,186,187,188,189,190,192,193,195,196,198,201,202,203,205,206,210,211,212,218,220,221,223,226,228,230,237,238,241,243,244,248,253,256,257,266,267,268,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,295,297,298,299,303,308,309,316,317,319,320,341,351,352,354,355,356,358,360,361,362,363,365,366,369,371,377,382,384,386,387,393,394,396,399,400,401,402,403,404,405,406,407,408,411,412,415,416,417,418,419,420,421,422,423,424,425,428,430,431,432,433,434,435,436,437,438,439,442,443,445,447,448,450,451,452,454,455,457,458,459,460,465,466,467,476,477,478,479,480,481,482,484,486,487,488,491,493,494,496,497,499,509,510,511,513,514,517,523],correspondingli:[439,440,505],corrupt:3,cosin:[],cosineshift:26,cosmo:[247,252],cossq:[],cost:[1,6,10,11,12,16,39,41,75,120,130,153,177,205,206,218,224,225,226,242,270,308,346,376,377,390,408,430,434,445,447,476,493,505],costheta0:[476,479,481,484],costheta:455,costli:[11,15,96,247,388],couett:4,coul:[],could:[2,3,6,9,11,12,16,32,41,50,61,69,75,79,86,95,98,103,114,116,120,123,125,158,168,173,175,191,202,203,205,206,210,211,218,219,224,230,243,252,305,306,307,311,314,316,319,334,335,341,345,346,347,351,355,357,359,367,373,375,383,385,388,392,394,395,420,424,425,428,457,458,492,493,494,496,498,500,503,504,511,512,517,523,524],coulomb:[3,5,6,7,8,9,10,12,14,17,76,96,118,119,127,153,179,183,307,309,347,376,377,385,392,399,401,402,403,404,407,408,409,410,411,417,422,423,425,430,434,438,441,447,452,457,458,460,465,475,481,482,484,487,501,508,514,517,522],coulommb:6,cound:3,count:[1,3,6,8,11,12,41,65,71,81,99,125,127,128,166,176,182,184,212,213,216,218,221,223,224,231,236,242,245,251,270,284,302,319,320,337,338,355,377,385,386,387,389,392,420,424,447,514,515,523],counter:[3,352,491,502,504,510],counteract:245,counterbal:[237,249],counterbalanc:28,counterclockwis:184,counterpart:[202,491],counterproduct:17,coupl:[],couple:[4,6,11,12],courant:323,cours:[3,8,15,138,140,172,202,210,211,246,315,330,345,351,353,354,356,357,377,439,467,493,496,509,517,523,526],courtesi:379,cov:465,coval:[6,9,28,417,442,465,517],covari:247,cover:[6,12,75,198,206,215,256,417,483],coverag:75,cpc:252,cpp:[1,3,6,8,9,11,12,13,95,202,210,211,243,320],cpu:[1,3,9,10,12,14,15,16,17,65,75,206,220,234,254,347,374,377,392,405,475,491,509,510,513,514,515,523],cpuinfo:15,cpuremain:514,cpus:12,cr2:177,cr3:177,crack:[4,388],crada:[5,7],crai:[5,7,13,17,202],crash:[3,12,388,517],craympi:392,creat:[],create_atom:[],create_bond:[],create_box:[],create_elementset:215,create_faceset:215,create_group:204,create_nodeset:215,createatom:[],creation:[],crimson:206,critchlei:301,criteria:[3,127,179,205,206,225,226,227,265,385,454,483,498,501,523],criterion:[12,41,133,178,181,216,224,227,245,284,308,323,352,357,385,387,407,417,422,465,501,510,511],criterioni:510,critic:[6,48,49,268,341,346,385],crmax:75,crmin:75,cross:[3,12,15,21,75,97,129,156,176,186,202,203,205,217,226,230,267,269,293,316,326,330,333,342,349,361,379,387,403,412,414,415,423,424,425,430,432,434,455,460,462,464,479,481,488,496,500,506,526],crossov:1,crossterm:496,crozier:[0,7,13],crucial:306,crystal:[3,4,6,13,15,77,117,297,298,344,379,388,496,500,514,517],crystallin:[6,113,298,379,480,517],crystallis:341,crystallogr:[130,177],crystallograph:[379,514],crystallographi:[130,177,379],cs1:177,cs_chunk:6,cs_im:[40,496],cs_re:[40,496],csanyi:[152,456,466],cscl:442,csequ:6,csh:[11,12,15,405],cshrc:[11,12],csic:[416,476,479,481,484],csinfo:6,csisi:[416,476,479,481,484],csld:[],cst:415,cstherm:6,cstyle:493,csvr:[],ctcm:[393,415],ctemp_core:234,cterm:322,ctr:9,ctype:11,cu1:177,cu2:177,cu3au:442,cube:[6,176,181,234,355,379,517],cubes:[41,224],cubic:[],cuda:[1,3,7,9,12,14,16,392,509,523],cuda_arch:[9,14],cuda_get:14,cuda_home:[9,14],cuda_prec:[9,14],cuh:398,cummul:[3,6,222,225,226,227,229,242,247,253,255,334,337,338,339,340,342,349,424,514],cumul:[6,216,218,221,235,245,253,268,270,275,284,316,318,387],curli:2,current:[0,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,40,41,42,57,61,63,65,75,77,87,95,112,113,119,127,128,142,153,158,166,168,174,176,179,182,201,202,203,204,205,206,207,210,211,215,218,222,224,225,226,227,228,229,230,231,235,236,237,243,245,247,250,251,253,259,265,267,270,271,276,277,278,284,286,290,291,292,293,295,301,302,307,308,310,313,314,315,316,317,320,321,322,323,324,325,326,327,329,331,332,333,334,337,338,339,345,346,349,350,351,352,353,354,356,357,359,374,375,376,377,380,381,382,384,385,386,387,392,398,405,407,411,413,415,417,418,422,425,426,429,439,440,442,443,444,447,455,457,458,461,462,463,464,467,479,481,482,485,491,492,493,494,496,497,498,499,500,502,503,504,506,508,510,511,513,514,518,523,524,525,526,527,528],curv:[6,178,245,286,292,298],curvatur:[421,459,488],custom:[],cut0:494,cut1:505,cut2:505,cut:[],cuthi:[297,309],cutinn:[400,439,440],cutlo:[297,309],cutmax:455,cutoff1:[404,411,430,434,438,441,452,460],cutoff2:[399,401,402,404,410,411,430,434,438,441,452,460,482],cutoff:[3,6,8,10,15,17,39,45,46,54,55,63,74,76,77,81,95,100,117,119,126,127,152,176,179,181,182,226,227,232,240,241,297,306,307,309,311,313,316,321,334,347,351,355,357,374,376,377,385,388,389,390,392,393,394,395,396,397,398,399,400,401,402,403,404,406,408,409,410,411,412,413,414,415,416,417,418,419,420,421,423,424,425,426,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,457,458,459,460,465,466,467,468,469,470,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,494,498,501,505,517,523],cutoffa:416,cutoffc:416,cuu3:415,cval:177,cvd:341,cvel:322,cvff:[],cwiggl:[3,267,351,354,356,523],cyan:[2,205,206],cycl:[3,245,268,270,271,275],cyclic:[3,184,198],cygwin:12,cylind:[3,4,75,205,218,251,292,302,352,355,381,499],cylinder_d:381,cylindr:[6,251,330,352],cypress:392,cyrot:398,cyrstal:298,d3q15:256,d3q19:256,d_double_double:14,d_e:346,d_flag2:305,d_flag:305,d_name:[124,202,305,336,506],d_single_double:14,d_single_single:14,d_sx:305,d_sy:305,d_sz:305,daan:344,dai:12,daili:12,daivi:293,damag:[],dammak:311,damp:[3,6,209,214,253,254,255,260,270,271,275,292,303,306,307,311,316,337,338,350,352,353,384,385,387,399,401,403,408,411,417,422,430,438,452,460,475,482,510,517],damp_com:254,damp_drud:254,dampen:[316,517],dampflag:[352,422],dan:16,danger:[3,12,245,357,412,514],dangl:181,daniel:9,darden:[377,411],darkblu:206,darkcyan:206,darken:205,darkgoldenrod:206,darkgrai:206,darkgreen:206,darkkhaki:206,darkmagenta:206,darkolivegreen:206,darkorang:206,darkorchid:206,darkr:206,darksalmon:206,darkseagreen:206,darkslateblu:206,darkslategrai:206,darkturquois:206,darkviolet:206,dasgupta:307,dash:[422,513],dat:[6,99,198,215,492],data2xmovi:[],data:[],data_atom:8,data_atom_hybrid:8,data_bodi:8,data_vel:8,data_vel_hybrid:8,databas:[],datafil:[12,13,318],dataset:318,datatyp:3,date:[0,4,6,12,13,201,457,458,523],datom1:126,datom2:126,datom3:126,datom4:126,datum:[3,6,42,68,71,73,84,102,119,126,202,219],davenport:441,davi:351,david:[9,18,376,377,479,481],daw:[415,455],dcd:[3,6,7,202,204,205,206,207,299,497,501],dcs:9,ddim:201,deactiv:438,dealt:252,debug:[6,7,11,12,13,16,57,130,134,177,178,299,304,374,376,426,447,485,494,495,503,506,513,523],deby:[],decai:[100,408,488],decid:[3,6,12,15,75,267,305,316,347,511,518],decipher:379,deck:305,declar:204,declin:334,decod:205,decompos:[95,466],decomposit:[3,5,7,17,64,215,299,321],decoupl:[6,517],decreas:[3,15,202,203,212,213,220,227,230,236,237,243,245,253,345,376],decrement:322,dedic:[15,392],deepli:373,deeppink:206,deepskyblu:206,def:[12,13,494],defaul:63,defect:[6,74,176,445],defgrad:[],defin:[2,3,5,6,7,8,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,192,193,195,196,197,198,199,200,201,202,203,204,205,206,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,234,235,236,239,241,243,244,245,248,251,252,253,254,255,256,265,267,269,270,271,272,273,274,275,276,277,278,280,281,282,285,288,289,290,291,293,294,295,297,298,299,301,302,303,305,307,309,314,316,317,318,319,320,323,327,331,332,334,336,337,338,339,340,342,343,344,346,348,349,351,352,353,354,355,356,357,359,360,361,362,363,364,365,366,369,370,371,372,374,376,377,379,382,384,385,386,387,388,389,390,391,392,394,395,396,397,399,400,401,402,403,404,405,406,408,409,411,412,413,414,416,417,419,420,421,422,423,424,425,426,428,430,431,432,433,434,435,436,437,438,439,440,441,445,446,447,448,449,450,451,452,454,455,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,493,494,496,497,499,500,501,502,505,506,507,508,510,511,513,514,517,519,520,521,522,523,524,525],definit:[2,3,6,8,12,13,82,85,127,152,206,218,219,220,221,222,230,239,251,275,318,336,348,351,354,356,358,370,374,386,395,398,406,413,417,428,455,462,464,466,483,494,496,498,505,507,522,523],defint:514,deform:[],deg2theta:177,deg:517,degener:[3,301],degrad:[8,17,298,377,505],degre:[3,6,8,19,20,23,27,28,31,34,35,37,68,84,100,102,104,106,107,109,111,112,117,123,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,177,178,184,185,188,189,196,198,201,205,218,227,234,245,247,248,253,254,259,270,271,275,276,277,278,290,291,293,295,299,301,315,316,320,337,338,339,344,360,362,366,369,371,385,411,415,424,506,514,517,524],degrees:198,degress:[158,218],del:510,delai:[3,6,12,388,414,514],deleg:425,delet:[2,3,7,8,12,54,59,62,65,176,181,182,209,218,219,221,222,225,227,242,245,270,318,337,338,357,359,375,386,388,391,447,474,496,497,498,499,507,508,513,518,519,521,523,524],delete_atom:[],delete_bond:[],delete_el:215,deli:201,delimit:[317,494,523],dellago:[6,237],deloc:[271,417,465],delr:442,delt_lo:510,delta:[],delta_1:398,delta_3:398,delta_7:398,delta_conf:3,delta_ij:[442,455],delta_pi:398,delta_r:455,delta_sigma:398,deltah_f:241,delx:201,delz:201,demand:311,demo:11,demon:296,demonstr:[306,442],den:302,dendrim:424,dendtrit:381,denniston:[9,256,258,259,260,298],denomin:[7,183],denot:[130,234,237,254,298,309,311,408,423,425,458,462,464],dens:[75,227,417],densiti:[3,6,7,9,17,40,41,61,110,127,138,152,164,176,178,210,211,215,218,224,230,243,256,259,263,264,298,302,303,305,307,346,351,379,382,386,393,394,398,415,442,443,444,449,450,455,459,465,469,471,472,473,496,505,506,514,522],density_continuity:464,density_summation:464,dent:381,depart:[0,7],departur:[268,306],deped:8,depend:[1,2,3,6,8,9,11,12,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,43,44,45,46,47,48,49,51,53,54,56,63,65,68,71,73,74,75,84,100,102,113,119,123,124,125,126,129,131,152,154,155,161,165,166,172,178,179,184,185,186,187,188,189,190,192,193,195,196,197,198,201,202,203,205,206,209,210,211,212,213,216,218,220,221,222,223,224,226,228,230,236,238,241,244,247,248,249,251,253,254,256,258,259,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,297,308,309,311,313,316,317,319,320,321,327,334,337,338,339,341,343,345,346,348,351,354,355,356,357,359,360,361,362,363,365,366,369,371,377,379,385,386,388,389,390,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,415,416,417,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,442,443,445,446,448,449,450,451,452,454,455,457,458,459,460,465,466,467,475,476,477,479,480,481,482,484,486,487,488,491,493,496,498,499,502,506,508,510,513,514,516,523,524],dependend:6,depflags:12,dephas:[491,510],depos:231,deposit:[],deprec:[3,307,457],deprect:218,depth:[51,156,205,346,419,421,459],dequidt:9,der:[95,118,406,407,438,457,458,487],deriv:[6,7,8,9,37,56,65,95,152,172,198,219,228,230,237,245,253,267,270,272,273,274,275,276,277,278,297,303,307,311,343,344,346,351,352,355,384,386,394,398,406,411,417,418,423,432,436,437,442,445,457,458,475,477,478,487,517],derjagin:487,derlet:297,descend:206,descent:[7,384],descib:[40,205,307],describ:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,37,39,40,41,42,56,64,65,71,74,75,77,96,121,124,127,130,142,152,153,156,157,158,162,163,166,169,171,172,176,177,178,180,181,190,195,198,202,203,204,209,210,211,218,219,220,221,222,224,227,228,229,230,231,233,234,240,241,246,247,250,251,252,253,254,255,256,258,259,260,265,269,270,271,275,283,294,297,299,304,305,306,307,308,309,316,317,322,330,334,335,336,337,338,339,340,341,342,343,344,349,351,352,354,359,376,377,379,383,384,385,386,387,391,394,395,397,399,400,401,403,404,405,406,407,408,411,415,417,418,419,421,422,423,425,428,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,449,450,454,455,456,457,458,459,460,465,466,467,474,475,476,477,478,479,480,481,482,484,486,487,488,489,491,493,494,496,497,498,499,500,506,509,510,513,518,523,524,526],descript:[],descriptor:[152,202,426],deserno:377,design:[0,3,6,7,8,11,13,14,16,130,160,163,177,215,227,233,234,270,271,297,298,318,341,346,395,396,397,400,403,408,410,417,438,439,440,443,444,455,458,477],desir:[2,3,6,7,9,11,12,14,15,32,40,50,61,75,96,99,123,128,153,160,178,191,201,218,222,228,230,243,245,246,253,254,255,259,270,293,301,302,303,304,307,311,316,319,320,334,337,338,339,340,345,352,367,373,376,377,379,383,385,386,387,412,415,424,439,440,476,479,481,492,493,494,496,500,505,510,511,513,514,515,523,524,526],desk:7,desktop:[4,6,7,10,12,205],despit:517,destabil:398,destre:369,destroi:[9,11,39,225,226],detail:[1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,21,36,40,41,42,55,65,69,70,71,75,79,82,86,98,99,103,112,114,116,118,120,122,123,125,128,129,131,152,153,155,156,157,158,161,171,172,173,175,178,179,182,183,186,197,201,202,203,205,206,209,210,211,215,218,219,220,221,222,224,226,227,228,229,230,231,237,243,245,246,247,248,250,251,253,255,256,260,267,268,269,270,271,272,273,274,275,276,277,278,282,284,290,291,293,294,295,298,301,302,303,305,306,308,309,310,316,320,321,334,337,338,339,340,341,342,344,345,346,347,348,349,350,357,359,361,370,376,377,380,385,386,388,389,392,393,394,395,397,398,400,402,403,404,405,406,407,408,411,412,417,418,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,446,447,449,450,454,457,458,459,465,466,467,475,483,486,487,489,494,496,497,498,499,501,502,505,506,508,511,514,515,518,523,524,528],detect:[2,3,12,42,63,65,94,100,244,302,345,387,407,424,429,491,493,496,507,510,523],determin:[1,3,6,8,9,12,14,15,39,40,42,51,59,60,61,63,64,71,75,95,112,118,120,123,129,130,131,139,153,166,167,176,177,178,201,202,203,205,206,207,208,212,213,214,217,218,219,220,221,222,223,224,228,230,231,234,236,241,245,248,249,251,253,254,259,265,267,268,270,276,277,278,290,291,293,295,297,299,302,303,306,313,314,315,316,317,318,319,323,325,327,334,337,338,339,341,347,348,351,352,353,354,355,356,357,370,376,377,379,386,388,389,392,394,395,402,407,411,414,415,419,420,422,425,426,434,442,445,447,450,458,459,465,474,477,478,482,487,493,496,497,499,501,503,506,510,512,513,515,522,523,524],determinist:321,detil:119,devan:[9,460],devanathan:481,develop:[0,3,5,6,7,8,9,11,12,14,15,16,17,18,42,250,275,301,306,307,310,394,398,417,444,445,465,484,498],devemi:9,deviat:[268,275,297,420],deviator:9,devic:[1,3,12,14,16,250,392],device_typ:392,devin:[308,407],devis:444,dfactor:205,dff:517,dfft_fftw2:12,dfft_fftw3:12,dfft_fftw:12,dfft_none:12,dfft_single:[3,12,377],dfft_xxx:12,dfftw:12,dfftw_size:12,dft:[9,310,445],dhi:[61,201,230,302],dhug:[268,306],dhugoniot:[268,306],dia:442,diagnost:[],diagon:[3,6,91,129,152,153,154,228,270,303,316,349,462,464],diagonalstyl:466,diagram:[41,130,177,197,224,299],diallo:424,diam:[205,206,302,386],diamet:[3,6,40,42,124,178,202,203,205,206,210,211,253,302,305,316,334,336,350,352,386,406,421,422,432,459,483,487,496,497,506],diamond:[379,417,442],diamter:[40,302],dick:6,dicsuss:267,dictat:[216,268],did:[3,12,385,412,414,415,422,447,479,481,504],didn:3,die:17,diel:[],dielectr:[],diff:[3,6,12,15,174,348,376],differ:[1,2,3,4,6,7,8,9,11,12,14,15,16,17,21,36,37,39,41,42,54,55,56,63,66,71,74,75,95,100,104,106,107,132,152,154,155,156,157,158,159,161,164,165,166,167,168,170,171,172,178,179,181,186,197,198,201,202,205,206,209,211,214,216,218,221,224,225,226,227,228,229,230,234,237,240,244,245,246,247,248,249,250,253,254,256,267,270,271,272,273,274,276,277,278,280,282,285,288,289,290,291,295,297,299,301,303,306,307,308,311,314,316,320,322,330,332,334,337,338,339,342,343,344,346,349,350,351,352,355,359,360,370,373,375,376,377,379,380,383,384,386,387,389,390,391,392,393,394,398,402,403,405,406,407,412,413,415,417,419,421,422,423,425,428,430,431,433,434,441,442,443,444,446,447,448,449,450,451,455,457,458,459,460,461,462,464,465,466,467,475,476,477,478,479,481,483,484,487,490,491,493,494,496,498,499,500,501,504,505,506,508,510,511,513,514,515,517,522,523,524,526],differenti:[1,3,6,28,198,317,376,408,455,480],difficult:[228,299,392,424,505,515],difficulti:[100,117,320,457],diffract:[7,9,130,177,318],diffus:[],diffuse:[4,6],digit:[2,3,206,359,445,523],dih_table1:198,dih_table2:198,dihedr:[],dihedral_coeff:[],dihedral_cosine_shift_exp:26,dihedral_styl:[],dihedralcoeff:[3,199],dihedraltyp:226,dihydrid:417,dij:320,dilat:[],dim1:3,dim2:3,dim:[3,61,75,155,159,160,161,164,165,166,167,168,170,178,201,230,251,352,379,442,499,522,523,524],dimdim:523,dimems:298,dimens:[],dimensinon:75,dimension:[3,39,100,123,130,152,155,158,159,160,161,164,165,166,167,168,170,177,200,218,269,298,346,379,383,387,455,496,506],dimensionless:[115,133,134,136,139,141,143,148,152,346,377,466,487],dimensions:318,diment:3,dimentionless:147,dimer:[6,316,442],dimgrai:206,dimstr:[41,224],dinola:[303,337],dintel_offload_noaffinity:15,dipol:[],dipolar:[4,28,40,202,203,336,517],dir1:507,dir2:507,dir:[1,3,4,8,10,11,12,268,297,306,333,455,457,458,494,507,523],dirac:152,direc:455,direct:[],directli:[3,6,8,9,11,12,95,124,129,152,154,202,203,204,205,212,236,247,251,256,298,317,318,338,350,352,353,354,355,379,384,392,393,394,399,401,402,408,411,415,417,430,434,447,452,460,474,494,506,507,508,514,523],directori:[],disabl:[3,12,15,346,392,429,494,509,523],disadvantag:[6,224],disallow:[202,230,270],disappear:498,discard:[2,3,41,75,220,224,347,355,493,498,499],discontinu:[198,385,436],discourag:442,discov:[13,347],discret:[6,8,40,42,205,206,253,256,292],discuss:[],disk:[6,92,93,100,171,200,231,245,302,494],disloc:[74,445],disord:[39,74,445],disp:[],dispar:459,disperion:[411,434],dispers:[3,6,7,9,176,298,376,377,402,411,434,439,447,458,477,484],displac:[],displace_atom:[],displace_box:61,displacemet:499,displai:[11,13,21,36,44,55,186,197,202,205,361,370,405,475],dispters:3,disregard:445,dissip:[6,9,40,88,89,239,246,253,298,321,343,344,400,412,413,422,439,440,475],dissolut:225,dist:[6,73,99,119,128,202,299,315,414,474,491,524],distanc:[],distinct:[6,234,313,376,459],distinguish:[6,94,152,259,417,495,523],distort:[176,393],distrbut:393,distribut:[],distro:[122,405,454,455],ditto:[8,12,14,16,17,42,126,226,316,488,494],div:[8,15],divd:128,diverg:[3,12,39,316,344,394,498,517,526],divid:[3,6,15,41,99,123,128,138,140,153,175,176,186,197,206,218,219,221,224,230,297,342,349,354,376,385,387,418,458,465,484,505,513,523],divis:[6,256,398,428,438,493,514,523],dl_poly:[6,7],dlambda:172,dlammps_async_imd:250,dlammps_bigbig:[12,39],dlammps_ffmpeg:[3,12,205],dlammps_gzip:[3,12,202,205,345,496,497,501],dlammps_jpeg:[3,12,205],dlammps_longlong_to_long:12,dlammps_memalign:[9,12,15],dlammps_png:[3,12,205],dlammps_smallbig:12,dlammps_smallsmall:12,dlammps_xdr:[12,202],dlen:506,dlmp_intel_offload:[9,15],dlo:[61,201,230,302],dlopen:6,dlvo:[7,406,487],dm_lb:256,dmax:[334,383],dmpvtk:203,dmpvtp:203,dna:7,doc:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,21,36,40,42,55,59,61,65,69,71,79,86,95,98,103,112,114,115,116,118,120,122,123,125,128,129,131,153,156,157,158,171,173,175,178,179,180,186,197,201,202,203,204,205,206,207,209,210,211,216,217,218,219,220,221,222,231,245,253,254,265,270,271,276,277,278,282,290,291,293,294,295,302,305,316,330,334,337,338,339,348,352,355,357,359,361,370,375,385,386,387,392,393,394,397,405,407,408,415,416,418,424,425,427,428,442,443,444,447,451,454,455,456,466,475,476,479,481,483,484,494,496,497,498,499,501,504,505,506,513,514,518,523,524,526,527],docuement:459,dodd:42,dodgerblu:206,doe:[0,1,2,3,5,6,7,8,9,11,12,14,16,17,32,37,39,41,42,50,54,56,61,64,65,70,74,75,76,95,96,99,114,118,121,127,128,130,154,156,158,160,161,166,168,172,177,178,179,180,182,184,186,191,197,198,201,202,203,204,205,206,209,215,216,218,223,224,226,227,228,230,234,236,237,240,241,242,245,246,249,251,253,254,256,259,266,270,271,272,273,274,276,277,278,290,291,292,293,294,295,303,304,305,309,311,314,316,334,337,339,341,342,346,349,350,351,354,355,356,357,362,363,364,366,367,369,375,376,377,378,379,386,387,388,393,394,395,396,397,398,400,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,425,426,427,428,429,432,433,435,436,437,439,440,442,443,444,445,447,449,450,455,456,457,458,459,461,462,463,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,491,492,493,494,496,497,498,499,500,503,504,506,507,508,509,510,513,514,517,518,523,528],doegenomestolif:7,doesn:[3,7,8,12,178,202,203,216,330,386,388,392,394,407,416,427,457,458,476,479,480,481,484,496,498],dof:[3,8,123,156,157,158,171,218,316,524],dof_per_atom:[158,218],dof_per_chunk:[158,218],doff:[386,496],doi:[6,229,297],domain:[3,6,7,12,13,17,39,41,42,60,63,64,75,130,167,177,180,201,204,205,206,209,216,224,228,230,231,249,252,256,270,271,299,311,316,321,346,351,352,376,377,387,392,414,447,491,493,496,500,513],domin:[1,417,510],don:[0,8,9,12,13,15,127,181,212,236,254,355,442,465,494,496,518],donadio:338,done:[1,3,6,7,8,12,14,16,17,37,39,41,56,61,64,75,172,175,178,181,198,202,205,206,215,216,218,220,221,222,224,225,226,227,228,230,231,240,241,243,245,250,251,253,254,261,270,276,277,278,290,291,293,295,296,298,299,300,302,305,313,316,318,320,334,337,338,339,341,343,344,357,359,375,376,377,385,387,388,391,392,394,402,415,425,426,427,434,440,441,442,447,449,450,457,474,477,478,483,491,492,493,494,497,500,501,504,514,515,517,518,523,524],donor:424,dot:[153,174,212,236,248,269],doti:[398,455],doubl:[1,2,3,6,8,9,11,12,14,15,16,39,95,184,230,243,304,355,359,375,377,391,392,398,418,423,445,457,458,492,496,500,504,509,523,524],dover:215,down:[3,6,7,8,11,39,75,228,245,253,334,350,417,447,465,495,515],downhil:[383,384],download:[5,7,8,9,11,12,13,16,250,426,456],downsid:6,downward:313,dozen:[8,9,12,118,209,457,458],dpack_array:12,dpack_memcpy:12,dpack_pointer:12,dpd:[],dpde:263,dpdtheta:[40,88,89,413],dpdtheta_i:[239,240,241],dproduct:395,dr_ewald:[130,318],drag:[],dragforc:256,drai:[268,306],drain:[249,350,385],dramat:[9,61,201,225,226,227,228,230,270,334,337,338,377,447,465,493],drautz:398,draw:205,drawback:305,drawn:[42,202,205,206,246,491],drayleigh:[268,306],dreid:[],dreiding:[],drfourth:115,drho:[124,393,415,449,450],drift:[6,113,115,237,246,247,249,253,254,266,314,334,505,513,517],drive:[11,12,213,228,230,248,270,297,303,316,353,387],driven:[6,190],driver:[6,12,14,209,243,250],drop:[3,206,412],droplet:425,drsquar:115,drude:[],drudes:[254,517],dry:242,dsecriptor:426,dsf:[],dsmc:[],dstyle:302,dt_collis:256,dt_lb:256,dt_md:256,dt_srd:334,dtilt:[61,230],dtneb:510,dtqm:306,dtype:[126,226],dual:[16,334,392],dudarev:177,due:[1,3,6,9,12,15,16,18,40,54,57,59,60,63,69,74,75,78,79,86,87,94,96,97,98,103,112,113,114,115,116,121,127,130,138,152,153,155,156,157,159,161,164,165,166,167,168,170,171,173,177,178,181,182,202,203,205,209,212,213,221,223,225,226,227,228,229,230,231,236,238,242,243,246,247,250,251,253,254,255,256,259,260,261,266,267,268,269,270,275,284,297,300,302,314,315,316,319,321,330,331,333,334,335,337,338,339,340,341,343,344,346,350,351,353,354,355,357,376,377,383,385,387,388,389,409,412,413,415,420,421,425,439,440,447,455,457,459,460,474,477,479,481,485,487,488,491,493,496,497,498,505,510,513,514,515,517,523,524],duffi:346,duin:[9,307,312,457,458],duke:377,dumbbel:381,dummi:[12,28,480],dump0:203,dump10000:203,dump1:501,dump20000:203,dump2:501,dump2vtk_tri:146,dump:[],dump_0:203,dump_1:203,dump_atom:8,dump_custom:8,dump_h5md:204,dump_modifi:[],dump_p:203,dumpcustom:8,dumptimestep:501,dunbrack:[6,19,184,403,508],dunweg:[253,255],duplic:[2,3,14,16,41,42,179,203,224,247,297,496,522],dupont:[5,7,13],durat:[36,55,155,156,157,159,160,161,163,164,165,166,167,170,171,197,206,218,245,311,346,370,422,475],dure:[2,3,6,8,9,12,15,16,37,39,41,56,75,95,129,138,140,154,160,179,182,184,198,202,203,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,235,236,237,238,240,241,242,243,244,245,246,247,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,267,269,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,318,319,320,322,326,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,377,385,387,391,412,438,445,447,448,449,450,458,477,478,491,492,494,496,499,501,503,504,506,508,510,511,514,515,523,527,528],dvector:8,dvlo:487,dvx:6,dx_lb:256,dy3:177,dyamic:12,dyanam:6,dyanmic:510,dynam:[],dynamo:[5,393,415,442],dyne:522,dyre:435,dysam:499,e28637:28,e_1:398,e_2:398,e_a:317,e_b:418,e_data:203,e_ee:417,e_hbond:424,e_i:[6,398,418],e_j:[6,398],e_k:398,e_ke:417,e_kl:6,e_lj:[394,411],e_n:398,e_ne:417,e_nn:417,e_pr:417,e_rebo:394,e_torsion:394,e_tot:445,e_vol:445,eaa:360,eaat:185,each:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,59,61,63,64,65,66,67,69,70,71,72,74,75,76,77,78,79,80,81,82,83,85,86,87,89,91,93,95,97,98,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,128,129,130,131,132,146,152,153,154,156,157,158,159,160,161,162,165,166,167,168,170,171,172,173,174,175,176,177,178,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,238,240,241,242,243,245,246,247,248,249,250,251,252,253,254,255,256,257,259,260,261,262,263,264,266,267,268,269,270,272,273,274,275,276,277,278,279,280,281,282,284,285,286,287,288,289,290,291,293,294,295,297,298,299,300,301,302,303,304,305,307,308,309,311,313,316,317,318,319,320,321,322,326,327,329,330,331,332,333,334,335,336,337,338,339,341,344,345,346,347,348,349,350,351,352,354,355,356,357,359,360,362,363,364,365,366,367,369,370,371,375,376,377,379,384,385,386,387,388,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,418,419,420,421,422,423,424,425,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,447,448,449,450,451,452,454,455,457,458,459,460,461,465,466,467,468,469,470,471,472,473,474,475,476,477,478,481,482,483,484,485,486,487,488,489,490,491,493,494,496,497,498,499,500,501,503,504,505,506,508,510,511,513,514,515,516,517,522,523,524,526,528],eacn:[41,224],eam0d:298,eam3d:298,eam:[],eam_databas:13,eam_gener:13,eangl:514,earli:[41,218,221,222,224,310,318],earlier:[7,8,12,61,206,387,422,442,447,510],earliest:510,earth:417,easi:[6,7,8,9,10,11,13,95,153,202,210,211,212,213,223,236,248,249,251,253,254,319,327,337,338,339,351,354,356,386,496,499,504,506,524],easier:[8,9,13,15,202,203,205,298],easili:[8,11,205,206,350,387,493,503,512,523],eastwood:[376,377],eat:185,eatom:357,eaxmpl:6,eba:20,ebb13:185,ebb:20,ebond:[234,254,513,514,523],ebt:185,ec_ii:442,ec_ij:442,ec_jj:442,echo:[],eco:[457,458],ecoa:[457,458],ecoul:[118,154,234,254,457,458,514],ecp:[417,496],edg:[3,6,41,42,61,75,130,176,177,180,181,202,204,205,214,251,319,351,354,355,356,357,379,496,499,506],edge:[2,3,351,354,356,499],edge_histo:176,edge_threshold:176,edih:514,edim:342,edip:[],edit:[3,8,9,12,13,14,15,16,17,18,517,518],edition:15,editor:13,edu:[7,9,11,13,415,439,454,457,458],edward:[9,16],eebt:185,eff:[],effect:[1,2,3,6,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,69,75,78,79,86,87,97,98,103,113,114,115,116,123,153,155,160,165,166,173,176,182,184,185,187,188,189,190,192,193,195,196,197,198,201,202,203,205,206,210,211,212,215,216,219,222,223,225,226,227,228,230,231,237,238,240,244,245,246,247,248,249,250,251,253,254,269,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,296,297,299,302,303,305,306,307,308,309,311,314,315,316,319,320,333,334,337,338,339,341,342,344,346,349,350,351,352,353,354,355,356,357,360,362,363,365,366,369,371,376,377,379,384,385,386,387,388,393,394,396,398,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,445,447,448,449,450,451,452,454,458,459,460,461,463,465,467,475,476,477,478,479,480,481,482,483,484,486,487,488,491,493,494,498,499,501,505,506,508,514,515,522,523,526],effectiv:[253,379],efffect:500,efficaci:39,effici:[0,1,3,6,7,8,9,10,12,14,15,16,17,39,60,63,70,123,154,202,203,204,205,206,219,220,228,230,234,247,270,299,301,302,311,316,320,334,376,377,383,388,392,398,406,408,425,430,434,445,449,450,459,477,503,528],efficienc:15,efficient:[9,301],effort:[5,7,497],efftemp:[106,107,164],efi:[457,458],efield:[],eflux:249,eforc:203,eggebrecht:[408,465],ehanc:209,ehb:[457,458],ehex:[],eigensolv:3,eigenvalu:[298,299,376],eigtol:3,eike:172,eim:[],eimp:514,eindhoven:9,einstein:[6,311,344],either:[1,2,3,6,8,9,10,11,12,14,15,16,21,32,41,44,50,61,65,75,113,118,124,127,130,152,153,158,160,161,176,177,178,181,186,191,198,202,203,204,205,206,209,217,219,221,222,224,227,228,229,230,231,237,245,251,252,256,260,267,268,270,271,275,293,297,305,313,317,319,320,322,330,334,341,348,352,355,359,361,374,376,377,379,384,385,389,392,398,400,406,415,419,425,426,428,439,440,442,445,447,450,453,455,458,474,478,479,481,483,491,494,496,498,499,500,503,505,508,511,513,523],ejtehadi:[406,421,459],elaplong:[210,211,251,499,514,523],elaps:[3,201,210,211,212,213,223,230,236,248,249,251,253,254,267,302,319,327,337,338,339,351,352,354,356,467,491,499,501,502,506,510,514,515,523],elast:[4,6,7,9,44,45,46,55,122,209,269,298,352,384,387,422,454,480],elastic:[],elastic_t:4,elba:28,electr:[6,209,215,236,254,376,377,418,457,458,488,517,522],electric:15,electrolyt:[9,487],electron:[3,6,7,9,13,40,106,107,124,130,162,164,169,203,209,215,233,234,254,255,271,283,294,309,340,346,384,386,393,395,407,411,415,417,418,442,445,455,456,465,481,484,488,496,516,517,522],electron_integr:215,electron_temperatur:215,electron_unit:417,electroneg:[6,307,308,309,407,418,465],electroneg_compon:465,electronic_dens:3,electronic_specific_heat:3,electronic_thermal_conduct:3,electrostat:[6,9,15,17,216,245,307,309,310,347,376,377,406,411,417,430,438,440,458,465,487],eleftheri:316,elem1:[418,442,466],elem2:[418,442,466],elem:465,element1:[313,393,415,465],element2:[313,393,415,465],element:[3,6,7,8,9,12,13,42,65,87,97,113,115,123,128,131,146,152,153,154,155,156,157,158,159,160,161,165,166,167,168,170,171,174,202,203,204,205,206,207,209,210,215,219,221,222,298,313,341,348,393,394,398,407,415,416,417,418,425,426,427,442,443,444,445,451,455,456,457,458,465,466,476,479,480,481,484,514,517,523,527],elementn:[393,415],elementset:215,elev:510,elif:[152,359],elig:[3,216,225,226,242,245,424],elimin:[3,6,75,176,246,253,254,316,320,343,344,491],elj:411,ellad:9,elliot:9,elliott:9,ellips:[4,6,9,75,90,156,200],ellipsoid:[3,4,6,7,9,13,40,42,75,90,124,142,156,178,200,201,202,203,253,267,272,276,280,281,286,290,316,334,381,382,385,421,440,459,475,496,506,526],ellipsoidflag:496,elong:[234,254,514],elp:[457,458],els:[3,7,8,12,75,118,127,128,131,205,217,218,219,221,222,245,270,316,334,346,347,348,357,359,376,425,495,507,523,527],elsewher:[8,267,334,442,456,457,458,508,514,523],elt:442,emac:[],email:[0,3,5,7,8,9,11,418],emb:[3,9,355],emb_lin_neg:442,embed:[3,4,5,7,9,11,12,13,28,96,154,176,346,393,415,418,438,442,443,444,455,475,485,494],embt:185,emi:[7,9],emile:9,emol:[457,458,514],emphas:422,empir:[9,215,338,417],empiric:394,emploi:[237,298,307,311,480],empti:[3,59,75,176,180,316,376,388,429,496,507,508,523],empty:3,enabl:[3,6,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,43,45,46,47,48,49,50,51,53,54,55,56,62,63,64,66,70,82,85,88,89,91,95,96,106,107,108,109,110,111,115,118,122,123,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,160,162,164,165,169,170,172,176,177,184,185,187,188,189,190,191,192,193,195,196,197,198,202,203,204,206,207,209,210,211,212,213,214,216,220,223,225,226,227,229,230,231,236,237,238,239,240,241,242,243,244,245,246,247,248,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,266,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,306,307,308,309,310,311,312,313,315,316,317,319,320,321,322,323,324,325,326,327,329,330,331,333,334,340,341,342,343,344,346,347,349,351,352,353,354,355,358,360,362,363,365,366,367,369,370,371,377,385,387,391,392,393,394,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,447,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,494,497,498,499,503,505,515,523,528],enclos:[2,6,12,180,202,304,359,442,465,492,494,504,523],encod:[13,39,42,202,205,206,305,425],encompass:[3,6,40,42,59,61,127,179,329,348,475,499],encount:[3,8,12,61,117,221,391,501,523],encourag:[7,8,310,332],end12i:124,end12x:124,end12z:124,end1i:124,end1x:124,end1z:124,end2i:124,end2x:124,end2z:124,end:[1,2,3,5,6,8,11,12,14,15,16,17,18,37,40,41,42,57,59,61,75,124,181,182,185,201,202,203,205,206,207,210,211,219,221,222,227,230,237,246,251,253,255,269,270,271,284,292,303,315,316,322,334,337,338,339,340,342,345,346,349,353,356,357,375,376,386,387,391,392,412,415,421,428,441,445,459,462,464,466,467,485,491,494,496,497,498,499,501,503,504,508,512,514,517,523,528],end_of_step:8,endbondtors:[3,185,191,496],endif:8,energet:[227,394,458],energi:[],energy_compon:465,energy_update_freq:458,enforc:[6,9,59,60,114,201,202,203,204,205,207,209,216,227,230,270,296,298,308,316,320,359,376,430,493,523,524],enforce2d:[],eng:[11,68,73,119,202,243,357,359,407,444],eng_previ:359,engiliti:9,engilitycorp:9,engin:230,engineer:[215,301,322,343,415],enginer:443,enhanc:[211,215,237,491],enlarg:[61,205],enough:[3,40,63,94,178,179,181,182,224,254,302,306,311,316,347,351,352,355,388,392,408,453,496,500,501],enpub:415,ensembl:[],ensight:6,ensur:[3,6,152,202,203,216,220,228,245,246,270,323,345,377,398,414,438,476,484],enter:[59,168,418,445,484,510],enthalpi:[135,272,273,274,317,415,513,514,523],entir:[0,2,3,6,11,14,41,42,65,88,89,96,120,121,123,127,129,130,153,158,177,178,206,209,210,211,218,224,227,229,237,242,245,246,249,253,254,266,270,272,273,274,275,276,277,278,297,299,301,314,316,317,332,346,348,359,392,411,434,447,477,478,496,504,505],entireti:483,entiti:[6,8,40,42,202,316],entri:[3,8,12,37,42,56,68,73,84,102,119,126,129,130,139,142,143,144,145,146,148,149,150,176,198,203,206,210,221,229,240,241,306,357,386,398,416,442,449,450,451,458,466,476,477,478,479,480,481,484,523],entries:206,entropi:510,entry1:[37,56,206,405,449,450,477,478],entry2:206,entryn:206,enumer:[179,202,489],enumuer:6,env:392,environ:[1,3,6,11,12,15,16,17,205,247,252,297,392,393,398,405,407,416,417,455,479,493,507,523],eos:[9,240,241],epair:[118,206,394,420,424,457,458,514],epen:[457,458],epfl:[247,252],epp:411,epq:411,eps0:487,eps14:438,eps:[454,475],epsilon0:481,epsilon:[3,6,35,45,46,50,53,54,95,184,210,211,245,316,334,351,355,383,385,397,403,404,406,408,409,410,411,419,421,423,424,425,428,429,430,431,432,433,434,435,436,437,438,441,446,452,459,460,470,476,482,483,486,487,505,517,522],epsilon_0:488,epsilon_14:403,epsilon_:459,epsilon_d:409,epsilon_i:[421,447,459],epsilon_i_:459,epsilon_i_a:[421,459],epsilon_i_b:[421,459],epsilon_i_c:[421,459],epsilon_ij:447,epsilon_j:[421,447,459],epsilon_j_:459,epsilon_j_a:[421,459],epsilon_j_b:[421,459],epsilon_j_c:[421,459],epsilon_lj:459,epton:454,eqch:173,eqeq:[457,458],eqp:411,eqq:411,equal:[2,3,6,8,11,12,16,39,41,54,65,68,71,73,75,80,84,94,95,99,102,119,121,126,128,131,153,156,172,174,176,178,201,205,206,209,210,211,212,213,216,219,220,221,222,223,224,228,230,231,236,245,246,248,249,251,253,254,256,259,260,267,268,275,286,287,297,299,302,304,306,307,308,311,313,315,316,317,319,322,327,329,337,338,339,342,343,344,346,348,349,351,354,356,357,359,375,379,385,387,388,389,391,392,394,407,412,413,420,421,424,428,439,445,446,455,457,458,459,461,462,463,465,466,467,477,478,483,484,488,492,493,494,496,498,499,503,504,507,510,512,514,523,524],equat:[3,6,7,8,9,99,117,123,130,177,186,197,209,228,234,235,237,239,240,241,247,253,254,256,259,268,269,270,271,275,293,297,299,306,307,311,317,320,321,334,342,346,349,351,352,354,356,376,377,381,406,411,412,413,417,418,419,422,427,439,440,442,447,450,459,462,464,469,470,472,473,478,488,517],equation:[247,297,369],equi:271,equidist:269,equil:[3,307,380,503,528],equilater:506,equilibr:[3,4,5,6,7,9,61,99,178,209,216,219,227,228,245,268,270,271,293,294,303,306,307,308,309,342,343,344,349,407,408,457,458,492,506],equilibria:349,equilibribum:[225,226],equilibrium:[1,3,4,6,7,20,23,25,26,27,28,31,34,35,37,38,43,47,48,49,51,53,56,58,61,161,162,185,187,228,230,245,246,247,254,256,270,275,293,306,307,311,315,320,322,330,334,341,342,344,349,360,362,366,369,407,442,451,465,517],equilibrium_angl:8,equilibrium_dist:8,equilibrium_start:215,equival:[6,12,13,28,61,63,136,137,145,150,176,180,206,221,222,228,230,245,253,270,293,303,315,316,354,394,412,417,465,479,481,482,496,499,504,505,514,517],equlibrium:6,equliibr:[307,309],er3:177,eradiu:[40,124,203,417,496],eras:[319,343],erat:[230,440],erc:408,erfc:[408,430,447],erforc:[124,203],erg:522,erhart:[216,415,479,481],ermscal:395,ernst:9,eror:3,eros:442,erose_form:442,erot:[],errata:[479,481],erratum:351,erron:3,error:[],erta:422,ervel:[124,203,496],escap:[231,517],especi:[8,15,166,178,209,216,224,245,306,311,314,315,392,493,515],espresso:[9,310],essenti:[11,12,26,96,140,159,160,161,164,165,166,167,168,170,187,219,298,350,377,394,408,430,481,501,514],essential:[8,275],essex:28,establish:[95,249],estim:[1,3,6,10,12,37,41,56,99,153,215,224,235,268,334,341,376,377,383,447,458,477,478,510,514],estimat:3,esu:522,esub:442,eta:[6,256,270,306,307,309,350,416,418,421,455,480,484,522],eta_dot:270,eta_ij:455,eta_ji:418,etag:[40,496],etail:514,etap:270,etap_dot:270,etc:[1,2,3,4,6,7,8,9,10,11,12,13,14,15,39,40,42,54,63,71,97,98,99,104,120,121,124,126,129,153,155,158,159,160,161,162,164,165,166,167,168,170,172,178,180,181,182,191,202,203,205,206,209,210,215,216,217,218,221,222,225,226,230,231,243,245,246,253,270,302,313,318,346,347,355,359,375,376,385,386,387,388,390,415,416,425,438,440,445,453,457,458,476,479,481,484,491,494,496,497,498,503,505,506,510,511,512,513,514,515,517,522,523,526,528],ethernet:17,etol:[385,387,491,510],etot0:306,etot:[6,104,106,107,121,153,164,206,234,254,268,306,513,514],eu2:177,eu3:177,euler:[385,387],eulerian:215,euqat:468,europhi:256,ev_tal:8,evalu:[2,3,9,11,12,37,56,75,95,96,99,118,128,131,152,154,158,168,176,178,184,201,202,203,205,206,210,211,212,213,215,217,218,219,220,221,222,223,230,236,246,248,249,251,252,253,254,298,304,307,319,323,327,337,338,339,348,351,354,356,357,359,383,385,445,447,449,450,455,461,463,465,477,478,491,492,494,498,499,501,503,504,505,506,510,512,514,523,524],evaluat:[376,377,523],evalut:[359,494],evan:[166,293],evanseck:[6,19,184,403,508],evapor:[],evaul:[8,385],evdwl:[118,154,457,458,514],even:[3,6,8,12,14,15,16,17,33,39,41,52,57,59,61,63,65,74,75,96,118,131,176,179,180,194,198,202,203,206,209,210,211,216,217,218,221,222,224,225,226,228,230,231,234,237,251,254,268,270,271,298,302,311,313,316,318,329,334,342,346,349,351,355,357,368,376,383,385,387,392,397,417,418,422,425,428,447,459,484,485,489,496,497,499,501,502,503,505,506,508,511,513,514,515,517,528],evenli:[3,41,57,153,198,224,256,428,485],event:[],eventu:[3,6,12,14,180,510],eventual:307,ever:[9,54,56,252,334],everaer:[406,421,459,475],everi:[0,1,2,3,6,8,9,11,12,14,15,39,41,75,76,99,124,131,140,166,181,202,203,204,205,206,207,209,210,211,212,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,235,237,242,243,245,247,249,250,251,256,257,266,270,271,275,286,292,296,297,298,302,303,304,305,306,307,308,309,311,313,314,316,317,318,320,322,331,334,336,337,338,339,340,341,342,345,346,347,348,349,357,359,375,377,387,388,389,392,412,414,425,438,457,458,465,471,490,491,492,496,498,500,501,503,504,505,510,511,512,514,515,518,523,528],everyth:[8,118,518],everywher:[127,432],eviri:417,evolut:[237,247,256,299,491],evolv:[256,299,347],ewald:[2,3,5,6,7,8,9,12,96,121,130,153,347,376,377,385,399,401,402,408,411,417,430,434,452,460,475,477,482],ewald_disp:411,ewalddisp:3,exact:[21,41,44,75,134,172,181,186,224,227,246,247,253,254,255,302,311,312,334,346,361,376,405,498,503,510,523,526,528],exactli:[3,6,12,16,37,41,42,56,61,75,76,99,127,156,162,169,178,198,210,211,221,224,230,235,240,246,253,254,255,271,283,284,294,298,305,306,334,339,340,353,392,405,412,415,422,425,439,447,449,450,477,478,498,499,506,510,523],exager:517,examin:[6,8,16,227,298],examp:[494,523],exampl:[],exce:[3,6,15,16,17,41,60,75,180,217,218,221,222,224,228,230,235,242,270,298,313,318,324,325,334,385,392,496,523],exceed:[3,41,61,224,230,270,334,458,504],excel:417,except:[1,2,5,6,8,10,11,15,19,20,21,22,23,24,25,26,27,28,29,30,31,34,36,37,40,41,43,44,45,46,47,48,49,51,53,54,55,56,61,62,65,75,97,98,119,123,128,153,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,178,182,184,185,186,187,188,189,190,192,193,195,196,197,198,201,202,203,206,209,212,218,219,221,223,224,228,230,238,244,245,248,251,253,255,270,271,272,273,274,275,276,277,278,279,280,283,284,288,290,291,293,294,295,299,308,309,316,319,320,330,334,340,346,354,357,358,359,360,361,362,363,365,366,369,370,371,376,377,379,382,386,387,388,390,391,392,393,394,396,399,400,401,402,403,404,405,406,407,408,410,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,443,448,451,452,454,457,458,459,460,467,475,476,477,479,480,481,482,484,486,487,488,491,493,494,496,498,499,501,504,505,506,507,508,510,514,517,522,523,524,527],exception:494,excess:[220,417],exchang:[2,3,6,8,63,64,209,215,216,237,245,249,253,308,316,342,346,349,376,392,417,511],exchange:376,excit:417,excite:417,exclud:[3,6,9,12,15,16,65,75,112,123,129,152,158,165,166,182,202,218,225,226,257,266,301,314,316,341,352,357,385,386,388,400,422,425,428,439,440,447,474,508],exclude:388,exclus:[1,3,12,15,95,184,407,445,447,505,515],excurs:[270,491],exectubl:12,execut:[1,2,3,4,6,8,9,11,12,16,62,179,205,250,310,359,375,378,391,492,494,504,507,510,523],exempl:465,exemplari:246,exemplifi:417,exert:[6,251,254,286,311,353,354,355,377],exhaust:[215,391,523],exhibit:[100,237,249,270,384,417,505],exist:[3,6,7,8,11,12,13,36,55,57,61,71,74,134,178,179,197,204,205,206,209,214,223,226,228,231,245,301,302,304,305,357,358,360,362,363,364,366,370,380,386,413,425,457,474,485,492,494,496,497,498,507,508,509,518,523,524,526],exit:[2,3,11,12,41,59,202,224,375,391,494,495,504,513,514,515,523],exlanatori:3,exp6:[],exp:[],expand:[],expans:[12,152,202,507,523],expect:[1,3,8,12,13,14,15,16,17,18,41,42,75,112,159,170,176,198,224,236,245,247,267,297,303,305,306,311,316,357,377,388,405,442,445,447,491,494,496,498,501,505,510,523],expens:[6,75,206,297,301,316,346,357,376,377,388,392,494],experi:[6,13,14,223,231,250,259,269,303,315,316,383,387,412,447,505,510],experienc:[6,12,15,258,259],experiment:[16,245,376,392,510],expert:12,expertis:7,expir:[514,515],explain:[1,3,6,8,9,11,12,17,41,61,65,68,71,73,75,76,77,80,81,84,94,102,129,158,166,198,202,203,205,206,209,218,219,222,224,226,228,230,270,286,297,305,316,330,357,359,375,376,379,386,387,391,397,415,428,465,467,483,494,497,498,501,503,506,517,518,523,528],explan:[3,6,61,124,129,152,202,203,218,269,297,425,490,493,494,496,505],explanatori:[3,8,128,202,203,217,218,221,316,386,493,523],explantori:[3,312],explic:446,explicit:[6,9,11,21,44,81,95,124,127,172,186,210,211,230,317,324,325,361,376,382,394,395,398,403,405,415,417,429,439,482,490,493,497,500,518],explicitli:[3,6,8,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,75,123,155,165,168,176,178,184,185,187,188,189,190,192,193,195,196,198,202,203,206,212,223,230,238,244,246,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,305,306,308,309,316,319,320,339,340,346,354,360,362,363,365,366,369,371,386,392,393,394,396,399,400,401,402,403,404,405,406,407,408,409,411,412,414,415,416,418,419,420,421,422,423,424,425,429,430,431,432,433,434,435,436,437,438,439,443,445,447,448,449,450,451,452,454,458,459,460,467,468,469,470,471,472,473,475,476,477,478,479,480,481,482,484,486,487,488,496,498,499,505,506,508,509,515,517,518],explictli:[15,509],exploit:[14,16,299],explor:[130,177],expon:[3,307,309,317,415,419,421,424,438,446,460],exponenti:[95,419,455,476,484,488,510,523],expos:11,exposit:[215,412,414],express:[6,152,164,178,210,211,228,267,297,307,317,346,352,359,398,415,417,432,442,465,466,475,523],expression:359,expressiont:398,extend:[],extens:[3,6,9,15,16,44,45,46,53,55,65,67,72,83,90,91,92,95,96,99,101,104,107,108,118,120,128,131,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,203,209,212,213,216,222,223,229,232,236,237,243,244,245,247,248,249,251,253,255,268,270,275,284,297,298,314,315,316,319,322,327,330,331,333,337,338,339,340,341,343,344,346,348,351,355,356,421,442,445,458,459,466,513,514,522],extensiv:[65,209,514],extent:[1,3,41,42,45,59,75,176,180,202,214,224,251,353,356,376,379,394,461,463,477,478,493,496,499],exterior:[3,6,176,355],extern:[],extra:[3,6,8,11,12,15,16,40,41,46,63,75,112,120,121,123,130,153,155,156,157,159,161,164,165,166,167,168,170,171,177,178,179,180,206,221,224,226,270,304,305,306,316,334,385,386,389,390,392,411,422,425,428,442,447,493,494,496,499,508,517,523],extract:[3,6,11,13,35,65,67,72,83,95,101,118,126,128,131,210,211,309,387,408,418,442,466,494,501,513],extract_atom:11,extract_comput:[11,494],extract_fix:11,extract_glob:11,extract_vari:11,extramake:[12,14],extrapol:1,extrem:[1,3,6,16,60,205,220,228,230,270,344,417,480,517],extrema:438,extreme:417,extrins:215,f77:[5,7,12],f90:[5,7,12],f_1:6,f_5:[174,348],f_a:[479,480,481],f_ave:128,f_c:480,f_f:481,f_fix_id:306,f_foo:523,f_harm:344,f_i:[28,455],f_id:[6,75,128,131,202,203,209,217,218,219,220,221,222,265,336,348,514,523],f_ij:455,f_indent:222,f_int:343,f_j:28,f_jj:99,f_k:455,f_langevin:346,f_max:[306,311],f_msst:268,f_r:[254,479,480,481],f_sigma:398,f_solid:344,f_ss:6,face:[3,6,59,61,75,166,176,180,214,351,353,354,355,356,379,421,442,459,496,499],face_threshold:176,facet:176,facil:[0,12],facilit:[6,13,42],fact:[6,8,15,247,302,334,344,422,457,465,508],factor:[1,3,6,12,17,23,27,31,34,35,39,41,46,47,59,60,61,76,95,99,112,119,126,127,130,152,172,177,180,184,195,201,202,205,206,210,211,219,224,228,230,231,237,245,250,253,255,256,268,270,271,275,299,303,307,315,317,320,323,325,334,338,342,349,350,351,355,366,377,379,386,392,394,395,398,399,401,403,408,409,410,412,413,417,422,425,429,430,442,445,447,449,450,451,452,458,460,467,476,482,493,496,499,500,505,508,510,511,514,517,522,523],factori:[3,494],factoriz:376,fail:[3,9,11,12,61,182,228,231,376,385,387,410,458,494],failur:[133,462,495,523],fairli:[11,447,505,510,518],faken:77,falcon:250,fall:[3,6,206,221,302,494,523],fals:[94,357,465,523],fame:8,famili:[484,493],familiar:[0,11,518],fan:455,far:[3,6,12,16,59,61,63,94,202,203,206,207,224,225,226,228,231,270,297,315,316,334,351,362,366,383,387,388,483,494,496,501,514],farago:253,farrel:[479,481],farther:202,fashion:[6,8,41,75,178,206,209,210,211,216,224,226,231,245,247,251,267,268,270,272,273,274,275,276,277,278,287,290,291,293,294,295,305,306,308,316,322,326,333,336,344,346,350,351,352,354,356,387,425,439,499,508,523,527],fasolino:427,fast:[6,7,9,12,13,15,16,39,202,203,281,306,347,376,377,400,439,440,445,475,477,478,498,503,505,514,524,528],faster:[1,6,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,43,45,46,47,48,49,51,53,54,56,63,65,115,123,155,165,184,185,187,188,189,190,192,193,195,196,198,202,203,206,212,223,224,230,238,244,248,252,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,303,307,308,309,316,319,320,334,341,343,346,350,354,360,362,363,365,366,369,371,376,377,389,390,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,475,476,477,479,480,481,482,484,486,487,488,491,499,505,509,517],fastest:[1,6,16,166,346,347,392,493],fatal:[3,513],fault:[74,458],faulti:12,fava:421,favor:227,favorit:7,fbmc:341,fcc:[],fcm:[287,523],fcold:237,fdirect:234,fdotr:426,fdt:[],fdti:95,fe2:177,fe3:177,fe_md_boundari:215,featu:8,featur:[],fecr:415,feedback:[7,250],feel:[7,250,251,259,297,355,357,387,447],felling:444,felt:355,femtosecond:522,fene:[],fennel:[408,430],fep:[],ferguson:[6,184,508],fermi:[1,9,10,12,14,164,392,481],fermion:417,fernando:441,ferrand:[9,13],few:[1,3,4,5,6,7,9,10,11,12,13,17,39,65,207,217,218,219,221,222,237,254,270,302,305,307,320,348,376,385,386,387,394,465,493,496,501,505,507,515,526],fewer:[1,3,11,14,15,63,259,505],fewest:3,fextern:243,feynman:299,fff:494,ffield:[407,418,457,458,465],ffmpeg:[3,12,205],ffplai:205,fft:[1,3,7,9,11,12,14,96,120,121,153,298,376,377,505],fft_inc:[12,377],fft_lib:12,fft_path:12,fftbench:[376,515],fftw2:12,fftw3:12,fftw:[9,12],fhg:[7,9],fhot:237,ficiti:474,fictiti:[6,212,213,236,243,247,299,315,408,430,434,474],field1:[497,501],field2:497,field:[],fifth:[6,330,419,451],figshar:297,figur:[1,3,8,12,15,306,493,494,518],fij:411,file0:297,file1:[11,13,241,297,345,359,386,501,503,507],file2:[11,13,241,345,359,386,501,503,507],file:[],file_from:204,filen:386,filenam:[3,12,13,15,37,41,56,198,202,203,205,206,207,215,218,219,220,221,222,224,229,240,241,297,301,304,307,308,309,312,313,316,317,318,345,346,373,374,375,386,387,393,394,398,408,415,416,418,419,427,442,443,444,449,450,451,455,456,457,458,465,466,476,477,478,479,480,481,484,492,493,494,497,498,503,507,514,523,526,527,528],filennam:503,filep:[3,202,203,206,498,503,528],filepo:313,fill:[7,9,178,205,302,346,379,388,398,445,458,499,518],filter:[206,215],final_integr:8,final_integrate_respa:8,finchham:[6,160,410],find:[0,3,4,6,7,8,9,11,12,13,15,37,39,56,63,75,77,95,128,181,198,207,216,227,228,240,241,242,245,269,297,302,303,311,315,383,385,387,388,408,425,430,434,442,449,450,465,475,477,478,517,518,523],find_custom:8,fine:[15,16,182,212,236,344,388,392,518,523],finer:[152,178,523],finest:376,finger:[178,201,267,499],finish:[6,11,41,224,359,373,375,376,389,391,392,483,501,523,524],finit:[],finni:[7,415,475],finverse:234,fiorin:[9,229],fire:[],firebrick:206,first:[0,1,2,3,5,6,8,9,10,11,12,14,15,16,20,37,39,41,42,45,46,54,56,59,61,63,64,75,87,96,99,113,114,115,117,123,127,128,139,142,145,146,150,153,163,166,172,174,176,177,179,180,181,185,198,202,203,204,205,206,207,209,210,218,219,221,222,224,227,230,240,241,245,246,251,256,267,268,269,270,297,299,304,305,306,308,313,316,320,322,330,331,332,334,335,336,343,344,345,346,348,352,357,359,360,367,379,385,386,387,388,391,392,393,394,397,398,399,401,403,405,407,408,415,417,418,419,422,423,425,426,427,428,429,430,434,439,440,442,444,445,447,449,450,451,455,457,458,465,466,474,476,477,478,479,480,481,484,488,491,492,493,494,496,497,498,501,503,505,508,509,510,513,514,517,518,523,524,525,526,528],fischer:[6,9,18,19,184,403,508],fit:[3,6,9,12,37,56,198,240,315,334,394,398,427,442,447,449,450,470,477,478,480,504,518,523],five:[77,164,306,386,398,443,496,510],fix:[],fix_deposit:3,fix_flux:215,fix_heat:237,fix_id:[3,228,268,270,272,273,274,275,276,277,278,303,306],fix_manifoldforc:518,fix_modifi:[],fix_nh:8,fix_nv:518,fix_poem:3,fix_pour:3,fix_qeq:3,fix_rattl:320,fix_reax_bond:457,fix_saed_vtk:318,fix_setforc:8,fix_shak:320,fix_srd:3,fixedpoint:[228,270],fixextern:243,fixid:215,fji:411,flag1:[233,390],flag2:[233,390],flag:[3,8,9,11,12,14,15,16,38,40,58,69,78,79,86,87,94,97,98,103,113,114,116,129,130,173,177,181,199,202,203,205,206,207,222,227,229,233,250,253,257,259,266,267,298,305,316,330,333,334,341,345,354,357,372,374,377,386,390,391,392,394,424,429,442,445,474,489,491,493,494,496,497,498,500,501,502,506,518,523],flag_buck:402,flag_coul:[402,411,434],flag_lj:[411,434],flagfld:[400,439,440],flaghi:[3,400,439,440],flaglog:[400,439,440],flagn:233,flagvf:[400,439,440],flat:[6,15,346,351,352,356],flavor:[2,7,12],fld:[351,439,440],flen:395,flex_press:395,flexibl:[3,6,8,179,205,218,229,247,271,342,349,417,480,514],flip:[3,6,230,270,353,354],floor:523,flop:12,floralwhit:206,flow:[],fluctuat:[6,66,95,228,245,246,253,256,270,275,297,298,303,321,344,346,369,413],fluid:[],fluid_veloc:260,flush:[3,206,513],flux:[],flv:205,fly:[7,9,12,41,205,209,215,220,231,234,316,320,347,398,445,514,517],fmackai:9,fmag:232,fmass:299,fmax:[385,514],fmomentum:234,fmsec:[2,206,253,254,267,270,303,316,337,338,505,516,522,524],fname:375,fno:[9,15],fnorm:[385,514],fnpt:234,fnve:237,fnvt:234,foce:425,fock:395,focu:320,fogarti:[9,309,458],foil:[152,297,466],fold:[15,332,505],folk:7,follow:[0,1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25,26,27,28,29,30,31,34,35,37,40,41,42,43,45,46,47,48,49,51,53,54,56,61,65,66,74,75,77,88,99,100,106,107,117,124,127,128,131,152,153,156,157,158,164,166,171,174,176,178,179,184,187,188,189,190,192,193,195,196,198,202,204,205,206,209,215,216,217,218,219,220,221,222,224,229,230,231,234,235,239,240,241,243,245,246,247,250,252,253,254,256,259,268,270,275,276,277,278,290,291,293,295,298,299,301,304,305,306,307,309,311,313,315,316,317,318,320,336,337,338,339,342,343,344,345,346,348,349,357,358,362,363,364,365,366,369,371,374,379,382,385,386,387,392,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,446,447,448,449,450,451,452,454,455,456,457,458,459,460,462,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,491,493,494,496,497,499,501,503,504,505,508,510,511,512,517,518,523,524,527],foo:[4,8,11,12,202,205,243,317,494,507,523],foo_species:317,foot:6,footprint:[12,392],fopenmp:[9,17],forc:[],force_uvm:16,forceatom:259,forcefield:[315,424],forcegroup:256,forcezero:383,ford:411,forestgreen:206,forev:75,forget:[254,517],forgiv:270,fork:[],form:[2,3,6,8,12,18,21,44,54,57,65,69,78,79,81,86,87,95,97,98,100,103,113,114,116,127,152,153,172,173,182,186,206,209,210,211,226,246,247,253,255,259,267,293,298,309,311,315,316,317,346,351,355,360,361,364,369,382,384,386,387,394,395,398,405,413,415,417,420,424,425,429,441,442,444,445,449,450,451,452,455,457,458,459,465,466,467,475,477,479,480,481,487,490,493,494,496,501,506,513,517,523],formal:[6,82,85,99,246,247,253,270,299,334,342,465],format:[2,3,6,7,8,9,12,13,21,37,41,44,56,57,71,81,186,198,202,203,204,205,206,207,218,221,222,224,226,240,241,298,301,305,307,309,312,316,317,318,329,345,346,357,358,361,382,386,387,393,394,398,405,415,418,419,429,442,444,449,450,456,457,458,460,466,477,478,484,485,493,494,496,497,498,501,512,513,514,523,525,526],formation:241,former:[6,12,39,41,206,224,346,350,398,400,502,508,523],formerli:[7,13],formul:[1,6,9,40,66,153,212,236,253,270,293,307,309,315,320,345,376,394,398,415,417,421,442,454],formula:[2,3,6,7,13,20,21,36,44,54,55,74,77,95,97,98,99,104,106,107,116,123,130,131,153,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,177,178,183,185,186,197,201,202,210,211,212,213,218,219,220,221,222,223,230,236,248,249,251,253,254,267,297,298,304,313,319,327,332,334,337,338,339,348,351,354,356,357,359,360,361,363,370,379,386,394,395,397,398,403,404,405,406,411,412,415,416,421,422,423,424,426,429,430,432,433,434,436,437,439,440,442,446,447,448,459,460,467,475,476,477,479,480,481,484,486,487,492,496,499,506,513,514,522,523,524],forth:[1,6,11,12,13,14,391,494,499,503],fortran:[3,6,9,11,12,13,243,415,425,442,457,458],fortun:8,forward:[3,8,95,375,387,392],foster:[398,454,455],foul:181,found:[3,6,9,12,77,172,202,227,229,237,245,250,256,262,298,341,347,359,375,388,405,408,411,491,497,498,513],four:[6,11,54,87,113,114,152,174,268,346,369,386,387,445,491],fourier:[],fourth:[6,15,115,315,330,341,403,419,451,465],fox:[6,130,184,473,508],fphi:[37,56,477,478],fpic:12,fplo:[37,56,477,478],fprime:[477,478],fqdn:252,fqq:411,fraction:[1,3,6,8,12,15,39,41,85,120,153,181,201,205,206,216,225,226,227,228,268,302,306,313,314,334,339,340,379,387,392,398,400,419,422,439,440,501,506],fragment:[42,250,313],fraig:42,frame:[91,152,206,215,268,306,353,421],framer:[205,206],framework:[5,247,393,466],franc:9,frattl:237,fraunhof:9,free:[5,6,7,9,13,28,62,65,74,95,172,210,211,297,334,343,344,345,346,384,387,395,417,438,445,448,455,487,493],freedom:[3,6,8,104,106,107,109,111,112,123,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,218,227,234,245,247,253,254,259,270,271,275,276,277,278,290,291,293,295,299,301,316,320,337,338,339,344,385,411,514,517,524],freeli:[0,6,7,12,156,157,171,176,205],freez:[],frenkel:[6,237,245,344],freq:214,frequenc:[3,6,15,39,113,206,220,284,298,299,306,311,374,412,417,458,465,491,505,510,523,527],frequent:[3,66,70,74,76,77,81,96,100,117,152,206,225,226,237,242,342,349,447,482,503,515],fri:[268,306],friction:[4,5,6,9,10,42,209,247,253,306,311,316,346,350,352,422,506],friedrich:323,from:[],front:[268,306,353],frontend:[205,310],frozen:[6,123,182,244,246,254,388,420],fs2:[6,99],fscale:250,fstr:523,fstring:494,ftol:[385,387,491,510],fuchsia:206,fuction:408,fudg:320,fugac:245,fugacity_coeff:245,fulfil:6,full:[1,2,3,6,9,12,15,16,37,39,40,99,205,219,220,229,237,256,297,317,376,377,392,398,415,417,418,421,458,482,496,498,503,504,508,510,515,517,527],full_energi:[3,245],fuller:385,fulli:[3,6,82,247,252,297,385,387,408,455,456,496,518,525,526],fulton:415,fumi:399,func:[494,523],funcfl:415,functionaliri:229,fund:[0,7],fundament:[334,522],funnel_flow:329,funrol:445,further:[3,4,6,8,12,13,63,65,67,72,75,83,94,101,115,118,127,205,206,209,218,221,222,225,231,235,256,260,299,307,318,321,323,334,346,348,357,377,383,385,386,387,388,393,397,407,445,465,491,510,511,523],furthermor:[26,187,237,317,413,417],furthest:63,futher:3,futur:[],g_ewald:3,g_ewald_6:3,g_ewald_disp:3,g_jik:455,g_p:346,ga3:177,gaa:398,gahler:384,gai:[3,421,475],gain:[15,341],gainsboro:206,galindo:446,game:250,gamma0:28,gamma:[3,6,28,253,256,260,298,306,307,309,311,350,412,413,416,421,442,446,469,472,473,476,479,481,484,514],gamma_:[3,346,352],gamma_ijk:479,gamma_n:[352,422],gamma_p:[3,346],gamma_t:[352,422],gammaa:446,gammafactor:256,gammar:446,gan:[455,476,479,481,484],gan_sw:455,gan_tersoff:455,ganzenmuel:[7,9],ganzenmul:9,gao:[6,19,184,403,508],gap:[198,439,440,456,466],gap_2014_5_8_60_17_10_38_466:456,gap_exampl:456,gaseou:7,gass:245,gather:[11,504],gather_atom:11,gather_scatter_loop_unrol:9,gathert_atom:11,gauch:190,gaug:12,gauss:[],gaussian:[6,40,65,99,113,115,246,247,253,299,315,334,338,356,376,412,414,417,420,456,475,491,523,524],gave:[3,447],gavhan:15,gaybern:[],gcc:16,gcmc:[],gcores:234,gd3:177,gdot:440,gdrudes:234,ge4:177,gec:[479,481],gen:[270,271],gener:[],genom:7,gentler:[351,354,356],gentli:416,geom:[6,376,414,491,524],geometr:[3,6,7,8,42,59,61,75,86,129,168,169,178,180,202,206,212,223,224,231,236,249,270,276,277,278,290,291,293,295,316,319,327,337,338,339,355,357,376,379,387,397,400,404,406,408,411,417,419,421,423,430,431,432,433,434,435,436,437,438,439,440,441,446,447,450,459,467,478,482,483,486,487,489,496,499,506,514,523],geometri:[3,6,7,9,13,24,38,41,58,75,86,166,178,199,224,225,226,228,231,251,321,372,379,447,496,499],georg:[7,9],georgia:13,gerar:523,gerber:438,germani:9,germann:[275,432,491,510],germano:421,gerolf:13,get:[],get_natom:[11,494],get_rank:11,get_siz:11,getenv:523,gettimeofdai:12,gewald:[6,376],gezelt:[408,430],gflop:12,gflp:12,gfortran:9,ghost:[3,6,7,12,15,60,63,64,77,176,181,182,228,230,254,270,305,316,318,374,376,388,392,412,413,414,417,422,429,489,501,506,517],ghostwhit:206,giacomo:9,gif:[4,205],gifsicl:205,gigabit:17,giko:2,gikot:2,gillan:466,gingold:[469,470,472],gio:2,git:[7,12,518],github:[],give:[0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,54,75,100,117,124,158,161,165,178,202,203,206,212,214,218,219,221,222,228,230,247,270,293,297,298,303,311,313,316,348,376,377,385,388,389,392,394,398,414,417,424,425,442,445,447,459,479,480,481,491,493,494,496,506,510,517,524],given:[3,4,5,6,7,9,11,12,15,16,21,26,36,44,55,63,65,66,70,75,117,124,135,136,137,139,140,143,144,145,146,147,148,149,150,151,152,153,172,176,180,186,187,197,198,202,203,204,206,209,216,218,220,225,226,228,230,231,235,237,245,246,247,248,250,256,262,264,267,269,270,275,296,297,298,299,306,307,313,315,317,320,329,330,332,334,336,341,346,347,350,351,352,355,361,370,376,377,392,393,394,398,399,401,402,404,405,406,407,408,409,412,413,414,415,417,418,419,421,424,430,431,432,434,442,443,444,445,446,447,448,449,450,451,452,455,459,460,462,464,465,466,475,488,491,494,496,498,499,505,506,510,522,527,528],gjf:253,gjwagn:7,gkio:2,gko:2,gkot:2,gld:[],gle4md:[247,252],gle:[],glitch:3,glob:507,global:[],glosli:[377,445],glotzer:[316,412],glue:11,gmail:[7,9,13],gmake:[12,16],gmask:[3,523],gnu:[0,7,9,12,16],gnuplot:[11,13],goal:[5,12,39],goddard:[6,9,24,307,308,309,371,417,424,457,458,508],goe:[12,54,152,178,201,237,267,326,385,388,411,416,423,432,435,467,488,499,503],gold:[74,206],goldenrod:206,goldman:306,gone:3,good:[1,3,6,10,12,15,16,41,77,130,176,177,224,253,268,270,303,307,313,320,341,376,387,388,393,406,414,415,445,447,477,478,484,491,505,510,514,518],googl:250,gordan:152,gordon:6,got:[2,518],gould:[6,184,508],gov:[0,7,9,13,393,415,418,522],govern:256,gpa:394,gpl:[0,7,8,12],gpt:[9,445],gpu:[],gpuid:392,grab:[3,6],gracefulli:3,grad:[6,9,212,236,269],gradient:[6,7,8,12,13,134,139,228,236,237,248,249,269,293,308,342,346,383,384,387,440,449,450,458,477,478],gradient_correction:464,graduat:301,graft:227,grai:206,grain:[5,6,7,9,10,28,35,40,54,70,178,181,190,209,241,297,301,316,317,334,419,423,445,450,460,478,505,508],gram:[218,415,522],grama:[9,309,458],gran:[],grana:381,grand:[3,9,209,216,245],granflow:5,granular:[],graph:11,graphen:500,graphic:11,grasp:5,gravit:248,graviti:[],grdient:215,great:[3,13,306,518],greater:[1,3,10,63,75,94,176,206,228,246,270,297,339,353,392,397,399,401,402,428,447,491,493,496,499,505,510,523,524],greathous:13,greatli:[130,237,510],green:[2,6,99,142,143,205,206,298,299,342,398,518],green_kubo:6,greenyellow:206,greffet:311,greg:[7,9],grest:[45,46,227,334,377,402,422,434,508],grew:75,grid:[3,12,41,64,130,166,177,180,203,224,256,311,334,346,347,374,376,377,490,493,496,498,500,505],grigera:6,grime:40,grmask:[3,523],gromac:[],gromacs:[6,7,202,385,423,475],gronbech:[253,376],groot:412,ground:[6,88,89,239,321,417],group1:[160,181,388],group2:[96,154,160,179,181,388],group2ndx:[],group:[],group_id:11,groupbig:334,groupid1:[259,316],groupid2:[259,316],groupid:496,groupnam:388,grouptyp:245,grow:[3,6,8,214,230,231,251,253,270,297,348,422,496,508],grow_arrai:8,grow_reset:8,growth:[6,341],grueneisen:9,gsmooth_factor:442,gstyle:[3,493],gtl:7,guarante:[68,73,84,102,119,126,178,181,202,235,307,375,379,506],guess:[3,202,303,497,518],gui:[7,11,518],guid:[1,16,40,82,85,109,110,111,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,209,263,264,323,324,325,326,329,347,454,462,464,468,469,470,471,472,473,506],guidelin:[1,8,14,16,17,18,376,477,478],guidlin:16,gullet:442,gulp:6,gumbsch:384,gunnel:445,gunsteren:[303,337,438],gunzenmul:7,gunzip:12,guo:[6,19,184,190,403,508],gwald:3,gyrat:[],gzip:[3,12,202,203,205,206,345,387,496,497,501],h12:421,h2o:[40,386,419,450,478],h5cc:204,h5md1:204,haak:[303,337],had:[3,6,11,13,61,65,129,202,203,206,207,221,222,227,228,246,247,249,253,254,255,268,270,272,273,274,275,276,277,278,290,291,293,295,302,303,334,337,338,339,346,412,414,422,474,498,502,505,511,514],hafskjold:[6,237],half:[1,3,6,8,9,15,16,39,41,60,61,180,205,217,224,230,253,270,346,351,355,388,392,395,398,406,417,445,458,461,463,496,498,499,506,517],halfwai:[41,205,206,428,518],halperin:100,halsei:422,halt:[41,206,224,237,249,359,513],halv:205,ham:[37,56],hamak:[351,355,406,459],hamilton:74,hamiltonian:[209,247,270,271,338,417,505],hammond:[376,377],han:415,hand:[3,6,9,18,54,129,154,178,196,201,205,256,267,317,379,408,417,496,499,506,509],handl:[3,15,205,229,286,309,392,395,417,439,458,484,494,510,517],hang:[3,12,493,494],happen:[3,6,8,12,14,17,63,127,182,206,216,219,388,392,494,497,504],happi:8,haptic:250,hara:480,hard:[1,259,309,315,316,414,457,465,499],harden:[9,467],harder:[351,355,517],hardi:[215,254,376,377,517],hardwar:[1,9,10,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,198,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,376,377,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,499,509],hardwir:[3,16,352],hardy2:377,harm:395,harmon:[],harmonic_1:57,harmonic_fix_wal:440,harpertown:17,harrison:394,hart:334,hartre:[395,415,417,445,522],hasan:9,hash:[39,496],hassl:315,hat:[6,269],have:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,45,46,47,48,49,51,53,54,56,59,61,65,66,68,69,70,73,74,75,76,77,79,81,86,87,94,98,99,100,103,113,114,115,116,117,123,124,125,126,127,142,152,153,154,155,156,157,158,159,161,165,167,170,171,173,174,175,176,178,179,180,181,182,184,185,187,188,189,190,192,193,195,196,198,201,202,203,204,205,206,207,212,214,216,217,218,219,222,223,224,225,226,227,228,230,231,236,238,242,244,245,246,247,248,249,250,251,253,254,255,256,259,262,265,267,268,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,294,295,297,299,301,302,303,305,306,307,308,309,311,314,316,319,320,327,329,334,335,337,338,339,340,341,345,346,347,348,350,351,352,353,354,355,356,357,358,359,360,362,363,365,366,367,369,371,376,377,379,383,384,385,386,387,388,389,392,393,394,395,396,398,399,400,401,402,403,404,406,407,408,411,412,413,414,415,416,418,420,421,422,423,424,425,426,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,447,448,449,450,451,452,454,455,457,458,459,460,464,465,467,476,477,478,479,480,481,482,483,484,486,487,488,490,491,493,494,496,497,498,499,500,501,502,503,504,505,506,508,510,511,513,514,515,517,518,522,523,524,526,527,528],haven:494,hayoun:311,hayr:253,hbcut:457,hbnewflag:457,hbond:[],hbond_cutoff:458,hcn:317,hcp:[66,70,77,379,442],hdf5:[9,204],he1:177,head:[6,20,185,360,394,420,424,457,458,511,518],header:[3,6,7,8,12,179,202,205,206,207,218,219,221,222,268,306,313,318,346,386,393,398,415,474,493,496,506,513],heal:505,heat:[],heatconduct:[],heavi:[305,334],heavili:[41,224],heavisid:346,hebenstreit:15,hecht:334,heenen:9,height:[205,231,302,387,420],held:[6,75,334,387,422],helic:190,helium:396,helix:[],hello:494,help:[3,8,12,14,15,16,17,18,202,228,230,268,297,374,398,448,479,481,518,526],henc:[1,3,13,19,20,25,31,34,35,74,75,119,158,160,168,185,218,270,309,334,350,351,355,357,360,362,366,369,377,408,420,438,455],henderson:53,hendrik:9,henin:[9,229],henkelman1:[269,387],henkelman2:[269,387],henkelman:[269,384,387],here:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,21,36,40,41,44,55,65,71,73,74,75,129,130,158,176,177,186,189,197,202,205,206,209,218,224,227,230,245,246,254,256,297,306,309,311,318,346,351,354,356,357,359,361,370,375,381,385,387,391,392,394,395,398,405,418,421,424,425,429,441,455,459,462,464,465,475,477,478,488,494,498,501,517,518,523],herist:347,herrmann:334,hertizian:352,hertz:[],hertzian:[6,352,422,475],hertzsch:422,hess:376,hessian:[5,384],heterogen:115,heurist:[347,497],hex:[3,178,237,249,379],hexagon:[70,100,442],hexahedron:203,hexat:100,hexord:[],hey:[121,153],hf4:177,hfo:407,hftn:[262,286,292,384,385,387],hg1:177,hg2:177,hgrid:334,hibb:299,hidden:[16,494],hienergi:357,hierarch:[7,505],hierarchi:[377,402,403,430,431,434,441,446,505],higdon:[9,439,440],high:[1,3,6,7,9,12,15,18,41,117,198,202,205,224,228,235,254,268,342,346,349,377,384,385,392,394,398,417,421,445,449,450,459,477,478,488,493,505,510,517],higher:[1,15,152,181,206,218,222,225,226,231,237,251,302,311,341,354,356,385,394,417,426,465,523],highest:[231,237,359,386,387,523],highli:[3,6,7,15,178,205,230,253,270,284,306,316,383,385,417,491,510],highlight:[4,6,7,13],hight:420,hilger:[376,377],hill:299,hill_height:13,him:9,hing:9,hint:12,histo:[],histogram:[1,3,6,12,65,127,176,209,219,221,222],histor:418,histori:[],hit:[3,334,353],hmaktulga:[7,9],ho3:177,hoc:369,hocknei:[376,377],hofl:204,hoh:[6,408,430,434],hold:[6,32,61,75,191,218,230,261,300,315,316,330,385,387,422,438,487,507],holdem:315,holder2:377,holder:[376,377],hole:330,holian:[275,432],holm:[297,377],holonom:345,home:[11,12,207],homebrew:12,homepag:[203,205,250],homogen:[293,447],hone:299,honeydew:206,honor:207,hood:445,hook:[],hookean:422,hoomd:207,hoover:[6,7,8,168,209,234,253,254,270,271,272,273,274,275,276,277,278,290,291,292,293,294,295,299,303,311,316,337,338,339,344,412,517],hop:[227,387,398,465],hope:[5,13,16,41,42,224,504],hopefulli:[8,385],horizon:454,horn:6,host:[3,12,15,16,229,392],hot:[6,249,271],hotpink:206,hottest:342,hour:[12,515],hourglass:[],hove:442,how:[],howev:[1,2,3,6,7,9,11,12,14,15,16,35,39,41,75,96,99,114,130,152,177,198,202,205,206,219,220,222,224,227,228,231,234,245,246,247,252,253,254,255,256,259,270,297,299,302,303,305,306,311,316,318,334,335,337,338,341,342,346,347,348,349,350,377,379,382,383,387,392,404,406,415,416,422,425,442,445,449,450,453,455,464,476,477,478,481,491,493,494,497,498,504,510,513,514,517,518,523,524],howto:[6,9,65,75,155,156,157,159,161,164,165,166,167,168,170,171,202,209,253,254,270,303,337,338,339,408,424,430,434,524],hoyt:215,hpc:[1,14],hsw:16,htm:415,html:[0,8,9,11,12,14,67,154,252,420,440,505,506],htmldoc:0,htst:510,http:[0,6,7,9,11,13,14,229,247,250,252,297,393,415,439,456,457,458,518],https:518,htype:[408,430,434,438],hubbard:409,huge:[10,12,180,284,334,496,501,513,518],huggin:[7,399,401,475],hugh:215,hugoniostat:[4,9,209,275],hugoniot:[268,275,306],hull:176,hummer:376,hundr:[7,237],hura:6,hwat:305,hwloc:[12,16],hybrid:[],hydrat:420,hydrocarbon:[394,407,417],hydrodyanm:40,hydrodynam:[7,9,40,109,111,256,258,259,260,400,439,440,462,464,475,506],hydrogen:[3,6,7,9,242,305,311,394,398,408,417,424,430,434,438,457,458,475,496,505,517],hydrostat:[3,9,228,270,275,303,316],hynninen:[409,420],hyoungki:444,hyper:[15,299],hyperbol:409,hyperradiu:381,hyperspher:152,hyperthread:[16,392],i_0:346,i_1:455,i_csid:6,i_flag1:305,i_mpi_pin_domain:15,i_mpi_shm_lmt:15,i_myflag1:305,i_myflag2:305,i_n:455,i_nam:[124,202,305,336,506],ialloi:442,iatom1:126,iatom2:126,iatom3:126,iatom4:126,ibar:442,ibead:299,ibm:[202,376,445],icc:[9,12,445],ice:6,icm:[250,518],icms:[9,250,518],ico:66,icosohedr:77,ictp:13,id1:[316,387,429,496,499],id2:[316,322,330,387,429,496,499],id_press:[228,268,270,272,273,274,275,276,277,278,303],id_temp:[227,228,268,270,272,273,274,275,276,277,278,290,291,293,295,303,337,338,339],idea:[1,3,6,11,12,41,153,205,206,224,251,297,322,334,342,377,447,504,517,518],ideal:[6,9,40,77,127,245,297,379,439,469,518],idealga:[],idealiz:6,idealli:[12,134,234,517],ident:[1,3,9,12,15,39,40,75,152,202,206,221,228,229,246,247,253,254,267,270,297,299,303,311,313,316,377,386,387,392,399,401,408,410,415,430,432,438,451,457,458,465,466,484,488,491,494,497,510,522,523,524,527],identi:392,identif:70,identifi:[1,3,6,12,37,40,56,74,154,176,178,198,240,241,305,313,334,357,424,429,442,449,450,477,478,491,493,496,499,510,511,513,515],idflag:302,idl:[17,510],idn:[316,387],idr:523,ids:[12,497],ielement:442,ieni:13,ifdef:[8,12],iff:254,iffp:494,ifort:9,ignor:[3,6,11,15,38,41,42,58,63,67,72,75,83,91,95,101,108,118,131,182,199,202,203,205,206,210,211,219,220,221,222,224,228,229,230,231,245,248,252,253,267,270,275,281,287,302,303,304,305,315,316,318,334,337,338,339,345,346,348,351,355,356,357,367,372,378,382,386,387,392,393,404,405,406,415,416,418,421,428,429,442,449,450,451,455,459,476,477,478,479,480,481,483,484,489,491,493,496,497,501,506,508,510,513,523],ignore:3,ihle:334,iii:[6,9,24,307,309,371,424,508],ijj:484,ijk:[365,369,371,398,455,484,493],ijl:369,ikeshoji:[6,237],ikj:484,iko:2,ill:[158,168,218,307],illeg:3,illegal:3,illinoi:[250,376,377,439],illog:494,illustr:[1,4,6,8,9,11,12,15,16,17,18,297,299,387,425,494,517,523],ilmenau:7,ilya:[7,9],imag:[],image2pip:205,image:[3,12,202,205,318],imageint:3,imagemagick:[4,205],imagin:[330,345,398,416,425,426,428,443,444,451,455,476,479,480,481,484,508],imaginari:[6,100,245,299,496],imbal:[1,12,41,224,392,515],imbalanc:[41,224],imbu:334,imd:[],img:205,immedi:[0,2,3,8,12,178,225,226,231,317,320,335,336,353,493,494,496,498,510,523,527],immediat:[329,523],immens:3,immers:[256,316],impact:[1,4,6,8,9,235,341,394,515],impart:[3,6,248,334,356],impei:[6,430],implement:[1,3,6,8,9,12,16,17,26,82,88,89,95,117,130,160,166,177,178,186,187,197,218,229,233,237,239,247,249,250,253,256,258,259,260,268,270,293,296,298,299,305,306,309,310,311,317,320,321,322,334,341,346,350,369,375,376,377,385,387,392,393,395,398,407,408,410,412,413,415,416,417,425,430,434,438,442,454,457,458,459,479,481,493,494,505,510,517,523,525,526],impli:[3,6,40,61,95,153,201,205,210,211,212,230,236,253,315,337,339,340,376,379,405,494],implicit:[],implicitli:8,implict:409,imporop:386,important:344,impos:[2,6,75,123,167,201,209,212,213,223,236,237,238,243,248,251,260,261,269,284,297,300,319,327,330,331,333,334,341,342,343,344,349,350,351,354,355,356,385,387,389,490,504,515],impose:248,imposs:[1,3,305,496],improp:[],improper:[3,8,15,361,367,369,370,386,496],improper_coeff:[],improper_styl:[],impropercoeff:[3,372],impropertyp:226,imprortant:107,improtant:[210,211],improv:[0,1,9,15,39,41,206,224,237,249,270,298,392,424,430,445,447,458,476,480],imrop:368,in3:177,inaccur:[1,3,6,181,268,376],inaccuraci:355,inact:[424,514,515],inappropri:178,incid:[130,177,231],includ:[],include:[12,373],includelink:9,includig:[359,375],inclus:[],inclusion:12,incom:250,incompat:[3,11,262,286,292,426],incomplet:[3,11,496],incompress:[271,417],inconsist:[3,182,227,497],inconveni:379,incorpor:[306,398,409,518],incorrect:[3,161,253,442],incorrectli:[3,379,422,523],increas:[1,3,6,15,17,37,56,59,61,120,130,153,198,202,203,205,206,220,225,226,227,230,237,240,241,245,253,303,314,315,316,342,345,349,376,377,387,392,394,417,421,449,450,458,477,478,480,494,505,510,523],increasingli:417,increment:[3,11,140,212,213,223,224,231,236,242,270,302,322,323,357,375,391,428,465,491,494,508,510,523],incur:[16,218,242,346,493],inde:161,indefatig:7,indefinit:343,indent:[],independ:[4,6,9,11,12,16,41,61,65,86,99,128,131,164,178,201,209,217,218,219,221,222,224,227,228,229,230,231,246,248,253,254,256,259,270,298,303,307,311,316,318,322,333,344,346,379,422,445,491,494,513,524],indetermin:[202,203,206],index:[0,3,6,8,11,12,37,39,40,56,57,71,73,128,129,131,176,198,202,206,217,219,240,241,250,252,299,318,346,357,358,359,382,391,447,449,450,457,458,477,478,485,496,511,523],indianr:206,indic:[2,3,6,8,11,12,15,20,40,42,54,67,70,72,78,83,87,88,89,96,97,99,101,113,115,123,126,128,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,174,185,198,202,205,210,211,228,270,298,316,346,357,360,369,376,386,388,407,414,418,425,442,445,447,451,457,458,465,479,481,493,495,496,498,514,518,523],indigo:206,indirectli:[6,305,523],indistinguish:253,indium:466,individu:[],induc:[],industri:7,ineffici:[3,6,40,66,70,74,76,77,81,100,117,152,166,205,230,270,298,376,389],inelig:216,inerti:440,inertia:[],inertiai:129,inertiax:129,inertiaz:129,inexpens:[247,505],inf:[2,3,12,349,499],infer:[3,104,106,107,172,212,213,224,225,226,236,250,301,334,342,349,379,405,418,496,508,514],infil:[3,13,316,493],infin:[3,385,501,514],infininti:205,infinit:[3,231,244,251,253,256,298,334,346,352,353,377,379,417,496,500,522],infinitesim:6,inflect:[409,432,475],influenc:[3,9,41,85,160,267,302,376,377,447,479,480,481],inform:[0,1,2,3,6,7,8,9,11,12,13,14,15,16,39,41,42,61,63,64,65,71,96,126,128,129,130,177,178,184,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,242,243,244,245,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,269,279,280,281,282,283,284,285,286,287,288,289,292,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,318,319,320,323,330,331,332,334,335,337,338,339,340,341,342,343,345,348,349,350,351,353,354,355,356,358,374,376,377,380,384,385,386,387,388,390,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,486,487,488,489,493,494,496,497,498,500,501,503,508,510,511,513,515,523,525,526,527,528],informat:[8,12,497],infrequ:[6,270,412,491,510,515],infti:[409,439,440],ingtegr:398,inher:[376,385,447],inherit:[6,482],inhomogen:[17,346,447],inidividu:385,init:[3,8,314,465],init_fil:346,init_list:8,init_on:8,init_styl:8,initi:[2,3,4,6,7,8,11,12,13,37,39,40,41,56,59,61,64,75,85,87,94,95,113,114,142,174,179,180,198,201,202,203,205,206,207,210,211,214,215,219,224,226,227,228,230,238,240,241,245,246,250,251,252,253,254,256,261,266,267,268,269,270,275,284,286,298,299,300,305,306,311,314,315,316,319,321,331,333,334,336,341,343,344,345,346,347,348,351,352,353,354,356,357,359,376,380,384,385,387,394,395,411,412,414,445,449,450,456,457,458,465,477,478,491,493,494,496,498,499,501,503,504,506,510,511,514,517,523,524,526,528],initial:[2,3,6,87,113,180,523],initial_integr:8,initial_integrate_respa:8,initialis:456,initialt:346,inlclud:11,inlin:494,inner2:[403,423],inner:[3,8,15,57,202,251,359,375,383,384,385,387,391,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,485,486,487,488,489,505,510,523],inner_distance_cutoff:424,innergroup:259,innermost:[37,56,75,390,477,478,505],innernod:259,innner:436,inordin:347,inorgan:[6,484],inp:[229,359,466,484],input1:[68,71,73,84,102,119,124,125,126,128,129,131,336],input2:[68,71,73,84,102,119,124,125,126,128,129,131,336],input:[],input_doubl:3,inquir:323,insensit:12,insert:[3,5,7,8,9,12,61,178,209,231,245,251,302,376,466,474,494,500,517],insertion:[3,231,245,302],insid:[2,3,6,8,11,75,129,141,147,178,202,203,206,217,231,232,237,242,245,251,256,259,302,316,334,351,353,354,355,356,357,374,379,494,495,496,498,499,506,523],inside:[256,432,494,510],insight:[6,13],instabl:[256,411,464],instal:[1,3,6,8,9,11,12,14,15,16,176,202,204,205,207,377,387,402,403,426,430,434,438,445,491,497,498,503,511,518,528],install:[],instanc:[6,9,11,210,229,247,353,420,425,447,455,494,517],instantan:[6,65,227,228,246,247,270,275,298,303,306,311,313,316,341,502,514],instanti:[6,11,12,215,425,493],instead:[1,3,6,8,11,12,13,15,16,17,40,41,61,63,65,74,75,98,113,128,156,160,182,184,198,202,203,211,218,221,222,224,228,229,245,253,256,259,260,298,304,305,314,316,336,354,374,376,377,380,388,392,401,402,415,429,431,438,442,445,448,458,475,482,491,499,503,510,512,517,523],institut:[9,250,301],instruct:[3,4,6,8,9,10,11,12,13,15,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,176,184,185,187,188,189,190,192,193,195,196,198,200,205,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,377,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,499,505,517],instruction:11,insuffici:[3,6,12],insult:270,insur:[3,6,11,12,16,39,40,63,77,112,114,178,179,198,202,203,205,206,212,225,226,231,236,238,242,243,245,248,253,266,304,305,314,316,334,346,351,355,356,357,359,375,386,388,392,406,421,425,453,459,477,489,493,494,496,497,501,504,505,513,514,523,524],insure:16,int_max:3,inteatom:10,integ:[3,6,8,11,12,39,40,42,66,71,74,75,117,124,126,128,131,152,176,178,181,182,184,188,189,193,198,201,202,205,206,216,218,225,226,227,231,233,243,245,246,247,250,253,254,255,256,298,301,302,305,306,311,316,334,336,338,341,345,346,365,376,379,400,412,413,414,428,442,457,458,462,464,466,491,493,494,495,496,504,505,506,510,513,523,524],integer:[3,496],integr:[],integral:[299,449,450],integrate_ulsph:[],intel:[],intel_coprocessor:15,intel_cpu:12,intel_cpu_intelmpi:15,intel_cpu_mpich:15,intel_cpu_openpmi:15,intel_phi:12,intend:[3,6,8,12,13,35,220,246,456,496],intens:[1,3,6,9,65,69,78,79,86,94,97,98,99,103,113,114,115,116,123,125,127,128,130,131,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,173,174,175,177,209,218,219,221,222,224,225,226,227,235,242,249,259,268,270,275,313,316,318,334,342,346,348,349,513,514,522],intensiv:[65,209,514],intepol:523,inter:[17,42,63,64,158,181,182,202,227,253,255,269,308,316,376,387,398,506,517,523,526,528],interact:[1,3,6,7,8,9,10,11,12,14,16,21,28,32,33,36,39,40,42,44,50,52,54,55,57,59,63,65,68,73,76,81,84,95,96,100,102,117,118,119,121,123,126,127,134,135,136,137,139,140,141,142,143,144,145,147,148,149,150,152,153,154,156,157,171,172,176,179,180,181,182,183,184,186,190,191,194,197,202,203,209,210,211,225,226,227,244,245,250,251,253,255,259,284,297,299,301,302,307,309,315,316,317,324,325,334,335,341,346,350,351,352,355,356,361,362,363,364,366,368,370,376,377,385,386,387,388,389,390,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,450,452,453,454,455,458,459,460,462,464,465,466,467,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,491,494,496,498,500,501,505,506,508,513,514,517,526],interatom:[3,4,7,9,10,178,202,269,343,344,393,398,415,417,426,442,445,465,480,523],intercept:130,interchang:6,interconnect:17,interconvert:417,intereract:39,interesect:355,interest:[1,5,7,8,9,11,13,75,177,299,341,344,377,416,440,457,458,494,523],interf:[392,518],interfac:[],interfer:[12,270,394],interg:[6,517],intergr:505,interi:440,interior:[3,6,41,355,499],interlac:442,interleav:[6,178,504],intermedi:[6,12,61,205,269,297,369,387,494,495,504,508],intermix:491,intermolecular:[154,394],intern:[],internal:[3,205,211,302,523],internal_element_set:215,internal_quadratur:215,internat:[15,130,177,215],internet:252,interpenetr:442,interpentr:[469,470,472],interpol:[6,14,37,56,110,198,205,206,215,240,241,256,297,376,377,387,398,447,449,450,458,471,477,478,479],interpret:[2,6,11,205,221,422,467,491,494,510,523],interrupt:306,intersect:[3,6,130,206,355,357,499],intersert:355,interspers:385,interstiti:[176,445],intertia:[3,103],interv:[3,6,99,204,219,253,270,306,311,312,325,465,471,491,510,523],intestieti:130,intial:[6,392,394],intiial:[41,501],intiti:[3,333],intra:316,intra_energi:245,intramolecular:[28,154,245],introduc:[6,9,100,117,205,237,270,306,311,316,369,376,393,408,417,430,434,438,476,510,523],introduct:[],intuit:379,inv:[130,177,318],invalid:[3,12,75,97,181,284,387,439,440,498],invari:[117,145,150,152],invent:320,invers:[],inverse:517,invert:[1,6,182,298],invis:355,invoc:[176,227,392,462,464,494],invok:[1,3,6,7,8,9,11,12,13,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,43,45,46,47,48,49,51,53,54,56,57,61,65,69,75,78,79,86,87,95,96,97,98,103,113,114,116,121,122,123,128,131,155,165,172,173,176,178,179,181,182,184,185,187,188,189,190,192,193,195,196,198,202,203,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,233,235,236,237,238,242,243,244,245,246,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,266,267,269,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,316,318,319,320,322,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,360,362,363,365,366,369,371,375,376,377,378,379,385,387,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,426,430,431,432,433,434,435,436,437,438,439,440,443,447,448,451,452,454,458,459,460,462,464,466,467,476,477,479,480,481,482,484,485,486,487,488,490,493,494,495,497,499,501,504,505,507,508,510,513,514,517,523,524],invokd:3,invoke:[3,12,16],involv:[3,6,7,8,12,65,119,126,127,128,158,182,209,216,225,245,256,301,304,309,334,376,384,385,387,397,414,421,428,476,479,481,492,493,499,501,505,510,511],ioff:[386,496],ion:[6,7,9,160,296,330,346,377,398,409,418,420,442,445,465,475,481,488,496,517],ionic:[6,9,399,401,409,417,418,452,465,517],ioniz:[407,417],ionocoval:9,iparam:[3,226],ipi:[],ipp:[],ir3:177,ir4:177,irregular:[6,41,60,224,228,230,270,316],irrelev:451,irrespect:[439,440],irrevers:[234,317],is_act:[3,523],is_avail:[3,523],is_defin:[3,523],isbn:487,isele:[376,377],isenthalp:[9,270,271,272,273,274],ismail:[376,377,402,434],isn:[3,8,11,12,237,249],iso:[3,228,234,254,270,271,272,273,274,275,276,277,278,303,311,316,517],isobar:[9,270,271,276,277,278,321,413],isodem:417,isoenerget:[9,321,413],isoenthalp:[321,413],isol:[3,181,357],isomorph:299,isotherm:[9,245,270,271,276,277,278,303,321,413],isotop:305,isotrop:[6,100,253,303,376,377,400,421,439,440],isovolum:318,isralewitz:322,issu:[1,3,6,9,11,12,13,14,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,61,75,77,87,113,123,155,165,184,185,187,188,189,190,192,193,195,196,198,205,212,223,227,228,230,231,236,237,238,244,245,248,253,268,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,299,303,305,308,309,316,319,320,333,337,338,339,344,354,356,359,360,362,363,365,366,369,371,377,386,387,390,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,474,476,477,479,480,481,482,484,486,487,488,496,498,499,505,508,513,514,515,523,524],issue:215,ital:[457,458],itali:13,item:[6,7,8,41,202,206,224],iter:[3,6,12,39,41,65,204,212,213,223,224,228,234,236,243,251,286,292,298,307,308,316,320,331,341,357,359,375,383,384,385,387,391,465,491,501,505,510,514,515,523],iterat:[12,385],ith:[75,128,131,217,218,219,220,221,222,336,348,514,523],itself:[2,3,6,7,8,9,11,12,13,17,42,61,99,118,169,202,204,205,206,207,219,220,229,234,254,265,269,310,316,346,357,359,386,387,408,418,421,425,426,449,450,477,478,494,500,503,504,508,523,528],itset:506,ityp:[3,57,126,127,178,214,226,309,485],itype1:127,itype2:127,itypen:127,ivector:8,ivori:206,ixcm:316,ixi:[42,316,386],ixx:[42,103,316,386,523],ixy:[103,386,523],ixz:[42,103,316,386,523],iycm:316,iyi:[42,103,316,386,523],iyz:[42,103,316,386,523],izcm:316,izrailev:322,izumi:480,izz:[42,103,316,386,523],j0jt:99,j20:219,j_m:152,jackson:446,jacobi:3,jacobsen:384,jacs:[6,184,508],jagreat:13,jame:[9,18],janssen:297,januari:442,jaramillo:[7,9,13,417],jarzynski:322,jatempl:9,jcc:9,jcp:351,jec:13,jeff:13,jeffer:15,jello:270,jensen:[253,376],jeremi:[9,444],jerom:9,jewett:13,jiang:[254,517],jiao:[9,13],jiht:[7,9],jik:398,jim:7,jku:[7,9],jmake:12,jmm:152,joannopoulo:268,job:[12,62,320,504,515],jochim:[270,271],john:[7,9,13,204],johnson:[9,13],join:[6,422,499],joint:[3,301,424],jon:[9,74],jonathan:9,jone:[1,3,6,7,9,10,12,13,45,46,66,95,118,121,184,209,215,237,303,334,351,355,377,379,385,394,397,401,402,403,404,406,411,421,423,424,425,428,429,430,431,432,434,435,437,438,441,446,447,455,459,460,470,475,483,508,517],jonsson:[77,269,384,387,465],jorgensen:[6,195,408,430,434],joul:522,journal:[172,190,215,309,377,415,445,457,458,469,470,472],jparam:[3,226],jpeg:[3,12,205],jpeglib:12,jpg:[4,8,12,202,205,206,527],jpg_inc:12,jpg_lib:12,jpg_path:12,jpl:[7,9],jth:523,jtype1:127,jtype2:127,jtype:[3,57,127,226,485],jtypen:127,judg:510,judici:6,julien:9,jump:[],june:207,just:[3,6,8,11,12,13,16,18,21,28,42,44,61,63,99,118,121,127,153,156,157,171,182,186,202,205,218,230,234,242,259,267,303,305,316,341,346,357,359,361,386,387,392,394,397,405,425,455,483,494,498,500,501,503,504,515,517,518,523,527,528],justo:416,jusufi:[409,420],jut:355,jzimmer:9,k11:99,k22:99,k33:99,k_2:364,k_4:364,k_d:517,k_sigma:398,k_ub:19,kadiri:70,kalia:484,kamberaj:316,kapfer:117,kappa:[4,6,99,321,342,408,413,430,486,487],kappa_:346,karplu:95,karttunen:256,kate:[],kaufmann:15,kayser:409,kbit:206,kboltz:334,kbp:206,kbt:311,kcal2j:99,kcal:[250,505,517,522],kde:13,ke_eta_dot:270,ke_etap_dot:270,ke_omega_dot:270,keblinski:[408,465],kecom:158,keef:130,keep:[3,7,12,61,75,196,226,230,251,262,298,314,344,349,376,385,408,438,466,491,496,502,504,510,514,518,523],keflag:3,kei:[6,16,61,334,484,510,515],keir:13,kelchner:74,kelkar:349,kelvin:522,kemper:[308,407],kepler30:16,kepler32:16,kepler35:16,kepler37:16,kepler:[1,9,10,12,14,16,392],kept:[6,209,275,343,344,517],kernel:[7,13,15,16,40,110,141,147,215,246,247,325,445,468,469,470,471,472,473,496,506],keword:205,keyboard:12,keyword:[],keywrod:417,kforc:517,khaki:206,khersonskii:152,khvostov:15,kick:[212,213,214,236,353],kilogram:522,kim:[],kimvirial:[3,426],kind:[1,2,3,4,6,7,8,9,10,11,12,16,39,40,41,42,57,63,64,65,77,128,158,202,203,205,209,216,218,219,221,224,227,229,233,245,248,267,316,320,334,341,356,387,389,391,398,417,457,458,485,491,495,496,501,502,509,510,517,523],kinemat:[9,439,440],kinet:[3,6,8,65,90,91,92,93,95,99,104,105,106,107,108,123,153,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,209,216,218,228,234,237,245,249,253,266,268,270,271,272,273,274,275,276,277,278,303,306,317,334,342,349,350,385,417,419,450,478,491,506,510,514,517],kio:2,kiss:[9,12],kjl:369,klahn:345,klapp:376,klein:[6,9,215,229,270,271,294,316,430,460],kloss:7,kmax:[3,130,318,376],kmp_affinity:15,knc:16,knight:15,knl:15,knock:346,know:[3,9,11,12,41,65,67,72,83,101,118,127,209,234,252,254,284,334,385,416,426,482,494,497,500,505,517,518],knowledg:[4,8,9,205,426],known:[3,12,152,205,237,249,298,307,316,343,493,510,524],kohlmey:[7,9,13,17,376,377],kokko:[1,3,9,12,16,319,392,458,499,509,523],kokkos:[],kokkos_arch:[9,16],kokkos_cuda:[9,12,16],kokkos_cuda_options:16,kokkos_debug:16,kokkos_device:16,kokkos_devices:16,kokkos_omp:[9,12,16],kokkos_pg:16,kokkos_phi:[9,12,16],kokkos_use_tpls:16,kolafa:377,kollman:[6,184,508],kondor:456,kone:[343,344],kong2011:298,kong:[9,13,298],konglt:9,koning00a:343,koning00b:343,koning96:[343,344],koning97:344,koning99:343,kooser:13,koskinen:384,kosztin:322,kraker:15,krau:13,kremer:[45,46,508],kress:[443,444],kspace:[],kspace_modifi:[],kspace_styl:[],kspce:12,kspring:269,kstart:315,kstop:315,kth:[246,299],kub:19,kubo:[6,99,342],kumagai:480,kumar:[9,439,440],kuronen:455,kurt:301,kuster:[286,292,381],kutta:317,l12:442,l_box:417,l_skin:346,la3:177,laa:9,laas:9,lab:[5,7,9,12,122,454],label:[],laboratori:[0,88,89,239,268,306,321],lack:[3,15,268,417],lackmann:398,ladd:[293,344],lafitt:446,lag:346,lagrang:[142,143],lagrangian:[6,134,135,136,137,139,140,141,142,143,144,145,147,148,149,150,215,268,306,307,324,325,462,464,517],lagrangian_posit:[268,306],lagrangian_spe:[268,306],lai:490,lambda1:[479,480,481,484],lambda2:[479,480,481],lambda3:[479,481],lambda4:484,lambda:[95,122,130,172,177,256,318,343,344,346,393,416,438,448,476],lambda_fin:343,lambda_initi:343,lamda:[3,53,334,448],laminar:473,lammp:[0,3,4,7,8,9,11,12,13,14,16,203,298,380,387,391,405,442,445,491,494,505,507,510,511,518,523],lammps2pdb:[6,13],lammps_clos:6,lammps_command:6,lammps_extract_atom:6,lammps_extract_comput:6,lammps_extract_fix:6,lammps_extract_glob:6,lammps_extract_vari:6,lammps_fil:6,lammps_gather_atom:3,lammps_get_coord:6,lammps_get_natom:6,lammps_ns:[6,12],lammps_open:6,lammps_potentials:[405,407,507],lammps_put_coord:6,lammps_quest:[6,243],lammps_rk4:317,lammps_scatter_atom:3,lammps_set_vari:6,lammps_sppark:6,lammps_vers:6,lammpsplot:13,lammpstrj:[497,501,517],lammpsvirial:[3,426],lamms:6,lamoureux:[6,234,482,517],land:15,landron:465,lane:1,lang:517,langevin:[],langston:42,languag:[6,11,12,16,494,523],lanl:9,lapack:12,laps:347,laptop:7,larentzo:[9,88,89,239,321],larg:[0,1,3,4,5,6,7,8,9,10,12,13,15,16,17,39,40,41,60,61,74,75,120,127,129,153,158,161,166,178,179,180,190,198,201,202,203,205,206,218,224,227,228,230,231,235,237,245,256,270,284,293,298,301,302,303,305,306,311,313,314,315,316,320,330,334,342,346,347,349,351,355,369,376,377,381,383,385,388,392,406,412,417,421,422,429,445,447,449,450,453,459,477,478,491,494,496,498,499,503,505,510,513,515,517,524,528],larger:[1,2,3,6,11,12,13,39,41,56,61,74,75,127,178,180,205,219,221,222,231,237,249,256,265,270,293,294,302,307,311,315,316,318,321,329,334,341,346,350,351,352,355,376,377,383,384,385,387,388,389,392,398,406,408,409,417,422,430,434,440,447,453,474,475,483,496,500,501,504,505,510,523],largest:[3,6,12,39,75,176,178,235,376,385,389,449,450,474,477,478,496,498,504,505,516,523],laroch:311,laser:346,last:[1,2,3,5,6,11,12,14,37,42,56,61,63,75,121,128,153,176,198,202,203,205,206,207,208,218,219,221,222,224,235,269,314,318,330,334,359,374,385,386,387,388,392,396,397,398,399,406,407,412,413,415,420,421,422,423,424,428,431,433,435,436,437,440,446,448,459,465,467,474,477,478,482,483,486,487,491,492,494,497,501,503,504,508,510,511,514,515,523],lat:442,late:5,latenc:[10,250],later:[6,9,11,12,16,40,61,75,114,180,182,219,231,275,293,301,322,341,357,359,376,385,386,391,392,394,398,494,496,498,500,510,513,515,518,523,526],latest:[7,218,219,220,221,222,318,498],latex:8,latgen:298,latitud:152,lattc:442,latter:[2,6,9,11,14,15,16,41,42,95,156,206,210,211,217,218,219,224,228,251,260,270,272,273,274,276,277,278,301,303,305,309,316,317,334,348,350,355,375,386,398,400,401,402,403,404,411,428,430,434,438,445,452,460,465,482,491,493,494,499,502,513,514,523,527],lattic:[],launch:[1,3,6,11,12,15,16,17,392,493,494,515],laupretr:369,lavend:206,lavenderblush:206,lavgevin:230,law:[6,268,390,462,464],lawngreen:206,lawrenc:9,layer:[6,75,342,346,349],layout:[1,3,16,180,374,493,496,505],lb_fluid:256,lbl:[7,9,176],lbnl:9,lbtype:256,lcbop:[],ld_library_path:[11,12],ldfftw:12,ldrd:7,lead:[2,3,6,12,21,24,39,41,44,61,63,81,95,127,172,176,182,186,206,210,211,221,224,231,247,256,275,306,316,320,334,341,342,349,361,369,376,382,387,392,405,408,430,434,436,445,464,490,496,506,517,518,523,524],least:[3,6,12,17,75,130,177,204,216,237,247,301,350,388,392,425,477,478,483,494,523],leav:[3,7,11,12,16,20,41,59,153,168,185,224,228,231,270,272,273,274,276,277,278,302,303,316,320,360,447,496,500,508],lechman:334,lectur:322,led:[3,5],lee2:442,lee:[215,442],left:[6,11,12,41,118,154,197,205,206,227,251,296,297,317,334,357,359,379,496,498,503,518,523,528],leftmost:[41,224],legaci:[12,15,203],legal:7,lehoucq:454,leimkuhl:354,leiu:412,lemonchiffon:206,len:506,lenart:[409,420],length:[3,6,8,11,12,15,17,20,37,39,40,41,42,44,53,54,55,56,57,60,61,63,67,68,71,72,73,75,78,83,84,85,88,90,95,96,97,98,99,101,102,113,115,118,119,123,125,126,128,129,130,131,140,142,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,174,176,177,180,185,198,202,203,205,206,209,216,220,221,222,224,225,226,227,228,230,240,241,245,248,256,268,269,270,271,275,284,292,297,303,313,316,318,320,321,330,334,341,345,346,348,351,355,377,379,381,383,385,387,388,390,394,395,398,399,401,408,409,414,417,420,424,428,430,442,447,449,450,457,458,468,477,478,479,482,486,487,489,496,499,504,506,513,514,517,523],lengthi:245,lennard:[],lennardjones612_universal__mo_826355984548_001:210,lenoski:[443,444],less:[1,3,6,13,14,15,16,17,37,41,56,59,60,61,75,80,100,117,119,126,127,129,156,157,171,198,206,218,221,222,224,226,227,228,230,231,237,242,251,268,270,297,309,311,318,334,353,354,356,377,379,385,389,392,398,403,421,422,428,439,440,447,459,476,477,478,481,487,496,515,523,524],let:[1,12,37,56,161,189,198,219,240,241,320,334,352,392,406,449,450,477,478,505,509,517,526],lett:[152,166,247,254,256,268,311,322,343,344,384,398,415,417,421,438,449,450,466,517],letter:[2,12,41,59,61,206,224,233,234,254,299,359,391,456],leuven:9,level:[2,3,8,11,12,16,202,205,210,211,212,213,220,223,232,236,248,250,251,265,267,269,270,297,308,315,319,322,330,331,332,333,350,351,355,359,374,377,391,398,402,403,430,431,434,441,445,446,457,458,493,505,510,515,523],lever:474,levin:422,lewi:323,lexicon:7,lgr_po:[268,306],lgr_vel:[268,306],lgvdw:458,li1:177,liang:407,lib:[1,3,9,11,12,14,15,16,203,310,392,407,426,494,497],libatom:[9,456],libcolvar:12,libdir:11,libfftw3:12,libgpu:[9,14],libjpeg:12,liblammp:[11,12],liblammps_foo:[11,12],liblammps_g:[11,12],liblink:9,libmeam:9,libmpi:11,libmpi_stub:12,libmpich:12,libpackag:12,libpng:12,libpoem:9,librar:9,librari:[],libreax:9,librt:16,licens:[0,7,8,12,205],license:[7,12],lie:[6,318],lieu:376,life:7,lifo:8,ligand:330,liggghts:7,light:305,lightblu:206,lightcor:206,lightcyan:206,lightest:341,lightgoldenrodyellow:206,lightgreen:206,lightgrei:206,lightli:330,lightpink:206,lightsalmon:206,lightseagreen:206,lightskyblu:206,lightslategrai:206,lightsteelblu:206,lightweight:334,lightyellow:206,like:[3,4,6,7,8,9,11,12,15,16,17,39,42,54,61,162,169,205,207,212,228,229,231,234,236,250,253,254,255,268,270,271,276,277,278,283,284,286,290,291,293,294,295,297,303,305,306,307,311,316,318,321,334,336,337,338,339,340,341,342,349,350,351,354,355,356,359,376,379,381,384,387,392,398,406,411,412,413,417,418,422,424,425,435,436,442,466,477,478,481,482,486,487,493,494,496,497,498,499,501,506,511,514,515,517,518,523,524],likelihood:[130,177,227],likewis:[1,6,12,14,17,39,41,75,96,126,215,224,225,226,245,253,254,270,271,275,294,311,334,337,338,339,377,387,393,397,398,408,415,418,445,475,494,496,498,508,523],likhtman:220,lime:206,limegreen:206,limit:[],limit_eradiu:417,limit_veloc:[324,325],lindahl:376,line:[],linear:[],linearli:[6,10,128,206,230,298,351,353,354,356,386,387,389,496,523],lineflag:[6,496],lineforc:[],linen:206,linesearch:[8,12,383],ling:[9,13],lingo:[11,426],link:[5,6,7,8,9,11,12,13,14,16,21,36,44,55,65,186,197,203,205,209,226,250,254,301,310,312,322,330,361,370,395,405,442,456,457,458,475,482,494],linker:12,linkflags:[9,15,17],linux:[9,10,11,12,14,15,205,207,250],linuxamd64:497,liouvil:270,lip:13,lipid:[4,9,10,13,28,316],lipton:301,liquid:[6,7,9,15,28,39,40,41,61,95,100,153,164,176,224,228,230,245,270,303,306,311,341,411,445,447,452,480,505],lisal:[321,413,474],lism:9,list:[],listen:[250,252],listfil:429,liter:[496,507],literatur:[6,8,442,465,476],lithium:417,littl:[1,3,12,15,66,237,270,388,491,499],littmark:[442,475,481,488],liu:[424,458],livermor:9,lj1043:[],lj126:[],lj12_4:460,lj12_6:460,lj1d:298,lj6:3,lj93:[],lj96:[],lj9_6:460,lj_flag:394,llnl:[5,7,9],lmp1:11,lmp2:11,lmp2arc:[],lmp2cfg:[],lmp2vmd:[],lmp:[11,494,517],lmp_auto:12,lmp_cuda:16,lmp_foo:12,lmp_g:[6,11,12,13,16,375],lmp_gpu:14,lmp_ibm:[12,375],lmp_inc:12,lmp_kokkos_cuda:16,lmp_kokkos_omp:16,lmp_kokkos_phi:16,lmp_linux:[4,6,12],lmp_mac:12,lmp_machin:[1,12,14,15,392],lmp_mpi:[12,16,17,18,299],lmp_mvapich:16,lmp_openmpi:16,lmp_win_mpi:12,lmp_win_no:12,lmpptr:[11,494],lmpqst:243,lmpsdata:13,lmptype:[3,12,243],load:[1,3,4,6,7,9,11,12,15,16,17,41,205,207,209,224,250,306,392,407,493,494,515],loadabl:11,loca:206,local:[],localhost:250,localized_lambda:215,localonli:12,localtemp:317,localvector:65,locat:[3,6,8,11,12,26,63,127,130,176,177,187,198,202,231,232,237,256,333,344,355,383,405,408,418,419,420,430,432,434,482,493,496,497,499,506,508],lock:[3,391,523],lockstep:[228,270,303,316],log:[],logarithm:[148,149,523],logfil:[0,3,6,12,304,380,492],logfreq2:523,logfreq:[206,503,512,523],logic:[7,10,11,12,15,16,41,178,224,357,359,491,493,494,497,505,510,523],lomdahl:[275,432],london:[13,245,458],lone:[457,458],longer:[1,3,4,6,8,12,13,54,127,202,206,217,218,219,220,221,222,225,245,253,297,301,306,316,320,341,351,355,357,383,392,394,422,465,493,501,505,510,520],longest:[41,224,225,388,483],longitudin:330,look:[1,3,6,8,11,12,17,54,63,202,205,208,405,466,477,478,517,518,523],lookup:[3,39,198,447,449,450,477,478],lookup_table:318,loop:[3,4,6,7,11,12,17,39,42,68,71,73,84,96,102,119,126,127,129,153,205,218,225,226,235,341,357,359,375,378,385,387,388,390,391,414,445,465,491,492,494,500,501,504,505,510,514,515,516,523,524],loopa:[359,375,391],loopb:[359,375,391],loopmax:465,loopvar:523,lopez:[270,271],lorant:307,lorentz:177,lose:[6,60,61,180,228,230,254,270,422,496],loss:[6,522],lossi:205,lossless:205,lost:[3,12,13,59,112,231,314,323,334,447,496,497,498,505,513],lot:[17,322,376],low:[1,3,6,7,12,41,161,176,202,205,224,234,254,293,311,316,342,349,377,445,449,450,458,477,478,487,510,517],lower:[2,3,6,9,11,12,15,41,59,61,75,96,154,167,201,205,206,219,220,221,224,228,234,250,253,254,256,270,306,311,342,349,351,352,357,358,376,379,391,409,442,510,519,521,524],lowercas:[],lowest:[56,152,359,386,506,510,511,523],lps:[454,475],lrt:[15,392],ls_:146,lsfftw:12,lsurfac:346,ltbbmalloc:15,lu3:177,lubric:[],lubricateu:[],lubricuteu:281,luci:[],lucki:12,luigi:13,lumped_lambda_solv:215,lussetti:342,lustig:[7,13],lybrand:377,lyulin:369,m4v:205,m_d:517,m_eff:[352,422],m_fill:3,m_i:332,m_lambdai:454,m_taubi:454,m_u:256,m_v:256,m_yield_stress:454,mac:12,mac_mpi:12,mach:[9,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,323,324,325,326,329,506],machin:[1,3,4,6,7,9,10,11,12,14,15,16,17,18,202,203,205,250,270,347,376,383,385,390,445,493,498,503,504,505,518,524,528],machines:12,mackai:[9,256,258,259,260],mackerel:[6,19,184,254,403,508,517],macos:205,macro:16,macroparticl:414,macroscop:[7,248,268,454],made:[3,6,9,11,12,14,32,41,42,50,66,67,72,83,86,101,179,191,202,205,207,209,210,211,216,224,231,235,250,259,302,310,314,316,344,357,367,388,392,421,422,425,457,459,467,493,500,506,509,518,519,521,524,526],madura:[6,430],magazin:415,magda:351,magenta:206,magic:[3,11],maginn:[172,349],magnitu:336,magnitud:[6,74,115,119,124,154,178,201,202,203,206,231,232,248,249,251,253,322,330,331,333,334,341,352,377,385,411,422,506],mai:[0,1,2,3,6,7,8,11,12,13,14,15,16,17,28,37,39,40,41,56,60,61,63,65,68,71,73,75,84,94,95,96,97,98,100,102,112,113,115,117,118,119,120,121,123,124,125,126,128,129,130,152,153,156,157,158,166,167,171,172,176,177,178,179,180,181,182,197,198,201,202,203,204,205,206,207,209,210,211,212,214,216,218,219,220,221,222,223,224,225,226,228,230,231,234,235,236,237,240,242,245,246,247,249,250,251,253,254,255,256,257,259,265,266,267,268,270,271,275,284,286,288,292,298,299,302,303,304,305,306,307,308,311,313,314,315,316,318,319,320,322,324,325,327,334,336,337,338,341,342,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,374,375,376,377,379,383,384,385,386,387,388,389,390,392,394,395,397,398,406,412,417,422,425,426,428,436,438,440,442,443,444,445,447,449,450,457,458,460,466,474,477,478,484,488,491,492,493,494,496,497,498,499,500,501,502,503,504,505,506,508,510,511,513,514,515,517,518,523,524,526,528],mail:[3,7,9,12,357,518],main:[3,6,8,11,12,203,250,256,316,343,344,415,465,482,494,511],mainboard:1,mainli:452,maintain:[8,9,13,15,39,163,226,230,293,334,347,384,393,415,505,508,518],major:12,make:[],makefil:[3,7,9,11,12,13,14,15,16,17,18,202,203,377,392,445,494],makelist:12,maks:422,malloc:[3,12],manag:[5,8,12,202,250,299,336,505],manbi:466,mandadapu:215,mandatori:[8,202,229],manh:398,mani:[1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,37,39,40,41,42,56,63,65,71,75,96,99,112,113,127,154,158,178,179,198,201,202,203,204,205,206,207,209,210,211,212,216,217,218,219,220,221,222,224,225,226,227,228,230,231,237,240,241,242,245,246,249,250,256,257,266,268,270,271,275,284,296,297,298,302,303,305,307,308,309,311,313,316,318,320,334,345,346,348,357,359,376,385,387,388,390,392,405,407,414,417,420,424,425,449,450,465,466,475,477,478,479,481,494,496,498,500,501,503,504,505,506,508,509,510,511,515,523,524,528],manifold:[],manifoldforc:[],manipul:[12,41,224,250,408,455,507],manner:[2,3,6,9,11,12,16,41,153,174,205,210,211,212,213,221,224,230,235,236,243,249,253,254,270,276,277,278,290,291,293,295,310,337,338,339,342,343,344,349,351,355,359,377,386,387,391,392,415,417,425,428,439,483,491,493,496,497,498,499,501,505,510,511],manolopoulo:252,mantissa:3,manual:[0,1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,60,65,71,75,123,130,155,156,157,159,160,161,164,165,166,167,168,170,171,177,184,185,187,188,189,190,192,193,195,196,198,202,203,205,207,212,223,230,238,244,248,252,253,254,269,270,272,273,274,275,276,277,278,279,280,282,285,288,289,290,291,293,295,303,305,308,309,316,318,319,320,337,338,339,349,354,359,360,362,363,365,366,369,371,377,387,391,392,393,394,396,397,399,400,401,402,403,404,406,407,408,410,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,491,499,505,509,510,511,514,523],manybodi:[3,7,8,9,12,153,154,385,425,508,523],map:[2,3,11,12,16,17,39,61,66,75,130,134,152,166,177,178,201,205,206,215,237,298,315,376,377,379,387,393,394,398,407,415,416,418,425,426,427,442,443,444,447,451,455,456,457,458,465,466,474,476,477,478,479,480,481,484,493,496,498,510,523],map_fil:298,mapflag:12,mara:[9,465],march:[9,442],margin:510,mari:13,mark:[423,438,462,464,465],marker:304,maroon:206,maroonmpi:11,marrink:423,marsaglia:[3,246,247,253,254,311],marseil:9,martin:[298,442],martinez:216,martyna:[270,271,316,505],mashayak:16,mask:[3,297,523],mask_direct:215,mass:[],mass_matrix:215,massdelta:320,massiv:[0,205,256,299,342,349],massless:[6,254,377,408,430,434,438,517],masstot:316,master:[3,387,491,510],mat:[70,215,407,480],match:[3,6,9,11,12,16,37,41,56,61,75,127,161,198,206,207,224,227,230,240,241,250,270,271,293,313,318,334,341,376,377,398,424,436,442,449,450,456,457,458,477,478,490,494,496,497,498,501,505,510,517,523],matchett:42,mater:[77,393,444,455,465],materi:[6,7,9,61,74,136,137,181,214,215,230,245,251,268,297,303,311,342,346,352,408,415,416,417,422,426,442,443,445,454,457,458,461,462,463,464,491,496,510,517,522],material_fil:215,math:[],mathemat:[130,152,177,178,201,210,211,212,213,223,228,236,246,248,249,251,253,254,304,319,327,337,338,339,351,354,356,466,492,499,506,524],mathrm:518,matlab:[],matric:[9,152,247,298,421],matrix:[3,6,9,99,176,219,228,247,298,307,376,379,445],matter:[6,12,39,59,61,75,160,346,388,394,410,415,417,442,460,465,479,481,484,488],mattox:9,mattson:[88,89,123,153,239,321],max2theta:177,max:[3,6,8,12,14,17,75,128,206,221,224,226,228,231,265,302,320,334,359,379,383,385,387,388,392,465,491,496,510,514,523],max_alpha:8,max_cell_s:414,max_group:3,max_nn:325,max_travel:326,max_vel:[324,325],max_veloc:325,maxangl:245,maxbody:3,maxbond:[3,226],maxedg:176,maxev:[385,491,510],maxfoo:8,maxim:[341,387,515],maximum:[3,6,8,12,14,16,24,41,42,45,53,54,59,61,63,100,117,127,128,130,133,176,177,179,180,201,202,214,219,220,221,224,226,230,231,235,237,245,265,284,286,292,297,302,307,320,323,324,325,334,347,376,377,383,387,388,392,395,398,414,420,439,440,465,496,499,504,514,523,524],maxit:[286,292,307,385,491,510,514],maxsize_restart:8,maxspeci:3,maxwel:[16,296],maxwell50:16,maxwell52:16,maxwell53:16,maxx:455,mayb:13,mayer:[7,399,401,465,475],mayo:[6,7,13,24,371,424,508],mbt:185,mbyte:[12,311],mcc:[457,458],mcdlt:[168,249],mcdram:15,mcgraw:299,mdatom:245,mdf:[],mdnvt:245,mdregion:215,mdtemp:245,mdump:[41,224],meam:[],meam_sw_splin:444,meamf:442,mean:[2,3,4,6,7,8,11,12,15,16,21,33,36,37,38,39,41,42,44,52,54,55,56,58,59,61,63,65,71,75,76,80,81,90,92,93,95,99,100,113,114,115,117,123,124,125,126,127,128,129,131,152,153,155,156,157,159,160,161,164,165,166,167,168,170,171,172,178,179,181,182,184,186,194,197,198,199,200,201,202,203,205,206,207,209,210,211,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,236,237,240,243,245,246,247,248,249,251,253,254,255,259,267,270,272,273,274,275,276,277,278,284,286,290,291,292,293,295,297,299,301,302,303,305,311,313,314,316,319,320,322,327,330,334,336,337,338,339,341,342,345,346,348,349,350,351,352,353,354,355,356,357,361,362,363,364,366,368,370,372,376,377,379,382,383,385,386,387,388,390,392,395,399,401,402,403,405,408,412,414,415,417,421,422,424,425,428,430,431,434,441,442,446,447,449,450,452,453,455,457,458,459,460,474,476,477,478,479,480,481,483,487,490,491,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,510,511,513,514,517,522,523,524,525,526,528],meaning:[127,136,137,139,142,146,425],meaningless:[70,341],meant:[6,316,482,500],measur:[],meaur:515,mech:454,mechan:[6,8,9,11,12,16,40,88,89,138,154,215,237,239,249,299,310,398,417,426,432,445,462,464,490,494,496],mechanic:310,mechanim:134,meck:117,media:205,medium:487,mediumaquamarin:206,mediumblu:206,mediumorchid:206,mediumpurpl:206,mediumseagreen:206,mediumslateblu:206,mediumspringgreen:206,mediumturquois:206,mediumvioletr:206,mee:341,meet:[3,12,179,205,206,226,227,347,501],mehl:393,mei:441,meloni:39,melros:[439,440],melt1:207,melt2:207,melt3:207,melt:[4,10,227,298,398,445,480],mem:14,member:[181,184,301,398],membran:[28,296,487],memori:[3,5,6,7,8,9,12,14,15,16,17,39,40,62,75,206,218,220,246,247,311,346,374,388,392,398,447,453,458,493,496],memory_usag:8,mendelev:415,mention:[1,6,7,11,40,42,230,249,256,275,351,379,387,394,457,458,498,523],menu:[205,250],mep:[269,387],mer:[4,10,227],mercuri:518,meremianin:152,merg:[],merz:[6,184,508],mescscop:454,mesh:[],meshless:9,meso:[],mesocop:40,mesoparticl:[239,240,241,413],mesoscal:7,mesoscop:[7,109,110,111,263],mess:[3,506],messag:[],met:[8,41,127,224,359,375,377,385,387,391,483,504],metadynam:[9,13,229],metal:[3,5,7,9,10,40,61,75,167,178,214,215,230,231,249,251,306,307,311,350,351,353,354,356,377,379,389,393,394,398,407,415,416,417,418,425,427,442,443,444,445,455,456,465,476,479,480,481,484,499,513,514,516,522],meter:[389,522],methan:[306,311],methanol:4,methin:369,method:[1,3,4,5,6,7,8,9,11,12,13,15,16,18,37,39,40,41,56,66,95,99,121,153,198,209,210,211,215,219,220,224,229,240,241,243,253,256,260,265,268,270,298,299,306,307,308,309,311,316,317,320,321,322,341,342,343,344,349,376,377,383,384,385,387,392,393,395,398,407,408,415,417,418,442,443,444,447,449,450,455,465,475,477,478,484,491,493,494,496,497,499,510,517],methodolog:[6,77,153,299,376],metin:[7,9],metric:[3,10,66,499,514],metropoli:[216,245,511],mezei:95,mf1:207,mf2:207,mf3:207,mg2:177,mglob_default_function_attr:9,mgoh:451,mgpt:[],mgptfast:445,miai:311,mic:[9,16],micel:[4,9,13,332],micelle2d:[],michael:[9,13,444],michel:13,mickel:117,micro:[3,516,522],microcanon:[279,280,282,283,285,288,289],microelast:454,micromet:522,micropor:245,microscal:439,microsec:522,microsecond:522,mid:[5,9,61,230,445,474],middl:[3,6,8,15,21,41,44,81,95,127,167,172,182,185,186,206,210,211,217,224,302,314,315,316,342,349,360,361,382,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,446,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,490,494,504,505,506,523],middlebondtors:[3,185,496],midnightblu:206,midpoint:474,mie:[],might:[3,6,7,8,12,15,24,75,160,243,245,247,249,286,316,465,494,504,518,523],migrat:[3,8,16,41,42,61,63,68,73,84,102,119,126,129,202,209,224,297,305,311,334,376,389,392,504,526,528],mikami:[6,270,271],mike:[7,9,13,14,15],mil:[9,415],militz:297,mill:384,miller:316,million:[3,7,39,41,75,224],mimic:[6,42,54,254,268,302,408,420,430],mimim:[228,387],min2theta:177,min:[3,4,6,8,12,128,152,206,221,376,379,465,474,491,510,523],min_cap:3,min_cg:8,min_clearstor:8,min_dof:8,min_modifi:[],min_nn:325,min_popstor:8,min_post_forc:8,min_pre_forc:8,min_pushstor:8,min_setup:8,min_setup_pre_forc:8,min_step:8,min_stor:8,min_styl:[],minarea:176,mincap:458,mind:[7,246,298],mine:[12,96,168,169,209,357,520],minim:[],minima:[190,371],minimi:[387,483],minimizaiton:387,minimizi:311,minimum:[3,12,24,25,26,42,45,59,61,75,94,115,128,176,177,179,181,187,201,202,205,214,221,228,229,235,252,269,313,315,318,323,325,329,334,351,355,359,371,376,379,383,384,385,387,388,403,417,419,421,423,424,430,432,434,439,440,458,460,474,491,504,510,523,524],minlength:176,minmiz:[8,228],minn:9,minord:[3,376],minstep:317,mintcream:206,mintmir:[4,7,307,408,475],minu:[12,61,158,230,359,387,523],minut:[4,8,515],mirror:[63,353],misc:[],miscellan:[2,215],mise:[145,150],mishin:[393,475],mishra:15,mismatch:3,miss:[3,5,12,181,221,245,284,311,334,429,447,513,514],mistak:[3,523],mistakenli:3,mistyp:3,mistyros:206,mitchel:[6,122,160,376,377,410,454],mitchell2011:454,mitchell2011a:454,mitig:270,mivi2:311,mix:[1,3,6,9,14,15,75,126,160,221,347,376,377,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489,494,496,509,517,526],mixtur:[6,40,270,305,316,334,356,406,419,442,450,478,496],mixture_ref_t:442,mjpeg:205,mkdir:507,mkl:12,mkv:205,mldivide3:3,mlpark:7,mlutipl:222,mn2:177,mn3:177,mn4:177,mo3:177,mo5:[177,445],mo6:177,mobil:[6,115,153,155,156,157,159,164,171,205,316,357,358],moccasin:206,mod:[],mode:[1,3,4,6,9,10,11,12,13,14,15,16,17,63,69,79,86,96,98,103,114,116,125,127,128,154,158,173,175,176,177,202,203,205,206,221,222,229,230,243,247,270,299,311,322,334,374,376,389,392,408,417,445,465,493,498,503,505,514,522,523,528],model:[],model_ar_p_mors:426,modern:[12,15,253,255],modest:[1,390],modif:[6,13,15,95,442,445,459,481,517,518],modifi:[],modify_param:8,modin:215,modul:[3,9,11,12,13,229,311,381,494],modular:8,modulo:[3,523],modulu:[303,422,442,454,461,463],moementum:267,mofil:497,mol1:523,mol:[],molchunk:[69,79,86,98,103,114,116,158,173,175,218],mole:[216,415,419,522],moleclu:[225,226,231,242],molecul:[],molecular:[0,2,3,5,6,7,8,9,12,13,15,39,40,53,75,119,124,126,155,156,157,159,161,164,165,166,167,170,171,178,179,180,181,182,190,202,203,204,207,215,226,229,237,245,252,298,299,306,310,311,315,322,345,346,377,386,395,396,398,402,414,417,425,475,496,497,498,500,501,505,506,508,514,516,517,523],molfil:[],molfrac:[231,302],molnar:322,molpe:120,moltempl:[],molybdenum:445,mom:[6,99,315,524],momementum:[156,157,272,273,276,277,280,281,282,290,291],momemtum:69,moment:[3,6,9,40,42,86,90,92,93,116,124,129,156,171,178,200,202,203,253,256,259,270,288,302,316,332,336,386,411,416,465,496,506,517,522],momenta:[237,247,281,349,417],momentum:[],momon:227,monaghan:[9,469,470,472],monitor:[3,6,9,12,106,107,161,228,230,231,242,250,253,268,270,302,304,306,316,320,334,385,387,411,514],mono:[77,439],monodispers:[3,352,400,422,439,440],monom:[13,54,227],monoton:[3,240,241,322,345,387,510],monoval:377,mont:[4,6,7,9,209,216,227,245,316,341,414,475],montalenti:[491,510],month:0,moor:[9,16,88,89,153,239,321,449,450],more:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,60,61,63,64,65,66,67,68,70,71,72,73,74,75,76,81,82,83,84,85,88,89,91,94,95,96,98,100,101,102,106,107,108,109,110,111,112,113,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,164,165,166,167,169,170,171,172,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,201,202,203,204,205,206,207,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,322,323,324,325,326,327,329,334,336,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,369,370,371,374,376,377,379,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,491,492,493,494,496,497,499,500,501,502,503,504,505,506,507,508,509,510,511,513,515,517,518,523,524,526,527,528],morefoo:8,moreov:[225,226,482],morgan:15,moriarti:[9,445],moriarty1:445,moriarty2:[9,445],moriarty3:445,morri:[],morriss:[166,293],mors:[],morse_fe:[477,478],mosel:384,mosi2:442,moskalev:152,most:[0,1,2,3,4,5,6,7,8,10,11,12,14,15,16,17,18,36,39,41,55,75,113,119,166,197,202,203,205,206,218,221,222,224,225,226,228,249,270,271,299,303,304,305,306,307,316,318,347,349,357,359,370,377,384,388,390,392,394,417,421,442,456,457,458,481,491,492,493,505,510,511,514,515,518,523,526],mostli:[8,9,11,13,75,180,205,388,496,505,508,523,527],motiion:6,motion:[3,6,7,9,42,94,107,113,155,156,157,159,161,163,164,165,166,167,168,170,171,230,234,237,247,256,259,260,267,270,271,275,286,293,297,299,301,311,315,316,321,342,346,352,355,387,411,417,439,440,499,505,517],motiv:297,mous:250,mov:205,move:[],movement:[3,6,12,267,341,385,514],movi:[],mp2:394,mp4:205,mpeg:205,mpg:205,mpi4pi:11,mpi:[],mpi_allreduc:[316,494],mpi_barrier:1,mpi_cart:493,mpi_cart_creat:493,mpi_cart_get:493,mpi_cart_rank:493,mpi_cart_shift:493,mpi_comm:6,mpi_get_processor_nam:493,mpi_inc:12,mpi_lib:12,mpi_lmp_bigint:3,mpi_lmp_tagint:3,mpi_path:12,mpi_wtime:12,mpicc:11,mpich2:12,mpich:[12,14,15,16,17,392],mpich_icc:[],mpicxx:[12,16],mpiexec:[12,14,16,17,392],mpiio:[],mpirun:[1,6,11,12,14,15,16,17,18,299,375,392],mplayer:205,mri:[457,458],msd:[],msi2lmp:[],msi:13,msm:[],msmse:[130,177,318],msse3:445,msst:[],mtchell2011:454,mtchell2011a:454,mtd:229,mth:[8,131,206,513],mtk:[270,271,275],mtotal:386,mu_j:28,muccioli:421,much:[1,3,6,11,12,39,154,202,203,205,220,228,306,341,388,389,392,394,421,459,491,494,510,515,517,518,523],mui:[124,202,203,236,336,496],mukherje:[7,9,301],mulder:345,muller:[6,99,209,342,349,446],mult:8,multi:[],multibodi:[3,9,63,301,449,450],multicent:417,multicor:[1,9,493,509],multidimension:13,multielectron:395,multilevel:[9,376,377],multinod:15,multiphys:11,multipl:[],multipli:[3,95,99,127,186,197,210,211,219,253,256,297,303,379,385,394,496,523],multiscal:11,multisect:[41,224],multistag:95,multithread:[15,392,458],multitud:7,mundi:294,munich:9,murdick:398,murti:480,murtola:376,muser:298,must:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,58,59,61,63,64,75,90,92,94,95,114,118,120,123,126,127,128,129,130,131,156,160,167,171,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,199,200,201,202,203,204,205,206,207,210,211,212,214,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,234,236,237,240,241,243,245,246,247,249,250,251,252,253,254,256,257,258,259,260,265,266,267,268,269,270,271,272,274,275,276,278,280,281,282,284,286,288,290,292,295,297,301,302,303,304,305,306,307,309,311,313,314,315,316,317,318,319,320,321,327,329,330,331,333,334,337,338,339,341,342,344,345,346,348,349,351,352,353,354,355,356,357,359,360,361,362,363,364,365,366,367,369,371,372,376,377,379,382,385,386,387,388,389,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,462,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,491,492,493,494,496,497,498,499,501,503,504,505,506,507,510,511,513,514,517,522,523,524,526,528],mutli:6,mutlipl:496,mutual:[3,379,515],mutut:505,muvt:245,mux:[124,202,203,205,236,336,496],muz:[124,202,203,236,336,496],mv2_comm_world_local_rank:12,mvapich2:[16,392],mvapich:12,mxn:[12,299],my_ga:245,my_one_wat:245,my_post_process:507,my_qeq:307,my_setup:507,my_swap_region:216,myblock:[231,302],mybox:180,mychunk1:125,mychunk2:125,mychunk:[6,69,79,86,98,103,114,116,158,173,175],mycmap:496,mycom:221,mydump:[202,206],myer:[5,7],myfil:[493,523],myfix:[216,511],myflux:99,myforc:[202,203,527],myhug:275,myke:99,mymol:[40,320,386],mympi:11,mymultipli:[494,523],myn:494,mype:99,mypi:523,mypress:265,myramp:153,myrdf:[127,222],myreg:379,myregion:357,myrigid:[91,108,129,302],mysocket:252,myspher:[206,355],mystr:359,mystress:99,mytemp:[2,112,155,156,157,159,161,162,164,166,171,265,359,375,391,513,524],myvec:523,myz:496,n_dephas:491,n_element:204,n_f:[306,311],n_hbond:424,n_ij:422,n_ion:346,n_k:246,n_particl:88,na1:177,nabla:346,nacl:[4,6,442],nacl_cs_x0:6,nakano:[307,309,387,484],namd:[7,202,250],name1:[172,230],name2:[172,230],name:[0,1,2,3,4,5,6,8,9,11,12,13,15,32,42,50,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,191,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,298,299,300,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,347,348,349,350,351,352,353,354,355,356,357,358,359,367,374,375,377,378,380,386,387,391,393,394,398,401,415,416,418,421,422,425,426,427,429,442,443,444,451,455,457,458,465,466,476,479,480,481,482,484,485,489,493,494,496,497,498,499,503,506,509,511,512,514,517,518,523,524,525,526,527,528],namespac:[6,8,12],nan:3,nangl:[3,496],nangletyp:[386,496,506],nano:[316,516,522],nanoindent:74,nanolett:316,nanomet:[202,206,522],nanoparticl:[224,316],nanosec:522,nanosecond:[237,522],nappli:243,narea:3,narrow:[6,198],narulkar:[479,481],nasa:7,nasr:298,natdef:3,nation:[0,7,9,12,122,454],nativ:[1,6,7,9,12,16,202,207,497],natoli:[9,18],natom1:126,natom2:126,natom:[3,6,11,39,386,494,496,513,514,523],nattempt:302,natur:[6,9,152,230,270,297,311,352,415,417,418,442,455,493,523],navajowhit:206,navi:[206,415],navier:256,nb3:177,nb3b:[],nb3bharmon:451,nb3d:9,nb5:177,nbin:[127,221,342,349],nbodi:[259,316,445],nbond:[3,124,496],nbondtyp:[206,386,496,506],nbot:398,nbounc:334,nbrhood_cutoff:458,nbtype:126,nbuild:514,ncall:243,ncbin:75,nchar:206,ncheck:515,nchunk:[3,6,69,75,79,86,98,103,114,116,125,158,173,175,218],ncoeff:466,ncorr:220,ncorrel:220,ncount:[218,219,220],nd3:177,ndanger:514,nden:[6,99],ndihedr:[3,496],ndihedraltyp:[386,496],ndirango:316,ndof:[270,275],ndoubl:496,ndp:517,ndx2group:[],ndx:358,neal:316,nearbi:[7,64,179,231,267,308,334,355,388,394,439,440,475,487,517],nearest:[3,74,75,77,100,117,129,176,179,256,269,297,341,355,376,429,442,449,450,465,477,478,523],nearli:[4,6,9,17,54,61,224,253,334,417,445,447,491,494,500,508],neb:[],neb_combin:387,neb_fin:387,neb_log:510,neb_step:510,neb_styl:510,necessari:[6,11,12,13,14,15,16,32,63,95,186,191,197,207,224,228,229,245,246,310,321,334,347,357,376,438,445,447,465,496,497,501,504,505,506,510,517,527],necessarili:[12,237,311,341,362,363,364,366,379,447,524],necessit:305,need:[1,2,3,5,6,7,8,9,10,11,12,13,14,16,17,32,36,37,39,40,41,42,50,54,55,56,60,63,65,66,70,74,76,77,81,90,99,100,112,114,117,120,123,140,152,153,155,156,157,158,159,161,164,165,166,167,168,170,171,178,180,182,184,186,191,197,198,201,202,204,205,206,210,211,212,213,215,216,218,219,220,221,222,224,225,226,228,229,230,234,236,240,241,243,244,245,249,250,252,253,254,256,263,264,270,284,298,302,303,305,311,315,316,322,329,334,342,345,346,348,349,350,351,357,367,370,376,377,386,387,388,389,392,393,394,395,396,398,399,400,401,402,403,404,406,407,408,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,489,491,494,496,497,498,499,501,503,504,506,508,509,510,511,517,518,523,525,526,527,528],needless:[6,388],neelov:377,neg:[3,6,12,26,46,68,73,97,112,119,126,152,153,180,182,187,189,198,205,228,230,231,246,275,297,322,330,345,349,351,356,376,384,418,433,442,475,496,499,514,515],neglect:[424,440],neglig:[6,11,95,270,476],neigh:[],neigh_modifi:[],neighbor:[],neighborhood:[25,100,134,466],neighbour:254,neighobr:[6,408,430,434],neither:[2,3,12,41,65,203,215,227,230,231,394,400,417,439,440,501],nelem:466,nelement:[393,415],nelson:[100,117],nemd:[],nest:[2,359,373,391,523],net:[3,6,11,39,86,94,96,159,170,249,297,307,316,440,458],netherland:9,netpbm:205,network:[12,202,225,226,250,493],neumann:376,neutral:[3,96,245,376,408,430,465],never:[7,12,65,75,209,219,228,245,270,297,320,336,347,351,354,356,376,388,415,442,466,484,493,496,510,513,523],neveri:[3,8,75,212,217,218,219,220,221,222,225,226,227,237,256,257,298,307,308,309,312,313,318,342,348,349,387,465,501,510],newatom:231,newer:[12,218,442,523],newfil:[373,375],newli:[231,302,517,524],newlin:206,newn:316,newt:165,newtemp:[65,112],newtion:[398,445,455],newton:[],newtonian:246,newtyp:[3,226],next:[],neyt:341,nfile:[3,37,56,198,202,203,206,240,241,449,450,477,478,498,503,528],nfirst:501,nfirt:501,nfreak:318,nfreq:[39,75,217,218,219,220,221,222,224,313,318,501],nfs:202,ngb:297,nghost:[3,12],ngp:115,ngpu:392,nguyen:[14,398],nharmon:[],nhc:299,nht:316,ni2:177,ni3:177,ni_000:[130,318],nialh_jea:415,nialhjea:[405,425],nice:[6,8,518],nickla:444,nicola:9,nimprop:[3,496],nimpropertyp:[386,496],nine:[139,146,418,465],ninteg:496,nissila:[256,465],nist:[393,415,522],niter:[41,224],nitrid:408,niu3:[405,415,425],nkb:306,nlast:501,nlen:220,nline:386,nlocal:[3,8,11,12,243],nlog:377,nlvalu:117,nmax:42,nmin:42,nmol:496,nmpimd:299,nn2:442,nneighmaxdef:3,nnn:[100,117],no2:[241,317,419,478],no_affin:[15,392],no_gradient_correction:464,no_histori:6,no_velocity_gradient:464,noced:385,nocheck:429,nocit:12,nocoeff:[38,58,199,372,489,496,525,526],nodal:[6,37,56,198,215,240,241,346,449,450,477,478],node:[1,3,10,12,14,15,16,17,41,130,134,177,204,224,250,256,346,392,429,493,509],node_area:256,node_group:215,nodeless:417,nodes:[41,224],nodeset:215,nodeset_to_elementset:215,nodess:[],nof:198,noforc:[],nois:[6,246,247,253,254,255,256,306,311,316,338,346],nomenclatur:[6,75,379],nomin:[202,270],non:[],nonbond:[4,12,451,475],none:[],noneq:247,nonequilibrium:[343,344,417],nonetheless:253,nongauss:[],nongaussian:115,nonlinear:[],nonloc:[454,506],nonperiod:3,nonzero:3,noordhoek:407,nopreliminari:198,nor:[2,3,41,61,203,215,323,324,325,326,327,329,407,461,462,463,464,496,499],nord:[455,479,481],norder:493,nordlund:[455,479,481],norm:[6,12,65,128,209,218,318,324,325,385,387,474,513,514,522],normal:[3,6,9,11,12,15,39,41,60,63,65,70,74,75,77,96,99,112,113,123,127,128,163,166,176,178,179,180,184,198,206,209,218,219,221,224,228,230,231,244,245,249,253,254,262,267,270,284,297,299,300,305,307,311,313,314,322,334,335,337,338,339,346,351,352,355,356,360,362,363,364,366,381,382,384,385,387,392,406,407,421,422,425,445,474,488,490,491,494,496,498,499,501,502,506,510,513,514,515,517,522,523,527],norman:346,nornal:3,nose:[6,7,8,168,209,234,253,254,270,271,272,273,274,275,276,277,278,290,291,292,293,294,295,299,303,311,316,337,338,339,344,412,517],noskov:[482,517],noslip:[334,356],nosync:515,notabl:[5,39],notat:[6,63,65,74,152,172,209,267,270,415,484,523],note:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,21,23,24,27,31,32,34,35,36,37,38,39,40,41,42,44,47,54,55,56,58,60,61,62,63,64,65,68,69,71,73,75,77,79,84,86,95,97,98,99,102,103,107,113,114,115,116,119,121,123,124,125,126,127,128,129,130,131,152,153,158,160,161,162,166,168,172,173,175,176,177,178,179,180,181,182,184,186,189,191,195,197,198,199,201,202,203,204,205,206,207,209,210,211,212,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,234,235,236,239,240,241,242,243,245,247,248,249,251,252,253,254,255,256,265,266,267,268,270,272,273,274,275,276,277,278,284,286,290,291,293,295,299,301,302,303,305,306,307,309,314,315,316,317,318,321,322,330,331,332,334,337,338,339,342,345,346,348,349,350,351,352,355,356,357,359,360,361,362,363,364,366,370,372,375,376,377,379,382,385,386,387,388,392,393,394,398,399,401,402,403,405,406,408,409,411,412,413,414,415,418,421,422,423,424,425,429,430,432,434,439,440,442,443,444,445,446,447,449,450,451,455,457,458,459,460,462,464,465,466,467,470,474,476,477,478,479,481,483,484,487,488,489,491,493,494,496,497,498,499,500,501,503,504,506,508,510,511,513,514,517,518,522,523,524,527,528],notes:[95,438],noth:[216,252,378,392,494,507,518],notic:[0,6,7,8,12,344,346,517],noutcol:8,noutput:298,noutrow:8,novemb:442,novik:13,novint:250,now:[2,3,6,10,11,12,13,15,46,63,64,75,202,210,211,226,246,250,251,305,316,352,355,377,379,415,417,422,457,458,467,492,497,517,518,524],nowait:250,nozforc:376,np3:177,np4:177,np6:177,npair:[127,219],nparticl:[3,40,42,397],npartit:514,npernod:[14,16,17,392],nph:[],nphi:[15,392],nphug:[],npoli:302,nproc:[3,11,202],npt:[],npt_aspher:[272,278,290],npt_bodi:[273,291],npt_sphere:[274,295],nrecomput:414,nrepeat:[75,217,218,219,220,221,222,313,318,501],nreset:[228,270,271,275],nreset_ref:228,nrho:[393,415],nrl:415,nsall:9,nsampl:414,nsbin:75,nsbmax_most:3,nsec:516,nskip:[131,501],nsq:[3,389,453],nstart:[131,219,220,221,222,318,496,501],nstat:297,nstep:[3,13,228,270,357,471,494,497],nsteplast:494,nstop:[131,501],nswap:[342,349],nswaptyp:3,ntabl:[37,56,198,240,449,450,477,478],nterm:322,nth:[12,81,127,128,202,203,206,221,230,501,511],ntheta:398,nthread:[3,392],ntpc:392,ntptask:392,ntype1:126,ntype2:126,ntype:[3,152,178,202,206,307,309,417,424,455,496,506],nuclear:[9,106,107,164,247,271,306,311,386,417,488],nuclei:[106,107,162,164,169,203,255,271,283,294,340,395,417,496],nucleu:[106,107,307,481,517],nudg:[4,6,7,9,209,269,384,387],nulcear:9,num:[],num_of_collis:3,num_step:317,numa:[1,3,12,392,493],numactl:15,number:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,21,26,37,38,39,40,41,42,44,56,57,58,65,66,67,68,69,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,88,95,98,99,100,101,102,103,112,113,114,116,117,119,122,123,124,125,126,127,128,129,130,131,141,147,152,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,172,173,175,176,177,178,179,180,181,182,186,187,197,198,199,201,202,203,204,205,206,207,209,210,211,214,216,218,219,220,221,222,224,225,226,227,229,230,231,240,241,242,243,245,246,247,249,250,251,252,253,254,255,256,259,265,267,270,271,275,284,286,292,297,298,299,301,302,305,306,307,311,313,316,317,320,321,325,331,334,335,336,338,341,342,343,344,346,347,348,349,351,353,354,356,357,359,361,372,374,376,377,379,382,383,385,386,387,388,389,392,393,394,398,400,405,407,412,414,415,416,417,418,424,425,426,427,428,442,443,444,445,447,449,450,451,455,456,457,458,459,462,464,465,466,474,476,477,478,479,480,481,483,484,485,488,489,490,491,493,494,496,497,498,499,500,502,503,504,505,506,508,510,511,513,514,515,517,522,523,524,528],number_of_a:3,number_of_b:3,numbond:3,numer:[],numpi:11,nvalu:[218,222,494],nvaluelast:494,nvc_get_devic:14,nvcc:[1,9,16],nve:[],nve_aspher:[272,276,290],nve_bodi:[273,277,291],nve_spher:[274,278,295],nvida:16,nvidia:[1,3,9,14,16,392],nvt1:517,nvt2:517,nvt:[],nvt_aspher:[272,276,295],nvt_bodi:[273,277],nvt_sphere:[274,278],nvtfe:215,nwait:298,nwchem:7,nxnode:346,o_core:160,o_shell:160,oascr:7,obei:[3,230,379,491],ober:7,obj_shared_foo:12,obj_target:12,object:[6,8,11,12,14,40,42,205,228,250,256,259,302,322,329,385,386,494,499],observ:[15,270,306,337,338,341,342,349],obsolet:13,obstacl:[4,251],obtain:[1,3,9,12,15,28,77,95,113,117,176,207,211,244,247,256,275,298,299,341,376,394,411,442,447,456,465,479,481,505],obviou:[12,488,523],obvious:205,obviousli:[302,511,523],occ:420,occasion:[3,270,491],occlus:205,occup:[3,176,392,420],occur:[1,3,6,11,12,16,39,59,61,63,64,75,94,115,176,179,181,198,202,203,206,216,224,227,228,230,240,241,245,248,251,259,268,284,307,316,334,343,356,357,359,376,388,392,414,417,438,449,450,458,477,491,493,494,499,501,505,510,513,523],occurr:[369,496,510,523],oct:11,octahedr:24,octant:493,odd:[41,117,206,224,270,316,337,338,346,511],ode:[9,317],off:[1,3,6,12,14,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,43,44,45,46,47,48,49,50,51,53,54,55,56,61,63,68,73,75,118,119,123,124,126,152,153,155,161,165,176,177,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,202,203,205,206,209,212,216,222,223,226,227,230,238,244,245,246,248,250,253,254,259,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,295,301,303,304,308,309,316,319,320,334,349,351,354,355,360,361,362,363,365,366,367,369,370,371,376,377,385,387,388,390,392,393,394,396,399,400,401,402,403,404,406,407,408,410,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,442,443,447,448,449,450,451,452,454,458,459,460,462,464,465,467,474,475,476,477,479,480,481,482,484,486,487,488,491,492,493,496,498,499,503,505,508,509,510,515,520,522,523,526,528],offend:[3,494],offer:[6,17,181,384,408,465,491,505],offic:7,offload:[1,9,15,16,250,392],offset:[3,6,59,178,205,230,231,302,386,408,430,434,475,496],offsite:8,often:[1,3,6,7,12,13,14,15,16,17,36,55,75,172,197,205,212,221,222,224,228,243,250,270,299,318,370,379,384,385,387,388,389,392,407,412,430,477,479,481,491,510,515,517,518,522],ohio:444,old:[3,6,209,228,231,270,442,457,467,497,500,504,507,522,526],older:[3,5,12,13,15,16,206,228,270,467,523],oldlac:206,oleinik:398,olfason:[6,24,371,424,508],oliv:206,olivedrab:206,olivier:9,ollila:[256,258,259,260],olmsted:[215,297],omega0:371,omega:[],omega_dot:270,omega_ij:413,omega_ijk:481,omega_ik:479,omegadd:[449,450],omegai:[124,129,202,203,336],omegax:[124,129,202,203,336],omegaz:[124,129,202,203,336],omgea:6,omiss:[0,7],omit:[198,206,237,353,402,411,434],omp:[],omp_num_threads:[3,15,17,392],omp_proc_bind:16,ompi_comm_world_local_rank:12,ompi_icc:[],on_the_fli:215,onc:[0,1,3,6,11,12,15,41,61,65,75,114,184,204,205,209,210,211,224,243,245,247,254,302,305,316,334,342,347,349,357,383,386,387,388,421,423,425,455,459,493,494,503,513,517,523],once:[0,2,6,8,12,40,41,62,99,206,224,225,226,231,298,347,426,510,518],one:[3,6,12,13,16,28,42,76,81,99,127,152,160,205,225,226,230,266,270,275,314,330,334,341,346,348,377,386,398,409,440,458,465,491,494,496,497,505,508,523],onelevel:493,onewai:[],ongo:250,oniom:[9,310],onli:[1,2,3,6,7,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,58,61,62,63,65,66,68,69,70,71,73,74,75,77,79,82,84,85,86,88,89,91,94,95,96,98,100,102,103,106,107,108,109,110,111,112,113,114,115,116,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,161,162,164,165,166,168,169,170,171,172,173,175,176,177,178,181,182,184,185,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,206,207,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,234,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,305,306,307,308,309,310,311,312,313,316,317,318,319,320,321,322,323,324,325,326,327,329,334,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,362,363,364,365,366,367,369,370,371,372,374,376,377,379,382,385,386,387,388,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,493,494,496,497,499,500,501,503,504,505,506,507,508,510,511,512,513,514,515,517,518,523,524],only:[2,3,6,13,15,41,61,74,76,112,131,156,157,158,181,202,203,204,205,206,207,219,222,228,237,245,248,262,265,269,286,292,297,301,307,308,316,342,348,349,357,359,376,385,387,393,394,398,400,403,407,415,416,418,424,426,427,439,440,442,443,444,451,455,456,457,458,466,476,479,480,481,484,505,514,517,523,526],only_group:176,onn:505,onset:[306,369],ontario:9,onto:[152,180,227,231,237,256,474],onward:2,open:[],opencl:[1,3,7,14,392],opengl:6,openkim:9,openmp:[1,3,4,7,9,10,12,15,16,17,374,392,458,509],openmpi:[12,14,15,16,17,392],opensourc:7,oper:[1,3,6,7,8,11,12,15,16,39,41,42,61,75,99,128,131,166,168,169,178,181,182,206,209,216,218,219,221,222,224,225,226,227,231,237,245,248,255,265,266,267,268,270,271,272,273,274,275,276,277,278,283,290,291,293,294,295,302,304,305,314,316,318,320,322,333,334,335,336,340,344,346,350,352,357,359,374,376,377,384,387,389,392,445,462,464,490,491,492,493,494,496,497,498,499,501,502,504,505,509,510,513,518,523,524,527],operat:[],opl:[],opls:[7,186,195,197,425],oppelstrup2:9,oppelstrup:[9,445],oppos:[6,39,200,202,203,315,353,377,386,496],opposit:[6,28,74,184,214,253,260,297,316,349,387,408,438,482,494],opt:[],optic:156,optim:[],optimiz:[15,308,385,407],option:[],optional:[226,245,313,352,392,458,466,504],optionn:16,options:[9,12,15,16,445],orang:[2,205,206],orbit:[307,309,398,408,417,465,475],orchid:206,order:[2,3,6,9,11,12,15,26,28,37,39,41,56,61,65,68,73,75,84,95,97,98,100,102,103,117,119,123,126,129,142,152,153,154,155,156,157,158,159,160,161,164,165,166,167,168,170,171,182,187,197,198,202,203,205,206,209,212,217,219,221,222,223,225,226,227,228,229,234,236,237,241,245,247,249,250,252,256,257,259,268,270,297,305,306,310,313,314,315,316,317,318,319,320,322,327,329,335,341,345,346,347,348,358,359,360,362,363,364,366,369,370,376,381,386,387,393,394,395,398,407,413,414,415,417,418,421,422,425,427,430,438,442,445,449,450,457,458,459,465,475,476,477,478,479,480,481,482,484,485,491,493,494,496,497,501,503,505,506,510,513,517,523,528],orderomg:3,ordinari:[122,317,424,454],org:[6,7,11,12,13,297,456],organ:[0,3,6,7,8,407],organis:[462,464],organometal:24,orien:506,orient:[],orientord:[],origid:218,origin:[3,6,7,9,12,75,87,113,114,125,130,174,178,180,201,205,206,209,210,211,218,225,226,230,234,237,254,267,270,293,299,302,312,316,318,326,333,344,373,375,376,379,384,393,394,396,398,408,411,412,414,415,424,427,442,454,457,458,479,481,482,483,493,496,497,498,499,500,501,518,522,526],orlikowski:445,ornl:[7,9,14],orsi:28,ortho:[3,61,180,496],orthogon:[],orthograph:205,orthong:61,orthongon:[61,316],orthonorm:231,orthorhomb:306,os4:177,oscil:[],oscillatori:[267,326],ose:205,oserror:11,other:[],otherswis:[],otherwis:[1,3,9,12,16,17,36,39,55,57,75,112,122,130,156,157,158,171,179,184,197,203,206,207,216,218,225,226,230,243,245,247,254,270,316,370,371,381,385,392,400,425,429,439,440,455,485,489,491,494,496,497,517,523],otyp:[408,430,434,438],our:[5,6,7,8,13,256,320,447,479,481,517],out:[1,2,3,4,6,7,8,11,12,13,17,18,20,41,66,69,75,79,86,98,99,103,104,107,113,114,115,116,118,125,126,155,156,157,158,159,161,162,164,165,166,167,168,170,171,173,175,181,185,202,203,205,206,207,209,224,225,226,229,238,244,245,251,253,256,261,284,286,298,300,301,302,305,311,312,313,316,330,346,355,357,358,359,360,362,366,374,375,379,383,387,391,417,425,441,475,490,491,493,494,499,500,501,503,504,505,507,510,512,513,514,515,519,521,523,524,525,526,527,528],outcom:[316,524],outer2:[403,423],outer:[3,8,15,57,75,235,251,359,375,383,385,391,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,485,486,487,488,489,491,504,505,510,515,516,523],outer_distance_cutoff:424,outermost:[37,56,75,210,211,212,213,223,232,236,248,251,265,267,270,297,308,315,319,322,330,331,332,333,350,351,355,388,477,478,505],outfil:[13,493],outlin:[6,205],outmost:250,output:[],output_frequ:215,outputss:139,outsid:[3,8,59,61,75,168,178,201,202,203,204,205,206,207,221,231,237,245,251,316,318,334,339,340,353,354,355,356,357,374,387,399,401,408,417,430,432,452,460,494,496,497,499,506,513,524],outut:6,outward:[75,176,351,355,356,496,505],over:[1,3,5,6,7,12,15,17,26,39,41,42,55,62,68,71,73,75,84,85,95,96,97,98,100,102,111,113,115,117,119,126,127,129,137,138,144,149,152,153,158,161,164,172,174,187,198,205,207,209,210,211,217,218,219,220,221,222,223,224,225,226,230,231,243,246,247,251,253,254,255,259,267,268,269,270,271,272,273,274,276,277,278,290,291,293,294,295,297,302,303,306,313,314,315,316,317,318,322,330,334,337,338,339,340,342,345,348,349,351,353,354,355,356,357,360,375,378,387,388,389,406,412,415,416,417,418,424,439,442,445,455,466,467,475,476,477,479,480,481,484,492,493,494,499,501,502,504,505,510,511,513,514,522,523,524],overal:[6,17,24,61,172,228,234,270,271,299,320,334,359,383,417,424,425,466],overalap:316,overcom:[284,334],overflow:[3,386,388],overhead:[6,11,18,41,206,218,220,224,237,242,305,388,389,499,515],overkil:316,overlai:[],overlaid:7,overlap:[3,13,15,64,80,178,181,198,206,214,217,218,221,222,231,235,262,284,302,307,313,316,318,334,352,356,376,379,383,385,386,392,412,417,422,425,428,438,461,463,467,483,496,499,505],overload:1,overrid:[3,9,12,15,16,21,44,75,164,178,186,205,206,210,211,228,235,265,270,319,361,376,386,388,405,424,425,442,447,457,493,494,498,506,508,513,523],overridden:[6,178,205,275,316,428,439,447,467,475,504,523,526],overview:[],overwrit:[11,12,21,44,186,206,218,219,220,221,222,318,361,374,380,405,442,494,497,498],overwritten:[203,304,345,374,424,425,491,492,497],own:[],oxford:[28,95,411],oxid:[9,407,408,465],oxygen:[6,40,242,305,408,430,434,465,496],oxygen_c:160,p10:422,p_e:346,p_ik:455,p_pi:398,pacakg:[15,392],pack:[5,8,70,352,392,398,442],pack_bord:8,pack_border_bodi:8,pack_border_hybrid:8,pack_border_vel:8,pack_comm:8,pack_comm_bodi:8,pack_comm_hybrid:8,pack_comm_vel:8,pack_exchang:8,pack_restart:8,pack_revers:8,pack_reverse_comm:8,pack_reverse_hybrid:8,packaag:392,packag:[],packakg:14,packet:[7,9,40,205,395,417],pad:[3,202,203,205,206,299,523],padua:[9,13],page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,21,36,40,42,44,55,59,61,65,69,71,79,86,95,98,103,112,114,115,116,118,120,123,125,128,129,131,153,156,157,158,171,173,175,178,179,180,186,197,201,202,203,204,205,206,207,209,210,211,216,217,218,219,220,221,222,231,245,252,253,254,265,270,271,276,277,278,282,290,291,293,294,295,302,305,316,330,334,337,338,339,348,352,355,357,359,361,370,375,385,386,387,388,392,393,394,397,405,407,408,415,416,418,424,425,427,428,442,443,444,447,451,455,456,466,475,476,479,481,483,484,494,496,497,498,499,501,504,505,506,508,513,514,523,524,526,527],pai:[14,17],painless:518,pair:[],pair_:[95,210,211],pair_airebo:427,pair_charmm:438,pair_class:8,pair_coeff:[],pair_dpd:9,pair_dzugatov:518,pair_eam:393,pair_eff:164,pair_foo:8,pair_gayberne_extra:9,pair_hybrid:[425,482],pair_interact:215,pair_kim:210,pair_list:429,pair_lj:438,pair_lj_cut:8,pair_lj_soft_coul_soft:95,pair_modifi:[],pair_resquared_extra:9,pair_sph:[468,469,470,471,472,473],pair_styl:[],pair_tally_callback:8,pair_writ:[],paircoeff:[3,489],pairfoo:8,pairij:[3,496],pairkim:3,pairstyl:8,pairwis:[],pakketeretet2:518,palegoldenrod:206,palegreen:206,paleturquois:206,palevioletr:206,pan:205,panagiotopoulo:[409,420],pandit:[9,309,458],papaconstantopoulo:393,papayawhip:206,paper:[3,6,7,8,9,13,39,40,66,152,166,172,190,253,256,260,269,301,307,309,316,334,342,346,349,376,384,387,394,402,408,422,424,427,432,434,454,457,458,479,481,491,510],paquai:[],paradyn:5,paraemt:459,paragraph:[75,166,351,379,449,450,477,497,498],parallel:[],parallel_studio_xe_2016:15,parallelepip:[6,180,379,496,499],parallelipip:[180,298],paralleliz:[9,301],param:[3,307,309,419,428,493,499],param_free_:210,param_free_sigma:210,paramet:[],parameter:[130,177,394,398,407,408,415,416,417,418,427,442,443,444,455,457,458,465,476,479,480,481,484],parameter_fil:215,parameterizaion:408,parametr:[6,9,35,416,456,460],paramt:[115,307,353,459],paramter:407,paratem:438,paraview:[203,318],parent:[3,8,357],parenthes:[37,56,198,240,241,317,419,422,449,450,477,478,523],parenthesi:[2,15,218,359,523],parinello:[6,7],pariticl:224,paritlc:3,park:[3,7,9,215,322,444,454],parmin:445,parrinello1981:228,parrinello:[228,247,268,270,271,306,338],pars:[],parser:[12,523],part:[0,1,2,3,6,7,8,9,11,12,16,19,20,22,23,24,25,26,27,28,29,30,31,34,35,36,37,40,41,43,45,46,47,48,49,51,53,54,55,56,66,70,74,75,76,82,85,88,89,91,100,106,107,108,109,110,111,113,115,118,119,122,123,126,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,160,162,164,165,169,170,172,176,177,181,184,185,187,188,189,190,192,193,195,196,197,198,202,203,204,206,207,209,212,213,214,216,220,223,224,225,226,227,228,229,230,231,233,236,237,238,239,240,241,242,243,244,245,246,247,248,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,306,307,308,309,310,311,312,313,315,316,317,319,320,321,322,323,324,325,326,327,329,330,331,333,334,337,339,340,341,342,343,344,345,346,347,349,351,352,353,354,355,357,358,359,360,362,363,365,366,369,370,371,376,377,385,386,387,388,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,493,494,496,497,498,499,503,504,505,508,514,518,523,528],partai:[9,456],parti:[4,9],partial:[],partic:6,particip:[226,397,428,483],particl:[],particleenergi:3,particleviri:3,particular:[1,3,4,6,8,10,12,40,65,68,73,74,75,84,102,119,124,126,127,152,178,201,202,203,209,210,214,224,227,245,246,251,252,256,267,270,297,302,315,316,320,341,352,357,360,377,379,383,386,392,397,398,399,401,403,404,406,410,413,416,417,421,423,425,430,434,438,441,448,451,452,459,460,475,476,479,480,481,482,484,491,493,496,497,498,503,504,506,514,518,523,524,527,528],particularli:[6,7,9,12,14,24,39,205,228,316,377,417],particuolog:42,partilc:334,partit:[],partitoin:64,partner:[3,7,63,225,226,227,254,334,349,482,506,511,517],pascal:[9,13,522],pass:[6,7,8,9,11,69,78,79,86,87,97,98,103,113,114,115,116,129,173,202,203,205,206,207,228,229,243,245,267,268,270,305,334,351,375,381,388,392,425,428,457,474,494,496,497,501,507,523,527],passphras:12,password:518,past:[],patch:[0,12],patchi:316,patel:445,path:[3,6,7,11,12,13,14,207,252,269,299,322,334,341,346,387,393,394,398,405,415,416,418,427,442,443,444,451,455,456,457,465,466,476,479,481,484,497],pathtolammp:465,patient:12,patom1:126,patom2:126,patrick:480,pattern:[3,7,12,64,77,498],pattnaik:316,paul:[0,7,13,253,255],pauli:[417,465],paus:504,paves:299,payn:[152,456,466],pb2:177,pb4:177,pbc:[75,351,395],pchain:[270,271,275,316],pcie:1,pd2:177,pd4:177,pdamp:[270,271,275,303,316],pdb:[6,13,207],pdebuyl:9,pdf:[0,8,9,13,16,40,109,110,111,122,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,229,252,263,264,323,324,325,326,329,454,468,469,470,471,472,473,506],pdim:349,pdlammps:[82,85,454],pdlammps_eps:[9,122,454],pdlammps_overview:9,pdlammps_ves:[9,454],pe_eta:270,pe_etap:270,pe_omega:270,pe_strain:270,peachei:13,peachpuff:206,peak:420,pearlman:95,peculiar:12,pedersen:377,peform:[39,308],penalti:[457,458],pencil:[6,75,166],pend:3,penetr:[42,132,461,463,506],penetret:40,peng:177,penn:13,peopl:[7,8,9,12],peptid:[4,9,229],per:[],peratom:[3,121,153,176],perceiv:205,percent:[3,12,15,228,392,476],percentag:[1,12,228,270,302,303,316],percol:226,perfect:[6,41,74,77,100,224,297,387],perfectli:[41,224,497],perfom:[6,387],perform:[],performac:1,pergamon:[442,481,488],perhap:379,peri:[],peridyma:82,peridynam:[3,4,6,7,9,40,65,82,85,122,454,475,496,506],perimitt:409,period:[],perioid:351,perl:[6,13],perm0:522,perman:[3,39,54,75,182,225,226,250,315,357,392,424,500,508],permeabl:296,permiss:[226,494],permit:[6,256,445],permitt:[409,481,487,488],permut:[12,416,476,479,481,484],perpendicular:[6,75,156,205,230,251,261,267,269,297,300,326,351,352,384,496],perram:[377,421],persepct:205,persist:[3,8,75,243,316,392,493,494,498,502,523],person:[9,518],persp:[3,205],perspect:205,pertain:[405,475],perturb:[9,13,74,95,266,314,351,354,356,501],peru:206,peskin:256,pessimist:377,petersen:[334,377],pettifor:[398,475],pettifor_1:398,pettifor_2:398,pettifor_3:398,pfactor:205,pforc:494,phantom:250,pharmaceut:7,phase:[3,12,15,270,341,349,398,430,480,493],phd:456,phenol:517,phenomena:417,phi0:[196,315],phi1:185,phi2:[185,416,476],phi3:[185,416,476],phi:[1,3,4,7,9,10,12,15,16,84,100,117,152,197,198,205,248,315,363,392,393,398,415,418,442,443,444,509],phi_ij:[398,418,455],philadelphia:9,phillip:[254,412,517],phillpot:[308,407,408,465],philosoph:415,philosophi:[6,7,252],phonon:[],phophor:466,phosphid:466,phy:[6,7,13,19,20,24,39,43,45,46,66,74,77,95,96,100,117,121,123,152,153,160,166,184,185,195,204,216,220,228,229,234,237,246,247,252,253,254,255,256,268,269,270,271,275,286,292,293,294,298,299,303,306,308,311,316,320,321,322,334,337,338,341,342,343,344,346,349,351,360,369,371,376,377,384,387,394,398,399,403,404,406,407,408,409,410,411,412,413,415,416,417,420,421,422,423,424,427,430,432,434,435,438,439,440,441,442,444,446,447,449,450,452,454,455,459,465,466,474,476,477,478,479,480,481,482,484,491,505,508,510,517],physic:[3,6,12,15,16,17,40,42,53,61,132,160,172,215,230,237,247,253,255,256,258,259,260,268,298,307,309,345,346,377,379,387,392,394,396,402,406,415,424,425,445,456,457,458,461,469,470,472,473,491,493,505,506,511,522],physica:[439,440],physik:[7,9],pic:9,picki:8,picocoulomb:522,picogram:522,picosecond:[206,230,514,522],picosend:417,pictur:7,piec:[3,11,152,206,270,503,528],pierr:9,pieter:13,pimd:[],pin:15,pink:206,pipe:[6,202,205],pipelin:[3,6,15],pisarev:346,pishevar:412,piston:[],pitera:6,pixel:205,pizza:[6,7,11,13,41,202,205,224],pjintv:13,pka:346,place:[3,6,7,11,12,32,41,50,75,95,172,178,182,191,198,202,205,206,208,209,210,211,226,227,230,237,245,246,247,249,252,253,254,255,257,259,260,270,276,277,278,290,291,295,302,305,314,316,337,338,339,346,351,354,356,375,405,424,475,483,493,494,497,504,506,511,514,523],placehold:[32,191,393,394,407,415,418,426,427,442,443,444,451,455,457,458,466,474,476,479,480,481,484],placement:[379,430],plai:[6,205,341],plain:[9,438,494],plan:[3,5,6,15,16,180,496],planar:[6,40,42,251,297,352,369,371],planck:[245,299],plane:[3,6,9,41,42,59,61,70,75,100,205,209,215,224,248,251,261,297,300,310,330,333,346,352,360,362,363,364,365,366,371,379,381,440,483,499,506],plane_wiggl:381,planeforc:[],plasma:[96,271,346,417],plastic:[],plastic_strain:133,platform:[1,3,7,9,12,13,14,15,16,202,205,207,498,503,528],plath:[6,99,209,342,349],player:205,pleas:[0,3,7,11,12,13,15,215,247,256,260,298,301,305,312,341,357,416,418,454,462,464,465],plen:395,plimpton:[0,5,7,15,74,123,153,227,297,307,334,422,454],plog:[3,12,505],ploop:[270,271,275],plos:28,plot:[7,11,13,15,57,306,436,438,477,478,485],plu:[3,11,12,39,61,71,106,176,181,206,223,228,230,231,275,316,389,417,428],plug:9,plugin:[9,13,207,497],plum:206,pm3:177,pmb:[],pme:377,pmf:[229,322,330],png:[3,12,202,205],pni:205,poariz:6,poem:[],poems:[],point1:496,point2:496,point3:496,point:[],point_data:318,pointer:[3,7,8,9,11,243,494],pois:522,poiseuil:[4,212,248],poisson:[61,230,377,422],poisson_solv:215,polak:384,polar:[6,7,117,152,160,177,215,233,407,408,430,482,517],polar_off:407,polar_on:407,polariz:[],poli:[],politano:[9,465],pollock:[7,377],polya:357,polybond:13,polychain:316,polydispers:[3,386,400,406,422,439,440,475,487],polyethylen:394,polygon:[6,42,176],polyhedron:176,polym:[],polymer:7,polymorph:[],polynomi:[9,37,56,198,415,436,447,465,470,477,478],polytechn:301,poor:[16,41,224,293,294,320,392,436],poorli:[384,385],pop:[3,8],popen:12,popul:[12,311,379,414,496],popular:[12,202,416],pore:330,poros:181,porou:[256,259],port:[250,252],portabl:[7,9,12,202,204,229,457,498],portion:[1,3,9,11,12,14,41,54,67,72,75,83,96,99,101,118,119,121,124,153,154,168,202,203,206,217,218,221,222,224,228,237,242,256,270,272,273,274,276,277,278,308,313,314,316,318,359,375,388,392,399,401,402,403,404,408,409,411,412,417,419,420,421,423,424,430,434,438,441,452,459,460,481,485,495,496,501,505,506,515,518,523],poschel:422,posfreq:313,posit:[3,6,26,39,40,41,42,46,59,61,74,75,86,87,97,98,113,114,119,128,130,134,152,153,161,176,177,178,180,181,182,187,189,198,201,203,204,205,206,209,210,212,214,216,217,218,221,224,225,226,227,228,229,230,231,234,236,237,245,246,247,248,250,251,253,254,255,256,258,259,263,264,267,268,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,293,294,295,297,298,299,301,302,303,306,307,311,313,314,316,320,322,326,329,330,333,334,336,337,338,339,341,343,344,345,346,349,351,352,353,354,355,356,357,360,376,379,387,394,395,397,400,412,413,414,417,420,433,449,450,458,465,474,477,478,483,491,496,499,506,515,517,523,524],posix:250,posix_memalign:12,possibl:[1,3,6,8,9,11,12,14,37,40,41,55,61,65,74,75,95,124,126,152,153,156,157,171,201,202,203,204,206,209,211,215,216,224,225,226,227,231,233,239,247,254,265,297,302,310,311,313,316,329,334,336,346,347,365,375,377,385,388,389,392,414,424,442,458,462,464,465,477,478,484,494,500,509,510,514,517,523,524,527],post:[],post_forc:8,post_force_integr:8,post_force_respa:8,post_integrate_respa:8,postit:284,postiv:94,postma:[303,337],postprocess:13,pot:[422,458],potentail:418,potenti:[],potentials:10,potentiel:438,potetni:425,potin:445,potpourri:9,pour:[],pourtoi:341,pow:230,powderblu:206,power7:16,power8:16,power:[3,9,11,15,115,152,206,311,376,392,398,494],pparam:[95,210,211],ppm:[12,202,205],ppn:[14,15,16,17,392],pppm:[],pppm_disp:3,pppmdisp:3,pproni:[3,246],pr3:177,pr4:177,practic:[3,12,228,270,271,298,305,484,493,518],prb:[479,481],prd:[],pre:[],pre_exchang:8,pre_forc:8,pre_force_respa:8,pre_neighbor:8,prec:[15,465],prece:464,preced:[2,6,61,184,203,217,218,219,220,221,222,252,313,317,318,359,379,387,392,398,424,510,513,514,523],preceed:[11,12,75,166,219,351,494,523],precipit:176,precis:[1,3,9,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,113,123,155,165,178,184,185,187,188,189,190,192,193,195,196,198,202,206,212,218,222,223,228,230,237,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,307,308,309,316,319,320,354,360,362,363,365,366,369,371,376,377,385,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,430,431,432,433,434,435,436,437,438,439,443,445,448,451,452,454,457,458,459,460,465,467,476,477,479,480,481,482,484,486,487,488,498,499,505,506,509,514,517,522,523,524],precv:493,predefin:[196,206,357,417],predict:[1,6,10,12,284,316,392,515],preexponenti:510,prefactor:[23,24,27,31,34,35,172,186,197,210,211,219,351,362,366,369,385,406,420,451,459,460,467,487],prefer:[7,8,12,249,315,347,394,518],prefix:[11,12,205,229,298,317,490,493],preliminari:[37,56,198,240,241,449,450,477,478],prematur:385,prepar:[8,9,307,310,334,507,517],prepend:457,preprint:[152,286,292,381,466],preprocessor:250,prerecord:229,prescrib:[6,8,156,157,158,171,209,210,215,218,231,267,287,347],presenc:[202,225,226,256,259,439,440,445,487,526],present:[1,3,9,12,15,17,176,198,204,205,231,246,247,252,256,257,259,260,311,329,352,355,358,407,417,429,438,445,458,459,465,493,517],preserv:[3,61,228,230,270,320,334,356,497],press:[],pressdown:223,pressur:[],pressure_with_eviri:417,presum:[77,167,209,210,211,230,387,425,499],prevent:[2,3,6,40,132,231,244,302,334,345,369,376,383,385,387,392,412,425,453,469,470,472,474,494,498,504,506,517,523],previou:[],previouli:231,previous:[3,9,11,61,63,75,94,112,128,131,167,178,180,182,201,202,203,204,206,214,216,217,218,219,221,222,230,231,245,251,265,267,302,314,316,319,320,346,348,351,352,353,354,356,357,378,422,475,491,494,498,499,509,511,513,514,519,520,521,523,524],prevoiu:352,price:[6,411],primari:[0,6,346],primarili:[5,7,9,16,154],prime:[234,254,423,445,479,481,493],primit:[3,6,354,355,379],princip:[3,129,250,465],principl:[6,9,11,250,271,307,417,426,445,476,493,518],prinicp:[42,316,386],print:[],printabl:2,printflag:426,printfluid:256,prior:[176,200,321,378,527],priori:505,prism:[3,6,166,180,499],priveleg:3,privileg:[11,12,250],prob:[225,226],probab:467,probabl:[3,8,12,40,75,168,181,182,216,224,225,226,227,231,245,254,270,302,351,357,385,447,449,450,477,491,510,517],probe:523,problem:[],problemat:245,proc:[1,3,8,11,12,14,15,124,202,203,375,493],proce:[41,54,182,224,235,387,445,503,511,514],procedur:[6,12,39,41,206,216,224,245,253,254,255,270,272,273,274,275,276,277,278,290,291,293,294,295,298,337,338,339,340,343,344,385,387,394,400,497,517],proceed:[12,445],procesor:[41,493],process:[],processor:[],processsor:[41,224,493],procp1:[202,203],procsessor:515,procssor:505,produc:[1,3,4,6,7,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,42,43,45,46,47,48,49,51,53,54,56,65,68,71,73,75,84,102,119,121,123,124,125,126,128,129,131,153,155,165,176,184,185,187,188,189,190,192,193,195,196,198,202,203,206,209,212,217,218,219,221,222,223,224,227,230,238,243,244,246,247,248,253,254,255,265,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,302,306,307,308,309,311,316,318,319,320,335,336,346,347,348,351,354,359,360,362,363,365,366,369,371,377,385,387,390,392,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,448,451,452,454,455,458,459,460,467,476,477,478,479,480,481,482,484,486,487,488,491,493,498,499,501,502,505,510,511,514,523,524],product:[6,15,16,17,152,176,230,293,307,317,347,392,395,417,419,450,458,478,493,523],proessor:392,prof:301,profi:167,profil:[],program:[3,4,6,7,9,11,12,13,15,16,154,202,205,206,207,209,229,243,250,256,310,415,494,495,507,523],programm:[13,16],progress:[1,41,224,250,268,306,384,385,387,514,517],prohibit:506,project:[6,7,13,384,475,518],promis:7,promot:398,prompt:[8,11,12,250,507],proni:[3,246,247],pronounc:249,proofread:8,prop:[6,305],propag:[4,9,214,270,306,323,417,425],propens:6,proper:[227,297,442,494,518],properati:305,properli:[212,236,316,321,329,386,387,413,494,524],properti:[],propoerti:334,proport:[6,39,41,95,113,114,174,224,253,254,255,306,342,349,350,422],proportion:253,propos:[6,152,216,228,245,270,293,311,430,444,480,482],prospect:7,protect:334,protein:[7,10,15,178,314,316,332,496,504],protocol:250,proton:[481,488,522],prototyp:[42,454],prouduc:[222,348],prove:[88,89,239,256,321],proven:293,provid:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,28,40,42,63,70,74,130,151,154,172,176,177,178,204,205,207,210,217,218,222,227,228,229,230,243,245,250,252,256,260,268,270,298,305,306,307,310,311,316,321,322,341,343,344,347,348,359,374,376,377,383,387,392,394,398,400,405,407,408,412,416,417,422,424,427,429,438,439,442,444,445,455,456,457,458,465,466,474,475,476,479,480,481,484,493,498,504,506,509,510,514,515,518,523],proxim:201,psa:354,pscreen:[3,12,505],pscrozi:[0,7,13],psec:[206,230,249,253,254,270,303,316,337,338,516,522],psend:493,pseudo:[417,491,496,501],pseudodynam:341,pseudopotenti:[9,445],psf:6,psi:[418,487],psi_ij:418,pstart:[3,270,271,275,303,316],pstop:[3,270,271,275,303,316],pstyle:[95,118,210,211],psu:[457,458],psuedo:501,psxevar:15,pt2:177,pt4:177,ptarget:228,pthread:[12,15,16],ptr:[6,11,243,494],ptype1:126,ptype2:126,pu3:177,pu4:177,pu6:177,publicli:5,publish:[7,256,260,286,292,307,381,408,442,445,479,481],pull:[322,330,518],puls:346,pump:[439,440],punctuat:[2,491,510],purchas:205,purdu:[9,13],pure:[11,334,425,443,444,479,481,505],purg:[3,497],purpl:[2,206],purport:11,purpos:[3,6,7,9,12,42,63,75,130,140,146,161,162,177,178,180,182,198,202,222,227,228,253,297,299,302,304,315,334,376,402,428,434,445,447,483,489,496,499,503,506,508,509,523,528],push:[3,8,212,223,230,251,269,297,314,322,385,422,467,518],pushd:251,put:[3,6,8,11,12,13,39,61,166,178,202,231,235,353,354,357,379,457,494,496,500],putenv:[507,523],px1:505,px2:505,pxx:[228,270,303,316,376,377,513,514],pxy:[3,6,514],pxz:[3,6,514],py1:505,py2:505,pydir:11,pyi:[228,270,303,316,376,377,514],pymol:[7,11,13],pymol_aspher:[],pympi:11,pypar:11,python:[],pythonpath:11,pyz:[3,6,514],pz1:505,pz2:505,pzz:[228,268,270,303,306,316,376,377,514],q_1:465,q_2:465,q_3:465,q_d:517,q_i:[418,438],q_j:438,qbmsst:[],qcore:307,qdamp:307,qdist:[408,430,434,438],qeq1:307,qeq2:307,qeq:[],qeqall:465,qeqallparallel:465,qfile:[307,408],qin:249,qinitmod:465,qmin:384,qmmm:[],qmol:310,qoffload:15,qopenmp:15,qout:249,qoverrid:15,qstep:307,qtb:[],quad:[12,17,392,493],quadrant:15,quadrat:[],quadratur:[95,215],quadrupl:393,quadruplet:[194,197,199,360,362,363,364,366,368,369,370,372],qualifi:[3,252],qualiti:[7,205,206,394],quantic:465,quantit:[78,87,113,114,115,174,422],quantiti:[],quantum:[6,9,152,243,247,299,306,310,311,394,398,417,445,465,475],quantum_temperatur:306,quartic:[],quartic_spher:215,quartz:[306,311],quasi:299,quat:[3,506],quaternion:[3,6,40,90,124,129,142,156,157,178,272,273,276,277,280,281,282,290,291,421,496,506],quati:[124,129,496],quatj:[124,129,496],quatk:[124,129,496],quatw:[124,129,496],queen:13,quench:[357,491,510],queri:[3,11,54,287,494,523],quest:[6,243],question:[8,9,12,13,286,297,357,454,518,523],queteschin:9,quick:[0,4,12,14,15,16,17,18],quickli:[3,4,8,12,13,39,100,224,230,245,250,334,384,385,387,394],quickmin:[262,286,292,383,384,385,387,510],quicktim:[4,205],quip:[],quit:[],quot:[2,3,12,204,304,359,442,491,492,494,504,523],quotat:465,r0m:331,r10:398,r12:421,r_1:152,r_2:152,r_c:[409,411,420,481],r_cut:[398,441],r_d:517,r_e:418,r_ewald:318,r_fu:[439,440],r_i:[28,152],r_ii:152,r_ij:[28,398,417,455,488],r_ik:455,r_j:28,r_jik:455,r_m:441,r_me:409,r_mh:420,r_min:410,r_ub:19,r_x86_64_32:12,ra2:177,rad2theta:177,rad:357,radhi:499,radial:[65,75,106,107,124,127,152,162,164,169,218,255,271,283,294,330,340,385,417,424,447,449,450,496,499],radian:[19,20,23,27,31,34,35,37,129,177,185,196,198,315,360,362,366,369,496,499,506],radians:198,radiat:[130,177,346],radic:[180,496],radii:[75,80,152,227,231,406,415,421,422,439,440,445,461,463,487,499],radit:417,radiu:[],radlo:499,rafferti:349,rahman:[6,7,228,268,270,271,306,454],rai:[9,16,177],ram:481,raman:15,ramirez:220,ramp:[],ran:[3,6,11],random:[3,6,39,178,181,201,205,214,216,225,226,227,229,231,242,245,246,247,253,254,255,256,266,270,299,302,306,311,314,316,321,334,338,341,346,350,353,400,412,413,414,491,506,511,517,523,524],random_se:491,randomli:[178,181,216,231,245,253,302,334,356,510,511],rang:[1,3,6,7,8,9,10,12,14,15,17,37,39,56,63,75,76,81,96,117,119,120,121,123,127,128,133,152,153,164,172,177,179,182,183,190,198,202,203,205,206,215,216,226,230,231,245,247,265,302,318,334,335,341,342,347,349,376,377,385,388,389,392,394,396,398,399,400,401,402,403,404,406,408,409,410,411,412,414,415,417,419,421,423,424,425,427,430,431,432,433,434,435,436,437,438,439,440,441,442,445,446,447,448,452,455,458,459,460,465,474,475,477,478,481,482,486,487,488,490,494,505,506,514,527],rank:[6,11,12,250,347,374,493],rankin:275,raphson:3,rapid:[4,6,11],rapidli:[3,8,12,75,227,253,268,270,316,337,338,350,408,412],rapp:[307,308,309],rappe_and_goddard:308,rare:6,rasmol:[6,7],rasmussen:421,raster3d:[6,7],rate:[],rather:[2,6,9,12,40,41,64,123,161,205,224,230,246,247,316,338,346,350,352,353,354,357,417,449,450,457,477,478,497,501,506,508,513,523],ratio:[6,61,95,111,152,216,224,230,253,255,334,342,349,350,376,390,421,422,459,469,483,493,496,506,510],rational:[347,508],rattl:[],rattle:[3,9,209,237,247,286,292,320],rattle_debug:320,ravelo:[275,432],raw:15,rayleigh:[268,306],rb1:177,rbb:465,rbg:206,rcb:[3,41,224],rcm:[97,98],rcmx:[97,98],rcmy:[97,98],rcold:237,rcut:63,rcutfac:[152,466],rd1:387,rdc:16,rdf:[],rdn:387,rdt:387,rdx:4,reach:[6,12,41,131,220,224,226,228,254,275,326,334,341,359,375,391,409,515,517,523],reacquaint:518,react:6,reactant:[317,417],reaction:[9,241,317,322,332,345,356,387,417,419,450,478],reactiv:[9,313,394],read:[2,3,6,7,8,9,11,12,13,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,37,38,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,61,126,176,178,179,181,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,201,202,203,205,206,207,208,209,215,216,227,228,230,231,240,241,245,247,250,267,268,270,272,273,274,275,276,277,278,290,291,293,294,295,298,299,301,302,304,305,309,316,317,320,322,326,329,333,336,344,345,346,352,358,360,361,362,363,364,365,366,368,369,370,371,372,373,375,382,386,387,391,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,485,486,487,488,489,491,493,496,497,498,500,501,502,503,504,506,507,508,510,523,524,525,526,528],read_data:[],read_dump:[],read_restart:[],read_restart_set:8,readabl:[203,205,386,503,528],reader:[3,13,497],readi:[11,12,179,181,182,250,506,517,526,527,528],readme:[1,4,6,8,9,10,11,12,13,15,176,202,203,207,310,426,445,457,458,494],real:[3,6,7,11,26,29,30,61,75,99,100,117,152,167,178,187,201,206,214,230,231,234,250,251,254,267,299,306,311,314,350,351,353,354,356,365,376,377,379,383,389,408,445,447,457,458,481,496,499,505,513,516,522,524],realist:[3,231,500],realiz:[75,209,494],realli:[1,3,8,12,123,134,153,206,251,388,425,508,518],realloc:3,realtim:250,reamin:[351,355],rearrang:[203,387],reason:[3,6,7,11,12,18,39,159,170,178,218,253,303,316,343,344,347,357,386,387,392,405,409,417,418,420,440,447,483,485,500,505,524],reax:[],reax_def:3,reaxc:[],reaxff:[3,4,5,7,9,13,209,307,309,312,313,425,457,458,475,508],rebal:[41,224],rebalanc:[41,224],rebo:[],rebuild:[11,12,14,15,245,388,412,514],rebuilt:[3,12,202,203,204,205,207,388,392],recalcul:[75,95,334],receiv:[3,223,250,252,297,493],recent:[],reciproc:[6,12,130,176,177,298,376,399,401,402,408,411,417,430,434,452,460,510],recog:12,recoginz:3,recogn:[3,12,77,180,225,226,270,317,386,415,442,457,494,496,503,504,517],recomend:6,recommend:[7,12,15,205,206,237,306,344,376,417,425,439,440,445,458,459,462,464,465,505,515,518],recompil:[1,3,9,12,207,320],recomput:[112,140,182,235,322,414,508],reconstruct:[3,229,465],record:[207,229,322],recov:[228,237,270],recreat:358,rectangl:[41,224,379],rectangular:[7,41,64,180,224,245,379,496,498,500],rectilinear:[130,177,203],rector:53,recurs:[41,224,398,483],recust:41,recv:493,red:[2,205,206,227,299],redefin:[3,498,504,523],redirect:12,redo:12,reduc:[],reduct:[17,18,128,130,177,268,306,376],redund:418,ree:470,reed:[268,306],rees:[7,9,13],ref:[343,344,384],refactor:6,refer:[],referenc:[3,6,12,65,71,75,125,131,202,203,209,219,245,305,348,377,408,424,451,459,494,514,523],reflect:[],refman:9,reformat:7,refresh:215,reg:499,regard:[6,61,267,320,321,326,454,458],regardless:[14,75,178,181,201,221,230,253,270,272,273,274,276,277,278,303,316,327,334,392,493,499,506],regim:[6,342,349,409,505],region:[],region_spher:8,region_styl:355,regist:[8,127,154,329],regoin:6,regress:523,regspher:178,regstrip:357,regul:6,regular:[1,3,41,64,96,176,180,202,205,216,224,245,305,346,377,409,428,493,496,498,500],reigon:523,reinder:15,reinhardt:[343,344],reject:[178,227,457,511],rel:[1,6,26,35,41,61,75,100,113,134,142,152,156,160,161,163,178,187,206,209,216,224,230,231,234,237,245,251,254,266,267,293,297,302,311,313,314,322,330,334,336,341,342,346,353,357,376,377,385,417,421,422,439,440,442,459,487,497,505,510,514,517,524],relat:[],relationship:[6,240,307,359,376,465,487,517,523],relax:[],releas:[0,5,7,8,13,225],relect:[3,447],reles:42,relev:[2,6,12,41,82,85,122,140,178,182,206,210,211,214,215,216,217,218,219,220,221,222,224,225,226,230,231,235,237,238,242,244,245,246,249,250,256,257,258,260,261,262,263,264,266,267,269,279,280,281,282,283,284,285,286,287,288,289,292,296,300,301,302,304,305,310,312,313,314,318,320,327,332,334,335,336,341,342,345,346,347,348,349,350,351,352,353,354,356,357,376,381,385,395,396,400,406,408,409,411,412,414,417,420,421,422,423,424,429,431,432,433,435,436,437,439,440,447,448,449,450,454,459,467,474,477,478,486,487,488,493,509,524],reli:[3,12,308,417,458,488,496,506],reloc:12,remain:[7,12,32,36,41,50,55,61,75,95,114,158,159,160,161,165,166,167,168,170,181,191,197,198,202,210,211,216,218,219,228,230,253,254,261,270,271,276,277,278,290,291,293,295,300,301,325,334,337,338,339,345,346,357,359,367,370,386,398,417,425,438,445,447,475,491,496,497,501,506,508,510,514,515,517,518,523,524],remaina:398,remaind:[9,178,202,231,302,334,347,481,496],remap:[3,6,12,61,63,75,161,178,201,230,251,267,293,376,496,497,498],remedi:[6,517],rememb:[2,518],remot:518,remov:[2,3,6,8,13,54,75,76,81,100,117,125,127,152,156,157,158,159,160,161,165,166,167,168,170,171,178,181,182,203,209,218,225,242,253,254,259,262,266,268,270,276,277,278,290,291,293,295,301,307,316,317,318,320,334,337,338,339,341,357,376,387,411,440,445,496,499,507,508,518,523,524],remove_bia:8,remove_bias_al:8,remove_molecul:215,remove_sourc:215,remove_speci:215,ren:177,renam:[12,358,507,518],render:[12,13,202,205,206],rendon:[270,271],reneighbor:[3,8,12,39,59,75,224,245,334,347,357,412,513,514],renssela:301,renumb:75,reorder:[3,12,39,493],rep:511,repeat:[2,6,205,206,227,228,245,326,379,398,479,481,483,491,510],repeatedli:2,repel:251,repes:202,replac:[2,3,6,11,12,41,65,97,98,128,155,156,157,158,159,160,161,164,165,166,167,168,170,171,202,203,205,206,207,218,219,221,222,224,227,231,253,275,304,305,311,313,392,394,408,432,449,450,477,497,498,503,504,514,523,524,526,528],replic:[],replica:[],replica_fil:12,report:[],repositori:[],reprens:346,repres:[1,3,6,8,9,12,14,40,41,42,61,70,75,98,124,127,129,190,198,202,203,205,218,219,220,221,222,228,234,241,246,248,253,256,270,299,301,303,311,316,317,318,322,330,331,346,348,355,377,387,393,398,421,428,438,439,440,442,443,444,452,455,457,458,482,483,491,493,496,506,508,511,517,523,526],represent:[3,6,8,9,59,61,146,180,202,246,247,299,346,398,417,421,445,459,496,499,517],reprocess:501,reproduc:[3,15,270,352,408,415,422],repul:442,repuls:[6,7,35,40,45,46,119,251,307,351,352,355,394,398,406,408,412,417,419,422,424,438,442,446,465,474,481,484,487,488,506],reqir:[307,309],request:[3,6,8,12,41,113,181,198,202,250,256,314,321,334,336,374,376,447,457,458,491,501,506,510,515,518,523,524,526],requir:[],rerun:[],rescal:[],research:[5,7,88,89,239,256,260,321,445,491,510],resembl:[311,518],resepct:6,reserv:[12,250,517],reservoir:[99,237,245,249,253,346],reset:[],reset_atomic_reference_posit:215,reset_dt:8,reset_target:8,reset_tim:215,reset_timestep:[],resid:13,residu:250,residue1:388,resist:[6,250],resolut:[220,465,477,478],resolv:[228,299,334,440,518],resort:3,resourc:[7,393,415],respa:[3,15,212,213,223,232,235,236,248,250,251,265,270,297,308,315,319,322,330,331,332,333,350,351,355,390,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,446,448,449,450,452,454,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,504,505,515,516,523],respecifi:445,respect:[1,6,9,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,42,43,45,46,47,48,49,51,53,54,56,61,74,75,95,97,106,107,123,130,134,154,155,160,163,165,172,176,177,184,185,187,188,189,190,192,193,195,196,198,203,205,206,221,226,227,228,230,237,248,251,253,254,256,270,272,273,274,275,276,277,278,279,280,286,288,290,291,293,295,307,308,309,316,318,322,330,333,346,351,354,360,362,363,365,366,369,371,374,376,377,382,385,386,391,392,393,394,396,398,399,400,401,402,403,404,406,407,408,411,412,415,416,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,442,443,445,447,448,451,452,454,458,459,460,464,465,466,467,476,477,479,480,481,482,484,486,487,488,493,497,506,509,515,517,523,525,526,528],respon:9,respond:[6,7,161,230,417,454],respons:[6,7,268,342,349],resquar:[],rest:[6,8,12,38,58,199,305,309,315,372,398,440,442,489,513,514,517],restart1:299,restart2:299,restart2data:[],restart:[],restartfil:[12,13],restor:[3,8,62,63,113,178,210,211,265,305,322,330,331,336,358,513,514],restore_bia:8,restore_bias_al:8,restrain:[],restraint:[9,229,268,315,333,429],restratin:315,restrict:[],result:[1,2,3,6,7,9,10,11,12,13,14,15,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,43,45,46,47,48,49,51,53,54,56,65,66,69,70,75,79,86,95,98,99,103,113,114,116,121,123,125,126,127,128,130,131,153,155,158,161,165,172,173,175,177,178,181,184,185,187,188,189,190,192,193,195,196,198,201,202,203,205,206,209,212,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,234,237,238,240,244,245,246,248,253,254,256,260,268,270,272,273,274,275,276,277,278,279,280,288,290,291,293,294,295,298,299,307,308,309,313,314,316,317,319,320,334,342,343,344,346,347,348,351,352,354,356,359,360,362,363,365,366,369,371,376,377,387,390,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,417,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,442,443,445,447,448,449,450,451,452,454,458,459,460,467,476,477,478,479,480,481,482,484,486,487,488,491,493,496,498,499,500,501,505,506,507,508,510,522,523,524],resum:523,retain:[2,225,226,394,398,445,493],retart:[32,50,191,367],retir:[3,457],retreiv:8,retriev:[6,8,243,443,444,523],reus:[3,508],rev:[6,13,66,74,100,117,121,152,153,166,216,247,253,255,268,270,271,275,293,298,308,311,316,322,334,338,341,343,344,349,384,398,406,407,408,411,415,416,417,421,422,427,432,439,440,441,442,444,449,450,455,459,466,476,479,480,481,484,491],revers:[2,6,8,95,189,227,251,270,296,297,307,326,342,343,349,387,438,505,517],review:[152,307,322,341,445,456,466,491,510,517,518],rewind:375,rewrap:202,rewrit:[5,12],rewritten:18,rezwanur:454,rfac0:[152,466],rfactor:334,rfile:316,rg0:332,rgb:206,rh3:177,rh4:177,rhaphson:3,rheolog:6,rhi:[449,450,477,478],rho0:[442,462,464,472,473],rho0_meam:442,rho:[],rho_0:[472,473],rho_alpha_beta:415,rho_bkgd:442,rho_colloid:351,rho_e:346,rho_fin:345,rho_i:[443,444],rho_initi:345,rho_ref_meam:442,rho_wal:351,rhodo:[9,10],rhodopsin:[1,10,15],rhohi:302,rholo:302,rhosum:[],rhot:237,ribier:384,richard:9,richardson:316,richi:[9,18],rick:[307,308,407,465],rick_and_stuart:308,ridg:[9,18],right:[3,6,11,12,41,154,178,196,197,201,203,224,227,251,256,267,296,297,317,359,379,408,496,499,506,518,523],rightmost:[41,224],rigid:[],rigidid:129,rigidifi:316,rii:[97,98],rij:[100,117,225,226,297,412,413,449,450,474],rin:[424,435,436],ring:[],rino:[77,484],rinv:376,rirj:[352,422],risi:[152,466],risk:[8,315,505],rix:[97,98],rjk:[225,226],rjone:[7,9,13],rk4:317,rlo:[449,450,477,478],rmask:[3,523],rmass:[3,305],rmax:[75,179,225],rmdir:507,rmin0:[152,466],rmin:[75,179,226,432],rms:[376,377],rmsd:345,rnemd:6,robert:9,robin:206,robust:[383,384,385,458],rock:442,rockett:455,rod:316,rodata:12,rodnei:311,roi:7,role:[6,341],roll:12,ronchetti:117,room:[59,61],root:[11,95,97,98,204,341,345,415,503],rosati:39,rose:442,ross:442,rosski:299,rosybrown:206,rot:[6,99,299,315,341,524],rotat:[],rotate:326,rotation:117,rotaton:499,rough:[6,178,205,356],roughli:[7,10,12,41,161,205,220,245,253,254,262,269,270,284,303,316,334,337,338,341,377,387,392,461,463,498,505],round:[1,3,12,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,42,43,45,46,47,48,49,51,53,54,56,75,123,155,165,184,185,187,188,189,190,192,193,195,196,198,206,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,377,390,393,394,396,399,400,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,428,430,431,432,433,434,435,436,437,438,439,443,448,449,450,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,498,499,505,522,523],rous:246,rout:[95,424,438],routin:[5,6,8,11,14,15,37,39,56,96,182,256,445,456,477,478,509],roux:[6,234,254,482,517],row:[6,68,69,71,73,79,84,86,98,102,103,114,116,119,125,126,127,129,131,158,166,173,175,176,177,218,219,221,222,259,316,346,348,356,417],royalblu:206,rozero:442,rperp:[267,326],rpi:301,rpm:12,rrespa:[1,3,5,7,8,15,210,211,267,270,388,393,394,395,396,397,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,446,448,449,450,452,454,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,483,484,486,487,488,489,505],rspace:3,rsq:[449,450,477,478,485],rsurfac:346,ru3:177,ru4:177,rub:19,rubia:[443,444],rudd:[447,477,478],rudra:[7,9],rudranarayan:[7,301],ruiz:216,rule:[],run1:[6,391,523],run2:[6,373,375,391,523],run3:[6,391,523],run4:[6,391,523],run5:[6,391,523],run6:[6,391,523],run7:[6,391,496,497,501,523],run8:[6,391,523],run:[],run_styl:[],rung:317,runloop:375,runtim:[12,16,205,392],russia:9,rutherford:346,rutuparna:[479,481],rxn:[317,478],ryan:9,ryckaert:[320,369],rycroft:176,rydberg:445,s00:454,s0st:6,s2050:1,s2629:415,s319:215,s_fact:323,s_i:[6,417],s_ij:6,sack:7,saddl:[269,387],saddlebrown:206,sadigh:[216,415,443,444],saed:318,saed_vtk:130,safe:[12,205,234,254,392,518],safe_zone:3,safest:[3,334],safeti:323,safezon:458,safran:487,sagui:[377,411],sai:[1,3,12,13,206,457,458,494,518],said:385,sakai:480,sall:[9,465],salmon:206,salt:[409,420,442,496],salter:465,same:[1,2,3,4,6,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,41,43,44,45,46,47,48,49,50,51,53,54,56,59,61,64,65,68,73,75,76,81,84,87,90,92,93,95,96,97,98,99,100,102,104,107,113,114,115,117,119,121,123,124,126,127,128,152,153,154,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,174,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,200,201,202,203,204,205,206,209,210,211,212,215,216,218,221,222,223,224,225,226,227,228,230,231,235,236,237,238,244,245,246,247,248,249,250,251,252,253,254,255,256,259,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,294,295,297,298,299,301,302,303,305,306,307,308,309,311,312,313,314,315,316,319,320,322,327,330,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,352,353,354,355,357,358,359,360,361,362,363,365,366,369,371,376,377,379,380,381,382,386,387,388,389,390,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,429,430,431,432,433,434,435,436,437,438,439,440,442,443,446,447,448,451,452,454,455,458,459,460,465,467,474,475,476,477,479,480,481,482,484,486,487,488,491,493,494,496,497,498,499,501,504,505,506,507,508,509,510,514,517,518,522,523,524,527],sampl:[1,2,4,6,9,11,12,99,113,156,157,171,176,201,205,209,218,219,229,231,243,245,247,249,270,271,292,299,302,311,313,318,330,332,334,338,341,344,356,388,398,414,496,510],sample_frequ:215,san:454,sandia:[0,5,7,9,13,16,74,122,418,442,454],sandybrown:206,saniti:[315,388],satellit:[6,160],satifsi:523,satisfi:[3,12,77,130,152,177,228,237,256,262,275,286,292,320,354,385,388,422,510],satur:409,save:[6,8,12,18,40,61,198,203,205,220,227,246,247,253,254,255,302,311,346,358,377,388,390,398,498,501,508],sb3:177,sb5:177,sc3:177,scalabl:[],scalar:[],scalars:318,scale:[0,1,3,5,6,9,10,13,15,17,40,61,65,75,76,99,112,124,127,128,152,164,172,184,198,201,202,203,205,206,209,210,211,215,216,219,228,230,245,249,250,251,253,255,256,268,270,272,273,274,275,276,277,278,299,303,306,307,316,324,325,334,336,338,341,343,344,346,350,357,376,377,379,386,389,393,394,395,409,414,417,419,422,425,439,440,442,445,454,461,463,482,497,499,501,505,508,510,513,514,523,524],scale_factor:[461,463],scalegamma:256,scalexi:[3,228,270,275],scalexz:[228,270,275],scaleyz:[228,270,275],scan:[206,226,375,497],scatter:[11,130,177],scatter_atom:11,scatter_coord:11,scenario:[6,40,63,227,305,314,334,347,355,388,500,501,505,513],scf:517,schaik:438,schedul:491,schell:480,schemat:227,scheme:[6,9,17,246,247,270,299,311,320,346,376,458,482],schlitter1:345,schlitter2:345,schlitter:345,schmid:412,schneider:[253,255],schoen:376,schroding:417,schroeder:[117,517],schulten:[254,322,377,517],schunk:334,schwen:9,sci:[77,354,407,444,455,465],scienc:[8,215,227,250,297,322,343,415,443,465,480],scientif:[9,152,415,523],scm:11,scratch:[12,41,224],screen:[],screenshot:11,scripe:11,script:[],scripta:70,scsl:12,sdk:[],sea:11,seagreen:206,seamlessli:305,search:[0,2,3,8,12,100,117,179,181,206,207,334,383,384,385,387,389,491,497,498,510,523],seashel:206,sec:[12,516,522],secant:241,second:[1,3,6,9,11,12,15,54,59,61,63,75,96,99,113,115,117,123,145,146,150,153,154,166,172,176,177,179,180,181,201,202,206,209,210,218,219,221,222,227,237,241,245,246,251,267,269,299,305,313,315,316,320,322,330,332,334,343,344,346,357,376,379,384,385,387,388,397,398,399,401,402,407,408,415,417,418,419,422,423,425,428,429,432,442,447,451,465,476,480,481,482,484,488,491,492,493,494,496,498,503,505,509,510,514,515,517,522,523,524,526,528],second_mo:465,secondari:[3,190],sectinn:527,section:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,60,61,65,66,67,68,69,70,71,72,73,75,78,79,82,83,84,85,86,87,88,89,91,94,95,96,97,98,99,101,102,103,106,107,108,109,110,111,113,114,115,116,118,119,122,123,124,125,126,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,179,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,207,209,212,213,214,215,216,218,219,220,221,222,223,224,225,226,227,229,230,231,233,234,236,237,238,239,240,241,242,244,245,246,247,248,250,252,253,254,255,256,257,258,259,260,262,263,264,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,305,306,307,308,309,310,311,312,313,316,317,319,320,321,322,323,324,325,326,327,329,334,337,338,339,340,341,342,343,344,345,346,347,349,352,353,354,357,358,360,361,362,363,364,365,366,367,369,370,371,372,377,378,379,382,386,387,389,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,491,492,493,494,496,497,499,501,504,505,506,507,509,510,511,514,515,517,523,524,525],section_acceler:[9,12,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,198,212,223,230,238,244,248,253,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,308,309,316,319,320,354,360,362,363,365,366,369,371,377,393,394,396,399,401,402,403,404,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,443,448,451,452,454,458,459,460,467,476,477,479,480,481,482,484,486,487,488,499,505],section_accerl:415,section_command:[0,1,9,359],section_error:[7,12],section_exampl:[2,6],section_histori:[7,12],section_howto15:89,section_howto:[6,8,9,11,12,40,42,59,61,66,69,70,71,74,75,76,77,79,80,81,82,85,86,87,90,91,92,93,94,95,97,98,100,103,104,105,106,107,108,109,110,111,114,116,117,120,121,122,125,127,128,132,147,148,149,150,152,153,158,160,172,173,175,176,180,200,218,269,282,285,289,349,397,410,491,496,499,510],section_modifi:[6,7,42,202,203,205,514],section_packag:[12,458],section_perf:7,section_python:[6,12],section_start:[3,6,9,11,380,387,490,491,505,511,514],section_tool:[6,7],see:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,60,61,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,322,323,324,325,326,327,329,330,333,334,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,373,376,377,379,380,381,382,384,385,386,387,388,389,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489,490,491,492,493,494,496,497,498,499,501,502,503,504,505,506,508,509,510,511,512,513,514,515,516,517,518,523,524,526,527,528],seed1:511,seed2:511,seed:[3,178,181,201,205,214,216,225,226,227,229,231,242,245,246,247,253,254,255,256,299,302,306,311,316,334,338,341,346,353,400,412,413,414,491,506,511,517,523,524],seed_com:254,seed_drud:254,seek:[41,224],seem:[6,228,347,384,442,505],seen:[12,15,256,355],segement:3,segment:[3,6,7,12,40,42,90,124,205,209,285,302,316,334,412,428,458,474,475,496,504,506],select:[3,6,9,12,14,61,63,75,128,130,167,172,177,178,198,205,207,214,216,230,231,242,245,250,251,265,267,322,333,341,342,347,349,351,353,354,356,374,376,383,387,389,392,424,429,442,465,493,497,499,505,506,510,515,523],self:[],sellerio:13,semi:[3,207,215,216,296,298,497],semiax:156,semimet:417,semin:15,send:[0,3,5,7,8,11,12,206,250,493],sender:[3,493],sens:[1,3,6,7,17,39,41,42,61,75,113,197,202,218,221,222,224,227,230,246,247,252,253,254,255,302,306,311,318,334,341,342,346,349,357,387,408,430,434,479,480,481,491,496,501,505,508,513],sensabl:250,sensibl:114,sensit:[2,6,77,228,311,524],sent:[206,250,374],sep:[6,11,523],separ:[2,3,6,7,9,12,13,15,40,41,80,127,134,152,178,181,203,205,206,207,215,219,224,225,226,227,228,231,234,245,253,254,270,284,299,302,303,305,307,311,316,320,334,337,338,339,342,349,357,377,392,399,401,408,409,411,413,430,439,440,442,449,450,451,456,466,475,476,477,478,481,487,494,496,497,498,505,508,513,515,517,524,525,526,527],seper:409,sequec:523,sequenc:[2,3,12,41,61,202,203,205,206,207,224,247,269,357,379,387,425,455,511,523],sequenti:[61,62,206,455,497],sequestr:7,seri:[3,4,6,9,13,15,17,152,202,203,205,206,219,222,246,247,302,391,394,421,442,445,447,449,450,459,467,477,478,494,503,504,511,513,514,523],serial:[],serial_icc:12,serious:8,serv:[6,140,180,334,474],server:[1,252],set:[],set_callback:243,set_energi:243,set_vari:[6,11,494],setarea:256,sete:[218,227],setenv:[11,12,405],setfl:[13,393,415],setforc:[],setgamma:256,setmask:8,settl:228,setup:[3,6,7,8,11,12,13,15,36,40,55,61,75,95,99,166,179,180,181,182,197,206,215,227,230,334,347,370,388,389,392,475,493,496,504,526,528],setup_pre_exchang:8,setup_pre_forc:8,setup_pre_force_respa:8,setvel:[],seven:444,seventh:[145,150],sever:[1,4,5,6,7,8,9,10,11,12,13,14,15,17,39,40,65,75,95,172,179,182,197,202,203,204,207,209,215,225,226,228,247,253,256,260,270,301,303,305,316,322,334,341,350,374,379,385,395,398,402,414,415,425,434,438,442,447,455,457,458,464,465,491,494,498,502,510,514,517,523,524],sexton:445,sfactor:[3,205,206,386],sfftw:12,sgi:12,sgmc:216,sgrid:334,sgroup:176,shade:205,shake:[],shan:[16,307,308,407],shanghai:[9,13],shape:[],shape_upd:8,shapei:[124,496],shapex:[124,496],shapez:[124,496],shapshot:501,shardlow:[],share:[],sharon:316,sharp:[355,442,481],shawn:9,shear:[3,4,5,6,7,9,61,63,161,201,228,230,256,270,293,334,349,352,422,439,440,454,462,464],sheet:500,shell:[],shen:9,shenderova:394,sheppard:384,shflags:12,shield:[],shift:[],shiftse:334,shiga:[6,270,271],shini:[205,527],shinoda:[6,9,270,271,460],shiny:205,ship:207,shlib:[11,12],shlibflags:12,shm:15,shock:[],shockvel:[268,306],shortcut:[228,270,303,316],shorter:[3,131,245,297,389,447,504],shortest:[205,389,395,505],shorthand:[206,482],shoul:483,should:[1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,63,74,75,77,87,91,95,99,106,107,108,112,113,114,121,123,129,153,155,156,157,160,161,164,165,166,168,171,174,178,180,182,184,185,186,187,188,189,190,192,193,195,196,198,200,201,202,203,205,206,210,211,212,213,216,220,223,224,225,226,227,228,230,231,233,234,236,238,240,242,243,244,245,246,247,248,249,251,253,254,255,256,258,259,260,261,267,270,272,273,274,275,276,277,278,279,280,284,288,290,291,293,295,297,298,299,300,301,302,303,304,306,307,308,309,310,311,312,313,314,315,316,317,319,320,327,330,334,335,337,338,339,340,341,342,345,346,347,349,350,351,352,353,354,355,356,357,359,360,361,362,363,365,366,369,371,376,377,379,380,381,383,385,386,387,388,389,390,392,393,394,396,397,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,442,443,445,447,448,449,450,451,452,453,454,456,457,458,459,460,461,463,465,467,474,476,477,478,479,480,481,482,484,486,487,488,491,492,493,494,496,497,498,499,500,501,503,504,505,506,508,512,513,514,515,517,518,523,524,526],shouldn:[3,8],show:[6,10,11,12,127,387,424,442,445,477,478],shown:[1,12,15,16,41,106,107,130,152,164,177,197,224,227,237,253,270,293,297,299,302,311,341,376,417,418,421,422,438,445,459,465,496],shrank:75,shrink:[3,6,41,59,61,75,180,201,202,205,210,211,214,224,230,231,251,256,297,334,353,357,376,377,385,408,430,434,447,496,497],shrink_spher:286,shrunk:75,shut:[6,11,388,495],si4:177,siam:354,sic:[4,408,425,442,451,476,479,481,484],sic_tersoff:455,sicc:[416,476,479,481,484],sicg:[479,481],sicsi:[416,476,479,481,484],side1:499,side2:499,side3:499,side4:499,side:[3,8,41,59,63,75,168,178,216,217,224,227,231,245,251,256,267,297,302,310,317,330,351,355,356,357,387,408,421,422,459,483,494,496,499,506],sidewai:4,sienna:206,siepmann:349,sige:[479,481],sigma0:398,sigma14:438,sigma1:398,sigma2:398,sigma:[3,6,10,45,46,50,54,95,129,184,202,203,206,210,211,245,256,297,321,334,350,351,355,379,389,392,394,397,398,399,403,404,406,411,412,413,414,416,417,421,423,424,428,429,430,431,432,433,434,435,436,437,438,441,446,447,459,460,470,476,482,483,505,522,523,524],sigma_14:403,sigma_:409,sigma_c:406,sigma_cc:[394,406],sigma_h:420,sigma_i:[418,447],sigma_ii:483,sigma_ij:[447,483],sigma_j:447,sigma_max:414,sigma_ss:406,sign:[3,6,12,189,197,296,330,354,359,445,504,513,518,523],signal:495,signicantli:16,signifi:[3,69,79,86,98,103,114,116,125,158,173,175,419,450,478],signific:[7,12,17,94,246,268,271,311,334,347,417,421,442,445,447,526],significantli:[1,6,39,153,176,256,270,315,417,476],sij:219,sikandar:16,silbert:422,silent:[206,494,507],silicon:[416,442,476,496],sill:454,silver:206,sim:[9,460],similar:[5,6,7,8,9,10,11,12,15,16,17,40,41,42,46,61,71,76,95,123,126,127,129,153,154,178,179,202,203,206,209,210,211,218,220,224,243,244,246,253,259,260,271,305,306,311,315,316,338,341,351,352,354,356,377,383,384,386,394,397,398,412,415,417,422,438,439,447,448,454,455,464,477,482,493,498,503,505,510,512,514,517,523,524,526,528],similarli:[3,6,7,8,38,58,61,123,174,180,182,199,201,202,205,206,217,218,221,222,226,230,236,251,270,272,273,274,276,277,278,301,303,316,318,320,334,341,342,349,355,360,372,377,379,387,390,394,402,422,434,476,489,493,496,499,500,505,506,510,523,527],simluat:[6,39,206,334,439,497,498],simlul:[316,346],simmul:349,simpl:[],simpler:[8,11,42,206,316],simplest:[3,8,9,40,69,79,86,98,103,114,116,125,127,158,173,175,307,517],simpli:[1,3,6,8,9,11,12,16,40,69,75,79,86,96,98,103,105,114,116,124,125,129,131,158,173,175,181,182,206,209,210,211,218,221,222,226,228,230,234,243,252,254,259,270,299,303,314,316,318,342,348,349,376,377,379,386,387,392,402,411,425,434,442,447,493,494,501,504,511,514,522,523],simplif:417,simplifi:[9,216,315,445],simplist:11,simualt:377,simul:[],simulatan:[15,245,392],simulation_nam:458,simulationub:465,simulatoin:[12,497],simult:392,simultan:[6,7,14,15,230,392],sin:[230,267,351,354,356,381,455,496,499,506,523],sinc:[0,1,2,3,6,8,9,10,11,12,13,14,20,21,32,39,41,44,54,61,63,66,70,75,77,97,98,121,127,129,130,154,156,158,168,176,180,181,183,184,186,191,202,203,205,206,209,210,211,212,213,216,217,218,219,220,221,222,223,224,227,228,229,230,231,235,236,245,247,249,252,253,255,256,267,270,272,273,274,275,276,277,278,281,284,293,297,299,302,304,305,311,314,316,322,333,334,342,346,347,348,349,351,352,355,356,357,358,360,361,375,377,385,386,387,388,391,392,393,394,398,401,402,403,404,406,407,411,412,414,415,416,421,422,423,425,426,427,428,429,430,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,449,450,452,455,456,457,458,459,460,465,466,467,476,477,478,479,480,481,484,488,491,493,494,496,497,499,501,504,505,506,507,508,510,514,517,518,522,523,524,527],sinclair:[7,297,415,475],sine:455,singapor:152,singh:393,singl:[1,2,3,6,7,8,9,10,11,12,14,15,16,17,40,41,42,59,61,63,65,68,69,71,73,79,81,84,86,95,96,98,102,103,113,114,116,119,124,125,126,127,128,129,131,154,158,173,175,176,178,202,203,205,206,207,209,214,217,218,219,221,222,224,226,227,228,231,234,242,244,249,256,259,267,270,271,275,284,286,292,299,301,302,304,315,316,318,320,323,329,334,336,346,348,351,352,354,356,357,359,376,377,383,386,387,388,389,391,392,393,394,398,403,405,407,414,415,416,417,418,422,423,424,425,426,427,442,443,444,445,451,452,455,456,457,458,459,465,466,467,476,479,480,481,484,491,492,494,496,503,504,505,506,507,508,509,510,511,513,515,523,527,528],singleel:398,singular:[438,439,440,448],sinnott:[308,394,407],sinusoid:[178,230,351,352,354,356,381],sio2:484,sio:407,sirk:[153,474],sisic:[416,476,479,481,484],sisisi:[416,476,479,480,481,484],sister:405,sit:[298,496],site:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,16,70,74,95,237,250,256,257,320,377,393,398,408,415,419,420,430,434,438,448,450,452,478,482],situat:[176,228,245,256,270,299,318,384,398],sival:177,six:[6,145,150,152,219,221,451,455],sixth:451,sixthpow:[404,447],size:[],size_restart:8,sizei:428,sizej:428,sizescal:3,sizex:278,sjplimp:[0,7,11,12],sjtu:9,skew:[3,6,60,61,180,205,230,270,496,499],skin:[3,12,39,63,77,126,179,181,245,284,316,321,346,388,389,392,428,453,514,522],skip:[12,15,32,129,184,191,301,302,375,386,391,429,496,501,504,513,515,523],skyblu:206,slab:[3,6,75,166,302,330,376,377,388,447],slateblu:206,slategrai:206,slater:[],sleight:54,slepoi:442,slice:[],slider:11,slight:[3,12,237,346],slightli:[1,6,15,39,40,202,203,204,205,207,311,316,377,394,408,430,434,457,479,481,484,491,504,526],sligthli:411,sliozberg:474,slip:[3,209,334,350,356],sllod:[],slope:[6,113,114,342,344,349,409,523],slot:[1,154,515],slow:[3,6,7,12,39,246,250,253,254,268,270,286,334,341,376,387,447,465,505,515,517,524],slower:[1,16,39,254,377,392,398],slowest:[346,493],slowli:[12,75,224,350,385,445,467,498],slurm:12,slurm_localid:12,sm3:177,small:[],smallbig:3,smaller:[1,3,6,12,15,16,39,56,61,63,75,131,180,202,203,205,206,216,231,235,245,256,298,316,317,334,344,359,376,377,383,392,447,475,483,485,496,503,505,515,523,528],smallest:[3,42,74,75,76,176,268,313,523],smallint:3,smallq:377,smallsmall:[3,12],smart:247,smd:[],smd_lammps_userguid:9,smi:3,smirichinski:9,smit:245,smith:452,smmoth:506,smooth:[],smoother:178,smoothli:[54,152,342,349,403,423,436,438,441,481,488],smpd:12,smt:[15,392],smtb:[9,465],smtbq:[],smulat:445,sn2:177,sn4:177,sna:[],snad:[],snap:[],snapcoeff:466,snaphot:501,snapparam:466,snapshot:[],snav:[],snb:16,snc4:15,snow:206,soc:424,socket:[12,16,17,252,493],sodani:15,soderlind:445,soft:[],softer:[351,355],softwar:[1,6,9,11,14,15,16,17,18,176,250,301,318],sole:[225,226,387,455,462,464],solid:[4,6,7,9,10,39,40,41,61,74,77,99,113,153,176,215,224,228,230,235,259,270,272,273,274,276,277,278,297,298,303,316,341,344,377,379,399,432,445,454,462,464,496],solut:[3,6,13,176,228,235,268,314,320,334,355,523],solv:[3,9,12,17,237,256,307,317,320,344,346,377,384,440],solvat:[4,10,178],solvent:[4,7,9,13,63,75,179,181,224,242,246,247,253,270,314,316,330,334,342,349,350,403,406,408,409,420,430,439,440,459,475,496,506],solver:[],some:[1,2,3,4,6,7,8,9,11,12,13,15,16,17,39,40,41,55,63,65,75,112,115,118,124,128,129,131,156,157,158,159,170,171,172,176,178,181,186,189,197,200,202,203,205,206,209,210,211,214,216,217,218,219,221,222,224,226,227,228,229,242,245,268,270,271,302,304,305,307,309,316,322,335,341,346,347,348,350,351,357,374,375,376,377,383,384,385,386,387,388,389,392,395,397,398,405,408,415,417,425,428,445,447,457,458,475,477,478,489,491,493,494,495,496,498,501,502,503,504,505,506,508,510,513,514,515,518,522,523,524,525,528],somehow:3,someindex:358,someon:[7,385],someth:[2,3,7,8,11,12,61,228,270,351,354,356,388,425,494,503,518],sometim:[2,3,6,8,12,17,228,270,342,349,376,389],somewhat:[7,9,12,74,113,158,168,218,270,376,515],somewher:[16,271,417],soon:[3,42,216,227,242,245,250,457],sophist:[7,154],sorensen:510,sort:[3,13,15,39,75,202,203,206,207,250,387,388,414,497,498,527],sound:[140,256,268,323,472,473],soundspe:[472,473],sourc:[],source_integr:215,sourceforg:11,south:152,souza:342,space:[2,3,6,8,11,12,15,17,41,57,61,75,130,152,167,172,177,178,198,201,205,210,211,214,221,224,226,230,231,251,256,264,267,270,298,299,314,318,323,334,351,353,354,356,359,376,377,379,386,387,388,399,401,402,408,411,415,417,428,430,434,442,445,449,450,452,455,460,477,478,485,487,493,496,499,508,514,517,523,524],spahn:422,span:[2,12,37,75,210,211,237,251,316,376,393,394,398,407,415,418,426,427,442,443,444,451,455,466,476,479,480,481,484,490,491,499,500,523],spars:[75,198],spatial:[3,5,6,7,17,39,41,69,75,79,86,98,103,114,116,125,142,158,166,173,175,202,203,212,215,218,219,222,224,236,249,253,319,327,331,346,461,463,506,524],spawn:250,spc:[],spce:237,spcpu:514,speak:[16,334,341],spearot:[130,177,318],specfi:[12,118,251,499],speci:[],special:[],special_bond:[],species1:[241,450,478],species2:[241,450,478],species:317,speciesn:241,specif:[1,2,3,4,6,7,8,9,12,13,14,15,16,17,21,28,32,40,41,42,50,65,75,119,124,126,127,158,160,163,176,178,186,191,202,203,205,206,207,209,210,211,214,215,218,219,221,222,224,227,229,242,243,245,246,250,256,265,302,304,305,308,316,341,346,347,351,357,361,377,385,387,392,394,397,398,410,415,421,422,425,426,427,442,445,447,457,458,459,475,476,482,483,493,496,497,501,502,503,505,506,512,513,514,522,523,524,526],specifi:[2,3,6,7,8,9,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,63,65,67,68,69,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,91,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,153,155,158,160,165,166,167,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,240,241,244,245,246,247,248,249,251,252,253,254,256,257,258,259,261,262,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,284,288,290,291,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,317,318,319,320,321,322,326,327,330,331,332,333,334,335,336,337,338,339,341,344,345,346,348,350,351,352,353,354,355,356,357,358,359,360,361,362,363,365,366,367,369,370,371,372,375,376,377,379,380,382,385,386,387,388,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,522,523,524,525,526,527,528],specifii:[247,256],speciti:505,spectral:[9,466],spectrum:[9,152,306,311],sped:[39,268],speed:[1,3,6,9,12,14,15,16,17,18,39,41,140,202,206,224,253,256,268,306,323,334,341,347,353,376,377,387,392,398,408,445,447,472,473,479,491,505,511],speedup:[1,15,17,377,505],spefici:[178,205,424],spell:499,spellmey:[6,184,508],spend:[12,217],spent:[1,12,13,14,491,510,515],sperhic:496,sph:[],sph_lammps_userguid:9,sphere1:256,sphere:[],spheric:[],spheriod:[3,6],spherioid:334,spheroid:[6,270,288,316,334],spike:127,spin:[40,124,203,352,395,417,496],spine:381,spine_two:381,spirit:[7,220],spit:3,spline:[],split:[1,3,6,9,11,12,15,17,41,218,224,237,254,270,321,354,376,392,413,483,490,493,505],splittol:[6,376],spparks:6,spread:[1,6,12,359,504],spring:[],springer:322,springgreen:206,sptial:75,sputter:231,sq2:[3,379],sqrt:[2,3,42,61,87,97,117,245,253,255,297,334,350,352,379,381,406,412,415,420,422,442,447,523],squar:[],squares:[41,224],squeez:[228,251,439,440],squibb:[5,7],sr2:177,src:[0,1,3,4,6,7,8,9,11,12,14,15,16,17,18,176,202,243,320,445,518],srd:[],srmax:75,srmin:75,srolovitz:415,srp:[],srtio:465,srun:12,ssa:321,ssao:[205,527],stabil:[6,9,253,270,398,457,482],stabl:[6,66,140,256,275,315,323,398,517],stabli:246,stack:[3,8,74],stage:[3,8,95,209,243,269,310,357,387,491,510,523],stagger:[1,2,3,206,377,503,512,523],stai:[3,16,210,211,268,287,306,392,496],stall:15,stamp:[209,341,497],stamped:12,stan:[9,16],stand:[0,6,7,9,12,13,312,457,458,494],standard:[],stanford:9,starikov:346,start:[],start_6:420,start_7:505,startstep:523,stat:[12,40,54,182,297,311,385],statcoul:522,statcoulomb:522,state:[],statement:[3,494,495,518],stationari:[],statist:[3,6,12,33,39,41,52,66,194,220,225,226,227,246,247,253,254,255,301,302,306,311,316,320,334,345,346,347,368,385,387,394,412,414,422,439,487,491,498,504,506,510,513,514],statu:[3,12,54,62,133,182,229,234,254,407,495,510,515],statvolt:522,std:12,stdin:[3,12,375],steadi:[6,268,275,306],steelblu:206,steep:[477,478],steepest:[7,384],steer:[7,9,229,232,322],stefan:[],stegailov:346,steinhardt:[65,117],steinhaus:517,stencil:[3,256,376],step:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,39,75,99,106,107,121,127,128,140,153,164,174,176,202,204,205,206,207,209,210,211,215,216,218,219,220,221,222,224,225,226,227,228,230,231,234,235,237,242,243,245,247,250,251,254,262,268,284,286,292,297,298,302,304,305,306,307,308,309,317,318,320,321,322,323,334,336,339,340,341,342,343,344,345,346,347,348,349,356,357,359,375,376,383,385,387,388,394,412,420,424,442,445,457,458,465,491,493,494,498,500,501,503,504,505,510,511,513,514,515,517,523,528],stepani:322,stepwis:95,stesman:341,steve:[0,5,7,13],steven:227,stiff:[6,40,51,225,226,298,299,385,454,517],stile:409,still:[1,3,6,9,11,12,13,15,16,37,38,41,58,63,75,100,119,127,176,182,198,199,200,202,203,206,210,211,224,249,253,284,307,311,334,346,359,372,376,377,383,404,415,421,422,425,429,439,453,457,459,467,475,496,498,504,518],stilling:[3,5,7,9,14,96,154,416,444,455,475,476,484,508],stipul:250,stl:[9,75,326,329],stl_surf:329,stochast:[4,7,9,209,247,321,334,341,356,413,414],stockmay:40,stoddard:411,stoichiometr:317,stoichiometri:465,stoke:[256,350],stokesian:9,stoll:[253,255],stone:[9,18,377,411],stop:[],stopstep:523,stopthresh:[41,224],storag:[3,12,14,348,392,508],store:[],store_st:335,storm:12,stouch:7,str:523,straatsma:6,straddl:[3,61,63,168,251,316,330,357,496,500,506],straight:316,straightforward:[4,13,417,517],strain:[],strang:[198,205,523],strategi:[],stratford:256,strcmp:359,stream:[3,6,123,153,158,161,162,205,215,230,246,247,253,254,293,302,311,334,524],streamlin:[12,504],streitz:[],streiz:408,strength:[3,9,152,172,183,205,315,351,355,425,458,459,508],stress:[],stretch:[3,54,61,128,225,322],strict:466,strictli:[6,41,198,224,268,306,341,496],stride2:523,stride:[206,247,503,512,523],strietz:408,strike:231,string:[2,3,6,11,12,41,178,202,203,204,206,218,219,220,221,222,224,245,304,317,318,359,378,391,442,455,456,457,466,492,494,496,506,507,513,514,523],strip:523,strong:[10,307,394],stronger:6,strongest:[439,440],strongli:[1,6,13,231,316,320,346,445,517],structrur:3,structur:[],structured_points:318,strucur:77,stuart:[307,308,394,407,465,475],stub:12,stubs:12,stuck:228,student:301,studi:[6,115,286,305,432,465],studio:15,stukowski:[216,415],style1:[32,50,191,367,425,496],style2:[32,50,191,367,425,496],style:[],style_nam:[270,271],stylecomput:465,stylist:8,sub1:507,sub:[1,3,4,6,7,8,9,11,12,13,17,32,36,39,40,41,42,50,55,60,63,65,67,71,72,83,95,99,101,118,152,172,180,191,197,204,205,206,210,211,224,228,230,270,271,275,306,311,320,321,346,347,355,357,367,370,379,382,392,394,397,407,414,421,422,424,425,428,447,457,458,459,465,482,483,488,493,496,499,505,513],sub_styl:[67,72,83,101],subbox:[128,205,206],subcutoff:428,subdivis:256,subdomain:256,subequ:11,subgroup:[202,527],subinterv:204,subject:[6,15,41,181,224,482],submit:[],subramaniyan:13,subscript:[11,346,360,418,484,523],subsequ:[3,6,11,12,41,61,113,179,206,220,224,228,245,341,346,347,348,379,391,415,475,494,496,497,503,506,507,515,516,523,528],subset:[6,11,12,15,41,85,152,202,203,206,224,266,270,272,273,274,275,276,277,278,302,303,307,316,387,392,394,398,425,447,490,493,496,498,501,505,523],subspac:9,substanti:[6,476,505],substep:270,substitut:[1,2,3,12,202,252,305,387,391,417,447,494,507,523],substract:408,substrat:[180,228,270,272,273,274,276,277,278,303,316,496],substyl:[438,505],subsystem:346,subtl:[104,106,107,247],subtleti:164,subtract:[3,6,54,65,75,86,99,104,107,112,113,115,123,129,153,155,156,157,158,159,160,161,162,164,165,166,167,168,170,171,202,203,209,218,237,245,246,249,253,254,255,257,261,262,266,293,300,316,357,388,437,496,506,514,523,524],succe:12,succeed:[219,220],succes:220,succesfulli:3,success:[2,6,11,12,14,127,202,206,216,219,228,231,245,284,302,316,334,341,359,385,387,494,495,503,504,511],successfulli:[3,11,202,231,494,507],successulli:11,successv:501,sucessfulli:3,sudden:35,suddenli:355,sudo:[11,12],sufac:42,suffer:[16,17,292,349,355,392],suffici:[2,3,6,7,16,17,41,63,75,204,224,268,270,298,334,341,348,351,359,429,447,496,517],suffix2:12,suffix:[],suggest:[0,6,7,12,268,306,494,517],suit:[7,13,211,256,417],suitabl:[4,12,13,16,54,95,202,227,305,338,398,405,422,438,442,457,458,491,510],sukumaran:220,sum:[3,6,8,12,40,74,75,80,85,91,96,97,98,100,104,108,113,115,117,120,121,123,127,128,135,151,152,153,155,158,159,160,161,164,165,166,167,168,170,172,174,175,176,218,219,221,222,231,243,246,253,254,259,297,298,302,306,311,316,318,322,333,344,346,348,351,355,357,376,377,385,397,408,412,417,418,428,430,433,442,457,458,466,483,494,514,517,522,523,524],summar:[6,12,418,465],summari:[],summat:[6,9,42,74,96,117,376,377,402,408,415,416,430,434,445,465,476,479,480,481,484],summer:[3,13,457,458],sumsq:128,sun:[20,43,185,360,404,447,458],sunderland:16,sup:[306,311,407,465],supercomput:[12,17,494],superpos:[425,475],superposit:7,superspher:381,supinski:445,supplement:[247,457,458],supplementari:[229,421,459],suppli:[9,12,198,245,268,346],support:[1,3,4,6,7,8,9,11,12,13,14,15,16,17,18,40,41,42,63,95,96,112,118,202,203,204,205,206,207,210,211,212,213,218,223,224,227,228,229,232,236,243,247,248,251,253,254,255,256,265,268,270,272,273,274,275,276,277,278,286,290,291,292,293,294,295,297,298,303,306,308,310,315,316,319,322,323,324,325,326,327,329,330,331,332,333,337,338,339,340,344,349,350,351,355,374,375,376,377,381,384,385,386,392,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,486,487,488,489,493,497,498,499,503,505,506,507,509,510,511,516,517,522,523,527,528],suppos:[3,8,418,518,523],suppress:[6,12,176],surc:8,sure:[6,8,11,13,198,210,211,228,302,316,320,356,415,477,478,518],surf:[8,146,179],surfac:[2,3,4,6,8,9,40,42,59,74,130,146,152,176,178,181,205,209,231,242,251,256,259,286,292,297,308,315,326,329,330,334,341,346,351,355,356,376,387,398,425,439,440,445,463,465,483,487,493,499],surface_exterior:8,surface_interior:8,surface_mov:346,surfact:[409,420],surpris:417,surround:[37,56,74,178,198,206,228,240,241,270,272,273,274,276,277,278,297,303,316,449,450,477,478,517],suspect:3,suspens:[439,440],sustain:[202,203,228,422],suzuki:[270,316],svg:6,svn:[7,11,12],sw_exampl:456,swamp:316,swap:[],swegat:345,swiggl:[3,267,351,354,356,499,523],swiler:[152,466],switch7_section_start:420,switchflag:[152,466],swm4:517,swol:53,swope:6,sxx:206,sy0302:9,symbol:[6,12,130,177,313,398,417,466],symmetr:[6,74,95,103,123,143,144,145,148,149,150,153,210,211,228,270,271,342,349,393,405,411,415,479,481,523],symmetri:[3,5,6,7,8,65,66,74,100,117,180,202,203,268,297,360,377,393,496,517],sync:[3,6,515],synchron:[1,247,387,515],synechococcu:7,syntax:[],sysdim:298,sysmt:16,sysstem:398,syst:465,system:[],system_:299,systemat:[6,9,220,245,253,445],systemx:3,t10:511,t11:511,t12:511,t13:511,t14:511,t15:511,t3e:12,t_chain:3,t_corr:3,t_correl:491,t_dephas:491,t_e:346,t_e_min:346,t_equil:[343,344],t_event:[3,491,510],t_hi:510,t_infil:346,t_init:[306,346],t_iter:3,t_j:28,t_lb:256,t_lo:510,t_order:3,t_oufil:346,t_out:346,t_outfil:346,t_qm:306,t_switch:[343,344],t_target:400,ta06a:466,ta4:445,ta5:177,ta6:445,tab:[2,496],tabbernor:130,tabinn:447,table:[240,241],tabul:[3,7,13,21,36,37,44,55,56,57,68,75,84,102,198,240,241,317,334,376,393,398,399,401,402,403,404,405,408,415,417,419,430,434,441,449,450,452,455,458,460,475,477,478,479,485,498],tabular:455,tabulate_long_rang:458,tad:[],tadmor:9,tag:[215,241,317,419,450,478,517],tagint:3,tail:[3,95,96,118,121,172,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,483,484,486,487,488,489,514,523],tailor:[75,347],tait:[9,472,473],taitwat:[],take:[1,2,3,6,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,81,95,97,99,123,124,127,128,153,155,165,172,176,182,184,185,186,187,188,189,190,192,193,195,196,198,202,205,206,210,211,212,223,224,228,230,237,238,244,248,252,253,254,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,303,305,308,309,316,319,320,330,332,333,334,336,337,338,339,347,354,357,360,361,362,363,365,366,369,371,376,377,382,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,411,412,415,416,418,420,421,422,423,424,430,431,432,433,434,435,436,437,438,439,443,445,448,451,452,454,457,458,459,460,465,467,474,476,477,479,480,481,482,484,486,487,488,490,494,497,499,504,505,506,511,513,514,515,523],taken:[6,61,160,178,201,227,231,245,246,247,253,254,255,256,302,306,309,346,365,415,417,421,449,450,476,484,491,505,506],talk:[6,7],talli:[],tally:[],tan:[206,523],tandem:316,tang:445,tangent:[42,269],tangenti:[6,119,334,352,356,422],tanh:346,tantalum:[4,445,466],taper:[3,309,381,441],tar:12,tarbal:[0,8,11,12],target:[3,6,7,8,11,12,16,39,41,206,214,224,228,229,231,237,245,246,247,253,254,255,270,271,272,273,274,275,276,277,278,290,291,293,294,295,299,303,306,311,316,322,332,337,338,339,340,345,346,349,350,353,374,377,400,412,491,502,504,524],target_fil:345,task:[1,6,7,10,12,13,14,15,16,17,54,206,250,299,347,392,494,515],taskset:15,tatb:[4,312],tatom:517,tatoms:517,tau:[3,167,220,253,254,256,270,303,316,337,338,343,344,346,516,522],tau_1:246,tau_k:246,tau_n_k:246,tb3:177,tbead:170,tbp:398,tchain:[270,271,275,286,292,293,294,316],tcl:311,tcom:254,tcsh:[11,12,405],tdamp:[253,270,271,275,292,316,337,338],tdephas:491,tdrude:[163,234,254,517],teal:206,tech:[7,13],technic:[6,7,9,256,309,334,458],techniqu:[6,7,9,95,209,228,268,306,316,350,353,377,447,477,478,517],technolgi:9,technolog:[9,15,18,250],tediou:305,tell:[2,6,11,12,36,55,197,209,298,370,388,457,458,475,494,496,498,517],telsa:16,temeperatur:11,temp:[],temp_drud:517,temp_eff:107,tempcom:[156,157,171],temper:[],temperar:299,temperatur:[],temperature_definit:215,tempfix:511,templ:[7,9,17],templat:[3,8,13,16,18,40,178,179,181,231,245,302,316,320,386,496],templeton2010:215,templeton2011:215,templeton:[9,215],tempor:246,temporari:[2,3,503],temporarili:[198,315,509,510],tend:[28,270,297,317],tensil:[7,230],tensor:[3,6,8,65,90,91,97,98,99,103,116,123,129,139,142,143,144,145,148,149,150,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,228,256,259,270,271,275,301,303,316,349,376,377,386,417,439,440,445,462,464,514,523],tenth:[139,210,375],term:[0,1,3,5,6,7,8,9,12,19,20,21,26,37,40,45,46,63,95,96,97,99,121,123,153,154,156,157,166,171,172,185,186,187,198,206,210,211,217,219,221,222,230,236,237,246,247,248,253,254,255,256,269,270,271,272,273,274,275,276,277,278,290,291,293,295,299,303,306,315,316,332,337,338,339,346,348,350,352,360,361,371,376,385,388,393,394,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,415,416,417,418,419,421,422,423,430,434,437,438,439,440,442,443,444,445,447,448,452,459,465,474,476,479,480,481,484,487,505,506,508,514,517],termin:[130,270,385,387,462,464,495,504,515],termostat:338,terrel:384,terri:7,tersoff:[],tersoff_1:[479,480,481],tersoff_2:[479,480,481],tersoff_mod:480,tertiari:190,tessel:[9,176],test:[],test_descriptor_str:3,testf:198,testu:198,tether:[6,265,314,322,330,331,333,344,420],tetot:[9,465],tex:8,texa:454,texas_holdem:315,text:[2,3,4,6,7,8,12,13,37,41,56,198,202,203,205,206,209,215,218,219,220,221,222,224,229,240,241,250,304,345,346,358,377,379,387,415,418,429,442,449,450,466,477,478,492,496,497,513,518,523,525,526],textur:16,tfac_insert:245,tfactor:[3,206],tfinal:523,tfix:315,tflag:205,tfmc:[],th4:177,thakkar:15,thakker:15,than:[1,2,3,6,8,9,11,12,13,14,15,16,17,26,37,39,40,41,42,56,59,60,61,63,65,71,75,80,94,96,100,115,117,119,123,126,127,129,131,153,176,179,180,181,187,198,201,202,204,206,209,214,216,218,221,222,224,225,226,227,228,230,231,232,235,240,242,245,246,247,248,251,252,253,256,265,268,297,298,302,303,304,306,307,309,311,314,315,316,318,321,322,323,329,330,332,334,338,339,341,342,346,349,350,351,352,353,354,355,356,357,359,376,377,383,384,385,386,387,388,389,392,394,397,398,399,401,402,403,415,417,421,422,428,439,440,442,447,449,450,457,458,459,465,467,474,475,476,477,478,481,483,485,487,488,491,492,493,494,496,497,498,499,500,501,504,505,508,510,511,513,515,523,524,526],thank:[250,479,481],thb:458,thb_cutoff:458,thb_cutoff_sq:[457,458],thei:[0,1,2,3,4,6,7,8,11,12,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,34,36,37,39,40,41,42,43,45,46,47,48,49,51,53,54,55,56,59,61,63,65,66,69,71,74,75,78,79,86,87,90,92,95,96,97,98,99,103,113,114,116,118,119,123,125,126,127,128,129,131,152,155,156,158,160,161,164,165,171,173,175,176,178,180,181,182,184,185,187,188,189,190,192,193,195,196,197,198,202,203,205,206,209,210,211,212,214,217,218,219,221,222,223,224,225,226,227,228,230,231,236,238,244,245,246,248,249,250,253,254,256,259,267,270,272,273,274,275,276,277,278,279,280,281,282,288,290,291,293,295,301,302,303,304,305,307,308,309,315,316,318,319,320,334,335,338,341,345,346,348,349,352,354,355,357,358,359,360,362,363,364,365,366,369,370,371,374,376,377,379,381,382,384,385,386,387,388,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,448,450,451,452,454,455,457,458,459,460,465,466,467,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,492,494,496,497,498,499,500,501,505,506,508,509,514,517,518,523,526,527],them:[1,2,3,6,7,8,9,11,12,13,16,39,40,41,54,61,75,99,113,118,125,128,131,154,180,185,202,205,206,207,217,218,219,221,222,224,227,228,230,242,250,253,254,262,266,270,272,273,274,275,276,277,278,290,291,295,297,303,305,313,314,315,316,320,334,337,338,339,341,345,346,348,352,353,354,356,357,360,377,379,381,386,387,388,392,393,398,405,415,418,421,425,428,447,459,467,482,483,491,494,496,503,508,511,517,518,523,524],themselv:[6,9,11,181,210,211,224,254,376,377,387,389,393,398,408,415,438,442,443,444,466,523],theor:341,theorem:[246,253,321,398,413],theoret:[115,250,306,476],theori:[3,6,9,12,40,152,215,229,247,270,298,376,377,398,445,487,510],thereaft:[75,261,300,316,331,342,349,494],therebi:[347,439,440],therefor:[3,6,12,66,95,163,234,237,245,254,256,320,341,377,410,456,458,476,482,505,517],therein:[6,442],thereof:95,thermal:[],thermo:[],thermo_modifi:[],thermo_p:[3,65,120,494,514],thermo_press:[65,123,228,234,270,272,273,274,275,276,277,278,303,513,514,517],thermo_styl:[],thermo_temp:[65,123,155,227,228,245,270,272,273,274,275,276,277,278,290,291,293,295,298,303,337,338,339,513,514,517],thermoberendsen:6,thermochem:522,thermochemistri:417,thermodyam:[514,522],thermodyanm:[65,227,334,357,505],thermodynam:[],thermophys:447,thermost:[6,160,214,229,234,254,353,517],thermostat:[],thermostatequ:6,thesi:[376,377,439,456],thess:399,theta0:[19,20,23,25,26,27,31,32,34,35,152,187,315,369],theta0max:152,theta10:398,theta1:[185,360,398],theta2:[185,360,398],theta3:[360,398],theta4:398,theta5:398,theta6:398,theta7:398,theta8:398,theta9:398,theta:[3,6,25,26,36,37,38,65,68,85,100,117,152,177,178,187,199,201,205,248,311,315,346,360,369,424,455,480,496,499,506],theta_0:451,theta_:[369,398],theta_c:424,theta_ijk:398,theta_ijl:360,theta_jik:[443,444],theta_pi:398,theta_sigma:398,thex:307,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,519,520,521,522,523,524,525,526,527,528],thick:[75,130,205,499],thie:121,thijss:341,thin:[127,205],thing:[3,6,11,12,54,71,75,228,270,303,316,334,493,494,498,518,523],think:[3,6,7,8,11,13,206,316,357,362,366,379,385,425,457,458,477,478,494,498,501,523],third:[6,9,12,28,99,146,152,153,176,218,219,221,222,246,313,330,332,346,407,418,419,442,451,482,484,491,492,494,496,499],thirumalai:190,thistl:206,tho:416,thole:[],thompson:[0,5,7,9,13,123,152,153,307,379,466],those:[1,2,3,5,6,7,8,9,10,12,13,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,42,43,45,46,47,48,49,50,51,53,54,56,63,75,76,81,95,99,100,117,119,120,121,123,127,152,153,155,158,165,168,176,178,182,184,185,187,188,189,190,191,192,193,195,196,198,201,202,203,205,206,216,217,218,219,222,228,230,231,237,242,248,250,251,252,253,259,267,269,270,272,273,274,275,276,277,278,279,280,288,290,291,293,295,302,305,308,309,316,336,343,344,348,352,353,354,357,358,360,362,363,365,366,367,369,371,376,377,385,387,388,392,393,394,396,399,400,401,402,403,404,405,406,407,408,411,412,415,416,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,442,443,447,448,451,452,454,457,458,459,460,466,467,475,476,477,479,480,481,482,484,486,487,488,491,493,494,496,498,499,500,501,503,505,506,508,510,513,514,515,517,518,523,527,528],though:[6,8,12,39,40,65,75,99,114,178,199,202,206,216,225,226,228,230,235,262,271,314,316,319,329,342,349,359,372,376,379,387,412,414,415,417,418,421,422,438,439,447,484,491,496,498,499,504,508,515,523],thought:[161,253,293,316,350,351,384,422,429,517],thread:[1,3,9,12,15,16,17,250,347,374,392,509,515],threads_per_atom:3,three:[1,3,6,54,65,78,95,99,100,115,128,130,142,152,156,177,178,190,209,227,228,233,237,257,270,275,298,303,307,316,317,334,341,343,346,364,365,369,376,377,386,392,393,394,398,415,416,418,421,422,426,429,442,443,444,445,451,455,458,459,465,466,476,479,480,481,484,494,496,499,515,523],threebodi:476,thresh:[41,202,203,205,206,224,494],threshhold:[3,41,205,224,357,494],threshold:[3,41,94,176,206,224,297,388,458,491,510],thrid:494,through:[3,6,7,9,11,12,65,178,182,202,203,207,228,241,243,245,250,251,256,258,259,260,270,271,299,307,317,326,341,346,351,355,375,381,383,394,413,416,417,419,422,428,430,445,450,460,465,467,474,478,482,491,494,497,505,507,513,517],throughout:[6,15,127,130,347,392,445,496],thru:[3,6,7,11,12,69,78,79,86,87,97,98,103,113,114,115,116,129,173,201,202,206,221,267,334,354,359,375,385,391,499],thrust:1,thu:[1,2,3,6,8,11,12,17,32,37,39,41,42,50,61,63,65,66,69,70,74,75,76,77,79,81,86,87,96,98,99,100,103,113,114,116,117,119,120,124,125,126,127,128,152,153,154,158,161,166,168,173,174,175,178,180,181,182,184,186,191,197,198,201,202,203,205,206,207,209,210,211,212,213,217,218,219,221,222,223,224,225,226,227,228,230,231,234,236,237,242,246,247,248,249,250,251,253,254,259,265,270,275,287,297,303,305,307,311,314,316,318,319,320,322,326,327,330,331,332,333,334,335,337,338,339,341,342,345,346,348,349,350,351,354,355,356,357,359,360,367,376,377,379,383,385,386,387,391,392,393,394,397,398,399,400,401,402,403,404,405,406,407,408,412,413,414,415,416,417,418,419,420,421,422,425,426,427,428,430,434,438,439,440,442,443,444,445,447,448,449,450,452,454,455,456,457,458,459,465,466,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,488,491,493,494,496,497,498,499,500,501,503,504,505,506,508,510,511,512,513,514,515,517,522,523,524,526,527],thumb:[8,16,178,201,267,316,392,406,499,505],thylakoid:381,thz:311,ti2:177,ti3:177,ti4:177,tidi:518,tight:[9,398,465],tightli:305,tij:411,tildeslei:[28,95,411],tile:[3,6,41,64,178,224,428,483,493,523],tilt:[3,6,59,60,61,75,166,180,202,203,206,228,230,231,248,268,270,271,297,306,377,379,484,496,499,514],time:[],time_integr:215,timedelta:219,timelin:5,timeout:[514,515],timer:[],timeremain:[514,515],timescal:[3,217,218,219,221,222,268,306,311,417,491,505],timespan:[253,254,270,303,316,337,338],timestamp:[3,501],timestep:[],timesteppnig:320,timothi:9,tin:[407,408],tinfoil:377,tini:[76,127,178,385,398,524],tinker:7,tio2:465,tio:465,tip3p:[],tip4:6,tip4p:[],tip:[],tirrel:351,titan:14,titer:316,titl:[218,219,220,221,222,304,458,518],title1:[218,219,220,221,222],title2:[218,219,220,221,222],title3:[218,219,221,222],tji:411,tkin:506,tl1:177,tl3:177,tlbr_msw:455,tlo:510,tloop:[270,271,275],tlsph:[],tlsph_defgrad:134,tlsph_dt:323,tlsph_stress:133,tm3:177,tmax:[3,235,510],tmd:[],tmd_dump_fil:345,tmdatom:345,tmin:235,tmm:9,tmp1:[221,222,507],tmp2:[221,222,507],tmp3:507,tmp:[6,12,41,69,71,73,79,86,98,103,114,116,125,127,129,158,173,175,202,203,205,206,224,305,316,342,349,391,503,507,523],tobia:[270,271,316],todd:293,toe:172,toff:[386,496],togeth:[2,3,6,9,11,12,15,16,39,41,75,126,153,158,172,178,179,202,203,210,211,218,221,224,228,234,247,254,270,303,316,322,327,330,334,352,356,357,420,425,494,499,504,517,527],toggl:[61,182,503],togther:3,tol:[286,292,320,334,376,476],toler:[3,228,286,292,307,308,309,320,334,385,387,476,491,510],toma:9,tomato:206,tong:[9,13],too:[1,3,6,7,39,41,66,70,74,76,77,81,96,100,117,152,166,179,181,205,220,224,225,226,228,231,237,242,245,249,270,298,303,307,311,313,320,334,341,342,346,349,377,387,388,392,412,428,491,499,510,513,515,517,523],took:[75,467],tool:[],toolkit:[6,7,13,14,203],top:[0,3,8,9,11,12,13,15,61,161,176,201,209,223,230,249,256,269,293,318,353,354,356,387,392,457,458,466,496,500,506,518],top_group:327,top_veloc:327,topic:[523,527],toplog:[3,493],topolgi:40,topolog:[2,3,6,7,8,12,13,36,39,40,55,95,119,126,181,182,197,206,225,226,250,301,370,386,425,447,493,496,497,498,500,501,508],topwal:223,torder:316,torqu:[],torsion:[6,185,186,197,394,457,458],torsion_flag:394,toru:381,tosi:399,tot:[311,465],total:[3,6,11,12,14,15,16,17,39,41,42,65,67,72,75,83,86,87,88,89,96,97,98,99,101,108,112,113,114,115,118,120,121,128,129,134,135,136,137,139,140,141,142,143,144,145,152,153,155,158,159,160,161,164,165,166,167,168,170,172,174,175,176,202,209,212,213,216,218,220,221,223,224,226,232,234,236,243,244,245,246,251,253,254,255,256,257,259,268,270,271,275,286,287,298,299,301,302,305,306,311,313,315,316,317,318,319,322,324,327,330,331,333,342,343,344,346,349,351,355,376,385,386,387,388,389,392,393,394,395,397,398,407,415,417,422,442,443,444,445,455,457,458,462,465,466,483,491,493,494,496,498,504,505,510,511,514,515,523],touch:[12,251,352,498],toukmaji:[377,411],toward:[9,28,176,205,209,231,232,251,256,269,275,297,314,330,345,347,369,387],toxvaerd:435,tpa:392,tparam:316,tpartial:158,tpc:392,tpcpu:514,tperiod:316,tptask:[15,392],tqx:[124,129,202,203,336],tqy:[124,129,202,203,336],tqz:[124,129,202,203,336],trace:417,track:[3,7,12,226,230,256,346,356,491,496,502,510,514,523],track_displac:215,tracker:250,trade:[6,12,308,376,377,408,430,434,505,510],tradeoff:447,tradit:[6,9,377],traffic:12,trail:[2,21,44,81,95,127,172,182,186,206,210,211,316,361,382,386,387,405,418,442,458,466,490,496,504,506],train:458,traingul:329,traj:229,traj_titl:458,trajectori:[3,6,12,39,95,202,250,270,272,273,274,276,277,278,279,280,282,283,285,288,289,290,291,293,294,295,299,316,320,322,326,347,356,412,447,458,498,506,511,517,522],tran:[189,190],transfer:[1,6,15,215,234,250,252,342,346,349,376,392,398,445,517],transform:[],transit:[6,9,15,94,269,322,345,387,409,438,444,445,481,491,510],translat:[3,6,63,65,104,105,106,107,108,156,157,158,162,171,218,237,245,249,253,254,259,270,276,277,278,290,291,295,299,316,337,338,339,341,379,417,496,514],transmiss:250,transmit:[6,250],transpar:16,transport:[215,346,468],transpos:12,trap:[3,6,99,174,219,251,348,523],trapezoid:[219,523],trate:[3,230,250],travel:334,treat:[2,3,6,8,9,16,40,42,75,90,92,93,131,153,156,160,171,182,200,218,219,221,222,231,244,271,298,301,302,316,334,346,348,355,359,375,376,385,386,388,397,410,417,418,421,424,428,443,444,445,459,483,496,499,501,504,506,517,523],treatment:[9,311,410],tree:[3,301,438],tref:414,tri:[],tri_surfac:[],trial:[231,245,395,505],triangl:[],triangle_mesh_vertic:[326,329],triangleflag:496,triangul:[2,6,13,329,463],triangular:[6,42,90,124,228,289,329,463,496],tricki:[493,517],triclin:[],triflag:6,trigger:[3,11,12,64,94,224,227,245,385,453,489,514],trigon:24,trilinear:256,trilino:16,trim:[3,497],tringl:205,tripflag:457,tripl:[2,152,230,398,457,492,494],triplet:[3,33,36,38,416,451,455,476,479,480,481,484],trivial:[8,11,307],trj:458,trott:[7,9,16,152,466],troubl:[11,12],truli:8,truncat:[3,5,6,12,75,237,305,311,351,355,384,396,408,417,422,430,432,435,447,454,465,506],trung:14,tscale:[3,268,306],tschopp:70,tsige:402,tsrd:[334,356],tstart:[246,247,253,255,270,271,292,316,337,338,339,340,412,502],tstat:[],tstop:[246,247,253,255,270,271,292,316,337,338,339,340,412,502,510],tsuzuki:[77,484],tthi:139,ttm:[],ttm_mod:346,tucker:[152,466],tuckerman:[270,271,294,299,316,505],tue:9,tune:[],tunnel:299,turkand:117,turn:[3,4,6,12,21,32,36,39,44,50,54,55,61,68,73,75,119,126,152,176,177,182,186,191,197,205,206,209,216,225,226,227,228,245,250,270,284,301,304,305,316,334,361,367,370,376,385,387,388,390,392,394,410,424,425,442,447,458,474,475,492,496,498,503,508,509,514,515,520,526],turquois:206,tutein:394,tutori:[],tweak:[12,178,250,392],twice:[3,6,15,16,65,96,184,206,209,210,211,228,267,270,309,321,392,425,494,496,503],twin:70,twist:[439,440],two:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,21,37,39,41,42,44,54,56,59,61,63,65,68,71,73,75,80,81,84,95,96,100,102,113,118,119,124,125,126,127,128,129,130,152,154,156,160,161,163,164,166,172,176,177,178,179,181,186,201,202,203,204,205,206,209,210,211,216,217,218,219,221,222,224,225,226,227,228,231,234,242,245,246,247,249,251,252,253,254,256,259,269,270,271,275,297,298,299,302,303,305,306,307,311,313,316,322,330,334,341,342,344,346,349,352,355,357,359,361,371,376,377,379,381,382,383,385,386,387,390,392,393,394,395,397,398,399,400,401,402,405,406,407,408,410,411,412,414,415,416,417,418,419,421,422,425,428,429,430,434,438,439,440,442,445,447,450,452,455,456,457,458,459,461,465,466,467,474,475,476,478,479,480,481,482,483,484,487,488,490,491,493,494,496,497,498,499,500,503,506,508,509,510,511,513,514,515,517,522,523,524,525,526,527,528],two_temperatur:215,twobodi:[479,481,484],twogrid:3,twojmax:[152,466],twolevel:[3,493],txt2html:8,txt:[8,13,57,202,207,304,305,346,374,386,429,465,485,501,518,523],typcial:[41,224],type1:[81,130,177],type2:[81,130,177],type:[],typei:428,typej:428,typen:[81,130,177],typic:[1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,28,39,40,41,45,46,55,59,61,63,65,74,75,94,95,112,118,129,131,140,172,178,179,181,202,203,204,205,206,209,210,211,212,214,215,218,220,224,225,226,227,228,230,231,236,242,243,245,248,254,270,284,298,301,302,305,307,309,315,316,320,323,325,334,341,349,350,356,376,379,384,385,386,387,388,389,392,403,405,406,408,420,421,424,425,429,430,434,439,440,442,447,459,462,464,475,477,478,481,491,492,494,496,497,498,499,505,508,510,511,513,518,522,523,526,528],typicali:12,tzou:346,u_chem:[88,89],u_cond:[88,89,239],u_f:256,u_i:[239,240,241],u_ij:455,u_j:241,u_mech:[88,89,239],u_prom:398,uberuaga:[269,387],ubiquit:[11,398],uchem:[40,419,450,478],ucond:40,uhf:395,uiuc:[9,16],uloop:[3,299,387,391,523],ulsph:[],ultim:510,ultra:176,umbrella:[],umech:40,umin:[25,26,48,49,187],unabl:[3,11,41,224],unaffect:[202,228,270,316,497,508,513],unalt:[210,211,284],unambigu:[75,484],unari:[359,523],unbalanc:3,unbias:[166,417],unbond:[226,496],unbroken:85,uncertainti:40,unchang:[61,228,231,269,270,272,273,274,276,277,278,287,303,316,496,497,500,506],uncharg:[40,377],uncom:[1,4],uncompress:[12,75,205],uncomput:[],uncorrel:[246,341,491],uncoupl:299,undefin:[3,12],under:[0,5,6,7,8,9,12,15,17,20,21,44,152,185,186,205,250,268,270,302,306,307,321,360,361,382,413,417,438,458,466,494,510,515,517],underestim:176,underflow:205,undergo:[6,94,95,113,166,246,253,254,270,322,334],undergon:[227,334],underli:[6,12,16,74,205,270,346,379],undermin:39,underpredict:6,underscor:[2,3,65,203,209,227,228,268,270,272,273,274,275,276,277,278,290,291,293,295,303,305,337,338,339,359,386,523],understand:[1,4,6,8,245,271,445],understood:[202,398],undesir:[61,228,230,270,316],undetermin:334,undisturb:[439,440],undo:[182,250],undump:[],unexpect:[3,502],unfix:[],unfix_flux:215,unfold:332,unfortun:[347,504,505],uniaxi:[3,156,275],uniform:[7,15,41,96,127,215,224,225,226,253,256,259,271,341,414,421,459,491,493,523,524],uniformli:[61,127,201,256,302,346,449,450,455,477,478,524],uninstal:12,uninterrupt:[216,231,245,267,268,270,272,273,274,275,276,277,278,290,291,293,294,295,305,306,316,322,333,336,344,346,352],union:[3,6,40,206,305,355,357,496,499],uniqu:[3,6,7,8,12,39,75,134,220,246,247,253,254,275,305,311,313,387,415,417,496,523,524],unit:[],unit_styl:3,uniti:[416,447,470],unitless:[66,70,74,75,125,129,183,218,230,245,268,270,306,317,352,385,395,422,448,452,454,476,479,480,481,484,522],unitlesss:[82,85,122],univ:[9,13],univers:[3,6,9,12,13,17,95,250,376,377,387,391,439,444,454,456,481,490,493,523],universit:[9,13],unix:[12,16,252,507],unknown:[3,12,66,77,496],unless:[2,3,9,11,12,14,15,55,59,70,113,130,163,177,178,202,203,206,207,214,228,231,245,253,270,272,273,274,276,277,278,302,303,316,334,345,378,385,406,447,477,478,494,499,503,508,523],unlik:[12,97,178,220,253,309,376,393,398,415,418,425,442,443,444,466,475],unlike:[32,50,61,168,191,202,253,270,275,303,311,337,338,339,367,375,415,424,429,443,444,458,493,498,503,508,523,528],unlimit:[455,515],unlucki:3,unmark:7,unmodifi:335,unnecessari:15,unoccupi:346,unoptim:205,unpack:[0,8,11,392],unpack_bord:8,unpack_border_bodi:8,unpack_border_hybrid:8,unpack_border_vel:8,unpack_comm:8,unpack_comm_bodi:8,unpack_comm_hybrid:8,unpack_comm_vel:8,unpack_exchang:8,unpack_restart:8,unpack_revers:8,unpack_reverse_comm:8,unpack_reverse_hybrid:8,unpad:206,unperturb:95,unphys:[3,6,254,270,316,496],unpredict:[314,506],unpublish:445,unrecogn:3,unrel:[8,9,13,184,518],unreli:447,unrestrain:315,unrestrict:395,unscal:[3,124,129,172,202,203,336,497],unset:[3,376,417],unshift:411,unsmooth:436,unsolv:[389,403],unsort:206,unspecifi:[230,496],unsplit:517,unstabl:[3,256],unstag:518,unstrain:230,unsuccess:[3,302],unsupport:[3,511],untar:12,until:[2,3,6,12,37,39,41,56,75,131,198,205,224,228,231,240,241,245,250,286,302,326,334,336,343,359,375,376,388,391,392,398,422,449,450,477,478,491,496,497,501,502,504,510,522,523],untilt:499,unus:398,unusu:[3,8,388],unwant:[3,178,376],unwrap:[3,69,78,79,86,87,97,98,103,113,114,116,124,129,153,173,202,203,206,207,217,227,229,250,267,316,330,336,496,497,500,506],unwrapexpand:202,unzip:12,up_intern:205,updat:[0,3,6,8,12,13,15,129,135,136,137,147,148,149,150,201,202,203,209,216,225,226,234,243,246,253,254,256,259,263,264,267,268,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,293,294,295,301,303,305,306,311,316,325,326,336,337,338,339,341,346,357,358,392,398,411,445,447,457,458,464,491,496,498,506,507,510,517],update:258,upenn:[11,13],upgrad:12,upon:[6,216,250,398,482,510],upper:[2,3,41,59,61,75,96,113,115,154,167,174,201,206,219,220,224,228,234,254,256,270,306,311,351,352,357,358,385,422,465,499,524],uppercas:[],upsid:6,upsilon:421,upstream:518,upto:[3,498,504],upward:231,urbana:[250,376,377,439],urey_bradlei:19,url:518,usa:9,usabl:[12,245,415],usag:[3,6,8,297,311,334,425,438,496],usage:254,use:[],use_ldg:16,usec:516,used:[206,253,255],useful:445,user:[],user_manifold:518,user_misc:[29,30,34,188,193,196,365],userguid:9,usernam:518,using:[],usr:[11,12,497],usual:[2,3,6,12,14,16,17,23,27,31,34,35,47,63,75,95,128,156,157,158,163,171,176,195,202,203,205,210,211,216,218,227,228,229,230,245,248,253,255,268,275,298,306,307,313,315,316,334,342,346,349,351,355,359,366,374,387,388,392,403,406,409,411,421,425,426,429,438,439,440,447,451,462,464,466,474,476,482,491,495,497,501,505,507,510,513,514,515,523,528],usualli:[3,461,463],util:[8,12,16,17,392,421,515],utilizi:12,utilz:[12,515],utsa:454,uttormark:13,uwo:9,v11:6,v22:6,v33:6,v_0:[3,346],v_2:445,v_3:445,v_4:445,v_a:[8,230],v_abc:[494,514,523],v_area:[2,523],v_atomfil:506,v_c:172,v_cluster:305,v_dc:172,v_delta:95,v_dhug:[268,306],v_diff:[174,348],v_displac:230,v_dk:172,v_dlj:172,v_drai:[268,306],v_dx:[267,499],v_dy:[267,499],v_dz:267,v_e_hbond:424,v_ea:[457,458],v_eb:[457,458],v_eqeq:[457,458],v_espac:212,v_f:494,v_fac:494,v_flux:249,v_foo:[494,523],v_ij:455,v_increas:248,v_integr:348,v_jx:99,v_jy:99,v_jz:99,v_k11:99,v_k22:99,v_k33:99,v_k:172,v_ke:[202,203,527],v_left:499,v_lgr_po:[268,306],v_lgr_vel:[268,306],v_linear:[351,354,356],v_lj:[172,394],v_mol:206,v_mu:439,v_myi:267,v_myindex:523,v_myke:128,v_mystep:503,v_myvar:[8,206],v_myvec:[131,523],v_myx:267,v_n:[256,445],v_name1:[172,230],v_name2:[172,230],v_name:[3,6,75,95,128,131,201,202,203,205,206,210,211,212,213,217,218,219,220,221,222,223,236,248,249,251,253,254,267,319,327,336,337,338,339,348,351,354,356,494,499,503,506,512,514,523,524],v_nstep:357,v_occ:420,v_omega:267,v_oscil:[212,213,223,236,319],v_phi:248,v_prefactor:[210,211,467],v_press:153,v_pressdown:[354,356],v_push:212,v_pxy:6,v_pxz:6,v_pyz:6,v_r0:251,v_r1:176,v_r2:176,v_r:[176,251,286],v_rad:357,v_radiu:251,v_ramp:[351,354,356],v_rate:[230,251],v_rebo:394,v_scale1:[210,211],v_scale2:[210,211],v_size:[210,211],v_t_qm:306,v_temp:342,v_theta:[248,499],v_torsion:394,v_tp:230,v_up:499,v_v0:523,v_v11:6,v_v22:6,v_v33:6,v_v:[267,523],v_valu:[205,494],v_vx:267,v_vy:267,v_vz:[267,524],v_wiggl:[351,354,356],v_x:[2,178,251,267,351,354,356,494,499,523],v_xave:6,v_xmax:6,v_xx:178,v_y:[178,251,499],v_yi:178,v_z:499,vacanc:[4,176,343,445],vacf:[],vacuum:[346,377,409,481,488],valanc:398,vale:3,valenc:[309,398,417,457,458],valent:398,valeriu:9,valid:[2,3,6,9,11,12,75,130,164,177,206,228,245,253,297,316,334,357,359,374,379,415,417,421,445,455,496,497,504,506,523],valon:442,valu:[],value0:523,value1:[12,158,217,218,219,220,221,222,275,348,357,507],value2:[12,158,217,218,219,220,221,222,275,348,357,507],valuei:219,valuej:219,valuev:[7,9],valus:305,van:[9,53,95,118,303,307,312,337,406,407,438,442,457,458,487,524],vanadium:445,vanderwa:[447,514],vanilla:[6,8,12],vanillia:42,vanish:[234,311,320],vapor:[41,224,245,513],vapour:341,var1:507,var2:507,varaibl:[3,499],varavg:12,vare:346,vari:[1,10,17,41,63,64,75,95,130,166,168,177,210,211,215,218,219,224,228,230,268,270,303,315,316,337,338,346,351,376,403,412,413,423,436,439,454,467,477,478,493,511,515],variabl:[],variable_hill_factor:13,variable_nam:458,varianc:[128,412,523],variant:[1,3,6,9,12,91,108,129,270,275,316,321,376,384,392,443,444,448,479,481,505,509,524],variat:[12,41,224,523],varieti:[1,2,4,6,7,9,13,14,75,205,250,374,379,425,442,457,458,475,484,523],variou:[],varreturn:494,varshalovich:152,varshnei:13,vartiabl:3,vashishta1990:484,vashishta2007:484,vashishta:[],vbia:6,vcm:[],vdim:[167,342,349,524],vdisplac:[3,251,267,351,354,356,523],vdw:[3,407,458],vec1:[128,305],vec2:[128,305],vec:297,vector:[],vector_styl:523,vel:[3,6,63,218,230,254,302,322,353,412,413,417,422,491,498,499,501,517,523],veld:[13,334,377,402,434],veloc:[],velocit:[249,412,413,417,422],velocity_bottom:256,velocity_gradient:464,velocity_temp:524,velocity_top:256,vendor:[9,12],verbatim:494,verbos:[12,465],veri:[1,3,6,7,8,9,10,12,13,16,41,75,76,95,127,128,129,131,202,203,205,206,217,218,219,220,221,222,224,225,226,228,245,259,262,270,271,284,286,292,299,303,314,320,337,338,348,387,388,389,392,417,422,439,440,449,450,454,457,466,467,477,478,504,514,515,517,518,522,526],verifi:[8,392,447,505,511,518],verlag:322,verlet:[1,3,7,8,9,12,15,17,215,237,253,270,284,293,299,320,335,346,354,357,392,490,493,505],versa:[3,6,13,61,172,180,227,240,251,253,254,316,496,497,517],versu:[6,14,17,39,41,85,113,114,127,174,206,224,316,320,377,402,411,422,434,447,514,523],vertex:[42,146,329],vertic:[],ves:[454,475],vfinal:523,vfrac:124,vhi:[167,524],vhs:414,via:[],vibrat:[6,9,231,247,297,306,311,369,417,491,505],vice:[3,6,13,61,172,180,227,240,251,253,254,316,496,497,517],video:205,view:[4,6,7,13,202,205,334,398,417,418,465],viewer:[202,205],viewpoint:205,vij:412,vika:13,vim:[],vincent:[9,18],violat:341,violet:206,virial:[3,65,99,123,152,153,172,210,211,228,234,270,271,272,273,274,275,276,277,278,301,303,316,320,376,392,395,412,413,414,417,426],virialmod:426,virtual:[6,7,8,12,476],virut:9,visa:7,viscoelast:[122,422,454],viscoelsat:454,viscos:[],viscosity:[4,6],viscou:[],viscous:316,vision:465,visit:318,vista:202,visual:[],viz:[11,13],viz_tool:11,vizplotgui_tool:11,vizualiziton:318,vlo:[167,524],vmax:[228,334],vmd:[6,7,9,11,13,202,207,250,497],vmdarch:207,vmdhome:207,vname:523,voigt:[6,152],vol:[],volfactor:376,volpress:445,volt:[456,522],volum:[2,3,6,40,41,60,61,65,85,95,99,110,123,127,130,138,142,151,153,176,177,178,181,216,218,224,228,230,231,239,245,256,268,270,271,275,279,280,282,283,285,286,288,289,290,291,293,294,295,302,303,306,316,322,346,351,355,357,376,379,386,400,439,440,445,454,472,473,488,492,493,496,499,506,514,517,522,523],volumetr:85,von:[145,150],voro:[3,9,176],vorobyov:517,voronoi:[],vorselaar:220,voter2:[491,510],voter:[443,444,491,510],voth:[40,299],vpz:353,vratio:523,vri:423,vrpn:250,vshear:352,vstream:6,vtarget:[3,349],vtk:[],vtp:203,vtr:203,vtu:203,vv0210:13,vx0:174,vxcm:316,vxhi:[231,302],vxlo:[231,302],vy0:174,vycm:316,vyhi:[231,302],vylo:[231,302],vz0:174,vzcm:316,vzhi:231,vzi:353,vzlo:231,w_1:152,w_2:152,w_i:152,w_ik:455,waal:[95,118,406,407,438,457,458,487],wadlei:[13,398],wag:[7,9,13],wagner:[7,9,215,256,442],wai:[1,2,3,6,7,8,9,10,11,12,14,17,21,33,44,52,61,65,68,69,73,75,76,79,81,84,86,95,98,99,100,102,103,114,116,117,119,125,126,127,152,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,173,175,178,181,186,194,198,201,202,203,205,206,209,210,211,218,221,222,223,226,227,228,230,243,246,251,253,254,256,268,270,275,284,286,299,302,303,305,314,316,318,322,330,331,334,336,337,338,339,342,345,346,348,351,354,356,357,361,362,363,364,366,368,369,377,379,382,385,387,388,392,393,394,405,408,409,412,414,415,416,418,421,424,425,427,430,442,443,444,447,451,453,455,456,459,465,466,467,474,476,479,481,484,490,491,494,496,497,498,499,500,501,504,505,506,518,523,524,525],wait:[1,12,15,250,298,491,493],walk:[3,246,253,254,270],wall:[],wall_surac:146,wall_surfac:[],wallhi:351,wallstyl:352,walltim:515,wander:330,wang:[377,442,455],want:[0,1,2,3,5,6,7,8,9,11,12,16,37,40,56,65,67,69,71,72,75,79,83,86,87,88,89,98,101,103,113,114,116,118,120,121,123,125,127,129,153,158,173,174,175,176,178,181,198,202,203,205,206,209,210,211,212,217,218,224,227,230,231,234,236,240,243,245,251,254,265,287,297,302,305,315,316,319,330,331,333,335,342,344,349,351,355,357,359,377,379,387,393,394,398,406,407,412,415,418,425,426,427,428,442,449,450,451,455,457,458,465,467,476,477,478,479,481,483,484,492,494,496,497,498,499,501,503,504,511,514,515,517,518,523,526,528],ward:398,warm:[15,417],warmup:15,warn:[],warner:393,warning:[2,3,12,442,457],warp:[5,442],warranti:7,warren:[412,449,450],wasn:3,wast:3,watanab:[343,344],watch:387,water:[],watkin:195,wave:[7,9,40,214,268,310,353,395,417],wavefunct:[395,417],wavelength:[130,177],wavepacket:[40,395,417,496],wavevector:298,wbodi:91,weak:[10,100,307],web:[1,4,8,10,14,16,405],webb:215,weber:[3,5,7,9,14,96,154,416,444,455,475,476,484,508],websit:[8,457,458],weckner:454,weight:[],welcom:494,well:[1,3,6,7,8,9,11,12,13,14,16,17,26,40,51,70,75,100,117,123,153,156,164,178,187,205,206,212,216,218,222,224,225,226,228,231,236,245,249,253,256,260,262,267,270,275,286,292,302,303,316,319,327,341,344,352,385,387,392,397,420,421,424,425,426,439,440,442,445,459,467,479,480,481,494,496,498,500,505,510,515,517,518,522,527],wennberg:376,went:[3,11],were:[3,5,6,7,9,11,12,13,14,15,18,33,41,42,52,56,62,74,75,113,117,120,123,127,155,158,178,181,182,194,202,205,206,209,212,218,221,222,224,230,236,242,249,250,284,293,318,352,353,357,368,376,389,391,394,417,422,425,429,454,458,477,491,493,494,496,497,498,499,501,503,511,514,518,523,524,527,528],weren:501,western:9,westview:487,what:[],whatev:[8,12,14,119,124,127,128,129,131,205,206,210,211,228,270,303,305,352,379,384,385,387,392,404,406,445,457,458,510,517,523],wheat:206,whelan:177,when:[0,1,2,3,4,6,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,61,63,64,65,67,72,75,76,83,87,94,96,100,101,113,114,115,117,118,120,123,124,127,128,131,154,155,156,161,165,166,168,174,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,202,203,204,205,206,207,209,210,211,212,213,214,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,235,236,238,240,242,243,244,245,247,248,250,253,256,257,259,260,265,270,271,272,273,274,275,276,277,278,279,280,284,287,288,290,291,293,295,297,301,302,303,304,305,306,308,309,310,311,315,316,318,319,320,322,330,332,334,335,336,341,342,346,347,348,349,351,352,353,354,355,356,357,358,359,360,362,363,365,366,367,369,370,371,373,374,375,376,377,379,383,384,385,386,387,388,389,391,392,393,394,396,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,447,448,449,450,451,452,454,455,457,458,459,460,466,467,474,476,477,478,479,480,481,482,483,484,486,487,488,489,491,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,510,511,513,514,515,516,518,522,523,524,526,528],whenev:[0,8,12,75,206,217,316,379,424,494,505,509,523,528],whenth:3,where:[1,3,6,8,9,10,11,12,14,15,17,20,22,23,24,25,26,27,28,31,34,35,36,39,40,41,43,47,48,49,51,55,63,65,67,68,69,71,72,73,74,75,77,79,83,84,85,86,88,90,91,92,93,95,96,97,98,100,101,102,103,104,105,106,107,108,114,116,119,123,124,125,126,127,128,129,130,131,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,173,175,177,179,181,182,185,187,197,201,202,205,206,209,210,211,212,213,218,219,223,224,227,228,230,231,235,236,237,239,241,242,243,245,246,247,248,249,251,253,254,255,256,259,260,263,265,267,268,270,271,275,284,288,296,297,298,299,302,304,305,306,309,311,316,317,318,319,320,322,326,327,330,331,333,336,337,338,339,342,343,344,346,349,350,351,352,354,355,356,357,360,362,363,364,365,366,369,370,371,374,377,379,384,385,386,387,388,389,392,393,394,397,398,399,401,405,406,407,408,409,410,411,412,413,415,416,417,418,419,420,421,422,423,424,425,426,427,430,434,439,440,441,442,443,444,445,447,450,451,452,454,455,456,457,458,459,465,466,469,472,473,474,475,476,477,478,479,480,481,484,487,488,490,491,493,494,495,496,498,499,500,501,503,505,506,508,510,511,512,513,514,517,522,523,524,526,528],wherea:[6,11,100,216,246,270,307,341,346,517],wherebi:308,wherev:249,whether:[6,8,11,12,16,39,40,54,61,63,65,74,75,112,118,120,154,165,166,198,205,206,208,209,210,211,218,222,225,226,227,228,229,230,234,242,245,254,267,270,275,305,320,334,342,348,349,357,359,374,376,377,386,390,392,401,403,407,423,425,429,439,440,442,447,458,465,475,491,494,496,497,499,501,508,509,510,513,523,524],which:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,31,32,36,37,38,39,40,41,42,44,45,46,47,50,51,53,54,55,56,58,60,61,63,65,66,67,69,70,72,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,93,95,96,97,98,99,101,103,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,121,122,123,124,125,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,189,190,191,192,195,197,198,201,202,203,205,206,207,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,259,260,264,265,267,268,269,270,271,272,273,274,275,276,277,278,280,282,284,285,286,288,289,290,291,292,293,294,295,297,298,299,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,318,319,320,322,323,324,325,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,359,360,361,363,366,367,370,371,374,375,376,377,379,382,383,384,385,386,387,388,389,391,392,393,394,395,397,398,399,401,402,403,405,406,407,408,409,410,411,412,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,432,433,434,436,438,439,440,442,443,444,445,447,448,449,450,451,452,453,455,456,457,458,459,460,461,462,463,464,465,466,467,470,474,475,476,477,478,479,480,481,482,483,484,487,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,517,518,523,524,526,527,528],whichev:[12,391,491,510],white:[206,246,253,254,255,316,338,346,496,523,527],whitesmok:206,whitespac:[2,3,206,386,496],who:[0,3,6,7,8,9,13,393,415],whole:[234,250,298,311,322,517],wholli:231,whose:[3,6,7,8,9,17,18,37,39,42,56,61,80,95,163,181,198,205,206,216,230,240,241,251,252,267,270,272,273,274,276,277,278,297,298,314,315,317,320,334,348,355,357,379,387,388,417,419,432,449,450,461,463,476,477,478,479,481,517,523,524],why:[3,6,254,342,349,518],wicaksono1:297,wicaksono2:297,wicaksono:297,wide:[1,6,7,63,65,209,342,349,379,389,403,406,417,457,458],width:[205,206,381,395,420],wiggl:[3,230,267,326,351,352,354,356,499],wiggle:326,wigner:152,wih:6,wikipedia:6,wild:[3,12,21,44,81,95,127,186,210,211,316,361,382,405,424,490,498,503,526,528],wildcard:[3,12,172,182,202,203,205,206,313,405,474,503,506,527,528],wildli:[270,303],win:392,window:[3,4,12,13,75,202,205,207,218,219,220,221,222,250,318,339,340,405,497,518],wipe:[209,425,475,519,521],wire:315,wirnsberg:[6,237],wirt:206,wisconsin:13,wise:[3,12,412,476,505],wish:[2,3,5,6,7,8,11,12,16,40,42,59,60,61,75,128,153,158,179,180,182,184,202,203,206,210,217,218,219,222,226,230,231,242,245,251,256,260,302,305,316,320,334,335,351,352,376,379,387,392,401,424,425,442,447,449,450,457,477,478,494,496,497,498,504,508,514,523,524,528],within:[1,2,3,6,8,9,11,12,13,14,15,16,28,39,40,41,42,55,61,63,65,68,73,74,75,76,77,81,84,100,102,117,119,123,126,127,128,129,131,134,152,169,178,181,204,205,206,210,211,216,217,218,221,222,224,225,226,227,231,233,240,241,242,245,251,253,297,301,302,303,305,307,316,317,318,320,323,325,329,330,335,346,349,351,355,357,359,375,379,385,386,387,388,389,392,397,399,401,408,413,414,415,416,417,419,420,425,426,429,430,442,445,450,452,453,454,459,460,475,476,478,479,480,481,482,484,489,491,493,494,496,504,505,508,510,517,522,523],without:[1,2,3,4,6,7,8,9,11,12,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,61,95,123,155,160,165,179,184,185,187,188,189,190,192,193,195,196,198,202,205,206,207,209,212,218,220,221,222,223,228,230,238,240,241,244,246,248,250,253,267,270,272,273,274,275,276,277,278,279,280,288,290,291,293,294,295,302,305,307,308,309,310,314,316,317,318,319,320,326,334,350,354,358,360,362,363,365,366,369,371,375,376,377,387,388,392,393,394,396,399,400,401,402,403,404,405,406,407,408,411,412,415,416,417,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,445,447,448,449,450,451,452,454,458,459,460,467,475,476,477,478,479,480,481,482,484,486,487,488,494,496,499,504,505,511,514,517,518,522,523],wolf:[],wolff:[447,477,478],won:[3,314,440],wong:[215,398],word:[2,3,6,8,12,28,65,206,209,216,217,218,219,222,229,251,281,287,304,309,315,348,359,375,406,447,492,494,496,515,523,524],work:[1,3,6,7,8,9,11,12,15,17,39,54,61,62,96,128,129,130,156,157,159,160,161,165,166,167,168,170,171,176,177,202,205,207,210,211,218,227,243,245,252,253,254,256,260,267,270,276,277,278,286,290,291,293,294,295,303,305,313,315,318,320,337,338,339,344,375,376,388,392,405,407,410,412,425,439,440,442,445,447,465,491,493,494,497,498,500,504,505,507,510,523],workaround:[76,127,316,447,524],worker:[12,457,458,484],workflow:518,workhors:8,workstat:494,world:[3,12,152,375,387,391,490,493,494,511,523],worlei:412,worri:16,worsen:17,worst:355,worth:[218,219,221,222,306,318],would:[1,3,4,5,6,7,8,11,12,15,21,28,36,41,42,44,55,74,75,76,97,99,127,129,153,158,166,178,179,180,181,182,184,186,197,202,203,205,206,207,209,210,211,213,216,218,224,227,229,230,234,235,237,242,245,248,249,250,254,267,270,271,284,297,299,303,305,307,311,314,334,341,345,353,354,357,359,360,361,362,363,364,366,367,370,376,379,382,384,385,386,387,388,391,392,393,394,398,405,406,407,408,412,413,414,415,416,418,425,426,427,428,442,443,444,445,451,455,457,458,462,464,466,474,476,479,480,481,484,491,494,496,499,500,501,503,504,505,506,507,511,513,514,517,518,523,524,527,528],wrap:[1,3,6,9,11,12,59,61,129,178,180,201,202,203,204,206,207,217,229,230,231,250,256,267,316,330,334,351,353,355,376,377,387,494,496,497,499,504],wrapper:[],wrigger:322,wright:385,writabl:3,write:[],write_atom_weight:215,write_coeff:[],write_data:[],write_dump:[],write_freq:458,write_head:8,write_restart:[],writen:318,written:[],wrong:[3,11,228,270,296,351,355,356,388,458,498,503],wrote:[3,9,498],wt1:447,wt2:447,wt3:447,wurtzit:379,www:[0,2,3,5,6,7,8,10,11,12,13,14,393,415,439,456,457,458,522],x200:15,x86:[12,445],x_ij:455,x_ijkl:360,x_kjli:360,x_ljik:360,xave:6,xavx:15,xcm:[8,316,523],xcore:15,xdr:[12,202],xeon:[1,7,9,10,12,15,16,17,392,509],xflag:[165,166,257,259,266,316,341],xhi:[2,6,59,61,180,202,230,345,351,354,356,496,499,514,523],xhi_bound:[6,202],xhi_new:496,xhost:[9,15],xi_ij:455,xiaowang:[13,418,479,481],xiij:297,xk7:9,xlat:[178,230,251,514],xlo:[2,6,11,59,61,180,202,230,251,345,351,354,356,496,499,514,523],xlo_bound:[6,202],xlo_new:496,xmax:[6,214,235,284,523],xmgrace:[],xmic:15,xmin:523,xml:[203,207,456],xml_label:456,xmovi:[],xmu:[352,422],xorig:75,xplane:352,xplor:202,xpo:178,xrd:[],xsph:9,xsu:[3,202,203,336,497],xt3:202,xt4:[17,202],xt5:[17,202],xtc:[3,6,7,12,202,204,205,206,207],xtcdump:206,xvf:12,xwall:[353,354,356],xxx:12,xyz:[3,6,7,9,13,42,69,75,116,119,166,173,178,202,204,205,206,207,228,259,270,271,275,303,313,314,316,330,333,352,354,356,378,386,493,497,524,527],xzhou:[13,418],xzy:493,yamada:15,yang:[445,455],yate:445,yb2:177,yb3:177,ybox:230,ycm:316,year:[5,7],yeh:376,yellow:[205,206],yellowgreen:206,yet:[3,7,15,16,39,42,205,210,313,351,377,384,385,392,404,406,407,417,487,494,496,497,518,523,525,526,527],yflag:[165,166,257,259,266,316,341],yhi:[6,61,180,202,230,345,351,354,356,496,499,514],yhi_bound:[6,202],yield:[6,99,121,128,153,161,166,206,219,228,234,270,293,307,317,342,348,349,352,357,376,397,412,422,447,454,514,523],yip:343,ylat:[178,230,251,514],ylo:[6,61,180,202,230,345,351,354,356,496,499,514],ylo_bound:[6,202],ymax:[214,523],ymin:523,yorig:75,york:[299,377],yoshida:[270,316],you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,56,59,60,61,63,65,67,69,71,72,75,76,77,78,79,81,83,86,87,88,89,95,96,97,98,99,100,101,103,112,113,114,116,117,118,120,121,123,125,127,128,129,152,153,155,156,157,158,161,165,166,171,172,173,174,175,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,202,203,205,206,207,209,210,211,212,213,216,217,218,219,221,222,223,224,225,226,227,228,230,231,234,236,237,238,240,242,243,244,245,246,247,248,249,250,251,253,254,255,265,267,270,272,273,274,275,276,277,278,279,280,284,287,288,290,291,293,294,295,298,299,301,302,303,305,307,308,309,311,314,315,316,319,320,322,330,331,333,334,335,337,338,339,340,342,343,344,345,346,348,349,350,351,352,354,355,356,357,359,360,362,363,365,366,367,369,371,375,376,377,379,382,384,385,386,387,388,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,411,412,414,415,416,417,418,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,442,443,444,445,447,448,449,450,451,452,453,454,455,456,457,458,459,460,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,484,486,487,488,490,491,492,493,494,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,513,514,515,517,518,522,523,524,525,526,528],young:[422,461,463],your:[],yourself:[6,8,12,13,228,386,518],yplane:352,ypo:178,ysu:[3,202,203,336,497],yuan:9,yukawa:[],yukawa_1_1:485,yxz:493,yzx:493,z_i:[417,481,488],z_j:[481,488],z_meam:442,zachari:13,zannoni:421,zbl:[],zblcut:481,zblcutinn:466,zblcutout:466,zblexpscal:481,zblz:466,zcm:316,zcylind:352,zepeda:216,zero:[],zeta:[3,256,307,418],zfactor:205,zflag:[165,166,257,259,266,316,341],zhang:[316,342,422],zhi:[3,6,180,202,214,345,351,354,356,496,499,514],zhi_bound:[6,202],zhou:[13,398,418,455,479,481],zhu:473,ziegenhain:13,ziegler:[301,442,475,481,488],zimmerman2004:215,zimmerman2010:215,zimmerman:[9,74,215,398],zlat:[230,251,514],zlib:[9,202],zlim:465,zlo:[3,6,180,202,214,345,351,353,354,356,496,499,514],zlo_bound:[6,202],zmax:[214,256,523],zmin:[256,523],zn2:177,zone:[130,318],zoom:[3,202,205,206],zorig:75,zplane:352,zr4:177,zrest:333,zsu:[3,202,203,336,497],zwall:351,zwall_veloc:256,zxy:493,zybin:458,zyx:493},titles:["LAMMPS Documentation","5. Accelerating LAMMPS performance","3. Commands","12. Errors","7. Example problems","13. Future and history","6. How-to discussions","1. Introduction","10. Modifying & extending LAMMPS","4. Packages","8. Performance & scalability","11. Python interface to LAMMPS","2. Getting Started","9. Additional tools","5.GPU package","5.USER-INTEL package","5.KOKKOS package","5.USER-OMP package","5.OPT package","angle_style charmm command","angle_style class2 command","angle_coeff command","angle_style cosine command","angle_style cosine/delta command","angle_style cosine/periodic command","angle_style cosine/shift command","angle_style cosine/shift/exp command","angle_style cosine/squared command","angle_style dipole command","angle_style fourier command","angle_style fourier/simple command","angle_style harmonic command","angle_style hybrid command","angle_style none command","angle_style quartic command","angle_style sdk command","angle_style command","angle_style table command","angle_style zero command","atom_modify command","atom_style command","balance command","Body particles","bond_style class2 command","bond_coeff command","bond_style fene command","bond_style fene/expand command","bond_style harmonic command","bond_style harmonic/shift command","bond_style harmonic/shift/cut command","bond_style hybrid command","bond_style morse command","bond_style none command","bond_style nonlinear command","bond_style quartic command","bond_style command","bond_style table command","bond_write command","bond_style zero command","boundary command","box command","change_box command","clear command","comm_modify command","comm_style command","compute command","compute ackland/atom command","compute angle command","compute angle/local command","compute angmom/chunk command","compute basal/atom command","compute body/local command","compute bond command","compute bond/local command","compute centro/atom command","compute chunk/atom command","compute cluster/atom command","compute cna/atom command","compute com command","compute com/chunk command","compute contact/atom command","compute coord/atom command","compute damage/atom command","compute dihedral command","compute dihedral/local command","compute dilatation/atom command","compute dipole/chunk command","compute displace/atom command","compute dpd command","compute dpd/atom command","compute erotate/asphere command","compute erotate/rigid command","compute erotate/sphere command","compute erotate/sphere/atom command","compute event/displace command","compute fep command","compute group/group command","compute gyration command","compute gyration/chunk command","compute heat/flux command","compute hexorder/atom command","compute improper command","compute improper/local command","compute inertia/chunk command","compute ke command","compute ke/atom command","compute ke/atom/eff command","compute ke/eff command","compute ke/rigid command","compute meso/e/atom command","compute meso/rho/atom command","compute meso/t/atom command","compute_modify command","compute msd command","compute msd/chunk command","compute msd/nongauss command","compute omega/chunk command","compute orientorder/atom command","compute pair command","compute pair/local command","compute pe command","compute pe/atom command","compute plasticity/atom command","compute pressure command","compute property/atom command","compute property/chunk command","compute property/local command","compute rdf command","compute reduce command","compute rigid/local command","compute saed command","compute slice command","compute smd/contact/radius command","compute smd/damage command","compute smd/hourglass/error command","compute smd/internal/energy command","compute smd/plastic/strain command","compute smd/plastic/strain/rate command","compute smd/rho command","compute smd/tlsph/defgrad command","compute smd/tlsph/dt command","compute smd/tlsph/num/neighs command","compute smd/tlsph/shape command","compute smd/tlsph/strain command","compute smd/tlsph/strain/rate command","compute smd/tlsph/stress command","compute smd/triangle/mesh/vertices","compute smd/ulsph/num/neighs command","compute smd/ulsph/strain command","compute smd/ulsph/strain/rate command","compute smd/ulsph/stress command","compute smd/vol command","compute sna/atom command","compute stress/atom command","compute force/tally command","compute temp command","compute temp/asphere command","compute temp/body command","compute temp/chunk command","compute temp/com command","compute temp/cs command","compute temp/deform command","compute temp/deform/eff command","compute temp/drude command","compute temp/eff command","compute temp/partial command","compute temp/profile command","compute temp/ramp command","compute temp/region command","compute temp/region/eff command","compute temp/rotate command","compute temp/sphere command","compute ti command","compute torque/chunk command","compute vacf command","compute vcm/chunk command","compute voronoi/atom command","compute xrd command","create_atoms command","create_bonds command","create_box command","delete_atoms command","delete_bonds command","dielectric command","dihedral_style charmm command","dihedral_style class2 command","dihedral_coeff command","dihedral_style cosine/shift/exp command","dihedral_style fourier command","dihedral_style harmonic command","dihedral_style helix command","dihedral_style hybrid command","dihedral_style multi/harmonic command","dihedral_style nharmonic command","dihedral_style none command","dihedral_style opls command","dihedral_style quadratic command","dihedral_style command","dihedral_style table command","dihedral_style zero command","dimension command","displace_atoms command","dump command","dump custom/vtk command","dump h5md command","dump image command","dump_modify command","dump molfile command","echo command","fix command","fix adapt command","fix adapt/fep command","fix addforce command","fix addtorque command","fix append/atoms command","fix atc command","fix atom/swap command","fix ave/atom command","fix ave/chunk command","fix ave/correlate command","fix ave/correlate/long command","fix ave/histo command","fix ave/time command","fix aveforce command","fix balance command","fix bond/break command","fix bond/create command","fix bond/swap command","fix box/relax command","fix colvars command","fix deform command","fix deposit command","fix drag command","fix drude command","fix drude/transform/direct command","fix dt/reset command","fix efield command","fix ehex command","fix enforce2d command","fix eos/cv command","fix eos/table command","fix eos/table/rx command","fix evaporate command","fix external command","fix freeze command","fix gcmc command","fix gld command","fix gle command","fix gravity command","fix heat command","fix imd command","fix indent command","fix ipi command","fix langevin command","fix langevin/drude command","fix langevin/eff command","fix lb/fluid command","fix lb/momentum command","fix lb/pc command","fix lb/rigid/pc/sphere command","fix lb/viscous command","fix lineforce command","fix manifoldforce command","fix meso command","fix meso/stationary command","fix_modify command","fix momentum command","fix move command","fix msst command","fix neb command","fix nvt command","fix nvt/eff command","fix nph/asphere command","fix nph/body command","fix nph/sphere command","fix nphug command","fix npt/asphere command","fix npt/body command","fix npt/sphere command","fix nve command","fix nve/asphere command","fix nve/asphere/noforce command","fix nve/body command","fix nve/eff command","fix nve/limit command","fix nve/line command","fix nve/manifold/rattle command","fix nve/noforce command","fix nve/sphere command","fix nve/tri command","fix nvt/asphere command","fix nvt/body command","fix nvt/manifold/rattle command","fix nvt/sllod command","fix nvt/sllod/eff command","fix nvt/sphere command","fix oneway command","fix orient/fcc command","fix phonon command","fix pimd command","fix planeforce command","fix poems","fix pour command","fix press/berendsen command","fix print command","fix property/atom command","fix qbmsst command","fix qeq/point command","fix qeq/comb command","fix qeq/reax command","fix qmmm command","fix qtb command","fix reax/bonds command","fix reax/c/species command","fix recenter command","fix restrain command","fix rigid command","fix rx command","fix saed/vtk command","fix setforce command","fix shake command","fix shardlow command","fix smd command","fix smd/adjust_dt command","fix smd/integrate_tlsph command","fix smd/integrate_ulsph command","fix smd/move_tri_surf command","fix smd/setvel command","<no title>","fix smd/wall_surface command","fix spring command","fix spring/chunk command","fix spring/rg command","fix spring/self command","fix srd command","fix store/force command","fix store/state command","fix temp/berendsen command","fix temp/csvr command","fix temp/rescale command","fix temp/rescale/eff command","fix tfmc command","fix thermal/conductivity command","fix ti/rs command","fix ti/spring command","fix tmd command","fix ttm command","fix tune/kspace command","fix vector command","fix viscosity command","fix viscous command","fix wall/lj93 command","fix wall/gran command","fix wall/piston command","fix wall/reflect command","fix wall/region command","fix wall/srd command","group command","group2ndx command","if command","improper_style class2 command","improper_coeff command","improper_style cossq command","improper_style cvff command","improper_style distance command","improper_style fourier command","improper_style harmonic command","improper_style hybrid command","improper_style none command","improper_style ring command","improper_style command","improper_style umbrella command","improper_style zero command","include command","info command","jump command","kspace_modify command","kspace_style command","label command","lattice command","log command","Description","mass command","min_modify command","min_style command","minimize command","molecule command","neb command","neigh_modify command","neighbor command","newton command","next command","package command","pair_style adp command","pair_style airebo command","pair_style awpmd/cut command","pair_style beck command","pair_style body command","pair_style bop command","pair_style born command","pair_style brownian command","pair_style buck command","pair_style buck/long/coul/long command","pair_style lj/charmm/coul/charmm command","pair_style lj/class2 command","pair_coeff command","pair_style colloid command","pair_style comb command","pair_style coul/cut command","pair_style coul/diel command","pair_style born/coul/long/cs command","pair_style lj/cut/dipole/cut command","pair_style dpd command","pair_style dpd/fdt command","pair_style dsmc command","pair_style eam command","pair_style edip command","pair_style eff/cut command","pair_style eim command","pair_style exp6/rx command","pair_style gauss command","pair_style gayberne command","pair_style gran/hooke command","pair_style lj/gromacs command","pair_style hbond/dreiding/lj command","pair_style hybrid command","pair_style kim command","pair_style lcbop command","pair_style line/lj command","pair_style list command","pair_style lj/cut command","pair_style lj96/cut command","pair_style lj/cubic command","pair_style lj/expand command","pair_style lj/long/coul/long command","pair_style lj/sf command","pair_style lj/smooth command","pair_style lj/smooth/linear command","pair_style lj/cut/soft command","pair_style lubricate command","pair_style lubricateU command","pair_style lj/mdf command","pair_style meam command","pair_style meam/spline","pair_style meam/sw/spline","pair_style mgpt command","pair_style mie/cut command","pair_modify command","pair_style morse command","pair_style multi/lucy command","pair_style multi/lucy/rx command","pair_style nb3b/harmonic command","pair_style nm/cut command","pair_style none command","pair_style peri/pmb command","pair_style polymorphic command","pair_style quip command","pair_style reax command","pair_style reax/c command","pair_style resquared command","pair_style lj/sdk command","pair_style smd/hertz command","pair_style smd/tlsph command","pair_style smd/tri_surface command","pair_style smd/ulsph command","pair_style smtbq command","pair_style snap command","pair_style soft command","pair_style sph/heatconduction command","pair_style sph/idealgas command","pair_style sph/lj command","pair_style sph/rhosum command","pair_style sph/taitwater command","pair_style sph/taitwater/morris command","pair_style srp command","pair_style command","pair_style sw command","pair_style table command","pair_style table/rx command","pair_style tersoff command","pair_style tersoff/mod command","pair_style tersoff/zbl command","pair_style thole command","pair_style tri/lj command","pair_style vashishta command","pair_write command","pair_style yukawa command","pair_style yukawa/colloid command","pair_style zbl command","pair_style zero command","partition command","prd command","print command","processors command","python command","quit command","read_data command","read_dump command","read_restart command","region command","replicate command","rerun command","reset_timestep command","restart command","run command","run_style command","set command","shell command","special_bonds command","suffix command","tad command","temper command","thermo command","thermo_modify command","thermo_style command","timer command","timestep command","Tutorial for Thermalized Drude oscillators in LAMMPS","LAMMPS GitHub tutorial","uncompute command","undump command","unfix command","units command","variable command","velocity command","write_coeff command","write_data command","write_dump command","write_restart command"],titleterms:{"break":225,"default":[36,39,40,55,59,60,61,63,64,75,95,96,100,112,113,115,117,118,130,134,135,152,158,166,167,171,177,178,181,183,197,200,201,202,203,205,206,207,208,210,211,212,214,215,216,218,222,225,226,228,229,230,231,235,242,245,246,251,253,254,255,256,257,259,265,268,270,271,275,293,294,298,299,302,303,304,305,306,308,311,313,314,316,318,334,336,341,342,343,344,347,349,351,353,357,370,374,376,377,379,380,383,384,386,388,389,390,392,395,398,400,417,439,440,445,447,457,458,474,475,491,492,493,496,497,499,501,503,504,505,508,510,512,513,514,515,516,522,524,526,527],"function":523,"long":[220,399,401,402,403,404,408,410,411,430,434,438,452,460,482],"new":8,"static":12,acceler:1,account:518,ackland:66,acknowledg:7,adapt:[210,211],addforc:212,adding:518,addition:[12,13,518],addtorqu:213,adiabat:6,adjust_dt:323,adp:393,after:518,airebo:394,alloi:415,amber2lmp:13,amber:6,angl:[8,67,68],angle_coeff:21,angle_styl:[2,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],angmom:69,append:214,arrai:6,aspher:[6,90,156,272,276,280,281,290],asphere:9,atc:[9,215],atom:[6,7,8,66,70,74,75,76,77,80,81,82,85,87,89,93,100,105,106,109,110,111,117,121,122,124,152,153,176,214,216,217,305,523],atom_modifi:39,atom_styl:40,attract:5,aveforc:223,awpmd:[9,395],axel:518,balanc:[41,224],barostat:6,basal:70,bcc:297,beck:396,berendsen:[303,337],between:6,binary2txt:13,bodi:[6,8,42,71,157,273,277,282,291,397],body:9,bond:[8,13,72,73,225,226,227,312],bond_coeff:44,bond_styl:[2,43,45,46,47,48,49,50,51,52,53,54,55,56,58],bond_writ:57,bop:398,born:[399,410],boundari:[7,59],box:[6,60,228],branch:518,brownian:400,buck:[401,402,410,441],bug:3,build:[11,12],calcul:6,call:12,categori:2,centro:74,ch2lmp:13,chain:13,chang:518,change_box:61,charmm:[6,19,184,403,438],chunk:[6,69,75,79,86,98,103,114,116,125,158,173,175,218,331],citat:7,class2:[9,20,43,185,360,404],clear:62,cluster:76,cmm:9,cna:77,code:6,coeffici:6,colloid:[9,351,406,487],colvar:[13,229],colvars:9,com:[78,79,159],comb3:407,comb:[308,407],come:5,comm_modifi:63,comm_styl:64,command:[2,6,8,12,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],common:3,comparison:1,compos:6,compress:9,comput:[2,6,8,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,523],compute_modifi:112,condit:7,conduct:[6,342],constant:[6,523],constraint:7,contact:[80,132],coord:81,core:6,coreshell:9,correl:[219,220],cosin:[22,23,24,25,26,27,187],cossq:362,coul:[399,401,402,403,404,408,409,410,423,430,434,438,452,460],coupl:6,creat:226,create_atom:178,create_bond:179,create_box:180,createatom:13,creation:7,csld:338,csvr:338,cubic:432,custom:[8,202,203],cut:[49,395,401,404,408,411,417,420,430,431,438,446,452,482],cvff:363,damag:[82,133],data2xmovi:13,data:6,databas:13,deby:[408,430],defgrad:139,deform:[161,162,230],delete_atom:181,delete_bond:182,delta:23,deposit:231,descript:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],diagnost:7,diel:409,dielectr:183,diffraction:9,diffus:6,dihedr:[8,83,84],dihedral_coeff:186,dihedral_styl:[2,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199],dilat:85,dimens:200,dipol:[6,28,86,411],dipole:9,direct:234,directori:4,discuss:6,disp:6,displac:[87,94],displace_atom:201,distanc:364,distribut:[7,12],document:0,dpd:[9,88,89,412,413],drag:232,dreid:424,dreiding:6,drude:[6,9,163,233,234,254,517],dsf:[408,430],dsmc:414,dump:[6,8,202,203,204,205,207],dump_modifi:206,dynam:307,eam:[13,415],echo:208,edip:416,eff:[9,13,106,107,162,164,169,255,271,283,294,340,417],efield:236,ehex:237,eim:418,elastic:6,emac:13,energi:[135,413],enforce2d:238,ensembl:7,erot:[90,91,92,93],error:[3,134],evapor:242,event:94,exampl:[4,6,11,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],exp6:419,exp:[26,187],expand:[46,433],extend:[8,11],extern:243,fcc:297,fdt:413,featur:[7,8,518,523],fene:[45,46],fep:[9,13,95,211],field:[6,7],file:6,finit:6,fire:307,fix:[2,6,8,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,523],fix_modifi:[210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],flow:6,fluid:256,flux:[99,154],forc:[6,7,154,335],fork:518,fourier:[29,30,188,365],freez:244,from:[6,11],futur:5,gauss:420,gaybern:421,gcmc:245,gener:[1,6,7,13],get:12,github:518,gld:246,gle:247,global:6,gpu:[9,14,396,399,401,403,404,406,408,411,412,415,420,421,423,430,431,432,433,446,448,459,460,467,476,477,479,480,481,486,487,488],gran:[352,422],granular:[6,9],graviti:248,gromac:423,group2ndx:358,group:[96,357,523],gyrat:[97,98],h5md:[9,202,204],harmon:[31,47,48,49,189,192,351,366,451],hbond:424,heat:[99,154,249],heatconduct:468,helix:190,hertz:[422,461],hexord:100,histo:221,histori:[5,422],hook:422,hourglass:134,how:6,hybrid:[32,50,191,367,425],idealga:469,imag:[202,205],imd:250,implicit:403,improp:[8,101,102],improper_coeff:361,improper_styl:[2,360,362,363,364,365,366,367,368,369,370,371,372],includ:373,inclus:8,indent:251,indice:0,individu:2,induc:6,inertia:103,info:[0,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,374],input:[2,6,8],install:11,integr:6,integrat:7,integrate_tlsph:324,integrate_ulsph:325,intel:[9,15,19,31,45,47,184,189,195,270,279,280,293,363,366,401,403,421,430,476,479],interfac:[6,11],intern:135,introduct:7,invers:234,ipi:252,ipp:13,jump:375,jun:0,kate:13,keyword:[447,523],kim:[9,426],kokkos:[9,16],kspace:[2,8,9,347],kspace_modifi:376,kspace_styl:[6,377],label:378,lammps:[0,1,2,6,7,8,11,12,517,518],langevin:[253,254,255],lattic:379,lcbop:427,lennard:441,librari:[6,11,12],limit:284,line:[12,285,428],linear:[437,448],lineforc:261,list:[2,429],lj1043:351,lj126:351,lj93:351,lj96:431,lmp2arc:13,lmp2cfg:13,lmp2vmd:13,local:[6,68,71,73,84,102,119,126,129],log:380,lowercas:4,lubric:439,lubricateu:440,luci:[449,450],make:[12,518],manifold:[9,286,292],manifoldforc:262,manybody:9,mass:382,math:523,matlab:13,mdf:441,meam:[9,442,443,444],measur:1,merg:518,mesh:146,meso:[109,110,111,263,264],messag:3,mgpt:[9,445],micelle2d:13,mie:446,min_modifi:383,min_styl:384,minim:[8,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,385],misc:9,mod:[346,480],model:[6,7],modifi:8,mol:154,molecul:386,molecule:9,molfil:[202,207],molfile:9,moltempl:13,momentum:[257,266],morri:473,mors:[51,394,424,448],move:267,move_tri_surf:326,movi:[202,205],mpi:11,mpiio:9,msd:[113,114,115],msi2lmp:13,msm:[399,401,403,408,430],msst:268,multi:[6,7,192,449,450],multipl:6,nb3b:451,ndx2group:358,neb:[269,387],neigh:[141,147],neigh_modifi:388,neighbor:389,nemd:6,newton:390,next:391,nharmon:193,noforc:[281,287],non:[6,7],none:[33,52,194,368,453],nongauss:115,nonlinear:53,nph:[270,271,272,273,274,316],nphug:275,npt:[270,271,276,277,278,316],num:[141,147],numer:523,nve:[279,280,281,282,283,284,285,286,287,288,289,316],nvt:[270,271,290,291,292,293,294,295,316],omega:116,omp:[9,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,43,45,46,47,48,49,51,53,54,56,184,185,187,188,189,190,192,193,195,196,198,248,270,272,274,275,276,278,279,288,290,293,295,308,360,362,363,365,366,369,371,393,394,396,399,400,401,402,403,404,406,407,408,409,411,412,415,418,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,443,444,448,451,452,454,459,460,467,476,477,479,480,481,482,484,486,487,488],onewai:296,open:7,operat:523,opl:195,opt:[9,18,403,415,430,434,448],optim:1,option:[6,8,12],orient:297,orientord:117,orthogon:6,oscil:517,other:6,output:[6,7,8,12,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],overlai:425,overview:11,own:518,packag:[1,9,12,14,15,16,17,18,392],pair:[6,118,119],pair_coeff:405,pair_modifi:447,pair_styl:[2,393,394,395,396,397,398,399,400,401,402,403,404,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,486,487,488,489],pair_writ:485,pairwis:8,paquai:518,parallel:11,paramet:6,pars:2,partial:165,particl:[6,7,42],partit:490,past:5,per:6,perform:[1,10],peri:[9,454],period:24,phonon:[9,13,298],pimd:299,piston:353,planeforc:300,plastic:[122,136,137],pmb:454,poem:301,poems:9,point:307,polariz:6,poli:[400,439,440],polym:13,polymorph:455,post:7,potenti:[2,6,8],pour:302,pppm:6,prd:491,pre:7,press:303,pressur:123,previou:12,print:[304,492],problem:[3,4],process:[6,7],processor:493,profil:166,properti:[6,124,125,126,305],pymol_aspher:13,python:[9,11,13,494],qbmsst:306,qeq:[9,307,308,309],qmmm:[9,310],qtb:[9,311],quadrat:196,quantiti:6,quartic:[34,54],quip:[9,456],quit:495,radiu:132,ramp:167,rate:[137,144,149],rattl:[286,292,320],rdf:127,read_data:496,read_dump:497,read_restart:498,reax:[9,13,309,312,313,457,458],reaxc:9,rebo:394,recent:314,reduc:128,refer:523,reflect:354,region:[8,128,168,169,355,499,523],relat:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,97,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,244,245,246,247,248,249,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,311,312,313,314,316,317,318,319,321,322,323,324,325,326,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,373,374,375,376,377,379,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,501,502,503,504,505,506,508,509,510,511,512,513,514,515,516,519,520,521,523,524,525,526,527,528],relax:228,replic:500,replica:[6,7,9],report:3,repositori:518,requir:12,rerun:501,rescal:[339,340],reset:235,reset_timestep:502,resquar:459,restart2data:13,restart:[6,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,503],restrain:315,restrict:[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],rho:[110,138],rhosum:471,rigid:[6,9,91,108,129,259,316],ring:369,rotat:170,rule:2,run:[6,11,12,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,504],run_styl:505,scalabl:10,scalar:6,screen:12,script:[2,6,8,11],sdk:[35,460],self:333,serial:11,set:[6,506],setforc:319,setvel:327,shake:320,shape:142,shardlow:321,share:[11,12],shell:[6,507],shield:307,shift:[25,26,48,49,187],shock:9,simpl:30,simul:6,size:6,slater:307,slice:131,sllod:[293,294],small:316,smd:[9,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,322,323,324,325,326,327,329,461,462,463,464],smooth:[436,437,448],smtbq:[9,465],sna:152,snad:152,snap:[9,466],snapshot:6,snav:152,soft:[438,448,467],solver:2,sourc:7,spc:6,speci:313,special:[7,447,523],special_bond:508,sph:[9,468,469,470,471,472,473],sphere:[92,93,171,259,274,278,288,295],spheric:6,spline:[443,444],spring:[330,331,332,333,344],squar:27,srd:[9,334,356],srp:474,standard:9,start:[12,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],state:336,stationari:264,stefan:518,stop:[210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,234,235,236,237,238,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,318,319,320,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356],store:[335,336],strain:[136,137,143,144,148,149],strategi:1,streitz:408,stress:[145,150,153,154],structur:2,style:[1,2,6,8],submit:8,suffix:509,summari:6,swap:[216,227],syntax:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,298,299,300,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,522,523,524,525,526,527,528],system:6,tabl:[0,6,37,56,198,240,241,477,478,479],tad:510,taitwat:[472,473],talli:154,tally:9,temp:[155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,337,338,339,340],temper:511,temperatur:6,tersoff:[479,480,481],test:11,tfmc:341,thermal:[6,342,517],thermo:[6,512,523],thermo_modifi:513,thermo_styl:514,thermodynam:[6,8],thermostat:6,thole:482,time:[6,222],timer:515,timestep:516,tip3p:6,tip4p:[6,408,430,434,438],tip:12,tlsph:[139,140,141,142,143,144,145,462],tmd:345,tool:[12,13],torqu:173,transform:234,tri:[289,483],tri_surfac:463,triangl:146,triclin:6,tstat:412,ttm:346,tune:347,tutori:[517,518],type:7,ulsph:[147,148,149,150,464],umbrella:371,uncomput:519,undump:520,unfix:521,unit:522,uppercas:4,use:447,user:[9,12,15,17],using:[6,11],vacf:174,valu:[6,523],variabl:[6,8,523],variou:1,vashishta:484,vcm:175,vector:[6,348,523],veloc:524,version:[0,5,12],vertic:146,via:12,vim:13,viscos:[6,349],viscou:[260,350],visual:6,vol:151,voronoi:[9,176],vtk:[9,202,203,318],wall:[6,351,352,353,354,355,356],wall_surfac:329,warn:3,water:6,weight:221,what:[7,12],wisdom:518,wolf:[399,408],wrapper:11,write:6,write_coeff:525,write_data:526,write_dump:527,write_restart:528,written:518,xmgrace:13,xmovi:13,xrd:177,your:518,yukawa:[486,487],zbl:[481,488],zero:[38,58,199,372,489]}}) \ No newline at end of file diff --git a/doc/html/thermo_style.html b/doc/html/thermo_style.html index f3c15b1f9d..6bbcc98b44 100644 --- a/doc/html/thermo_style.html +++ b/doc/html/thermo_style.html @@ -140,7 +140,7 @@ multi args = none custom args = list of keywords possible keywords = step, elapsed, elaplong, dt, time, - cpu, tpcpu, spcpu, cpuremain, part, + cpu, tpcpu, spcpu, cpuremain, part, timeremain, atoms, temp, press, pe, ke, etotal, enthalpy, evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, @@ -163,6 +163,7 @@ spcpu = timesteps per CPU second cpuremain = estimated CPU time remaining in run part = which partition (0 to Npartition-1) this is + timeremain = remaining time in seconds on timer timeout. atoms = # of atoms temp = temperature press = pressure @@ -357,6 +358,14 @@ simulations to indicate which partition this output and this file corresponds to, or for use in a variable to append to a filename for output specific to this partition. See Section_start 7 of the manual for details on running in multi-partition mode.

      +

      The timeremain keyword returns the remaining seconds when a +timeout has been configured via the timer timeout command. +If the timeout timer is inactive, the value of this keyword is 0.0 and +if the timer is expired, it is negative. This allows for example to exit +loops cleanly, if the timeout is expired with:

      +
      if "$(timeremain) < 0.0" then "quit 0"
      +
      +

      The fmax and fnorm keywords are useful for monitoring the progress of an energy minimization. The fmax keyword calculates the maximum force in any dimension on any atom in the diff --git a/doc/html/timer.html b/doc/html/timer.html index 0c61197504..31d99302ee 100644 --- a/doc/html/timer.html +++ b/doc/html/timer.html @@ -155,7 +155,10 @@

Description

-

Select the level of detail at which LAMMPS performs its CPU timings.

+

Select the level of detail at which LAMMPS performs its CPU timings. +Multiple keywords can be specified with the timer command. For +keywords that are mutually exclusive, the last one specified takes +effect.

During a simulation run LAMMPS collects information about how much time is spent in different sections of the code and thus can provide information for determining performance and load imbalance problems. @@ -174,26 +177,41 @@ call which meaures load imbalance more accuractly, though it can also slow down the simulation. Using the nosync setting (which is the default) turns off this synchronization.

With the timeout keyword a walltime limit can be imposed that -affects the run and minimize commands. If -the time limit is reached, the run or energy minimization will exit on -the next step or iteration that is a multiple of the Ncheck value -specified with the every keyword. All subsequent run or minimize -commands in the input script will be skipped until the timeout is -reset or turned off by a new timer command. The timeout elapse -value can be specified as off or unlimited to impose no timeout -condition (which is the default). The elapse setting can be -specified as a single number for seconds, two numbers separated by a -colon (MM:SS) for minutes and seconds, or as three numbers separated -by colons for hours, minutes, and seconds.

+affects the run and minimize commands. +This can be convenient when runs have to confirm to time limits, +e.g. when running under a batch system and you want to maximize +the utilization of the batch time slot, especially when the time +per timestep varies and is thus difficult to predict how many +steps a simulation can perform, or for difficult to converge +minimizations. The timeout elapse value should be somewhat smaller +than the time requested from the batch system, as there is usually +some overhead to launch jobs, and it may be advisable to write +out a restart after terminating a run due to a timeout.

+

The timeout timer starts when the command is issued. When the time +limit is reached, the run or energy minimization will exit on the +next step or iteration that is a multiple of the Ncheck value +which can be set with the every keyword. Default is checking +every 10 steps. After the timer timeout has expired all subsequent +run or minimize commands in the input script will be skipped. +The remaining time or timer status can be accessed with the +thermo variable timeremain, which will be +zero, if the timeout is inactive (default setting), it will be +negative, if the timeout time is expired and positive if there +is time remaining and in this case the value of the variable are +the number of seconds remaining.

+

When the timeout key word is used a second time, the timer is +restarted with a new time limit. The timeout elapse value can +be specified as off or unlimited to impose a no timeout condition +(which is the default). The elapse setting can be specified as +a single number for seconds, two numbers separated by a colon (MM:SS) +for minutes and seconds, or as three numbers separated by colons for +hours, minutes, and seconds (H:MM:SS).

The every keyword sets how frequently during a run or energy minimization the wall clock will be checked. This check count applies to the outer iterations or time steps during minimizations or r-RESPA runs, respectively. Checking for timeout too often, can slow a calculation down. Checking too infrequently can make the timeout measurement less accurate, with the run being stopped later than desired.

-

Multiple keywords can be specified with the timer command. For -keywords that are mutually exclusive, the last one specified takes -effect.

Note

Using the full and sync options provides the most detailed From a329a724b2a5bf013905028ed1fc158f16541156 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:31:52 +0000 Subject: [PATCH 17/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15253 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/USER-DPD/atom_vec_dpd.cpp | 47 --------------- src/USER-DPD/atom_vec_dpd.h | 2 - src/USER-DPD/fix_rx.cpp | 80 +++++++++++++------------ src/USER-DPD/fix_shardlow.cpp | 106 +++++++++++++++++++++++++++++++++- src/USER-DPD/fix_shardlow.h | 15 ++++- src/USER-DPD/pair_dpd_fdt.cpp | 2 - src/USER-DPD/pair_exp6_rx.cpp | 8 ++- 7 files changed, 167 insertions(+), 93 deletions(-) diff --git a/src/USER-DPD/atom_vec_dpd.cpp b/src/USER-DPD/atom_vec_dpd.cpp index 586ddca02b..2bd460475d 100644 --- a/src/USER-DPD/atom_vec_dpd.cpp +++ b/src/USER-DPD/atom_vec_dpd.cpp @@ -77,7 +77,6 @@ void AtomVecDPD::grow(int n) uCG = memory->grow(atom->uCG,nmax,"atom:uCG"); uCGnew = memory->grow(atom->uCGnew,nmax,"atom:uCGnew"); duChem = memory->grow(atom->duChem,nmax,"atom:duChem"); - ssaAIR = memory->grow(atom->ssaAIR,nmax,"atom:ssaAIR"); if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -101,7 +100,6 @@ void AtomVecDPD::grow_reset() uCG = atom->uCG; uCGnew = atom->uCGnew; duChem = atom->duChem; - ssaAIR = atom->ssaAIR; } /* ---------------------------------------------------------------------- @@ -126,7 +124,6 @@ void AtomVecDPD::copy(int i, int j, int delflag) uChem[j] = uChem[i]; uCG[j] = uCG[i]; uCGnew[j] = uCGnew[i]; - ssaAIR[j] = ssaAIR[i]; if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -516,41 +513,6 @@ int AtomVecDPD::pack_border_hybrid(int n, int *list, double *buf) return m; } -/* ---------------------------------------------------------------------- - convert atom coords into the ssa active interaction region number -------------------------------------------------------------------------- */ - -int AtomVecDPD::coord2ssaAIR(double *x) -{ - int ix, iy, iz; - - ix = iy = iz = 0; - if (x[2] < domain->sublo[2]) iz = -1; - if (x[2] > domain->subhi[2]) iz = 1; - if (x[1] < domain->sublo[1]) iy = -1; - if (x[1] > domain->subhi[1]) iy = 1; - if (x[0] < domain->sublo[0]) ix = -1; - if (x[0] > domain->subhi[0]) ix = 1; - - if(iz < 0){ - return 0; - } else if(iz == 0){ - if( iy<0 ) return 0; // bottom left/middle/right - if( (iy==0) && (ix<0) ) return 0; // left atoms - if( (iy==0) && (ix==0) ) return 1; // Locally owned atoms - if( (iy==0) && (ix>0) ) return 3; // Right atoms - if( (iy>0) && (ix==0) ) return 2; // Top-middle atoms - if( (iy>0) && (ix!=0) ) return 4; // Top-right and top-left atoms - } else { // iz > 0 - if((ix==0) && (iy==0)) return 5; // Back atoms - if((ix==0) && (iy!=0)) return 6; // Top-back and bottom-back atoms - if((ix!=0) && (iy==0)) return 7; // Left-back and right-back atoms - if((ix!=0) && (iy!=0)) return 8; // Back corner atoms - } - - return 0; -} - /* ---------------------------------------------------------------------- */ void AtomVecDPD::unpack_border(int n, int first, double *buf) @@ -573,7 +535,6 @@ void AtomVecDPD::unpack_border(int n, int first, double *buf) uChem[i] = buf[m++]; uCG[i] = buf[m++]; uCGnew[i] = buf[m++]; - ssaAIR[i] = coord2ssaAIR(x[i]); } if (atom->nextra_border) @@ -607,7 +568,6 @@ void AtomVecDPD::unpack_border_vel(int n, int first, double *buf) uChem[i] = buf[m++]; uCG[i] = buf[m++]; uCGnew[i] = buf[m++]; - ssaAIR[i] = coord2ssaAIR(x[i]); } if (atom->nextra_border) @@ -648,7 +608,6 @@ int AtomVecDPD::unpack_border_hybrid(int n, int first, double *buf) uChem[i] = buf[m++]; uCG[i] = buf[m++]; uCGnew[i] = buf[m++]; - ssaAIR[i] = coord2ssaAIR(x[i]); } return m; } @@ -710,7 +669,6 @@ int AtomVecDPD::unpack_exchange(double *buf) uChem[nlocal] = buf[m++]; uCG[nlocal] = buf[m++]; uCGnew[nlocal] = buf[m++]; - ssaAIR[nlocal] = 1; /* coord2ssaAIR(x[nlocal]) */ if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -801,7 +759,6 @@ int AtomVecDPD::unpack_restart(double *buf) uCond[nlocal] = buf[m++]; uMech[nlocal] = buf[m++]; uChem[nlocal] = buf[m++]; - ssaAIR[nlocal] = 1; /* coord2ssaAIR(x[nlocal]) */ double **extra = atom->extra; if (atom->nextra_store) { @@ -842,7 +799,6 @@ void AtomVecDPD::create_atom(int itype, double *coord) uCG[nlocal] = 0.0; uCGnew[nlocal] = 0.0; duChem[nlocal] = 0.0; - ssaAIR[nlocal] = 1; /* coord2ssaAIR(x[nlocal]) */ atom->nlocal++; } @@ -883,7 +839,6 @@ void AtomVecDPD::data_atom(double *coord, tagint imagetmp, char **values) uChem[nlocal] = 0.0; uCG[nlocal] = 0.0; uCGnew[nlocal] = 0.0; - ssaAIR[nlocal] = 1; /* coord2ssaAIR(x[nlocal]) */ atom->nlocal++; } @@ -896,7 +851,6 @@ void AtomVecDPD::data_atom(double *coord, tagint imagetmp, char **values) int AtomVecDPD::data_atom_hybrid(int nlocal, char **values) { dpdTheta[nlocal] = atof(values[0]); - ssaAIR[nlocal] = 1; /* coord2ssaAIR(x[nlocal]) */ return 1; } @@ -978,7 +932,6 @@ bigint AtomVecDPD::memory_usage() if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); - if (atom->memcheck("ssaAIR")) bytes += memory->usage(ssaAIR,nmax); return bytes; } diff --git a/src/USER-DPD/atom_vec_dpd.h b/src/USER-DPD/atom_vec_dpd.h index 077d18485f..234d2ccce7 100644 --- a/src/USER-DPD/atom_vec_dpd.h +++ b/src/USER-DPD/atom_vec_dpd.h @@ -60,7 +60,6 @@ class AtomVecDPD : public AtomVec { bigint memory_usage(); double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; double *duChem; - int *ssaAIR; // Shardlow Splitting Algorithm Active Interaction Region number protected: tagint *tag; @@ -68,7 +67,6 @@ class AtomVecDPD : public AtomVec { imageint *image; double **x,**v,**f; - int coord2ssaAIR(double *); // map atom coord to an AIR number }; } diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 33d6c1c988..5639646156 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -27,6 +27,7 @@ #include "domain.h" #include "neighbor.h" #include "neigh_list.h" +#include "math_special.h" #include "pair_dpd_fdt_energy.h" #include // DBL_EPSILON @@ -36,6 +37,7 @@ using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathSpecial; enum{NONE,HARMONIC}; enum{LUCY}; @@ -53,18 +55,6 @@ typedef double TimerType; TimerType getTimeStamp(void) { return MPI_Wtime(); } double getElapsedTime( const TimerType &t0, const TimerType &t1) { return t1-t0; } -// Fast (non-IEEE) x^p function where x is a double and p is a positive, integral value. -template -inline double fastpowi( const double x, const intType p ) -{ - if (p == 1) return x; - else if (p == 2) return x*x; - else if (p == 3) return x*x*x; - else if (p == 0) return 1.0; - else - return pow(x, (double)p); -} - } // end namespace /* ---------------------------------------------------------------------- */ @@ -80,6 +70,8 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : params = NULL; mol2param = NULL; pairDPDE = NULL; + id_fix_species = NULL; + id_fix_species_old = NULL; const int Verbosity = 1; @@ -130,7 +122,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : else msg += std::string("dense"); - error->message(__FILE__, __LINE__, msg.c_str()); + error->message(FLERR, msg.c_str()); } } @@ -172,7 +164,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : if (comm->me == 0 and Verbosity > 1){ char msg[128]; sprintf(msg, "FixRX: RK4 numSteps= %d", minSteps); - error->message(__FILE__, __LINE__, msg); + error->message(FLERR, msg); } } else if (odeIntegrationFlag == ODE_LAMMPS_RK4 && narg>8){ @@ -198,7 +190,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : //printf("FixRX: RKF45 minSteps= %d maxIters= %d absTol= %e relTol= %e\n", minSteps, maxIters, absTol, relTol); char msg[128]; sprintf(msg, "FixRX: RKF45 minSteps= %d maxIters= %d relTol= %.1e absTol= %.1e diagnosticFrequency= %d", minSteps, maxIters, relTol, absTol, diagnosticFrequency); - error->message(__FILE__, __LINE__, msg); + error->message(FLERR, msg); } } @@ -222,11 +214,17 @@ FixRX::~FixRX() delete [] stoichReactants[ii]; delete [] stoichProducts[ii]; } + delete [] Arr; + delete [] nArr; + delete [] Ea; + delete [] tempExp; delete [] stoich; delete [] stoichReactants; delete [] stoichProducts; delete [] kR; - + delete [] id_fix_species; + delete [] id_fix_species_old; + if (useSparseKinetics){ memory->destroy( sparseKinetics_nu ); memory->destroy( sparseKinetics_nuk ); @@ -244,10 +242,10 @@ void FixRX::post_constructor() bool match; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"property/atom",13) == 0) - error->all(FLERR,"fix rx cannot be combined with fix property/atom"); + if (strncmp(modify->fix[i]->style,"property/atom",13) == 0) + error->all(FLERR,"fix rx cannot be combined with fix property/atom"); - char **tmpspecies = new char*[maxspecies]; + char **tmpspecies = new char*[maxspecies]; for(int jj=0; jj < maxspecies; jj++) tmpspecies[jj] = NULL; @@ -256,7 +254,7 @@ void FixRX::post_constructor() FILE *fp; fp = NULL; if (comm->me == 0) { - fp = fopen(kineticsFile,"r"); + fp = force->open_potential(kineticsFile); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open rx file %s",kineticsFile); @@ -266,7 +264,7 @@ void FixRX::post_constructor() // Assign species names to tmpspecies array and determine the number of unique species - int n,nwords,ispecies; + int n,nwords; char line[MAXLINE],*ptr; int eof = 0; char * word; @@ -306,7 +304,7 @@ void FixRX::post_constructor() if(!match){ if(nUniqueSpecies+1>=maxspecies) error->all(FLERR,"Exceeded the maximum number of species permitted in fix rx."); - tmpspecies[nUniqueSpecies] = new char[strlen(word)]; + tmpspecies[nUniqueSpecies] = new char[strlen(word)+1]; strcpy(tmpspecies[nUniqueSpecies],word); nUniqueSpecies++; } @@ -350,8 +348,8 @@ void FixRX::post_constructor() strncat(str1,tmpspecies[ii],strlen(tmpspecies[ii])); strncat(str2,tmpspecies[ii],strlen(tmpspecies[ii])); strncat(str2,"Old",3); - newarg[ii+3] = new char[strlen(str1)]; - newarg2[ii+3] = new char[strlen(str2)]; + newarg[ii+3] = new char[strlen(str1)+1]; + newarg2[ii+3] = new char[strlen(str2)+1]; strcpy(newarg[ii+3],str1); strcpy(newarg2[ii+3],str2); } @@ -368,11 +366,15 @@ void FixRX::post_constructor() if(nspecies==0) error->all(FLERR,"There are no rx species specified."); - for(int jj=0;jjme == 0 and Verbosity > 1){ char msg[256]; sprintf(msg, "FixRX: Sparsity of Stoichiometric Matrix= %.1f%% non-zeros= %d nspecies= %d nreactions= %d maxReactants= %d maxProducts= %d maxSpecies= %d integralReactions= %d", 100*(double(nzeros) / (nspecies * nreactions)), nzeros, nspecies, nreactions, mxreac, mxprod, (mxreac + mxprod), SparseKinetics_enableIntegralReactions); - error->message(__FILE__, __LINE__, msg); + error->message(FLERR, msg); } // Allocate the sparse matrix data. @@ -757,7 +759,7 @@ void FixRX::pre_force(int vflag) if (nFails > 0){ char sbuf[128]; sprintf(sbuf,"in FixRX::pre_force, ODE solver failed for %d atoms.", nFails); - error->warning(__FILE__, __LINE__, sbuf); + error->warning(FLERR, sbuf); } // Compute and report ODE diagnostics, if requested. @@ -791,7 +793,7 @@ void FixRX::read_file(char *file) FILE *fp; fp = NULL; if (comm->me == 0) { - fp = fopen(file,"r"); + fp = force->open_potential(file); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open rx file %s",file); @@ -828,7 +830,7 @@ void FixRX::read_file(char *file) } // open file on proc 0 - if (comm->me == 0) fp = fopen(file,"r"); + if (comm->me == 0) fp = force->open_potential(file); // read each reaction from kinetics file eof=0; @@ -895,8 +897,10 @@ void FixRX::read_file(char *file) } } if(ispecies==nspecies){ - printf("%s mol fraction is not found in data file\n",word); - printf("nspecies=%d ispecies=%d\n",nspecies,ispecies); + if (comm->me) { + fprintf(stderr,"%s mol fraction is not found in data file\n",word); + fprintf(stderr,"nspecies=%d ispecies=%d\n",nspecies,ispecies); + } error->all(FLERR,"Illegal fix rx command"); } word = strtok(NULL, " \t\n\r\f"); @@ -1612,12 +1616,12 @@ int FixRX::rhs_sparse(double t, const double *y, double *dydt, void *v_params) c { double rxnRateLawForward; if (isIntegral(i)){ - rxnRateLawForward = kFor[i] * ::fastpowi( conc[ nuk[i][0] ], inu[i][0]); + rxnRateLawForward = kFor[i] * powint( conc[ nuk[i][0] ], inu[i][0]); for (int kk = 1; kk < maxReactants; ++kk){ const int k = nuk[i][kk]; if (k == SparseKinetics_invalidIndex) break; //if (k != SparseKinetics_invalidIndex) - rxnRateLawForward *= ::fastpowi( conc[k], inu[i][kk] ); + rxnRateLawForward *= powint( conc[k], inu[i][kk] ); } } else { rxnRateLawForward = kFor[i] * pow( conc[ nuk[i][0] ], nu[i][0]); @@ -1692,7 +1696,7 @@ void FixRX::computeLocalTemperature() int newton_pair = force->newton_pair; // local temperature variables - double wij, fr, fr4; + double wij=0.0, fr, fr4; double *dpdTheta = atom->dpdTheta; // Initialize the local density and local temperature arrays @@ -1742,7 +1746,7 @@ void FixRX::computeLocalTemperature() if(wtFlag==LUCY){ wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); dpdThetaLocal[i] += wij/dpdTheta[j]; - if (newton_pair || j < nlocal) + if (newton_pair || j < nlocal) dpdThetaLocal[j] += wij/dpdTheta[i]; } diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index 7248df2e67..1b58c2f0bd 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -105,8 +105,29 @@ FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : if(pairDPD == NULL && pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt or dpd/fdt/energy with fix shardlow"); - if(!(atom->dpd_flag)) - error->all(FLERR,"Must use atom_style dpd with fix shardlow"); + + // Setup the ssaAIR array + atom->ssaAIR = NULL; + grow_arrays(atom->nmax); + for (int i = 0; i < atom->nlocal; i++) { + atom->ssaAIR[i] = 1; /* coord2ssaAIR(x[i]) */ + } + + // Setup callbacks for maintaining atom->ssaAIR[] + atom->add_callback(0); // grow (aka exchange) + atom->add_callback(1); // restart + atom->add_callback(2); // border +} + +/* ---------------------------------------------------------------------- */ + +FixShardlow::~FixShardlow() +{ + atom->delete_callback(id, 0); + atom->delete_callback(id, 1); + atom->delete_callback(id, 2); + + memory->destroy(atom->ssaAIR); } /* ---------------------------------------------------------------------- */ @@ -506,3 +527,84 @@ void FixShardlow::unpack_reverse_comm(int n, int *list, double *buf) } } } + +/* ---------------------------------------------------------------------- + convert atom coords into the ssa active interaction region number +------------------------------------------------------------------------- */ + +int FixShardlow::coord2ssaAIR(double *x) +{ + int ix, iy, iz; + + ix = iy = iz = 0; + if (x[2] < domain->sublo[2]) iz = -1; + if (x[2] >= domain->subhi[2]) iz = 1; + if (x[1] < domain->sublo[1]) iy = -1; + if (x[1] >= domain->subhi[1]) iy = 1; + if (x[0] < domain->sublo[0]) ix = -1; + if (x[0] >= domain->subhi[0]) ix = 1; + + if(iz < 0){ + return 0; + } else if(iz == 0){ + if( iy<0 ) return 0; // bottom left/middle/right + if( (iy==0) && (ix<0) ) return 0; // left atoms + if( (iy==0) && (ix==0) ) return 1; // Locally owned atoms + if( (iy==0) && (ix>0) ) return 3; // Right atoms + if( (iy>0) && (ix==0) ) return 2; // Top-middle atoms + if( (iy>0) && (ix!=0) ) return 4; // Top-right and top-left atoms + } else { // iz > 0 + if((ix==0) && (iy==0)) return 5; // Back atoms + if((ix==0) && (iy!=0)) return 6; // Top-back and bottom-back atoms + if((ix!=0) && (iy==0)) return 7; // Left-back and right-back atoms + if((ix!=0) && (iy!=0)) return 8; // Back corner atoms + } + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +void FixShardlow::grow_arrays(int nmax) +{ + memory->grow(atom->ssaAIR,nmax,"fix_shardlow:ssaAIR"); +} + +void FixShardlow::copy_arrays(int i, int j, int delflag) +{ + atom->ssaAIR[j] = atom->ssaAIR[i]; +} + +void FixShardlow::set_arrays(int i) +{ + atom->ssaAIR[i] = 1; /* coord2ssaAIR(x[i]) */ +} + +int FixShardlow::unpack_border(int n, int first, double *buf) +{ + int i,last = first + n; + for (i = first; i < last; i++) { + atom->ssaAIR[i] = coord2ssaAIR(atom->x[i]); + } + return 0; +} + +int FixShardlow::unpack_exchange(int i, double *buf) +{ + atom->ssaAIR[i] = 1; /* coord2ssaAIR(x[i]) */ + return 0; +} + +void FixShardlow::unpack_restart(int i, int nth) +{ + atom->ssaAIR[i] = 1; /* coord2ssaAIR(x[i]) */ +} + +double FixShardlow::memory_usage() +{ + double bytes = 0.0; + bytes += memory->usage(atom->ssaAIR,atom->nmax); + bytes += sizeof(double)*3*atom->nghost; // v_t0[] + return bytes; +} + diff --git a/src/USER-DPD/fix_shardlow.h b/src/USER-DPD/fix_shardlow.h index 6421737b3d..4afce632ce 100644 --- a/src/USER-DPD/fix_shardlow.h +++ b/src/USER-DPD/fix_shardlow.h @@ -27,12 +27,23 @@ namespace LAMMPS_NS { class FixShardlow : public Fix { public: FixShardlow(class LAMMPS *, int, char **); - virtual ~FixShardlow() {} + ~FixShardlow(); int setmask(); virtual void init_list(int,class NeighList *); virtual void setup(int); virtual void initial_integrate(int); + void grow_arrays(int); + void copy_arrays(int, int, int); + void set_arrays(int); + +// int pack_border(int, int *, double *); + int unpack_border(int, int, double *); + int unpack_exchange(int, double *); + void unpack_restart(int, int); + + double memory_usage(); + protected: int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); @@ -46,6 +57,8 @@ class FixShardlow : public Fix { private: class NeighList *list; + int coord2ssaAIR(double *); // map atom coord to an AIR number + }; } diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp index 21c5e420fa..4ad4582f0f 100644 --- a/src/USER-DPD/pair_dpd_fdt.cpp +++ b/src/USER-DPD/pair_dpd_fdt.cpp @@ -179,8 +179,6 @@ void PairDPDfdt::settings(int narg, char **arg) temperature = force->numeric(FLERR,arg[0]); cut_global = force->numeric(FLERR,arg[1]); seed = force->inumeric(FLERR,arg[2]); - if (atom->dpd_flag != 1) - error->all(FLERR,"pair_style dpd/fdt requires atom_style dpd"); // initialize Marsaglia RNG with processor-unique seed diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index db3885b762..3e3e1b4e27 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -75,13 +75,16 @@ PairExp6rx::PairExp6rx(LAMMPS *lmp) : Pair(lmp) PairExp6rx::~PairExp6rx() { + for (int i=0; i < nparams; ++i) { + delete[] params[i].name; + delete[] params[i].potential; + } memory->destroy(params); memory->destroy(mol2param); if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); - memory->destroy(cut); } } @@ -631,6 +634,9 @@ void PairExp6rx::coeff(int narg, char **arg) //printf("params[%d].name= %s ispecies= %d potential= %s potentialType= %d\n", iparam, params[iparam].name, params[iparam].ispecies, params[iparam].potential, params[iparam].potentialType); } } + delete[] site1; + delete[] site2; + site1 = site2 = NULL; fuchslinR = force->numeric(FLERR,arg[5]); fuchslinEpsilon = force->numeric(FLERR,arg[6]); From 1a6f8965b30965e15586b3f4c7cc5327a5c9d2ce Mon Sep 17 00:00:00 2001 From: sjplimp Date: Fri, 1 Jul 2016 23:32:48 +0000 Subject: [PATCH 18/20] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15254 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/html/_sources/fix_shardlow.txt | 3 --- doc/html/_sources/pair_dpd_fdt.txt | 4 ---- doc/html/fix_shardlow.html | 2 -- doc/html/pair_dpd_fdt.html | 3 --- doc/html/searchindex.js | 2 +- doc/src/fix_shardlow.txt | 3 --- doc/src/pair_dpd_fdt.txt | 4 ---- 7 files changed, 1 insertion(+), 20 deletions(-) diff --git a/doc/html/_sources/fix_shardlow.txt b/doc/html/_sources/fix_shardlow.txt index 419dadd4ea..623c7621a2 100644 --- a/doc/html/_sources/fix_shardlow.txt +++ b/doc/html/_sources/fix_shardlow.txt @@ -70,9 +70,6 @@ lengths to be larger than twice the cutoff+skin. Generally, the domain decomposition is dependent on the number of processors requested. -This fix also requires :doc:`atom_style dpd ` to be used -due to shared data structures. - Related commands """""""""""""""" diff --git a/doc/html/_sources/pair_dpd_fdt.txt b/doc/html/_sources/pair_dpd_fdt.txt index d665d196af..1c35614fa6 100644 --- a/doc/html/_sources/pair_dpd_fdt.txt +++ b/doc/html/_sources/pair_dpd_fdt.txt @@ -135,10 +135,6 @@ Pair style *dpd/fdt/energy* requires :doc:`atom_style dpd ` to be used in order to properly account for the particle internal energies and temperatures. -Pair style *dpd/fdt* currently also requires -:doc:`atom_style dpd ` to be used in conjunction with -:doc:`fix shardlow ` due to shared data structures. - Related commands """""""""""""""" diff --git a/doc/html/fix_shardlow.html b/doc/html/fix_shardlow.html index 3f9d81d749..e54353f7eb 100644 --- a/doc/html/fix_shardlow.html +++ b/doc/html/fix_shardlow.html @@ -180,8 +180,6 @@ integration, e.g. -

This fix also requires atom_style dpd to be used -due to shared data structures.