# MD-Bench A generic proxy-app toolbox for state-of-the-art molecular dynamics algorithms ## Build instructions Properly configure your building by changing `config.mk` file. The following options are available: - **TAG:** Compiler tag (available options: GCC, CLANG, ICC, ONEAPI, NVCC). - **ISA:** Instruction set (available options: SSE, AVX, AVX2, AVX512). - **MASK\_REGISTERS:** Use AVX512 mask registers (always true when ISA is set to AVX512). - **OPT\_SCHEME:** Optimization algorithm (available options: lammps, gromacs). - **ENABLE\_LIKWID:** Enable likwid to make use of HPM counters. - **DATA\_TYPE:** Floating-point precision (available options: SP, DP). - **DATA\_LAYOUT:** Data layout for atom vector properties (available options: AOS, SOA). - **ASM\_SYNTAX:** Assembly syntax to use when generating assembly files (available options: ATT, INTEL). - **DEBUG:** Toggle debug mode. - **EXPLICIT\_TYPES:** Explicitly store and load atom types. - **MEM\_TRACER:** Trace memory addresses for cache simulator. - **INDEX\_TRACER:** Trace indexes and distances for gather-md. - **COMPUTE\_STATS:** Compute statistics. Configurations for LAMMPS Verlet Lists optimization scheme: - **ENABLE\_OMP\_SIMD:** Use omp simd pragma on half neighbor-lists kernels. - **USE\_SIMD\_KERNEL:** Compile kernel with explicit SIMD intrinsics. Configurations for GROMACS MxN optimization scheme: - **USE\_REFERENCE\_VERSION:** Use reference version (only for correction purposes). - **XTC\_OUTPUT:** Enable XTC output. - **HALF\_NEIGHBOR\_LISTS\_CHECK\_CJ:** Check if j-clusters are local when decreasing the reaction force. Configurations for CUDA: - **USE\_CUDA\_HOST\_MEMORY:** Use CUDA host memory to optimize host-device transfers. When done, just use `make` to compile the code. You can clean intermediate build results with `make clean`, and all build results with `make distclean`. You have to call `make clean` before `make` if you changed the build settings. ## Usage Use the following command to run a simulation: ```bash ./MD-Bench-- [OPTION]... ``` Where `TAG` and `OPT_SCHEME` correspond to the building options with the same name. Without any options, a Copper FCC lattice system with size 32x32x32 (131072 atoms) over 200 time-steps using the Lennard-Jones potential (sigma=1.0, epsilon=1.0) is simulated. The default behavior and other options can be changed using the following parameters: ``` -p : file to read parameters from (can be specified more than once) -f : force field (lj or eam), default lj -i : input file with atom positions (dump) -e : input file for EAM -n / --nsteps : set number of timesteps for simulation -nx/-ny/-nz : set linear dimension of systembox in x/y/z direction -r / --radius : set cutoff radius -s / --skin : set skin (verlet buffer) --freq : processor frequency (GHz) --vtk : VTK file for visualization --xtc : XTC file for visualization ```