Commit b84aa97c authored by rick's avatar rick

Merge branch 'exaalt' into 'master'

Exaalt

See merge request !2
parents 9a6281ce c0968b2a
......@@ -3,65 +3,50 @@ variables:
test:default:
image: ubuntu:latest
# Use ubuntu image with all exaalt dependencies installed:
image: registry.gitlab.com/exaalt/exaalt/ubuntu-exaalt-deps:latest
before_script:
script:
# Install Linux Packages:
- apt-get update
- hostname
- export HOME=/builds/exaalt/exaalt/
- export local_PREFIX=/usr/local/
- export super_PREFIX=/usr/
- env
- apt-get --yes --force-yes install gfortran libblas-dev liblapack-dev
- apt-get --yes --force-yes install cmake python gcc cmake-data g++ git wget
- apt-get --yes --force-yes install pkg-config python-numpy python3-numpy libopenmpi-dev
# Build LATTE:
- cd /builds/exaalt/exaalt/LATTE/
- cd ${HOME}/LATTE/
- cp ./makefiles/makefile.CHOICES.gfort.lapack.lmp makefile.CHOICES
- make
- export latte_PATH=${HOME}/LATTE/
# Build LAMMPS:
- cd /builds/exaalt/exaalt/lammps/lib/latte/
- cd ${HOME}/lammps/lib/latte/
- cp Makefile.lammps.gfortran Makefile.lammps
- cd /builds/exaalt/exaalt/lammps/src/
- cd ${HOME}/lammps/src/
- make yes-latte
- make yes-molecule
- make serial
script:
# Test LAMMPS-LATTE Example:
- cd /builds/exaalt/exaalt/lammps/examples/latte/
- ../../src/lmp_serial -in in.latte.water
- make yes-manybody
- make yes-kspace
- make yes-snap
- make yes-misc
- cp MAKE/MACHINES/Makefile.ubuntu_simple MAKE/Makefile.mpi
- make mpi
- make mpi mode=lib
- cp ${HOME}/lammps/src/liblammps_mpi.a ${local_PREFIX}/lib/.
- mkdir ${local_PREFIX}/include/lammps
- cp ${HOME}/lammps/src/*.h ${local_PREFIX}/include/lammps/.
# Build Parsplice:
- cd ${HOME}/parsplice/
- mkdir build
- cd build
- export COMPILER="mpic++"
- export bldir_PREFIX=${HOME}/parsplice/build/
- cmake -DCMAKE_INCLUDE_PATH=${local_PREFIX}/include/:${super_PREFIX}/include/ -DCMAKE_BINARY_DIR=${bldir_PREFIX} -DEXTRA_FLAGS="-I${latte_PATH}/src" -DEXTRA_LINK_FLAGS="-fopenmp ${latte_PATH}/src/latte_c_bind.o ${latte_PATH}/liblatte.a -lgfortran -llapack -lblas" -DCMAKE_LIBRARY_PATH=${local_PREFIX}/lib:${super_PREFIX}/lib/ -DCMAKE_CXX_COMPILER=${COMPILER} ../
- make
# before_script:
#
# # Install Linux Packages:
# - apt-get update
# - hostname
# - env
# - apt-get --yes --force-yes install gcc gfortran libmpich-dev build-essential
# - apt-get --yes --force-yes install libblas-dev liblapack-dev
# - apt-get --yes --force-yes install cmake python cmake-data g++ git wget
# - apt-get --yes --force-yes install pkg-config python-numpy python3-numpy libopenmpi-dev
#
# # Build LAMMPS:
# - cd lammps/lib/latte
# - cp Makefile.lammps.gfortran.dev Makefile.lammps
# - cd /builds/exaalt/exaalt/lammps/src/
# - make yes-MANYBODY
# - make yes-kspace
# - make yes-latte
# - make yes-molecule
# - make -j2 mpi
#
# script:
#
# ## Test Simple LAMMPS Example:
# #- cd /builds/exaalt/exaalt/lammps/examples/melt/
# #- ../../src/lmp_mpi -in in.melt
#
# # Test LAMMPS-LATTE Example:
# - cd /builds/exaalt/exaalt/lammps/examples/latte/
# - ../../src/lmp_mpi -in in.latte.water
## Test 1. LAMMPS-LATTE Example:
#- cd ${HOME}/lammps/examples/latte/
#- ../../src/lmp_serial -in in.latte.water
LATTE @ a3f74e75
Subproject commit dcea10242e485bc12871c90933d48db0159ca23c
Subproject commit a3f74e75e0f1f2506571b93c42c5ed06e9e78be3
......@@ -6,6 +6,6 @@ The `exaalt` repository is intended to contain the following components:
* Metadata for testing and building the EXAALT framework
* A `lammps` submodule (Meaning: a reference to a specific commit of a separate LAMMPS repository). Currently, this submodule references the `lammps` repository in this exaalt group. For now, this separate repository is setup to mirror (synchronize with) the LAMMPS github repository.
* A `LATTE` submodule (Meaning: a reference to a specific commit of a separate LATTE repository). Currently, this submodule references the `LATTE` repository in this exaalt group.
* A `parsplice` submodule (Meaning: a reference to a specific commit of a separate ParSplice repository). Currently, this submodule references the `par splice` repository in this exaalt group. However, the referenced repository is empty, because there is an *export control* issue that needs to be resolved before the source code is populated.
* A `parsplice` submodule (Meaning: a reference to a specific commit of a separate ParSplice repository). Currently, this submodule references the `parsplice` repository in this exaalt group.
## SEE WIKI (https://gitlab.com/exaalt/exaalt/wikis/home) FOR MORE INFO/INSTRUCTIONS
This diff is collapsed.
This package provides a fix latte command which is a wrapper on the
LATTE density functional tight-binding (DFTB) code, so that molecular
dynamics can be run with LAMMPS using density-functional tight-binding
quantum forces calculated by LATTE. More information on LATTE can be
found at https://github.com/lanl/LATTE. Its authors are:
Nick Bock T-1
Josh Coe T-1
Aditi Krishnapriyan T-1
Matt Kroonblawd T-1
Adam Lang T-1
Enrique Martinez MST-8
Sue Mniszewski CCS-3
Christian Negre T-1
Ed Sanville T-1
Mitch Wood T-1
Ping Yang T-1
Anders Niklasson T-1
Marc Cawkwell T-1
from Los Alamos National Laboratory.
Using this package requires the LATTE code to be downloaded and built
as a library on your system. The library can be downloaded and built
in lib/latte or elsewhere on your system, which must be done before
building LAMMPS with this package. Details of the download, build, and
install process for LATTE are given in the lib/latte/README file, and
scripts are provided to help automate the process.
Also see the LAMMPS manual for general information on building LAMMPS
with external libraries. The settings in the Makefile.lammps file in
lib/latte must be correct for LAMMPS to build correctly with this
package installed. However, the default settings should be correct in
most cases and the Makefile.lammps file usually will not need to be
changed.
Once you have successfully built LAMMPS with this package and the
LATTE library you can test it using an input file from the examples
dir:
./lmp_serial < lammps/examples/latte/in.latte
This pair style was written in collaboration with the LATTE
developers.
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix latte command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID latte peID
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>latte = style name of this fix command
<LI>peID = NULL or ID of compute used to calculate per-atom energy
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix dftb all latte NULL
</PRE>
<P><B>Description:</B>
</P>
<P>This fix style is a wrapper on the density functional tight binding
(DFTB) code LATTE. If you download and build LATTE, it can be called
as a library by LAMMPS via this fix to run dynamics or perform energy
minimization using DFTB forces and energies computed by LATTE.
</P>
<P>LATTE is developed and supported by AN and MC (etc) at Los Alamos
National Laboratories (LANL). See contact information in the
src/LATTE/README file. LATTE can be downloaded at
<A HREF = "https://github.com/lanl/LATTE">https://github.com/lanl/LATTE</A>.
</P>
<P>For instructions on how to download and build LATTE on your system,
see the lib/latte/README file. Once you have done this and built
LAMMPS with the LATTE package installed you can run the example input
scripts for dynamics or minimization that are found in examples/latte.
</P>
<P>NOTE: give a paragraph or two of overview of LATTE and what it does,
including reference links like this: The canonical LATTE papers are
(<A HREF = "#Cawkwell">Cawkwell</A>) and (<A HREF = "#Niklasson">Niklasson</A>) and
(<A HREF = "#Niklasson2">Niklasson2</A>). See bottom of this page for how to format
a citation. If you want to include equations as JPG files I can
show you how to do that as well. Just write the equations
as a LaTeX file. E.g. see this LAMMPS doc page:
http://lammps.sandia.gov/doc/pair_gran.html
</P>
<P>The <I>peID</I> argument is not yet supported by fix latte, so it must be
specified as NULL. Eventually it will be used to enable LAMMPS to
calculate a Coulomb potential as an alternative to LATTE performing
the calculation.
</P>
<HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
files</A>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the potential energy computed by LATTE to the system's
potential energy as part of <A HREF = "thermo_style.html">thermodynamic output</A>.
</P>
<P>This fix computes a global scalar which can be accessed by various
<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
potential energy discussed above. The scalar value calculated by this
fix is "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The DFTB forces computed by LATTE via this fix are imposed during an
energy minimization, invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P>NOTE: If you want the potential energy associated with the DFTB
forces to be included in the total potential energy of the system (the
quantity being minimized), you MUST enable the
<A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for this fix.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix is part of the LATTE package. It is only enabled if LAMMPS
was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>Currently, LAMMPS must be run in serial, as a single MPI task, to use
this fix. This is typically not a bottleneck, since LATTE will be
doing 99% or more of the work to compute quantum-accurate forces.
</P>
<P>NOTE: should we say something about LATTE running in parallel?
E.g. how to let it run in shared memory on other cores of the same
node?
</P>
<P>You must use metal units, as set by the <A HREF = "units">units</A> command to use
this fix.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Cawkwell"></A>
<P><B>(Cawkwell)</B> M. Cawkwell and A. Niklasson, J Chem Phys,
101, 200-223 (2010).
</P>
<A NAME = "Niklasson"></A>
<P><B>(Niklasson)</B> A. Niklasson and M. Cawkwell, J Chem Phys,
105, 200-223 (2012).
</P>
<A NAME = "Niklasson2"></A>
<P><B>(Niklasson2)</B> A. Niklasson, T. Smith, M. Cawkwell, J Chem Phys,
110, 200-223 (2014).
</P>
</HTML>
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix latte command :h3
[Syntax:]
fix ID group-ID latte peID :pre
ID, group-ID are documented in "fix"_fix.html command
latte = style name of this fix command
peID = NULL or ID of compute used to calculate per-atom energy :ul
[Examples:]
fix dftb all latte NULL :pre
[Description:]
This fix style is a wrapper on the density functional tight binding
(DFTB) code LATTE. If you download and build LATTE, it can be called
as a library by LAMMPS via this fix to run dynamics or perform energy
minimization using DFTB forces and energies computed by LATTE.
LATTE is developed and supported by AN and MC (etc) at Los Alamos
National Laboratories (LANL). See contact information in the
src/LATTE/README file. LATTE can be downloaded at
"https://github.com/lanl/LATTE"_https://github.com/lanl/LATTE.
For instructions on how to download and build LATTE on your system,
see the lib/latte/README file. Once you have done this and built
LAMMPS with the LATTE package installed you can run the example input
scripts for dynamics or minimization that are found in examples/latte.
NOTE: give a paragraph or two of overview of LATTE and what it does,
including reference links like this: The canonical LATTE papers are
("Cawkwell"_#Cawkwell) and ("Niklasson"_#Niklasson) and
("Niklasson2"_#Niklasson2). See bottom of this page for how to format
a citation. If you want to include equations as JPG files I can
show you how to do that as well. Just write the equations
as a LaTeX file. E.g. see this LAMMPS doc page:
http://lammps.sandia.gov/doc/pair_gran.html
The {peID} argument is not yet supported by fix latte, so it must be
specified as NULL. Eventually it will be used to enable LAMMPS to
calculate a Coulomb potential as an alternative to LATTE performing
the calculation.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the potential energy computed by LATTE to the system's
potential energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar which can be accessed by various
"output commands"_Section_howto.html#howto_15. The scalar is the
potential energy discussed above. The scalar value calculated by this
fix is "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The DFTB forces computed by LATTE via this fix are imposed during an
energy minimization, invoked by the "minimize"_minimize.html command.
NOTE: If you want the potential energy associated with the DFTB
forces to be included in the total potential energy of the system (the
quantity being minimized), you MUST enable the
"fix_modify"_fix_modify.html {energy} option for this fix.
[Restrictions:]
This fix is part of the LATTE package. It is only enabled if LAMMPS
was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
Currently, LAMMPS must be run in serial, as a single MPI task, to use
this fix. This is typically not a bottleneck, since LATTE will be
doing 99% or more of the work to compute quantum-accurate forces.
NOTE: should we say something about LATTE running in parallel?
E.g. how to let it run in shared memory on other cores of the same
node?
You must use metal units, as set by the "units"_units command to use
this fix.
[Related commands:] none
[Default:] none
:line
:link(Cawkwell)
[(Cawkwell)] M. Cawkwell and A. Niklasson, J Chem Phys,
101, 200-223 (2010).
:link(Niklasson)
[(Niklasson)] A. Niklasson and M. Cawkwell, J Chem Phys,
105, 200-223 (2012).
:link(Niklasson2)
[(Niklasson2)] A. Niklasson, T. Smith, M. Cawkwell, J Chem Phys,
110, 200-223 (2014).
\ No newline at end of file
Subproject commit 3298c379821d4e8f8ce81baa45037dbc35dd7daf
Subproject commit df95b2c566e8b50e67d7cbebdb92cbb9f8c6c419
Subproject commit 429dd8bc6d15ddd36a46a6f769fd4bac5b4e5520
Subproject commit a3454c368d31c02f04a35ad723e5499c4c46599a
FROM ubuntu:latest
#==============================================================================#
#
# This "Dockerfile" can be used by to build the EXAALT framework starting from
# a generic "ubuntu" image. Parts of this script can be used to prepare an
# image with only the EXAALT dependencies (for use in a gitlab-ci.yml script).
# Note that this script does not do a recusrive clone of the entire exaalt
# framework, because it is intended to allow some commands to be removed so that
# distinct parts of the framework can be tested independently.
#
# Original Author: Richard J. Zamora, April 26th 2017
#
# Last Modified: April 27th 2017
#
# Use Instructions:
#
# (1) Install Docker (https://www.docker.com/get-docker)
# --> For Mac, (https://www.docker.com/docker-mac)
#
# (2) Modify this Dockerfile script (and name it "Dockerfile")
# --> Set the "USERNAME" and "PASSWORD" environment variables to match
# your personal gitlab.com account
#
# (3) In a new directory containing the "Dockerfile", build an image:
# --> $ docker build -t <image-name> .
#
# Note: <image-name> is your choice (ex: ubuntu-exaalt)
#
# Note: At LANL, may need to use the following command instead:
#
# --> $ docker build --build-arg http_proxy=$http_proxy
# --build-arg https_proxy=$https_proxy -t <image-name> .
#
# --> $ docker image ls
#
# (*) To build and push an image to gitlab.com for "CI":
# --> $ docker login registry.gitlab.com
#
# --> Then, for following use:
# <full-image-name> = registry.gitlab.com/project-path/<image-name>
#
# --> $ docker build --build-arg http_proxy=$http_proxy
# --build-arg https_proxy=$https_proxy -t <full-image-name> .
#
# Note: For example, the commands preceeding the clone of LATTE can be
# used to create an image of ubuntu with EXAALT dependencies.
# The image can then be used in the ".gitlab-ci.yml" file in the
# exaalt/exaalt/ project to perform tests on a "runner". In this
# case you would use...
#
# <full-image-name> =
# registry.gitlab.com/exaalt/exaalt/<image-name>
#
# --> $ docker image ls
#
# Note: Look at the hash "tag" for this image
#
# --> $ docker tag <tag-id> <full-image-name>:<tag-name>
#
# Note: <tag-name> can be some label of choice, ex: "latest"
#
# --> $ docker push <full-image-name>
#
#==============================================================================#
# Install basic ubuntu functionality:
RUN apt-get update \
&& apt-get --yes install gfortran libblas-dev liblapack-dev \
&& apt-get --yes install cmake python gcc cmake-data g++ git wget \
&& apt-get --yes install pkg-config python-numpy python3-numpy libopenmpi-dev
# Setup environemnt:
ENV HOME /usr/local/
WORKDIR /usr/local/
# USERNAME: Gitlab.com username
# PASSWORD: Gitlab.com password
# local_PREFIX: "Local" directory containing dependencies
# super_PREFIX: Directory where apt-get installs boost
ENV USERNAME <your-gitlab-username>
ENV PASSWORD <your-gitlab-password>
ENV local_PREFIX /usr/local/
ENV super_PREFIX /usr/
# Install boost:
RUN apt-get --yes install libboost-all-dev
# Clone exaalt_deps repository:
# ...(Note: I created a public repo to hold the deps for now)
RUN git clone https://rjzamora@gitlab.com/rjzamora/exaalt_deps.git
# Install bdb:
RUN cd ${HOME}/exaalt_deps/ \
&& tar -xvf db-6.2.23.tar \
&& cd ${HOME}/exaalt_deps/db-6.2.23 \
&& cd build_unix \
&& ../dist/configure --enable-stl --enable-cxx --prefix=${local_PREFIX} \
&& make \
&& make install
# Install eigen:
RUN cd ${HOME}/exaalt_deps/eigen-eigen-26667be4f70b \
&& cp -r Eigen ${local_PREFIX}/include/.
# Install nauty:
RUN cd ${HOME}/exaalt_deps/ \
&& tar -xvf nauty26r7.tar \
&& cd ${HOME}/exaalt_deps/nauty26r7 \
&& ./configure --prefix=${local_PREFIX} \
&& make \
&& cp nauty.a ${local_PREFIX}/lib/libnauty.a \
&& mkdir ${local_PREFIX}/include/nauty \
&& cp *.h ${local_PREFIX}/include/nauty
# Build and Install latte:
RUN git clone https://github.com/lanl/LATTE.git \
&& cd ${HOME}/LATTE \
&& cp ./makefiles/makefile.CHOICES.gfort.lapack.lmp makefile.CHOICES \
&& make
ENV latte_PATH ${HOME}/LATTE
## Build and Install lammps:
RUN git clone https://${USERNAME}:${PASSWORD}@gitlab.com/exaalt/lammps.git \
&& cd ${HOME}/lammps \
&& git checkout exaalt \
&& git pull origin exaalt \
&& cd ${HOME}/lammps/lib/latte \
&& cp Makefile.lammps.gfortran Makefile.lammps \
&& cd ${HOME}/lammps/src \
&& make yes-latte \
&& make yes-molecule \
&& make yes-manybody \
&& make yes-kspace \
&& make yes-snap \
&& make yes-misc \
&& cp MAKE/MACHINES/Makefile.ubuntu_simple MAKE/Makefile.mpi \
&& make mpi \
&& make mpi mode=lib \
&& cp ${HOME}/lammps/src/liblammps_mpi.a ${local_PREFIX}/lib/. \
&& mkdir ${local_PREFIX}/include/lammps \
&& cp ${HOME}/lammps/src/*.h ${local_PREFIX}/include/lammps/.
## Clone parsplice:
RUN git clone https://${USERNAME}:${PASSWORD}@gitlab.com/exaalt/parsplice.git \
&& cd ${HOME}/parsplice \
&& git checkout exaalt \
&& git pull origin exaalt
## Build parsplice:
RUN cd ${HOME}/parsplice \
&& mkdir build \
&& cd build \
&& export COMPILER="mpic++" \
&& export bldir_PREFIX=${HOME}/parsplice/build/ \
&& cmake \
-DCMAKE_INCLUDE_PATH=${local_PREFIX}/include/:${super_PREFIX}/include/ \
-DCMAKE_BINARY_DIR=${bldir_PREFIX} \
-DEXTRA_FLAGS="-I${latte_PATH}/src" \
-DEXTRA_LINK_FLAGS="-fopenmp ${latte_PATH}/src/latte_c_bind.o ${latte_PATH}/liblatte.a -lgfortran -llapack -lblas" \
-DCMAKE_LIBRARY_PATH=${local_PREFIX}/lib:${super_PREFIX}/lib/ \
-DCMAKE_CXX_COMPILER=${COMPILER} ../ \
&& make
ENV HOME /root
CMD ["/bin/bash"]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment