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)$$



  • SIMINT is available as a conda package for Linux and macOS.

  • 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.


  • 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, so sse may be required for older chipsets. See for details.


  1. Build bundled
>>> cmake -DENABLE_simint=ON
  1. Build without simint
>>> cmake
  1. 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
  1. 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