Installation¶
Prerequisites¶
MPI C++ compiler
C++11 and MPI-3 support
GNU Libtool
GNU Autoconf
Version 2.69 or newer
GNU Automake
Boost C++ Libraries
Version 1.53.0 or newer
BLAS
Use optimized BLAS
LAPACK
Use optimized LAPACK
ScaLAPACK
Use optimized ScaLPACK
Intel MKL is strongly recommended for BLAS, LAPACK, and ScaLAPACK (distributed for free for academic users)
Downloading the source¶
The simplest approach is to just download and extract the tarball containing the most recent BAGEL release:
$ wget https://github.com/nubakery/bagel/archive/v1.1.1.tar.gz $ tar xvf bagel-1.1.1.tar.gz $ cd bagel
Alternatively, you can clone the git repository:
$ git clone https://github.com/nubakery/bagel.git
$ cd bagel
The SMITH3 code generator can be downloaded in a similar manner from the NUBakery GitHub page.
Build BAGEL¶
Automake
$ glibtoolize (or, libtoolize) $ aclocal $ autoconf $ autoheader $ automake -a
Create an object directory
$ mkdir obj $ cd obj
Configure
A minimal set of configure options is
$ export BOOST_ROOT=/path/to/boost $ export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH $ ../configure --enable-mkl --with-boost=$BOOST_ROOT
- Configure options:
--with-mpi=value
turns on MPI, where “value” can be “mvapich”, “intel”, or “openmpi”. However, Open MPI is not recommended.--enable-mkl
turns on MKL extensions, such as efficient matrix transposition. MKL libraries are automatically detected.--with-boost=/path/to/boost
specifies the BOOST library to be used.--disable-scalapack
will disable the use of ScaLapack (parallel Lapack) which is not recommended.--disable-smith
will disable the code generated by SMITH which is not recommended.--with-include
can be used to specifically include paths.--with-libxc
turns on the interface to libxc.CXXFLAGS=-DNDEBUG
deactivates the debugging mode. It is absolutely essential to specify this for release builds.CXXFLAGS=-DCOMPILE_J_ORB
allows the inclusion of j-type atomic basis functions.
Example (Release build on the Shiozaki group’s cluster)
$ export BOOST_ROOT=/usr/local/boost/boost_1_64_0_gcc-7.1.0 $ export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH $ ../configure CXXFLAGS="-DNDEBUG -O3 -mavx" --enable-mkl --with-boost=$BOOST_ROOT --with-mpi=intel
Compile
$ make -j4 $ make install
Test run
$ BAGEL path_to_bagel/test/benzene_svp_mp2.json
Also there is a suite of test programs. To run this, in obj
$ cd bagel/obj $ make check $ cd src $ ./TestSuite --log_level=all
One of the tests (ASD-DMRG) is meant to fail.
Additional Notes
Configuring without MKL
If MKL is not available, the path to cblas headers may need to be included as a configure option (e.g., ‘–with-include=-I/usr/path/to/cblas’). One may also add “LDFLAGS=-lcblas” as an option. Furthermore, if relativistic calculations fail without MKL, users may consider reconfiguring and recompiling with -DZDOT_RETURN in CXXFLAGS.Compiling on small machines
Some files in BAGEL require several GB of RAM to compile. This is generally not a problem for clusters, but on personal computers the compilation will occasionally fail. Compiling with one thread (make -j1) and not using -DCOMPILE_J_ORB may help.