Interface to SIMINT by B. Pritchard¶
Code author: Benjamin P. Pritchard
Section author: Lori A. Burns
These are the vectorized implementation of the Obara-Saika (OS) method of
calculating electron repulsion integrals developed by B. Pritchard and
interfaced into libmints. Enabling simint and adding set
integral_package simint
(do this in ~/.psi4rc
for universal effect)
runs libderiv from Libint for derivative integrals and simint for
non-derivative integrals. Note that present AM maximum is $$(gg|gg)$$
Warning
simint seems to be having some problems with Intel 2018 compilers. presently disabled in conda package.
Installation¶
Binary
SIMINT is available as a conda package for Linux and macOS (and Windows, through the Ubuntu shell).
The conda package is compiled to least-common-denominator, namely SSE instruction set.
If using the PSI4 binary, simint has already been installed alongside.
If using PSI4 built from source, and anaconda or miniconda has already been installed (instructions at Quick Installation), simint can be obtained through
conda install simint -c psi4
. Then enable it as a feature with ENABLE_simint, hint its location with CMAKE_PREFIX_PATH, and rebuild PSI4 to detect simint and activate dependent code.
To remove a conda installation,
conda remove simint
.
Source
If using PSI4 built from source and you want simint built from from source also, enable it as a feature with ENABLE_simint, and let the build system fetch and build it and activate dependent code.
How to configure simint for building Psi4¶
Role and Dependencies
Role — In PSI4, simint is a library that provides alternate integrals.
Downstream Dependencies — PSI4 (\(\Leftarrow\) optional) simint
Upstream Dependencies — simint \(\Leftarrow\) None
CMake Variables
ENABLE_simint — CMake variable toggling whether PSI4 builds with simint
CMAKE_PREFIX_PATH — CMake list variable to specify where pre-built dependencies can be found. For simint, set to an installation directory containing
include/simint/simint.h
simint_DIR — CMake variable to specify where pre-built simint can be found. Set to installation directory containing
share/cmake/simint/simintConfig.cmake
CMAKE_DISABLE_FIND_PACKAGE_simint — CMake variable to force internal build of simint instead of detecting pre-built
CMAKE_INSIST_FIND_PACKAGE_simint — CMake variable to force detecting pre-built simint and not falling back on internal build
SIMINT_VECTOR — CMake variable for simint vectorization (i.e., scalar sse avx avxfma micavx512). Default is
avx
, not detected, sosse
may be required for older chipsets. See http://www.bennyp.org/research/simint/README.txt for details.
Examples
Build bundled
>>> cmake -DENABLE_simint=ON
Build without simint
>>> cmake
Link against pre-built
>>> cmake -DENABLE_simint=ON -DCMAKE_PREFIX_PATH=/path/to/simint/root>>> cmake -DENABLE_simint=ON -Dsimint_DIR=/path/to/simint/configdir
Build bundled despite pre-built being detectable
>>> cmake -DENABLE_simint=ON -DCMAKE_PREFIX_PATH=/path/to/unwanted/simint/root/and/wanted/other/dependencies/root -DCMAKE_DISABLE_FIND_PACKAGE_simint=ON