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)$$
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 PSI4 built from source, and anaconda or miniconda has
already been installed (instructions at Quick Installation),
simint can be obtained through
conda install simint
. 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
- 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