forked from lijiext/lammps
621fa7d600 | ||
---|---|---|
.. | ||
TPL/cub | ||
algorithms/src | ||
containers/src | ||
core/src | ||
Makefile.lammps | ||
README |
README
Kokkos library Carter Edwards, Christian Trott, Daniel Sunderland Sandia National Labs 29 May 2014 http://trilinos.sandia.gov/packages/kokkos/ ------------------------- This directory has source files from the Kokkos library that LAMMPS uses when building with its KOKKOS package. The package contains versions of pair, fix, and atom styles written with Kokkos data structures and calls to the Kokkos library that should run efficiently on various kinds of accelerated nodes, including GPU and many-core chips. Kokkos is a C++ library that provides two key abstractions for an application like LAMMPS. First, it allows a single implementation of an application kernel (e.g. a pair style) to run efficiently on different kinds of hardware (GPU, Intel Phi, many-core chip). Second, it provides data abstractions to adjust (at compile time) the memory layout of basic data structures like 2d and 3d arrays and allow the transparent utilization of special hardware load and store units. Such data structures are used in LAMMPS to store atom coordinates or forces or neighbor lists. The layout is chosen to optimize performance on different platforms. Again this operation is hidden from the developer, and does not affect how the single implementation of the kernel is coded. To build LAMMPS with Kokkos, you should not need to make any changes to files in this directory. You can overrided defaults that are set in Makefile.lammps when building LAMMPS, by defining variables as part of the make command. Details of the build process with Kokkos are explained in Section 2.3 of doc/Section_start.html. and in Section 5.9 of doc/Section_accelerate.html. The one exception is that when using Kokkos with NVIDIA GPUs, the CUDA_PATH setting in Makefile.lammps needs to point to the installation of the Cuda software on your machine. The normal default location is /usr/local/cuda. If this is not correct, you need to edit Makefile.lammps.