Interface to SIMINT by B. Pritchard

Code author: Benjamin P. Pritchard

Section author: Lori A. Burns

https://img.shields.io/badge/home-simint-5077AB.svg
https://img.shields.io/badge/docs-latest-5077AB.svg

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

  • https://anaconda.org/psi4/simint/badges/version.svg
  • 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.

  • Previous bullet had details. To build PSI4 from source and use simint from conda without thinking, consult sec:condapsi4dev.

  • To remove a conda installation, conda remove simint.

Source

  • https://img.shields.io/github/tag/psi4/simint.svg?maxAge=2592000
  • 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, so sse may be required for older chipsets. See http://www.bennyp.org/research/simint/README.txt for details.

Examples

  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