diff --git a/lib/README b/lib/README index ffb3e3f44..80b9fab5e 100644 --- a/lib/README +++ b/lib/README @@ -1,23 +1,25 @@ This directory contains libraries that can be linked with when -building LAMMPS. The library itself must be built first, so that a -lib*.a file exists for LAMMPS to link against. +building LAMMPS, if particular packages are included in a LAMMPS +build. The library itself must be built first, so that a lib*.a file +exists for LAMMPS to link against. -Each library directory contains a README with additional info. You -will need to copy one of the Makefile.* files to Makefile before -building a library. If a Makefile.* suitable for your machine does -not exist, you will need to edit one of the existing Makefiles. +Each library directory contains a README with additional info about +how to build the library. This may require you to edit one of the +provided Makefiles to make it suitable for your machine. The libraries included in the LAMMPS distribution are the following: -atc atomistic-to-continuum methods +atc atomistic-to-continuum methods, USER-ATC package from Reese Jones, Jeremy Templeton, Jon Zimmerman (Sandia) -awpmd antisymmetrized wave packet molecular dynamics +awpmd antisymmetrized wave packet molecular dynamics, AWPMD package from Ilya Valuev (JIHT RAS) -gpu graphical processor (GPU) routines, currently NVIDIA specific - from Mike Brown (Sandia) -poems POEMS rigid-body integration package - from RPI -meam modified embedded atom method (MEAM) potential +cuda NVIDIA GPU routines, USER_CUDA package + from Christian Trott (U Tech Ilmenau) +gpu graphical processor (GPU) routines, GPU package + from Mike Brown (ORNL) +poems POEMS rigid-body integration package, POEMS package + from Rudranarayan Mukherjee (RPI) +meam modified embedded atom method (MEAM) potential, MEAM package from Greg Wagner (Sandia) -reax ReaxFF potential +reax ReaxFF potential, REAX package from Adri van Duin (Penn State) and Aidan Thompson (Sandia) diff --git a/lib/atc/README b/lib/atc/README index 8784e6a90..5a41a027e 100644 --- a/lib/atc/README +++ b/lib/atc/README @@ -1,29 +1,53 @@ +This directory has source files to build a library that LAMMPS +links against when using the USER-ATC package. + +When you are done building this library, two files should +exist in this directory: + +libatc.a the library LAMMPS will link against +Makefile.lammps settings the LAMMPS Makefile will import + +The latter file will have settings like this (can be omitted if blank): + +user-atc_SYSINC = +user-atc_SYSLIB = -lblas -llapack +user-atc_SYSPATH = + +SYSINC is for settings needed to compile LAMMPS source files +SYSLIB is for additional system libraries needed by this package +SYSPATH is the path(s) to where those libraries are + +You must insure these settings are correct for your system, else +the LAMMPS build will likely fail. + +------------------------------------------------------------------------- + ATC (Atom To Continuum methods) Reese Jones, Jeremy Templeton, Jonathan Zimmerman (Sandia National Labs) rjones, jatempl, jzimmer at sandia.gov September 2009 -------------- This is version 1.0 of the ATC library, which provides continuum field estimation and molecular dynamics-finite element coupling methods. This library must be built with a C++ compiler, before LAMMPS is built, so LAMMPS can link against it. Build the library using one of the provided Makefiles or creating your own, specific to your compiler and system. For example: make -f Makefile.g++ Note that the ATC library makes MPI calls, so you must build it with the same MPI library that is used to build LAMMPS, e.g. as specified by settings in the lammps/src/MAKE/Makefile.foo file. If the build is successful, you should end up with a libatc.a file. When you build LAMMPS with this library, you must insure that the settings in the lo-level Makefile (in lammps/src/MAKE) are correct for user-atc-SYSLIB and user-atc_SYSLIBPATH, so the the appropriate BLAS and LAPACK libraries on your system can be linked against. diff --git a/lib/awpmd/README b/lib/awpmd/README index 0806a31b3..548f86536 100644 --- a/lib/awpmd/README +++ b/lib/awpmd/README @@ -1,29 +1,53 @@ +This directory has source files to build a library that LAMMPS +links against when using the AWPMD package. + +When you are done building this library, two files should +exist in this directory: + +libawpmd.a the library LAMMPS will link against +Makefile.lammps settings the LAMMPS Makefile will import + +The latter file will have settings like this (can be omitted if blank): + +user-awpmd_SYSINC = +user-awpmd_SYSLIB = -lblas -llapack +user-awpmd_SYSPATH = + +SYSINC is for settings needed to compile LAMMPS source files +SYSLIB is for additional system libraries needed by this package +SYSPATH is the path(s) to where those libraries are + +You must insure these settings are correct for your system, else +the LAMMPS build will likely fail. + +------------------------------------------------------------------------- + AWPMD (Antisymmetrized Wave Packet Molecular Dynamics) library Ilya Valuev, Igor Morozov, JIHT RAS valuev at physik.hu-berlin.de June 2011 -------------- This is version 0.9 of the AWPMD library taken from JIHT GridMD project. It contains interface to calculate electronic and electron-ion Hamiltonian, norm matrix and forces for AWPMD method. This library must be built with a C++ compiler, before LAMMPS is built, so LAMMPS can link against it. Build the library using one of the provided Makefiles or creating your own, specific to your compiler and system. For example: make -f Makefile.openmpi++ If the build is successful, you should end up with a libawpmd.a file. -------------- AWPMD is an open source program distributed under the terms of wxWidgets Library License (see license directory for details). diff --git a/lib/gpu/README b/lib/gpu/README index b6358170f..5f6637a9c 100644 --- a/lib/gpu/README +++ b/lib/gpu/README @@ -1,120 +1,131 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing authors: Mike Brown (ORNL), brownw@ornl.gov - Peng Wang (Nvidia), penwang@nvidia.com - Inderaj Bains (NVIDIA), ibains@nvidia.com - Paul Crozier (SNL), pscrozi@sandia.gov -------------------------------------------------------------------------- */ +This directory has source files to build a library that LAMMPS +links against when using the GPU package. + +When you are done building this library, two files should +exist in this directory: + +libgpu.a the library LAMMPS will link against +Makefile.lammps settings the LAMMPS Makefile will import + +The latter file will have settings like this (can be omitted if blank): + +gpu_SYSINC = +gpu_SYSLIB = -lcudart -lcuda +gpu_SYSPATH = -L/usr/local/cuda/lib64 + +SYSINC is for settings needed to compile LAMMPS source files +SYSLIB is for additional system libraries needed by this package +SYSPATH is the path(s) to where those libraries are + +You must insure these settings are correct for your system, else +the LAMMPS build will likely fail. + +------------------------------------------------------------------------- + +Contributing authors: Mike Brown (ORNL), brownw@ornl.gov + Peng Wang (Nvidia), penwang@nvidia.com + Inderaj Bains (NVIDIA), ibains@nvidia.com + Paul Crozier (SNL), pscrozi@sandia.gov + +------------------------------------------------------------------------- GENERAL NOTES This library, libgpu.a, provides routines for GPU acceleration of LAMMPS pair styles. Compilation of this library requires installing the CUDA GPU driver and CUDA toolkit for your operating system. In addition to the LAMMPS library, the binary nvc_get_devices will also be built. This can be used to query the names and properties of GPU devices on your system. A Makefile for OpenCL compilation is provided, but support for OpenCL use is not currently provided by the developers. NOTE: Installation of the CUDA SDK is not required. Current pair styles supporting GPU acceleration: 1. lj/cut 2. lj96/cut 3. lj/expand 4. lj/cut/coul/cut 5. lj/cut/coul/long 6. lj/charmm/coul/long 7. morse 8. cg/cmm 9. cg/cmm/coul/long 10. gayberne 11. pppm MULTIPLE LAMMPS PROCESSES Multiple LAMMPS MPI processes can share GPUs on the system, but multiple GPUs cannot be utilized by a single MPI process. In many cases, the best performance will be obtained by running as many MPI processes as CPU cores available with the condition that the number of MPI processes is an integer multiple of the number of GPUs being used. See the LAMMPS user manual for details on running with GPU acceleration. BUILDING AND PRECISION MODES To build, edit the CUDA_ARCH, CUDA_PRECISION, CUDA_HOME variables in one of the Makefiles. CUDA_ARCH should be set based on the compute capability of your GPU. This can be verified by running the nvc_get_devices executable after the build is complete. Additionally, the GPU package must be installed and compiled for LAMMPS. This may require editing the gpu_SYSPATH variable in the LAMMPS makefile. Please note that the GPU library accesses the CUDA driver library directly, so it needs to be linked not only to the CUDA runtime library (libcudart.so) that ships with the CUDA toolkit, but also with the CUDA driver library (libcuda.so) that ships with the Nvidia driver. If you are compiling LAMMPS on the head node of a GPU cluster, this library may not be installed, so you may need to copy it over from one of the compute nodes (best into this directory). The gpu library supports 3 precision modes as determined by the CUDA_PRECISION variable: CUDA_PREC = -D_SINGLE_SINGLE # Single precision for all calculations CUDA_PREC = -D_DOUBLE_DOUBLE # Double precision for all calculations CUDA_PREC = -D_SINGLE_DOUBLE # Accumulation of forces, etc. in double NOTE: PPPM acceleration can only be run on GPUs with compute capability>=1.1. You will get the error "GPU library not compiled for this accelerator." when attempting to run PPPM on a GPU with compute capability 1.0. NOTE: Double precision is only supported on certain GPUs (with compute capability>=1.3). If you compile the GPU library for a GPU with compute capability 1.1 and 1.2, then only single precistion FFTs are supported, i.e. LAMMPS has to be compiled with -DFFT_SINGLE. For details on configuring FFT support in LAMMPS, see http://lammps.sandia.gov/doc/Section_start.html#2_2_4 NOTE: For Tesla and other graphics cards with compute capability>=1.3, make sure that -arch=sm_13 is set on the CUDA_ARCH line. NOTE: For Fermi, make sure that -arch=sm_20 is set on the CUDA_ARCH line. NOTE: The gayberne/gpu pair style will only be installed if the ASPHERE package has been installed. NOTE: The cg/cmm/gpu and cg/cmm/coul/long/gpu pair styles will only be installed if the USER-CG-CMM package has been installed. NOTE: The lj/cut/coul/long/gpu, cg/cmm/coul/long/gpu, and pppm/gpu styles will only be installed if the KSPACE package has been installed. NOTE: The lj/charmm/coul/long will only be installed if the MOLECULE package has been installed. EXAMPLE BUILD PROCESS cd ~/lammps/lib/gpu emacs Makefile.linux make -f Makefile.linux ./nvc_get_devices cd ../../src emacs ./MAKE/Makefile.linux make yes-asphere make yes-kspace make yes-gpu make linux diff --git a/lib/meam/README b/lib/meam/README index f6d051419..09f3cc3bd 100644 --- a/lib/meam/README +++ b/lib/meam/README @@ -1,20 +1,48 @@ +This directory has source files to build a library that LAMMPS +links against when using the MEAM package. + +When you are done building this library, two files should +exist in this directory: + +libmeam.a the library LAMMPS will link against +Makefile.lammps settings the LAMMPS Makefile will import + +The latter file will have settings like this (can be omitted if blank): + +meam_SYSINC = +meam_SYSLIB = -lgfortran +meam_SYSPATH = + +SYSINC is for settings needed to compile LAMMPS source files +SYSLIB is for additional system libraries needed by this package +SYSPATH is the path(s) to where those libraries are + +You must insure these settings are correct for your system, else +the LAMMPS build will likely fail. + +Note that the source files for this library are Fortran. LAMMPS is +built with a C++ compiler/linker. Thus you need to insure the +settings above enable usage of a Fortran library by a C++ program. + +------------------------------------------------------------------------- + MEAM (modified embedded atom method) library Greg Wagner, Sandia National Labs gjwagne at sandia.gov Jan 2007 --------------- +------------------------------------------------------------------------- This library is in implementation of the MEAM potential, specifically designed to work with LAMMPS. This library must be built with a F90 compiler, before LAMMPS is built, so LAMMPS can link against it. Build the library using one of the provided Makefiles or creating your own, specific to your compiler and system. For example: make -f Makefile.g95 If the build is successful, you should end up with a libmeam.a file. diff --git a/lib/poems/README b/lib/poems/README index f1e6c47b4..c51e847e9 100644 --- a/lib/poems/README +++ b/lib/poems/README @@ -1,48 +1,72 @@ +This directory has source files to build a library that LAMMPS +links against when using the POEMS package. + +When you are done building this library, two files should +exist in this directory: + +libpoems.a the library LAMMPS will link against +Makefile.lammps settings the LAMMPS Makefile will import + +The latter file will have settings like this (can be omitted if blank): + +poems_SYSINC = +poems_SYSLIB = +poems_SYSPATH = + +SYSINC is for settings needed to compile LAMMPS source files +SYSLIB is for additional system libraries needed by this package +SYSPATH is the path(s) to where those libraries are + +You must insure these settings are correct for your system, else +the LAMMPS build will likely fail. + +------------------------------------------------------------------------- + POEMS (Parallelizable Open source Efficient Multibody Software) library Rudranarayan Mukherjee, RPI mukher at rpi.edu June 2006 -------------- This is version 1.0 of the POEMS library, general purpose distributed multibody dynamics software, which is able to simulate the dynamics of articulated body systems. This library must be built with a C++ compiler, before LAMMPS is built, so LAMMPS can link against it. Build the library using one of the provided Makefiles or creating your own, specific to your compiler and system. For example: make -f Makefile.g++ If the build is successful, you should end up with a libpoems.a file. -------------- POEMS is supported by the funding agencies listed in the Grants' List. POEMS is an open source program distributed under the Rensselaer Scorec License. The Authors as listed in Authors' List reserve the right to reject the request on technical supports of the POEMS freely obtained. We are open to hear from you about bugs, an idea for improvement, and suggestions, etc. We keep improving the POEMS. Check the POEMS web site (www.rpi.edu/~anderk5/POEMS) for the recent changes. All correspondence regarding the POEMS should be sent to: By email: (preferred) Prof. Kurt Anderson (anderk5@rpi.edu) or Rudranarayan Mukherjee (mukher@rpi.edu) - include "[POEMS]" in the subject or by mail: Prof. Kurt S. Anderson 4006 Jonsson Engineering Center Rensselaer Polytechnic Institute 110 8th Street, Troy, NY 12180-3510, U.S.A. diff --git a/lib/reax/README b/lib/reax/README index cb9ca09a0..75c393063 100644 --- a/lib/reax/README +++ b/lib/reax/README @@ -1,46 +1,74 @@ +This directory has source files to build a library that LAMMPS +links against when using the REAX package. + +When you are done building this library, two files should +exist in this directory: + +libreax.a the library LAMMPS will link against +Makefile.lammps settings the LAMMPS Makefile will import + +The latter file will have settings like this (can be omitted if blank): + +reax_SYSINC = +reax_SYSLIB = -lgfortran +reax_SYSPATH = + +SYSINC is for settings needed to compile LAMMPS source files +SYSLIB is for additional system libraries needed by this package +SYSPATH is the path(s) to where those libraries are + +You must insure these settings are correct for your system, else +the LAMMPS build will likely fail. + +Note that the source files for this library are Fortran. LAMMPS is +built with a C++ compiler/linker. Thus you need to insure the +settings above enable usage of a Fortran library by a C++ program. + +------------------------------------------------------------------------- + ReaxFF library Aidan Thompson, Sandia National Labs athomps at sandia.gov Jan 2008 -------------- This library is an implementation of the ReaxFF potential, specifically designed to work with LAMMPS. It is derived from Adri van Duin's original serial code, with intervening incarnations in CMDF and GRASP. This library can be built with any decent Fortran compiler, before LAMMPS is built, so LAMMPS can link against it. The compiler must produce object files compatible with the LAMMPS C++ compiler. If not, the LAMMPS build will fail during linking. Build the library using one of the provided Makefiles or create your own, specific to your compiler and system. For example: make -f Makefile.g95 If the build is successful, you should end up with a libreax.a file. Note that the include file reax_defs.h is used by both the ReaxFF library source files and the LAMMPS pair_reax.cpp source file (from module REAX). It contains dimensions of statically-allocated arrays created by the ReaxFF library. The size of these arrays must be set small enough to avoid exceeding the available machine memory, and large enough to fit the actual data generated by ReaxFF. If you change the values in reax_defs.h, you must first rebuild the library and then rebuild LAMMPS. This library is called by functions in pair_reax.cpp. The C++ to FORTRAN function calls in pair_reax.cpp assume that FORTRAN object names are converted to C object names by appending an underscore character. This is generally the case, but on machines that do not conform to this convention, you will need to modify either the C++ code or your compiler settings. The name conversion is handled by the preprocessor macro called FORTRAN in the file pair_reax_fortran.h, which is included by pair_reax.cpp. Different definitions of this macro can be obtained by adding a machine-specific macro definition to the CCFLAGS variable in your your LAMMPS Makefile e.g. -D_IBM. See pair_reax_fortran.h for more info.