cuEST Release Notes#

v0.2.0#

New Features#

  • Adds support for polarizable continuum model (PCM) derivatives with respect to each atomic cavity radius:

  • Adds support for range-separated hybrid exchange and its nuclear derivatives.

    • The cuestDFIntPlan_t can be configured to use the full-range \(1/r\) operator, the long-range \(\mathrm{erf}(\omega r)/r\) operator and linear combinations thereof.

  • Adds native support for new exchange-correlation functionals:

    • \(\mathrm{LC\mbox{-}}\omega\mathrm{PBE}\)

    • \(\mathrm{LC\mbox{-}}\omega\mathrm{PBEh}\)

    • \(\omega\mathrm{B97X}\)

    • \(\omega\mathrm{B97X\mbox{-}V}\)

    • \(\omega\mathrm{B97M\mbox{-}V}\)

    • \(\mathrm{CAM\mbox{-}B3LYP}\)

    • \(\mathrm{HSE06}\)

    • \(\mathrm{M06}\)

    • \(\mathrm{M06\mbox{-}2X}\)

  • Adds support for general multipole integrals and their nuclear derivatives:

  • Adds support for one-electron angular momentum integrals and their nuclear derivatives:

  • Introduces nabla integrals and their nuclear derivatives:

  • Adds density-fitted nonsymmetric exchange (K) matrix computation:

    • cuestDFNonsymmetricExchangeCompute() computes AO exchange (K) matrices with nonsymmetric density matrices (e.g., for response or excited-state methods) within a density fitting (DF) framework.

    • Supports batched evaluation over multiple density matrices. Densities are specified as a single left coefficient matrix and multiple right coefficient matrices.

  • Adds AO-to-MO transformation for density-fitted integrals:

    • cuestDFMOIntegralsCompute() transforms three-index DF AO tensors \((A|mn)\) into MO-space tensors \((A|ia)\) using pairs of left/right coefficient matrices.

    • Supports batched transformations with variable numbers of left and right orbitals per matrix pair.

    • Applies the fitting metric (and, when configured, long-range corrected operators) as part of the transformation.

  • Adds detailed inspection of polarizable continuum model (PCM) calculations:

  • Adds support for float-float FP64 emulation:

    • Accelerates VV10 nonlocal correlation, potential, Coulomb, and PCM computations on GPUs with reduced native FP64 throughput, such as the GeForce and workstation-class architectures (compute capabilities 8.6, 8.9, and 12.0).

    • Defaults to using float-float emulation when beneficial based on the active hardware.

  • Adds just-in-time (JIT) compilation of specialized GPU kernels for select compute routines: cuestPotentialCompute(), cuestPotentialDerivativeCompute(), cuestDFCoulombCompute(), cuestDFSymmetricDerivativeCompute(), cuestPCMPotentialCompute(), cuestPCMDerivativeCompute(), and cuestPCMRadiiDerivativeCompute().

    • Requires CUDA Toolkit 13.x or newer (13.0.2 or later); on CUDA 12.x, affected routines run their precompiled kernels instead.

    • Compiled kernels are cached to disk (default ~/.cuest_cache/cuest-cuda<cuda_major>-v<cuest_version>/) and reused across runs, so the compile cost is paid once per machine.

    • Configurable via CUEST_HANDLE_PARAMETERS_JIT_CACHE_DIR and CUEST_HANDLE_PARAMETERS_JIT_COMPILE_THREADS on the handle parameters, and per-routine via each routine’s *_JIT_USAGE_MODE parameter.

    • See Just-In-Time (JIT) Compilation in cuEST for details.

Changes#

  • To improve efficiency in the cuestDFSymmetricDerivativeCompute(), the cuestDFSymmetricDerivativeComputeMemoryPolicy_t options have been changed.

    • The CUEST_DFSYMMETRICDERIVATIVECOMPUTE_MEMORY_POLICY_FULL and CUEST_DFSYMMETRICDERIVATIVECOMPUTE_MEMORY_POLICY_BLOCKED memory policies have been deprecated.

    • The CUEST_DFSYMMETRICDERIVATIVECOMPUTE_MEMORY_POLICY_DEVICECACHE policy replaces CUEST_DFSYMMETRICDERIVATIVECOMPUTE_MEMORY_POLICY_FULL.

    • If the new CUEST_DFSYMMETRICDERIVATIVECOMPUTE_MEMORY_POLICY_OVERWRITE memory policy is used when cuestDFSymmetricDerivativeCompute() is called, the cuestDFIntPlan_t will be placed in a “dirty” state and cannot continue to be used. Calls using a cuestDFIntPlan_t in a dirty state return the CUEST_STATUS_INVALID_PLAN status code.

  • The cuestDFIntPlan_t can now be constructed in an “integral direct” mode by setting CUEST_DFINTPLAN_PARAMETERS_THREE_INDEX_INTEGRAL_DIRECT.

  • The cuestDFIntPlan_t now only accepts values of CUEST_DFINTPLAN_PARAMETERS_EXCHANGE_FRACTION that are greater than or equal to zero.

    • The CUEST_STATUS_INVALID_ARGUMENT status will be returned if this condition is violated.

  • The cuestDFSymmetricDerivativeCompute functions accept NULL pointers for the MO coefficients if no exchange calculation will be performed.

    • This behavior is now consistent for both the C and Python APIs.

  • Python bindings now use nanobind and the 3.12 stable ABI. This means that Python 3.11 is deprecated and all 3.12+ versions are supported (free threaded Python is not currently supported). While regular usage is unchanged, nanobind introduces some extra type safety preventing, e.g., creation of enum variables from integers that do not correspond to a valid enumerator value.

  • The libcuest, libcuest-static, and libcuest-devel C packages are deployed only through the conda-forge channel from 0.2.0 onwards. Previous versions are still available on both conda-forge and the nvidia channel.

v0.1.1#

Bug Fixes#

Disclaimer#

cuEST is in a pre-release state. Pre-release products may not be fully functional, may contain errors or design flaws, and may be changed at any time without notice. We appreciate your feedback to improve and iterate on our products.