Changelog#
0.6.0 - 2026-08-13#
Summary#
nvMolKit 0.6.0 adds two new GPU-accelerated capabilities: Maximum Common Substructure (MCS) search and a FIRE minimizer option for MMFF and UFF force field optimization. Fused Butina clustering has been rewritten on a pure CUDA backend, making it over 10x faster and removing the Triton dependency, and Butina clustering now supports reordering=False and matches RDKit output exactly. Substructure search is up to 2x faster end to end with a new DFS backend. This release supports RDKit 2025.09.1 through 2026.03.5 and includes all fixes from the v0.5.1 patch release.
Contributors#
Clay Moore (@mooreneural)
Eva Xue (@evasnow1992)
Kevin Boyd (@scal444)
Matthew Neba (@Matthew-Neba)
Timur Rvachov (@trvachov)
Features#
GPU-accelerated Maximum Common Substructure (MCS) search via the new
nvmolkit.mcs.findMCSAPI. Searches many molecule pairs in one batched call — all pairs of a molecule set, an explicit pair list, or two zipped lists — with configurable atom/bond matching, per-pair timeouts, and a CPU RDKit fallback for oversized inputs. RDKit fMCS options that are not yet supported raise informative errors (#221)FIRE minimizer as an alternative to BFGS for force field optimization, roughly 2x faster than BFGS for comparable accuracy. Available via
minimizerKind="FIRE"in the MMFF and UFF optimization APIs and theBatchedForcefieldAPI (#216)Fused Butina clustering rewritten from Python/Triton onto a CUDA backend, keeping the full clustering loop on the GPU. Up to 10x faster and removes the Triton dependency, by @Matthew-Neba (#226)
Support for
reordering=Falsein Butina clustering, matching the RDKit option, by @Matthew-Neba (#192)Butina clustering results now match RDKit exactly, with deterministic tie-breaking and cluster ordering, by @Matthew-Neba (#241)
New DFS-based substructure search backend, up to 2x faster end to end, with reduced host-device transfer overhead (#244)
Conformer RMSD can now return a square distance matrix (
output_format="square") for direct use with downstream clustering APIs (a26ae9c)Performance improvements to conformer RMSD kernels by @mooreneural (ea09e2d)
Reduced per-call launch overhead in similarity computations by @mooreneural (ea09e2d)
Bug Fixes#
All bug fixes from the v0.5.1 patch release, covering ETKDG conformer generation, Morgan fingerprints, fused Butina clustering, TFD, SMARTS handling, MMFF/UFF convergence, and pip packaging
Fix a data race in batched MMFF minimization when a molecule’s conformers spanned multiple batches, which could produce incorrect atom typing or crashes at high thread counts (#236)
Fix MMFF failing to parametrize cyclophosphazine-type molecules (#258)
Fix an incorrect sixth-order torsion gradient term in distance geometry minimization (#217)
CUDA streams belonging to a different GPU are now rejected with a clear error instead of being silently accepted (#235)
Miscellaneous#
Document fixes for common torch CUDA-backend installation issues with pip, uv, and conda (#209)
New downloadable agent skill teaching LLM coding agents to use nvMolKit, with evals and an NVIDIA skills catalog card (434440f)
(C++) Major CMake / include-path refactor; all includes are now relative to the project root (#191)
0.5.1 - 2026-06-24#
Summary#
nvMolKit 0.5.1 is a bug fix and quality-of-life release.
Contributors#
Kevin Boyd (@scal444)
Eva Xue (@evasnow1992)
Clay Moore (@mooreneural)
Bug Fixes#
Fix pip wheels failing to import in minimal manylinux/CUDA containers (#174).
Fix incorrect TFD values for molecules with very large conformer sets and avoid invalid values for empty ring-torsion cases, by @mooreneural (d265234).
Fix MMFF/UFF convergence parity with RDKit 2026.03+ for force fields with negative intermediate energies, by @mooreneural (rdkit/rdkit#9298).
Fix empty Morgan fingerprints when every molecule in a batch exceeded the GPU size buckets (#195).
Fix rare one-bit Morgan fingerprint mismatches in multi-round GPU batches (#197).
Fix fused Butina clustering failures on very large inputs (#194).
Fix ETKDG cases that incorrectly produced zero conformers for affected molecules (#202).
Fix disconnected SMARTS queries raising the expected Python error instead of terminating the process with multithreaded preprocessing (#203).
Fix recursive SMARTS queries with pip-installed RDKit builds (#208).
Fix brittle Python import orders for MMFF and UFF optimization modules (#212).
Miscellaneous#
0.5.0 - 2026-05-13#
Summary#
nvMolKit 0.5.0 adds three new GPU-accelerated APIs: Torsion Fingerprint Deviation (TFD), pairwise conformer RMSD, and UFF force field optimization. It also introduces a BatchedForcefield Python API for MMFF and UFF with constraints, custom options, and multi-conformer minimization; a low-memory fused Butina clustering path that avoids the O(N²) distance matrix; a Python autotuning framework for the main APIs; and optional device-side output for ETKDG and forcefield optimization. Blackwell / L-class GPUs (including sm_103/B300) are now supported, the supported RDKit range is now 2025.03.1 through 2026.03.1, and nvMolKit is available via pip install nvmolkit.
Contributors#
Kevin Boyd (@scal444)
Eva Xue (@evasnow1992)
Alireza Moradzadeh (@moradza)
Andrei Volgin (@volgin)
Features#
GPU-accelerated Torsion Fingerprint Deviation (TFD) for batch all-pairs conformer comparison (#71)
GPU-accelerated pairwise conformer RMSD matrix computation by @volgin
GPU-accelerated UFF force field, supporting all options that the new
BatchedForcefieldPython API provides for MMFF (#114)New
BatchedForcefieldPython API exposing per-molecule control over forcefield minimization (MMFF or UFF), and through it custom MMFF optimization options (max iterations, energy/gradient tolerances, non-bonded cutoff) (#70)Distance and position constraints on forcefield optimization (MMFF and UFF) (#26)
Multi-conformer minimization in the
BatchedForcefieldAPIHardwareOptionssupport for MMFF minimization, matching the ETKDG hardware-targeting APIDevice-side output for ETKDG and forcefield optimization, allowing GPU tensors to flow between nvMolKit calls without round-tripping through host memory (#140)
Python autotuning library for the main APIs (
nvmolkit.autotune), including ETKDG, forcefield optimization, and substructure search, with configuration serialization (#141)Low-memory fused Butina clustering that computes Tanimoto similarities on the fly with Triton-backed kernels, avoiding the O(N²) distance matrix and enabling clustering of larger fingerprint datasets on a single GPU (#110)
Support for Blackwell and L-class GPUs, including sm_103 SASS for B300
Bug Fixes#
Fix latent stream-ordering bug in the MMFF/BFGS minimizer that could race with subsequent operations (#172)
Fix
int32overflow in substructure pair indexing for batches wherenumTargets * numQueriesexceedsINT32_MAX, which previously caused out-of-bounds writes inhasSubstructMatchandcountSubstructMatches(#169)Fix shared-memory overflow in the substructure recursive preprocessor caused by an incorrect config setting (#98)
Fix empty result handling in substructure search with
uniquifywhen all matches were already unique (#112)
Miscellaneous#
pip wheel distribution pipeline (
pip install nvmolkit) with manylinux_2_28 wheels for CPython 3.11-3.14 (#15)RDKit support range is now 2025.03.1 through 2026.03.1
Validate
batchesPerGpuinHardwareOptionsso every consumer gets a cleanValueErrorinstead of a cryptic C++ error from the MMFF / ETKDG layer (#103)Validate
neighborlist_max_sizeinbutina()before reaching the GPU (#104)Validate MMFF atom types up front and report every failing molecule instead of hitting a
PRECONDITIONassertion mid-batch (#106)
0.4.0 - 2026-02-23#
Summary#
nvMolKit 0.4.0 adds GPU-accelerated substructure searching, optional stream control across Python APIs, and enhancements to Butina clustering.
Contributors#
Kevin Boyd (@scal444)
Eva Xue (@evasnow1992)
Features#
GPU-accelerated substructure search with
hasSubstructMatch,countSubstructMatches, andgetSubstructMatches. Supports batch queries against batch targets with SMARTS-based query molecules.Optional
streamparameter added to fingerprint generation, similarity, and Butina clustering APIs, enabling explicit CUDA stream controlButina clustering now supports optional centroid reporting via the
return_centroidsparameter (#82)Butina clustering performance improved by replacing CPU loops with CUDA Graph conditional nodes (#72)
Bug Fixes#
0.3.0 - 2025-12-12#
Summary#
nvMolKit 0.3.0 adds Butina clustering support, improved performance to MMFF relaxation and conformer generation, and increased compatibility with libraries and compilers.
Contributors#
Kevin Boyd (@scal444)
Eva Xue (@evasnow1992)
Xuangui Huang (@stslxg-nv)
Features#
Butina clustering API enabled, using distance matrix input. On an H200 GPU, speedups of 400-1000x can be achieved on datasets up to 60k molecules
Improvements to BFGS minimizer. Up to 5x speedup compared to nvMolKit v0.2 on batches of small molecules (<20 atoms), with ~10-20% speedup in the general case. Applies to both MMFF relaxation and conformer generation.
Conda-forge releases now support RDKit versions 2024.9.6 to 2025.9.3
Bug Fixes#
Fixed a bug where synchronizations on the wrong stream could lead to data races in tests (Issue #28)
Fixed several areas where a memcpy could go out of scope before completing (Issue #28, Issue #29)
Fixed a bug where ETKDG would exit early with small CPU counts due to an incorrect identification of resource mis-configuration (Issue #31)
Miscellaneous#
(C++) Added support for CUB/CCCL > v2.8
(C++) Added support for externally specified CCCL
(C++) Added support for CUDA 13.0
0.2.0 - 2025-10-24#
Summary#
nvMolKit 0.2.0 comes with significant usability and feature-completeness improvements to existing functionality. It is also the first release to have a conda-forge release.
Contributors#
Kevin Boyd (@scal444)
Eva Xue (@evasnow1992)
Ignacio Pickering (@ignaciojpickering)
Features#
Add memory-segmented cross-similarity code, enabling larger datasets on systems with limited GPU memory (#13)
Support conformer deduplication in ETKDG conformer generation (#14)
Allow molecules > 256 atoms in conformer generation and MMFF optimization (#16)
Enable all combinations of (ET)(K)(DG) in conformer generator (#17)
Bug Fixes#
Fix compilation error on C++ build with target=native on Hopper architecture GPUs. (#6)
Fix lack of device-set cleanup in multi-GPU code (#8)
Fix bug in fingerprint bool->bitfield packing/unpacking code (#11)
Fix integer overflow leading to incorrect allocations in similarity calculation code. (#20)
Fix crash in most multithreaded APIs whenever exceptions are thrown inside of OpenMP loop. Exceptions now properly propagated to python (#18)
Miscellaneous#
Removed unsupported Bulk Similarity APIs (#12)
0.0.1 2025-09-09#
Summary#
Initial release of nvMolKit. Features include:
Morgan Fingerprints
Tanimoto and Cosine similarity
ETKDG conformer generation
MMFF optimization