Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update manual to cover QMC_DATA and ENABLE_TIMERS #749

Merged
merged 5 commits into from
Apr 7, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 30 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,64 +115,68 @@ make -j 8
```
QMC_CUDA Enable CUDA and GPU acceleration (1:yes, 0:no)
QMC_COMPLEX Build the complex (general twist/k-point) version (1:yes, 0:no)
QMC_MIXED_PRECISION Build the mixed precision (mixing double/float) version
(1:yes (GPU default), 0:no (CPU default)).
The CPU support is experimental.
Use float and double for base and full precision.
The GPU support is quite mature.
Use always double for host side base and full precision
and use float and double for CUDA base and full precision.
ENABLE_TIMERS Enable fine-grained timers (1:yes, 0:no (default)).
Timers are off by default to avoid potential slowdown in small
systems. For large systems (100+ electrons) there is no risk.
ENABLE_SOA (Experimental) Enable CPU optimization based on Structure-
of-Array (SoA) datatypes (1:yes, 0:no (default)). ```
```

* Additional QMC options

```
QMC_DATA Specify data directory for QMCPACK (currently unused, but
likely to be used for performance tests)
QMC_INCLUDE Add extra include paths
QMC_EXTRA_LIBS Add extra link libraries
QMC_BUILD_STATIC Add -static flags to build
QMC_DATA Specify data directory for QMCPACK performance and integration tests
QE_BIN Location of Quantum Espresso binaries including pw2qmcpack.x
```

* libxml
* libxml2 related

```
Libxml2_INCLUDE_DIRS Specify include directories for libxml2
Libxml2_LIBRARY_DIRS Specify library directories for libxml2
```

* FFTW
```
FFTW_INCLUDE_DIRS Specify include directories for FFTW
FFTW_LIBRARY_DIRS Specify library directories for FFTW
* HDF5 related
```
ENABLE_PHDF5 1(default)/0, enables/disable parallel collective IO.

## Configure and build
```

Move to build directory, run cmake and make
* FFTW related
```
cd build
cmake ..
make -j 8
FFTW_INCLUDE_DIRS Specify include directories for FFTW
FFTW_LIBRARY_DIRS Specify library directories for FFTW
```

## Example configure and build

* Set the environments (the examples below assume bash, Intel compilers and MKL library)
```
export CXX=icpc
export CC=icc
export MKL_HOME=/usr/local/intel/mkl/10.0.3.020
export LIBXML2_HOME=/usr/local
export HDF5_ROOT=/usr/local
export BOOST_ROOT=/usr/local/boost
export FFTW_HOME=/usr/local/fftw
```
* Move to build directory, run cmake and make
In the build directory, run cmake with appropriate options, then
make.

* Using Intel compilers and their MPI wrappers. Assumes HDF5 and
libxml2 will be automatically detected.

```
cd build
cmake -D CMAKE_BUILD_TYPE=Release ..
cmake -DCMAKE_C_COMPILER=mpiicc -DCMAKE_CXX_COMPILER=mpiicpc ..
make -j 8
```

## Special notes

It is recommended to create a helper script that contains the
configure line for CMake. This is particularly useful when avoiding
enviornmental variables, packages are installed in custom locations,
configure line for CMake. This is particularly useful when using
environmental variables, packages are installed in custom locations,
or the configure line may be long or complex. In this case it is
recommended to add "rm -rf CMake*" before the configure line to remove
existing CMake configure files to ensure a fresh configure each time
Expand Down
2 changes: 2 additions & 0 deletions manual/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ pdflatex qmcpack_manual.tex
pdflatex qmcpack_manual.tex
```

A script, build_manual.sh, is provided.

5 changes: 3 additions & 2 deletions manual/features.tex
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ \section{Features in production}
\item Excited state calculations via flexible occupancy assignment of Slater determinants
\item All electron and non-local pseudopotential calculations
\item Casula T-moves for variational evaluation of non-local
pseudopotentials (non-size consistent)
pseudopotentials (non-size consistent and size-consistent variants)
\item Wavefunction optimization using the ``linear method'' of Umrigar
and co-workers, with arbitrary mix of variance and energy in the
objective function
Expand All @@ -31,7 +31,8 @@ \section{Features in production}
\item GPU (NVIDIA CUDA) implementation (limited functionality)
\item HDF5 input/output for large data
\item Nexus: advanced workflow tool to automate all aspects of QMC calculation from initial DFT calculations through to final analysis
\item Analysis tools for minimal environments (perl only) through to python-based with graphs produced via matplotlib.
\item Analysis tools for minimal environments (perl only) through to
python-based with graphs produced via matplotlib (included with Nexus).
\end{itemize}

\subsection{Supported GPU features}
Expand Down
44 changes: 40 additions & 4 deletions manual/installation.tex
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,11 @@ \subsection{Configuration options}
The GPU support is quite mature.
Use always double for host side base and full precision
and use float and double for CUDA base and full precision.
ENABLE_TIMERS Enable fine-grained timers (1:yes, 0:no (default)).
Timers are off by default to avoid potential slowdown in small
systems. For large systems (100+ electrons) there is no risk.
ENABLE_SOA (Experimental) Enable CPU optimization based on Structure-
of-Array (SoA) datatypes (1:yes, 0:no (default)).

of-Array (SoA) datatypes (1:yes, 0:no (default)).
\end{verbatim}
\item General build options
\begin{verbatim}
Expand Down Expand Up @@ -236,8 +238,8 @@ \subsection{Configuration options}
QMC_INCLUDE Add extra include paths
QMC_EXTRA_LIBS Add extra link libraries
QMC_BUILD_STATIC Add -static flags to build
QMC_DATA Specify data directory for QMCPACK (currently
unused, but likely to be used for future performance tests)
QMC_DATA Specify data directory for QMCPACK performance and integration tests
QE_BIN Location of Quantum Espresso binaries including pw2qmcpack.x
\end{verbatim}
\item libxml2 related
\begin{verbatim}
Expand All @@ -261,6 +263,40 @@ \subsection{Configuration options}
\end{verbatim}
\end{itemize}

\subsection{Role of QMC\_DATA}
QMCPACK includes a variety of optional performance and integration
tests that use research quality wavefunctions to obtain meaningful
performance and to more thoroughly test the code. The necessarily
large input files are stored in the location pointed to by QMC\_DATA,
e.g. scratch or long-lived project space on a supercomputer. These
files are not included in the source code distribution to minimize
size. The tests are activated if cmake detects the files when
configured. See tests/performance/NiO/README,
tests/solids/NiO\_afqmc/README and tests/performance/C-graphite/README
for details of the current tests, input files, and downloading them.

Currently the files must be downloaded via\\
\url{https://anl.box.com/s/pveyyzrc2wuvg5tmxjzzwxeo561vh3r0} and \\
\url{https://anl.box.com/s/j5d6jeazpgx5441s04ajtv77iogoyjsh}.

A complete set of files is currently:
\begin{verbatim}
QMC_DATA/C-graphite/lda.pwscf.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S1.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S2.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S4.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S8.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S16.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S32.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S64.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S128.h5
QMC_DATA/NiO/NiO-fcc-supertwist111-supershift000-S256.h5
QMC_DATA/NiO/NiO_afm_fcidump.h5
QMC_DATA/NiO/NiO_afm_wfn.dat
QMC_DATA/NiO/NiO_nm_choldump.h5
\end{verbatim}


\subsection{Configure and build using cmake and make}
To configure and build QMCPACK, move to build directory, run cmake and make
\begin{verbatim}
Expand Down