diff --git a/lammps/allocate.c b/common/allocate.c
similarity index 100%
rename from lammps/allocate.c
rename to common/allocate.c
diff --git a/gromacs/eam_utils.c b/common/eam_utils.c
similarity index 100%
rename from gromacs/eam_utils.c
rename to common/eam_utils.c
diff --git a/gromacs/includes/allocate.h b/common/includes/allocate.h
similarity index 100%
rename from gromacs/includes/allocate.h
rename to common/includes/allocate.h
diff --git a/gromacs/includes/eam.h b/common/includes/eam.h
similarity index 100%
rename from gromacs/includes/eam.h
rename to common/includes/eam.h
diff --git a/gromacs/includes/likwid-marker.h b/common/includes/likwid-marker.h
similarity index 100%
rename from gromacs/includes/likwid-marker.h
rename to common/includes/likwid-marker.h
diff --git a/lammps/includes/parameter.h b/common/includes/parameter.h
similarity index 98%
rename from lammps/includes/parameter.h
rename to common/includes/parameter.h
index 9a1add6..7cd2296 100644
--- a/lammps/includes/parameter.h
+++ b/common/includes/parameter.h
@@ -34,6 +34,7 @@ typedef struct {
char* param_file;
char* input_file;
char* vtk_file;
+ char* xtc_file;
MD_FLOAT epsilon;
MD_FLOAT sigma;
MD_FLOAT sigma6;
@@ -44,6 +45,7 @@ typedef struct {
int ntimes;
int nstat;
int reneigh_every;
+ int prune_every;
int x_out_every;
int v_out_every;
int half_neigh;
diff --git a/gromacs/includes/simd.h b/common/includes/simd.h
similarity index 100%
rename from gromacs/includes/simd.h
rename to common/includes/simd.h
diff --git a/gromacs/includes/simd/avx512_double.h b/common/includes/simd/avx512_double.h
similarity index 100%
rename from gromacs/includes/simd/avx512_double.h
rename to common/includes/simd/avx512_double.h
diff --git a/gromacs/includes/simd/avx512_float.h b/common/includes/simd/avx512_float.h
similarity index 100%
rename from gromacs/includes/simd/avx512_float.h
rename to common/includes/simd/avx512_float.h
diff --git a/gromacs/includes/simd/avx_avx2_double.h b/common/includes/simd/avx_avx2_double.h
similarity index 100%
rename from gromacs/includes/simd/avx_avx2_double.h
rename to common/includes/simd/avx_avx2_double.h
diff --git a/gromacs/includes/simd/avx_avx2_float.h b/common/includes/simd/avx_avx2_float.h
similarity index 100%
rename from gromacs/includes/simd/avx_avx2_float.h
rename to common/includes/simd/avx_avx2_float.h
diff --git a/gromacs/includes/thermo.h b/common/includes/thermo.h
similarity index 100%
rename from gromacs/includes/thermo.h
rename to common/includes/thermo.h
diff --git a/gromacs/includes/timers.h b/common/includes/timers.h
similarity index 100%
rename from gromacs/includes/timers.h
rename to common/includes/timers.h
diff --git a/gromacs/includes/timing.h b/common/includes/timing.h
similarity index 100%
rename from gromacs/includes/timing.h
rename to common/includes/timing.h
diff --git a/lammps/parameter.c b/common/parameter.c
similarity index 93%
rename from lammps/parameter.c
rename to common/parameter.c
index e5282d2..c38276d 100644
--- a/lammps/parameter.c
+++ b/common/parameter.c
@@ -31,6 +31,7 @@
void initParameter(Parameter *param) {
param->input_file = NULL;
param->vtk_file = NULL;
+ param->xtc_file = NULL;
param->eam_file = NULL;
param->force_field = FF_LJ;
param->epsilon = 1.0;
@@ -54,6 +55,7 @@ void initParameter(Parameter *param) {
param->mass = 1.0;
param->dtforce = 0.5 * param->dt;
param->reneigh_every = 20;
+ param->prune_every = 1000;
param->x_out_every = 20;
param->v_out_every = 5;
param->half_neigh = 0;
@@ -98,6 +100,7 @@ void readParameter(Parameter *param, const char *filename) {
PARSE_STRING(input_file);
PARSE_STRING(eam_file);
PARSE_STRING(vtk_file);
+ PARSE_STRING(xtc_file);
PARSE_REAL(epsilon);
PARSE_REAL(sigma);
PARSE_REAL(k_s);
@@ -125,6 +128,7 @@ void readParameter(Parameter *param, const char *filename) {
PARSE_INT(pbc_z);
PARSE_INT(nstat);
PARSE_INT(reneigh_every);
+ PARSE_INT(prune_every);
PARSE_INT(x_out_every);
PARSE_INT(v_out_every);
PARSE_INT(half_neigh);
@@ -150,12 +154,20 @@ void printParameter(Parameter *param) {
printf("VTK file: %s\n", param->vtk_file);
}
+ if(param->xtc_file != NULL) {
+ printf("XTC file: %s\n", param->xtc_file);
+ }
+
if(param->eam_file != NULL) {
printf("EAM file: %s\n", param->eam_file);
}
printf("\tForce field: %s\n", ff2str(param->force_field));
+ #ifdef CLUSTER_M
+ printf("\tKernel: %s, MxN: %dx%d, Vector width: %d\n", KERNEL_NAME, CLUSTER_M, CLUSTER_N, VECTOR_WIDTH);
+ #else
printf("\tKernel: %s\n", KERNEL_NAME);
+ #endif
printf("\tData layout: %s\n", POS_DATA_LAYOUT);
printf("\tFloating-point precision: %s\n", PRECISION_STRING);
printf("\tUnit cells (nx, ny, nz): %d, %d, %d\n", param->nx, param->ny, param->nz);
@@ -173,6 +185,7 @@ void printParameter(Parameter *param) {
printf("\tNumber of timesteps: %d\n", param->ntimes);
printf("\tReport stats every (timesteps): %d\n", param->nstat);
printf("\tReneighbor every (timesteps): %d\n", param->reneigh_every);
+ printf("\tPrune every (timesteps): %d\n", param->prune_every);
printf("\tOutput positions every (timesteps): %d\n", param->x_out_every);
printf("\tOutput velocities every (timesteps): %d\n", param->v_out_every);
printf("\tDelta time (dt): %e\n", param->dt);
diff --git a/lammps/thermo.c b/common/thermo.c
similarity index 100%
rename from lammps/thermo.c
rename to common/thermo.c
diff --git a/gromacs/timing.c b/common/timing.c
similarity index 100%
rename from gromacs/timing.c
rename to common/timing.c
diff --git a/gromacs/allocate.c b/gromacs/allocate.c
deleted file mode 100644
index 3aa4e1a..0000000
--- a/gromacs/allocate.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-#include
-#include
-#include
-
-void* allocate (int alignment, size_t bytesize)
-{
- int errorCode;
- void* ptr;
-
- errorCode = posix_memalign(&ptr, alignment, bytesize);
-
- if (errorCode) {
- if (errorCode == EINVAL) {
- fprintf(stderr,
- "Error: Alignment parameter is not a power of two\n");
- exit(EXIT_FAILURE);
- }
- if (errorCode == ENOMEM) {
- fprintf(stderr,
- "Error: Insufficient memory to fulfill the request\n");
- exit(EXIT_FAILURE);
- }
- }
-
- if (ptr == NULL) {
- fprintf(stderr, "Error: posix_memalign failed!\n");
- exit(EXIT_FAILURE);
- }
-
- return ptr;
-}
-
-void* reallocate (
- void* ptr,
- int alignment,
- size_t newBytesize,
- size_t oldBytesize)
-{
- void* newarray = allocate(alignment, newBytesize);
-
- if(ptr != NULL) {
- memcpy(newarray, ptr, oldBytesize);
- free(ptr);
- }
-
- return newarray;
-}
diff --git a/gromacs/includes/atom.h b/gromacs/includes/atom.h
index 6590419..7c742d0 100644
--- a/gromacs/includes/atom.h
+++ b/gromacs/includes/atom.h
@@ -130,15 +130,31 @@ extern void growAtom(Atom*);
extern void growClusters(Atom*);
#ifdef AOS
-#define POS_DATA_LAYOUT "AoS"
-#define atom_x(i) atom->x[(i) * 3 + 0]
-#define atom_y(i) atom->x[(i) * 3 + 1]
-#define atom_z(i) atom->x[(i) * 3 + 2]
+# define POS_DATA_LAYOUT "AoS"
+# define atom_x(i) atom->x[(i) * 3 + 0]
+# define atom_y(i) atom->x[(i) * 3 + 1]
+# define atom_z(i) atom->x[(i) * 3 + 2]
+/*
+# define atom_vx(i) atom->vx[(i) * 3 + 0]
+# define atom_vy(i) atom->vx[(i) * 3 + 1]
+# define atom_vz(i) atom->vx[(i) * 3 + 2]
+# define atom_fx(i) atom->fx[(i) * 3 + 0]
+# define atom_fy(i) atom->fx[(i) * 3 + 1]
+# define atom_fz(i) atom->fx[(i) * 3 + 2]
+*/
#else
-#define POS_DATA_LAYOUT "SoA"
-#define atom_x(i) atom->x[i]
-#define atom_y(i) atom->y[i]
-#define atom_z(i) atom->z[i]
+# define POS_DATA_LAYOUT "SoA"
+# define atom_x(i) atom->x[i]
+# define atom_y(i) atom->y[i]
+# define atom_z(i) atom->z[i]
#endif
+// TODO: allow to switch velocites and forces to AoS
+# define atom_vx(i) atom->vx[i]
+# define atom_vy(i) atom->vy[i]
+# define atom_vz(i) atom->vz[i]
+# define atom_fx(i) atom->fx[i]
+# define atom_fy(i) atom->fy[i]
+# define atom_fz(i) atom->fz[i]
+
#endif
diff --git a/gromacs/includes/parameter.h b/gromacs/includes/parameter.h
deleted file mode 100644
index 1177b94..0000000
--- a/gromacs/includes/parameter.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#ifndef __PARAMETER_H_
-#define __PARAMETER_H_
-
-#if PRECISION == 1
-#define MD_FLOAT float
-#else
-#define MD_FLOAT double
-#endif
-
-typedef struct {
- int force_field;
- char* param_file;
- char* input_file;
- char* vtk_file;
- char* xtc_file;
- MD_FLOAT epsilon;
- MD_FLOAT sigma;
- MD_FLOAT sigma6;
- MD_FLOAT temp;
- MD_FLOAT rho;
- MD_FLOAT mass;
- int ntypes;
- int ntimes;
- int nstat;
- int reneigh_every;
- int prune_every;
- int x_out_every;
- int v_out_every;
- int half_neigh;
- int nx, ny, nz;
- MD_FLOAT dt;
- MD_FLOAT dtforce;
- MD_FLOAT cutforce;
- MD_FLOAT skin;
- MD_FLOAT cutneigh;
- MD_FLOAT lattice;
- MD_FLOAT xlo, xhi, ylo, yhi, zlo, zhi;
- MD_FLOAT xprd, yprd, zprd;
- double proc_freq;
- char* eam_file;
-} Parameter;
-
-void initParameter(Parameter*);
-void readParameter(Parameter*, const char*);
-void printParameter(Parameter*);
-
-#endif
diff --git a/gromacs/parameter.c b/gromacs/parameter.c
deleted file mode 100644
index 8e598f2..0000000
--- a/gromacs/parameter.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-#include
-#include
-//---
-#include
-#include
-#include
-
-void initParameter(Parameter *param) {
- param->input_file = NULL;
- param->vtk_file = NULL;
- param->xtc_file = NULL;
- param->eam_file = NULL;
- param->force_field = FF_LJ;
- param->epsilon = 1.0;
- param->sigma = 1.0;
- param->sigma6 = 1.0;
- param->rho = 0.8442;
- param->ntypes = 4;
- param->ntimes = 200;
- param->dt = 0.005;
- param->nx = 32;
- param->ny = 32;
- param->nz = 32;
- param->half_neigh = 0;
- param->cutforce = 2.5;
- param->skin = 0.3;
- param->cutneigh = param->cutforce + param->skin;
- param->temp = 1.44;
- param->nstat = 100;
- param->mass = 1.0;
- param->dtforce = 0.5 * param->dt;
- param->reneigh_every = 20;
- param->prune_every = 1000;
- param->x_out_every = 20;
- param->v_out_every = 5;
- param->proc_freq = 2.4;
-}
-
-void readParameter(Parameter *param, const char *filename) {
- FILE *fp = fopen(filename, "r");
- char line[MAXLINE];
- int i;
-
- if(!fp) {
- fprintf(stderr, "Could not open parameter file: %s\n", filename);
- exit(-1);
- }
-
- while(!feof(fp)) {
- line[0] = '\0';
- fgets(line, MAXLINE, fp);
- for(i = 0; line[i] != '\0' && line[i] != '#'; i++);
- line[i] = '\0';
-
- char *tok = strtok(line, " ");
- char *val = strtok(NULL, " ");
-
- #define PARSE_PARAM(p,f) if(strncmp(tok, #p, sizeof(#p) / sizeof(#p[0]) - 1) == 0) { param->p = f(val); }
- #define PARSE_STRING(p) PARSE_PARAM(p, strdup)
- #define PARSE_INT(p) PARSE_PARAM(p, atoi)
- #define PARSE_REAL(p) PARSE_PARAM(p, atof)
-
- if(tok != NULL && val != NULL) {
- PARSE_PARAM(force_field, str2ff);
- PARSE_STRING(input_file);
- PARSE_STRING(eam_file);
- PARSE_STRING(vtk_file);
- PARSE_STRING(xtc_file);
- PARSE_REAL(epsilon);
- PARSE_REAL(sigma);
- PARSE_REAL(rho);
- PARSE_REAL(dt);
- PARSE_REAL(cutforce);
- PARSE_REAL(skin);
- PARSE_REAL(temp);
- PARSE_REAL(mass);
- PARSE_REAL(proc_freq);
- PARSE_INT(ntypes);
- PARSE_INT(ntimes);
- PARSE_INT(nx);
- PARSE_INT(ny);
- PARSE_INT(nz);
- PARSE_INT(half_neigh);
- PARSE_INT(nstat);
- PARSE_INT(reneigh_every);
- PARSE_INT(prune_every);
- PARSE_INT(x_out_every);
- PARSE_INT(v_out_every);
- }
- }
-
- // Update sigma6 parameter
- MD_FLOAT s2 = param->sigma * param->sigma;
- param->sigma6 = s2 * s2 * s2;
- fclose(fp);
-}
-
-void printParameter(Parameter *param) {
- printf("Parameters:\n");
- if(param->input_file != NULL) {
- printf("Input file: %s\n", param->input_file);
- }
-
- if(param->vtk_file != NULL) {
- printf("VTK file: %s\n", param->vtk_file);
- }
-
- if(param->xtc_file != NULL) {
- printf("XTC file: %s\n", param->xtc_file);
- }
-
- if(param->eam_file != NULL) {
- printf("EAM file: %s\n", param->eam_file);
- }
-
- printf("\tForce field: %s\n", ff2str(param->force_field));
- printf("\tKernel: %s, MxN: %dx%d, Vector width: %d\n", KERNEL_NAME, CLUSTER_M, CLUSTER_N, VECTOR_WIDTH);
- printf("\tData layout: %s\n", POS_DATA_LAYOUT);
- printf("\tFloating-point precision: %s\n", PRECISION_STRING);
- printf("\tUnit cells (nx, ny, nz): %d, %d, %d\n", param->nx, param->ny, param->nz);
- printf("\tDomain box sizes (x, y, z): %e, %e, %e\n", param->xprd, param->yprd, param->zprd);
- printf("\tLattice size: %e\n", param->lattice);
- printf("\tEpsilon: %e\n", param->epsilon);
- printf("\tSigma: %e\n", param->sigma);
- printf("\tTemperature: %e\n", param->temp);
- printf("\tRHO: %e\n", param->rho);
- printf("\tMass: %e\n", param->mass);
- printf("\tNumber of types: %d\n", param->ntypes);
- printf("\tNumber of timesteps: %d\n", param->ntimes);
- printf("\tReport stats every (timesteps): %d\n", param->nstat);
- printf("\tReneighbor every (timesteps): %d\n", param->reneigh_every);
- printf("\tPrune every (timesteps): %d\n", param->prune_every);
- printf("\tOutput positions every (timesteps): %d\n", param->x_out_every);
- printf("\tOutput velocities every (timesteps): %d\n", param->v_out_every);
- printf("\tDelta time (dt): %e\n", param->dt);
- printf("\tCutoff radius: %e\n", param->cutforce);
- printf("\tSkin: %e\n", param->skin);
- printf("\tHalf neighbor lists: %d\n", param->half_neigh);
- printf("\tProcessor frequency (GHz): %.4f\n", param->proc_freq);
-}
diff --git a/gromacs/thermo.c b/gromacs/thermo.c
deleted file mode 100644
index 73e94ae..0000000
--- a/gromacs/thermo.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-#include
-#include
-
-#include
-#include
-
-static int *steparr;
-static MD_FLOAT *tmparr;
-static MD_FLOAT *engarr;
-static MD_FLOAT *prsarr;
-static MD_FLOAT mvv2e;
-static MD_FLOAT dof_boltz;
-static MD_FLOAT t_scale;
-static MD_FLOAT p_scale;
-static MD_FLOAT e_scale;
-static MD_FLOAT t_act;
-static MD_FLOAT p_act;
-static MD_FLOAT e_act;
-static int mstat;
-
-/* exported subroutines */
-void setupThermo(Parameter *param, int natoms)
-{
- int maxstat = param->ntimes / param->nstat + 2;
-
- steparr = (int*) malloc(maxstat * sizeof(int));
- tmparr = (MD_FLOAT*) malloc(maxstat * sizeof(MD_FLOAT));
- engarr = (MD_FLOAT*) malloc(maxstat * sizeof(MD_FLOAT));
- prsarr = (MD_FLOAT*) malloc(maxstat * sizeof(MD_FLOAT));
-
- if(param->force_field == FF_LJ) {
- mvv2e = 1.0;
- dof_boltz = (natoms * 3 - 3);
- t_scale = mvv2e / dof_boltz;
- p_scale = 1.0 / 3 / param->xprd / param->yprd / param->zprd;
- e_scale = 0.5;
- } else {
- mvv2e = 1.036427e-04;
- dof_boltz = (natoms * 3 - 3) * 8.617343e-05;
- t_scale = mvv2e / dof_boltz;
- p_scale = 1.602176e+06 / 3 / param->xprd / param->yprd / param->zprd;
- e_scale = 524287.985533;//16.0;
- param->dtforce /= mvv2e;
- }
-}
-
-void computeThermo(int iflag, Parameter *param, Atom *atom)
-{
- MD_FLOAT t = 0.0, p;
- MD_FLOAT* vx = atom->vx;
- MD_FLOAT* vy = atom->vy;
- MD_FLOAT* vz = atom->vz;
-
- for(int i = 0; i < atom->Nlocal; i++) {
- t += (vx[i] * vx[i] + vy[i] * vy[i] + vz[i] * vz[i]) * param->mass;
- }
-
- t = t * t_scale;
- p = (t * dof_boltz) * p_scale;
- int istep = iflag;
-
- if(iflag == -1){
- istep = param->ntimes;
- }
- if(iflag == 0){
- mstat = 0;
- }
-
- steparr[mstat] = istep;
- tmparr[mstat] = t;
- prsarr[mstat] = p;
- mstat++;
- fprintf(stdout, "%i\t%e\t%e\n", istep, t, p);
-}
-
-void adjustThermo(Parameter *param, Atom *atom)
-{
- /* zero center-of-mass motion */
- MD_FLOAT vxtot = 0.0; MD_FLOAT vytot = 0.0; MD_FLOAT vztot = 0.0;
- MD_FLOAT* vx = atom->vx; MD_FLOAT* vy = atom->vy; MD_FLOAT* vz = atom->vz;
-
- for(int i = 0; i < atom->Nlocal; i++) {
- vxtot += vx[i];
- vytot += vy[i];
- vztot += vz[i];
- }
-
- vxtot = vxtot / atom->Natoms;
- vytot = vytot / atom->Natoms;
- vztot = vztot / atom->Natoms;
-
- for(int i = 0; i < atom->Nlocal; i++) {
- vx[i] -= vxtot;
- vy[i] -= vytot;
- vz[i] -= vztot;
- }
-
- t_act = 0;
- MD_FLOAT t = 0.0;
-
- for(int i = 0; i < atom->Nlocal; i++) {
- t += (vx[i] * vx[i] + vy[i] * vy[i] + vz[i] * vz[i]) * param->mass;
- }
-
- t *= t_scale;
- MD_FLOAT factor = sqrt(param->temp / t);
-
- for(int i = 0; i < atom->Nlocal; i++) {
- vx[i] *= factor;
- vy[i] *= factor;
- vz[i] *= factor;
- }
-}
diff --git a/lammps/eam_utils.c b/lammps/eam_utils.c
deleted file mode 100644
index aaa5f40..0000000
--- a/lammps/eam_utils.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#ifndef MAXLINE
-#define MAXLINE 4096
-#endif
-
-void initEam(Eam* eam, Parameter* param) {
- int ntypes = param->ntypes;
- eam->nmax = 0;
- eam->fp = NULL;
- coeff(eam, param);
- init_style(eam, param);
-}
-
-void coeff(Eam* eam, Parameter* param) {
- read_eam_file(&eam->file, param->eam_file);
- param->mass = eam->file.mass;
- param->cutforce = eam->file.cut;
- param->cutneigh = param->cutforce + 1.0;
- param->temp = 600.0;
- param->dt = 0.001;
- param->rho = 0.07041125;
- param->dtforce = 0.5 * param->dt / param->mass;
-}
-
-void init_style(Eam* eam, Parameter* param) {
- // convert read-in file(s) to arrays and spline them
- file2array(eam);
- array2spline(eam, param);
-}
-
-void read_eam_file(Funcfl* file, const char* filename) {
- FILE* fptr;
- char line[MAXLINE];
-
- fptr = fopen(filename, "r");
- if(fptr == NULL) {
- printf("Can't open EAM Potential file: %s\n", filename);
- exit(0);
- }
-
- int tmp;
- fgets(line, MAXLINE, fptr);
- fgets(line, MAXLINE, fptr);
- sscanf(line, "%d %lg", &tmp, &(file->mass));
- fgets(line, MAXLINE, fptr);
- sscanf(line, "%d %lg %d %lg %lg", &file->nrho, &file->drho, &file->nr, &file->dr, &file->cut);
-
- //printf("Read: %lf %i %lf %i %lf %lf\n",file->mass,file->nrho,file->drho,file->nr,file->dr,file->cut);
- file->frho = (MD_FLOAT *) allocate(ALIGNMENT, (file->nrho + 1) * sizeof(MD_FLOAT));
- file->rhor = (MD_FLOAT *) allocate(ALIGNMENT, (file->nr + 1) * sizeof(MD_FLOAT));
- file->zr = (MD_FLOAT *) allocate(ALIGNMENT, (file->nr + 1) * sizeof(MD_FLOAT));
- grab(fptr, file->nrho, file->frho);
- grab(fptr, file->nr, file->zr);
- grab(fptr, file->nr, file->rhor);
- for(int i = file->nrho; i > 0; i--) file->frho[i] = file->frho[i - 1];
- for(int i = file->nr; i > 0; i--) file->rhor[i] = file->rhor[i - 1];
- for(int i = file->nr; i > 0; i--) file->zr[i] = file->zr[i - 1];
- fclose(fptr);
-}
-
-void file2array(Eam* eam) {
- int i, j, k, m, n;
- double sixth = 1.0 / 6.0;
-
- // determine max function params from all active funcfl files
- // active means some element is pointing at it via map
- int active;
- double rmax, rhomax;
- eam->dr = eam->drho = rmax = rhomax = 0.0;
- active = 0;
- Funcfl* file = &eam->file;
- eam->dr = MAX(eam->dr, file->dr);
- eam->drho = MAX(eam->drho, file->drho);
- rmax = MAX(rmax, (file->nr - 1) * file->dr);
- rhomax = MAX(rhomax, (file->nrho - 1) * file->drho);
-
- // set nr,nrho from cutoff and spacings
- // 0.5 is for round-off in divide
- eam->nr = (int)(rmax / eam->dr + 0.5);
- eam->nrho = (int)(rhomax / eam->drho + 0.5);
-
- // ------------------------------------------------------------------
- // setup frho arrays
- // ------------------------------------------------------------------
-
- // allocate frho arrays
- // nfrho = # of funcfl files + 1 for zero array
- eam->frho = (MD_FLOAT *) allocate(ALIGNMENT, (eam->nrho + 1) * sizeof(MD_FLOAT));
-
- // interpolate each file's frho to a single grid and cutoff
- double r, p, cof1, cof2, cof3, cof4;
- n = 0;
-
- for(m = 1; m <= eam->nrho; m++) {
- r = (m - 1) * eam->drho;
- p = r / file->drho + 1.0;
- k = (int)(p);
- k = MIN(k, file->nrho - 2);
- k = MAX(k, 2);
- p -= k;
- p = MIN(p, 2.0);
- cof1 = -sixth * p * (p - 1.0) * (p - 2.0);
- cof2 = 0.5 * (p * p - 1.0) * (p - 2.0);
- cof3 = -0.5 * p * (p + 1.0) * (p - 2.0);
- cof4 = sixth * p * (p * p - 1.0);
- eam->frho[m] = cof1 * file->frho[k - 1] + cof2 * file->frho[k] +
- cof3 * file->frho[k + 1] + cof4 * file->frho[k + 2];
- }
-
-
- // ------------------------------------------------------------------
- // setup rhor arrays
- // ------------------------------------------------------------------
-
- // allocate rhor arrays
- // nrhor = # of funcfl files
- eam->rhor = (MD_FLOAT *) allocate(ALIGNMENT, (eam->nr + 1) * sizeof(MD_FLOAT));
-
- // interpolate each file's rhor to a single grid and cutoff
- for(m = 1; m <= eam->nr; m++) {
- r = (m - 1) * eam->dr;
- p = r / file->dr + 1.0;
- k = (int)(p);
- k = MIN(k, file->nr - 2);
- k = MAX(k, 2);
- p -= k;
- p = MIN(p, 2.0);
- cof1 = -sixth * p * (p - 1.0) * (p - 2.0);
- cof2 = 0.5 * (p * p - 1.0) * (p - 2.0);
- cof3 = -0.5 * p * (p + 1.0) * (p - 2.0);
- cof4 = sixth * p * (p * p - 1.0);
- eam->rhor[m] = cof1 * file->rhor[k - 1] + cof2 * file->rhor[k] +
- cof3 * file->rhor[k + 1] + cof4 * file->rhor[k + 2];
- //if(m==119)printf("BuildRho: %e %e %e %e %e %e\n",rhor[m],cof1,cof2,cof3,cof4,file->rhor[k]);
- }
-
- // type2rhor[i][j] = which rhor array (0 to nrhor-1) each type pair maps to
- // for funcfl files, I,J mapping only depends on I
- // OK if map = -1 (non-EAM atom in pair hybrid) b/c type2rhor not used
-
- // ------------------------------------------------------------------
- // setup z2r arrays
- // ------------------------------------------------------------------
-
- // allocate z2r arrays
- // nz2r = N*(N+1)/2 where N = # of funcfl files
- eam->z2r = (MD_FLOAT *) allocate(ALIGNMENT, (eam->nr + 1) * sizeof(MD_FLOAT));
-
- // create a z2r array for each file against other files, only for I >= J
- // interpolate zri and zrj to a single grid and cutoff
- double zri, zrj;
- Funcfl* ifile = &eam->file;
- Funcfl* jfile = &eam->file;
-
- for(m = 1; m <= eam->nr; m++) {
- r = (m - 1) * eam->dr;
- p = r / ifile->dr + 1.0;
- k = (int)(p);
- k = MIN(k, ifile->nr - 2);
- k = MAX(k, 2);
- p -= k;
- p = MIN(p, 2.0);
- cof1 = -sixth * p * (p - 1.0) * (p - 2.0);
- cof2 = 0.5 * (p * p - 1.0) * (p - 2.0);
- cof3 = -0.5 * p * (p + 1.0) * (p - 2.0);
- cof4 = sixth * p * (p * p - 1.0);
- zri = cof1 * ifile->zr[k - 1] + cof2 * ifile->zr[k] +
- cof3 * ifile->zr[k + 1] + cof4 * ifile->zr[k + 2];
-
- p = r / jfile->dr + 1.0;
- k = (int)(p);
- k = MIN(k, jfile->nr - 2);
- k = MAX(k, 2);
- p -= k;
- p = MIN(p, 2.0);
- cof1 = -sixth * p * (p - 1.0) * (p - 2.0);
- cof2 = 0.5 * (p * p - 1.0) * (p - 2.0);
- cof3 = -0.5 * p * (p + 1.0) * (p - 2.0);
- cof4 = sixth * p * (p * p - 1.0);
- zrj = cof1 * jfile->zr[k - 1] + cof2 * jfile->zr[k] +
- cof3 * jfile->zr[k + 1] + cof4 * jfile->zr[k + 2];
-
- eam->z2r[m] = 27.2 * 0.529 * zri * zrj;
- }
-}
-
-void array2spline(Eam* eam, Parameter* param) {
- eam->rdr = 1.0 / eam->dr;
- eam->rdrho = 1.0 / eam->drho;
- eam->nrho_tot = (eam->nrho + 1) * 7 + 64;
- eam->nr_tot = (eam->nr + 1) * 7 + 64;
- eam->nrho_tot -= eam->nrho_tot%64;
- eam->nr_tot -= eam->nr_tot%64;
-
- int ntypes = param->ntypes;
- eam->frho_spline = (MD_FLOAT *) allocate(ALIGNMENT, ntypes * ntypes * eam->nrho_tot * sizeof(MD_FLOAT));
- eam->rhor_spline = (MD_FLOAT *) allocate(ALIGNMENT, ntypes * ntypes * eam->nr_tot * sizeof(MD_FLOAT));
- eam->z2r_spline = (MD_FLOAT *) allocate(ALIGNMENT, ntypes * ntypes * eam->nr_tot * sizeof(MD_FLOAT));
- interpolate(eam->nrho, eam->drho, eam->frho, eam->frho_spline);
- interpolate(eam->nr, eam->dr, eam->rhor, eam->rhor_spline);
- interpolate(eam->nr, eam->dr, eam->z2r, eam->z2r_spline);
-
- // replicate data for multiple types;
- for(int tt = 0; tt < ntypes * ntypes; tt++) {
- for(int k = 0; k < eam->nrho_tot; k++)
- eam->frho_spline[tt*eam->nrho_tot + k] = eam->frho_spline[k];
- for(int k = 0; k < eam->nr_tot; k++)
- eam->rhor_spline[tt*eam->nr_tot + k] = eam->rhor_spline[k];
- for(int k = 0; k < eam->nr_tot; k++)
- eam->z2r_spline[tt*eam->nr_tot + k] = eam->z2r_spline[k];
- }
-}
-
-void interpolate(int n, MD_FLOAT delta, MD_FLOAT* f, MD_FLOAT* spline) {
- for(int m = 1; m <= n; m++) spline[m * 7 + 6] = f[m];
-
- spline[1 * 7 + 5] = spline[2 * 7 + 6] - spline[1 * 7 + 6];
- spline[2 * 7 + 5] = 0.5 * (spline[3 * 7 + 6] - spline[1 * 7 + 6]);
- spline[(n - 1) * 7 + 5] = 0.5 * (spline[n * 7 + 6] - spline[(n - 2) * 7 + 6]);
- spline[n * 7 + 5] = spline[n * 7 + 6] - spline[(n - 1) * 7 + 6];
-
- for(int m = 3; m <= n - 2; m++)
- spline[m * 7 + 5] = ((spline[(m - 2) * 7 + 6] - spline[(m + 2) * 7 + 6]) +
- 8.0 * (spline[(m + 1) * 7 + 6] - spline[(m - 1) * 7 + 6])) / 12.0;
-
- for(int m = 1; m <= n - 1; m++) {
- spline[m * 7 + 4] = 3.0 * (spline[(m + 1) * 7 + 6] - spline[m * 7 + 6]) -
- 2.0 * spline[m * 7 + 5] - spline[(m + 1) * 7 + 5];
- spline[m * 7 + 3] = spline[m * 7 + 5] + spline[(m + 1) * 7 + 5] -
- 2.0 * (spline[(m + 1) * 7 + 6] - spline[m * 7 + 6]);
- }
-
- spline[n * 7 + 4] = 0.0;
- spline[n * 7 + 3] = 0.0;
-
- for(int m = 1; m <= n; m++) {
- spline[m * 7 + 2] = spline[m * 7 + 5] / delta;
- spline[m * 7 + 1] = 2.0 * spline[m * 7 + 4] / delta;
- spline[m * 7 + 0] = 3.0 * spline[m * 7 + 3] / delta;
- }
-}
-
-void grab(FILE* fptr, int n, MD_FLOAT* list) {
- char* ptr;
- char line[MAXLINE];
- int i = 0;
-
- while(i < n) {
- fgets(line, MAXLINE, fptr);
- ptr = strtok(line, " \t\n\r\f");
- list[i++] = atof(ptr);
- while(ptr = strtok(NULL, " \t\n\r\f")) list[i++] = atof(ptr);
- }
-}
diff --git a/lammps/force_lj.c b/lammps/force_lj.c
index 408bb21..228f77f 100644
--- a/lammps/force_lj.c
+++ b/lammps/force_lj.c
@@ -30,9 +30,8 @@
#include
#include
-// TODO: Joint common files for gromacs and lammps variants
#ifdef SIMD_KERNEL_AVAILABLE
-#include "../gromacs/includes/simd.h"
+#include
#endif
double computeForceLJFullNeigh_plain_c(Parameter *param, Atom *atom, Neighbor *neighbor, Stats *stats) {
diff --git a/lammps/includes/allocate.h b/lammps/includes/allocate.h
deleted file mode 100644
index b7587e3..0000000
--- a/lammps/includes/allocate.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-
-#ifndef __ALLOCATE_H_
-#define __ALLOCATE_H_
-extern void* allocate (int alignment, size_t bytesize);
-extern void* reallocate (void* ptr, int alignment, size_t newBytesize, size_t oldBytesize);
-#endif
diff --git a/lammps/includes/eam.h b/lammps/includes/eam.h
deleted file mode 100644
index 03d7ecc..0000000
--- a/lammps/includes/eam.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-
-#include
-#include
-
-#ifndef __EAM_H_
-#define __EAM_H_
-typedef struct {
- int nrho, nr;
- MD_FLOAT drho, dr, cut, mass;
- MD_FLOAT *frho, *rhor, *zr;
-} Funcfl;
-
-typedef struct {
- MD_FLOAT* fp;
- int nmax;
- int nrho, nr;
- int nrho_tot, nr_tot;
- MD_FLOAT dr, rdr, drho, rdrho;
- MD_FLOAT *frho, *rhor, *z2r;
- MD_FLOAT *rhor_spline, *frho_spline, *z2r_spline;
- Funcfl file;
-} Eam;
-
-void initEam(Eam* eam, Parameter* param);
-void coeff(Eam* eam, Parameter* param);
-void init_style(Eam* eam, Parameter *param);
-void read_eam_file(Funcfl* file, const char* filename);
-void file2array(Eam* eam);
-void array2spline(Eam* eam, Parameter* param);
-void interpolate(int n, MD_FLOAT delta, MD_FLOAT* f, MD_FLOAT* spline);
-void grab(FILE* fptr, int n, MD_FLOAT* list);
-#endif
diff --git a/lammps/includes/likwid-marker.h b/lammps/includes/likwid-marker.h
deleted file mode 100644
index ebf8b89..0000000
--- a/lammps/includes/likwid-marker.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * =======================================================================================
- *
- * Filename: likwid-marker.h
- *
- * Description: Header File of likwid Marker API
- *
- * Version:
- * Released:
- *
- * Authors: Thomas Gruber (tg), thomas.roehl@googlemail.com
- *
- * Project: likwid
- *
- * Copyright (C) 2016 RRZE, University Erlangen-Nuremberg
- *
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * =======================================================================================
- */
-#ifndef LIKWID_MARKER_H
-#define LIKWID_MARKER_H
-
-
-/** \addtogroup MarkerAPI Marker API module
-* @{
-*/
-/*!
-\def LIKWID_MARKER_INIT
-Shortcut for likwid_markerInit() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_THREADINIT
-Shortcut for likwid_markerThreadInit() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_REGISTER(regionTag)
-Shortcut for likwid_markerRegisterRegion() with \a regionTag if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_START(regionTag)
-Shortcut for likwid_markerStartRegion() with \a regionTag if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_STOP(regionTag)
-Shortcut for likwid_markerStopRegion() with \a regionTag if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_GET(regionTag, nevents, events, time, count)
-Shortcut for likwid_markerGetResults() for \a regionTag if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_SWITCH
-Shortcut for likwid_markerNextGroup() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_RESET(regionTag)
-Shortcut for likwid_markerResetRegion() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_MARKER_CLOSE
-Shortcut for likwid_markerClose() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/** @}*/
-
-#ifdef LIKWID_PERFMON
-#include
-#define LIKWID_MARKER_INIT likwid_markerInit()
-#define LIKWID_MARKER_THREADINIT likwid_markerThreadInit()
-#define LIKWID_MARKER_SWITCH likwid_markerNextGroup()
-#define LIKWID_MARKER_REGISTER(regionTag) likwid_markerRegisterRegion(regionTag)
-#define LIKWID_MARKER_START(regionTag) likwid_markerStartRegion(regionTag)
-#define LIKWID_MARKER_STOP(regionTag) likwid_markerStopRegion(regionTag)
-#define LIKWID_MARKER_CLOSE likwid_markerClose()
-#define LIKWID_MARKER_RESET(regionTag) likwid_markerResetRegion(regionTag)
-#define LIKWID_MARKER_GET(regionTag, nevents, events, time, count) likwid_markerGetRegion(regionTag, nevents, events, time, count)
-#else /* LIKWID_PERFMON */
-#define LIKWID_MARKER_INIT
-#define LIKWID_MARKER_THREADINIT
-#define LIKWID_MARKER_SWITCH
-#define LIKWID_MARKER_REGISTER(regionTag)
-#define LIKWID_MARKER_START(regionTag)
-#define LIKWID_MARKER_STOP(regionTag)
-#define LIKWID_MARKER_CLOSE
-#define LIKWID_MARKER_GET(regionTag, nevents, events, time, count)
-#define LIKWID_MARKER_RESET(regionTag)
-#endif /* LIKWID_PERFMON */
-
-
-/** \addtogroup NvMarkerAPI NvMarker API module (MarkerAPI for Nvidia GPUs)
-* @{
-*/
-/*!
-\def LIKWID_NVMARKER_INIT
-Shortcut for likwid_gpuMarkerInit() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_THREADINIT
-Shortcut for likwid_gpuMarkerThreadInit() if compiled with -DLIKWID_PERFMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_REGISTER(regionTag)
-Shortcut for likwid_gpuMarkerRegisterRegion() with \a regionTag if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_START(regionTag)
-Shortcut for likwid_gpuMarkerStartRegion() with \a regionTag if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_STOP(regionTag)
-Shortcut for likwid_gpuMarkerStopRegion() with \a regionTag if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_GET(regionTag, ngpus, nevents, events, time, count)
-Shortcut for likwid_gpuMarkerGetRegion() for \a regionTag if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_SWITCH
-Shortcut for likwid_gpuMarkerNextGroup() if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_RESET(regionTag)
-Shortcut for likwid_gpuMarkerResetRegion() if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/*!
-\def LIKWID_NVMARKER_CLOSE
-Shortcut for likwid_gpuMarkerClose() if compiled with -DLIKWID_NVMON. Otherwise no operation is performed
-*/
-/** @}*/
-
-#ifdef LIKWID_NVMON
-#ifndef LIKWID_WITH_NVMON
-#define LIKWID_WITH_NVMON
-#endif
-#include
-#define LIKWID_NVMARKER_INIT likwid_gpuMarkerInit()
-#define LIKWID_NVMARKER_THREADINIT likwid_gpuMarkerThreadInit()
-#define LIKWID_NVMARKER_SWITCH likwid_gpuMarkerNextGroup()
-#define LIKWID_NVMARKER_REGISTER(regionTag) likwid_gpuMarkerRegisterRegion(regionTag)
-#define LIKWID_NVMARKER_START(regionTag) likwid_gpuMarkerStartRegion(regionTag)
-#define LIKWID_NVMARKER_STOP(regionTag) likwid_gpuMarkerStopRegion(regionTag)
-#define LIKWID_NVMARKER_CLOSE likwid_gpuMarkerClose()
-#define LIKWID_NVMARKER_RESET(regionTag) likwid_gpuMarkerResetRegion(regionTag)
-#define LIKWID_NVMARKER_GET(regionTag, ngpus, nevents, events, time, count) \
- likwid_gpuMarkerGetRegion(regionTag, ngpus, nevents, events, time, count)
-#else /* LIKWID_NVMON */
-#define LIKWID_NVMARKER_INIT
-#define LIKWID_NVMARKER_THREADINIT
-#define LIKWID_NVMARKER_SWITCH
-#define LIKWID_NVMARKER_REGISTER(regionTag)
-#define LIKWID_NVMARKER_START(regionTag)
-#define LIKWID_NVMARKER_STOP(regionTag)
-#define LIKWID_NVMARKER_CLOSE
-#define LIKWID_NVMARKER_GET(regionTag, nevents, events, time, count)
-#define LIKWID_NVMARKER_RESET(regionTag)
-#endif /* LIKWID_NVMON */
-
-
-
-#endif /* LIKWID_MARKER_H */
diff --git a/lammps/includes/thermo.h b/lammps/includes/thermo.h
deleted file mode 100644
index 3006bc4..0000000
--- a/lammps/includes/thermo.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-#include
-
-#ifndef __THERMO_H_
-#define __THERMO_H_
-extern void setupThermo(Parameter*, int);
-extern void computeThermo(int, Parameter*, Atom*);
-extern void adjustThermo(Parameter*, Atom*);
-#endif
diff --git a/lammps/includes/timers.h b/lammps/includes/timers.h
deleted file mode 100644
index 2400c01..0000000
--- a/lammps/includes/timers.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __TIMERS_H_
-#define __TIMERS_H_
-
-typedef enum {
- TOTAL = 0,
- NEIGH,
- FORCE,
- NUMTIMER
-} timertype;
-
-#endif
diff --git a/lammps/includes/timing.h b/lammps/includes/timing.h
deleted file mode 100644
index 4462b91..0000000
--- a/lammps/includes/timing.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#ifndef __TIMING_H_
-#define __TIMING_H_
-
-extern double getTimeStamp();
-extern double getTimeResolution();
-extern double getTimeStamp_();
-
-#endif
diff --git a/lammps/timing.c b/lammps/timing.c
deleted file mode 100644
index 2c1f12a..0000000
--- a/lammps/timing.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * =======================================================================================
- *
- * Author: Jan Eitzinger (je), jan.eitzinger@fau.de
- * Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
- *
- * This file is part of MD-Bench.
- *
- * MD-Bench is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * MD-Bench is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with MD-Bench. If not, see .
- * =======================================================================================
- */
-#include
-#include
-
-double getTimeStamp()
-{
- struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
- return (double)ts.tv_sec + (double)ts.tv_nsec * 1.e-9;
-}
-
-double getTimeResolution()
-{
- struct timespec ts;
- clock_getres(CLOCK_MONOTONIC, &ts);
- return (double)ts.tv_sec + (double)ts.tv_nsec * 1.e-9;
-}
-
-double getTimeStamp_()
-{
- return getTimeStamp();
-}