Skip to content

Commit 849e340

Browse files
authored
Prep for v0.5
Add changelog, bump version strings, bump build matrix and dockerfiles
1 parent 7322c9c commit 849e340

16 files changed

Lines changed: 100 additions & 23 deletions

.github/workflows/conda-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ jobs:
3939
matrix:
4040
include:
4141
- python: "3.10"
42-
rdkit: "2024.9.6"
42+
rdkit: "2025.3.6"
4343
cuda: "12.9"
44-
config: linux_64_c_stdlib_version2.17cuda_compiler_version12.9librdkit_dev2024.9.6python3.10.____cpython
44+
config: linux_64_c_stdlib_version2.17cuda_compiler_version12.9librdkit_dev2025.3.6python3.10.____cpython
4545
- python: "3.11"
4646
rdkit: "2025.3.2"
4747
cuda: "12.9"

.github/workflows/cpp-build-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050

5151
- name: Install dependencies
5252
shell: bash
53-
run: bash admin/ci/setup_dependencies.sh 3.12 2024.09.6
53+
run: bash admin/ci/setup_dependencies.sh 3.12 2025.03.6
5454

5555
- name: Configure
5656
shell: bash

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,44 @@
11
# Changelog
22

3+
## 0.5.0 - 2026-05-13
4+
5+
### Summary
6+
7+
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`.
8+
9+
### Contributors
10+
- Kevin Boyd (@scal444)
11+
- Eva Xue (@evasnow1992)
12+
- Alireza Moradzadeh (@moradza)
13+
- Andrei Volgin (@volgin)
14+
15+
### Features
16+
- GPU-accelerated Torsion Fingerprint Deviation (TFD) for batch all-pairs conformer comparison ([#71](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/71))
17+
- GPU-accelerated pairwise conformer RMSD matrix computation by @volgin
18+
- GPU-accelerated UFF force field, supporting all options that the new `BatchedForcefield` Python API provides for MMFF ([#114](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/114))
19+
- New `BatchedForcefield` Python 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](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/70))
20+
- Distance and position constraints on forcefield optimization (MMFF and UFF) ([#26](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/26))
21+
- Multi-conformer minimization in the `BatchedForcefield` API
22+
- `HardwareOptions` support for MMFF minimization, matching the ETKDG hardware-targeting API
23+
- Device-side output for ETKDG and forcefield optimization, allowing GPU tensors to flow between nvMolKit calls without round-tripping through host memory ([#140](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/140))
24+
- Python autotuning library for the main APIs (`nvmolkit.autotune`), including ETKDG, forcefield optimization, and substructure search, with configuration serialization ([#141](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/141))
25+
- 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](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/110))
26+
- Support for Blackwell and L-class GPUs, including sm_103 SASS for B300
27+
28+
### Bug Fixes
29+
- Fix latent stream-ordering bug in the MMFF/BFGS minimizer that could race with subsequent operations ([#172](https://github.com/NVIDIA-Digital-Bio/nvMolKit/pull/172))
30+
- Fix `int32` overflow in substructure pair indexing for batches where `numTargets * numQueries` exceeds `INT32_MAX`, which previously caused out-of-bounds writes in `hasSubstructMatch` and `countSubstructMatches` ([#169](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/169))
31+
- Fix shared-memory overflow in the substructure recursive preprocessor caused by an incorrect config setting ([#98](https://github.com/NVIDIA-Digital-Bio/nvMolKit/pull/98))
32+
- Fix empty result handling in substructure search with `uniquify` when all matches were already unique ([#112](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/112))
33+
34+
### Miscellaneous
35+
- pip wheel distribution pipeline (`pip install nvmolkit`) with manylinux_2_28 wheels for CPython 3.11-3.14 ([#15](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/15))
36+
- RDKit support range is now 2025.03.1 through 2026.03.1
37+
- Validate `batchesPerGpu` in `HardwareOptions` so every consumer gets a clean `ValueError` instead of a cryptic C++ error from the MMFF / ETKDG layer ([#103](https://github.com/NVIDIA-Digital-Bio/nvMolKit/pull/103))
38+
- Validate `neighborlist_max_size` in `butina()` before reaching the GPU ([#104](https://github.com/NVIDIA-Digital-Bio/nvMolKit/pull/104))
39+
- Validate MMFF atom types up front and report every failing molecule instead of hitting a `PRECONDITION` assertion mid-batch ([#106](https://github.com/NVIDIA-Digital-Bio/nvMolKit/issues/106))
40+
41+
342
## 0.4.0 - 2026-02-23
443

544
### Summary

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ cmake_policy(SET CMP0167 NEW)
1717

1818
project(
1919
nvmolkit
20-
VERSION 0.4.0
20+
VERSION 0.5.0
2121
LANGUAGES CXX CUDA)
2222
set(CMAKE_CUDA_STANDARD 20)
2323
set(CMAKE_CXX_STANDARD 20)

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Conda is the recommended way to install nvMolKit, matching the recommended distr
1414
you have a variant of conda installed and activated, such as [Miniconda](https://docs.conda.io/en/latest/miniconda.html)
1515
or [Miniforge](https://conda-forge.org/download/).
1616

17-
nvMolKit v0.2.0 supports RDKit 2024.09.6 and 2025.03.1. To install:
17+
nvMolKit v0.5.0 supports RDKit 2025.03.1 through 2026.03.1. To install:
1818

1919
```bash
2020
conda install -c conda-forge nvmolkit
@@ -98,7 +98,7 @@ conda create --name nvmolkit_dev_py312 python=3.12.1
9898
conda activate nvmolkit_dev_py312
9999

100100
# Install RDKit with development headers
101-
conda install -c conda-forge rdkit=2024.09.6 rdkit-dev=2024.09.6
101+
conda install -c conda-forge rdkit=2025.03.6 rdkit-dev=2025.03.6
102102

103103
# Install Boost subpackages in case RDKit install did not include them transitively
104104
conda install -c conda-forge libboost libboost-python libboost-devel libboost-headers libboost-python-devel

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.4.0
1+
0.5.0

admin/ci/setup_dependencies.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
set -eo pipefail
1818

1919
PYTHON_VERSION="${1:-3.12}"
20-
RDKIT_VERSION="${2:-2024.09.6}"
20+
RDKIT_VERSION="${2:-2025.03.6}"
2121

2222
MINIFORGE_VERSION="25.3.0-3"
2323
MINIFORGE_PREFIX="/usr/local/anaconda"

admin/container/ubuntu22_gcc13.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ python_conda_deps:
2525
- "libboost-headers"
2626
- "libboost-devel"
2727
- "pytorch-cuda=12.4"
28-
- "rdkit=2024.09.4"
29-
- "librdkit-dev=2024.09.4"
28+
- "rdkit=2025.03.6"
29+
- "librdkit-dev=2025.03.6"
3030
- "scikit-build=0.18"
3131
- "pytest"
3232
- "warp-lang=1.3.1"

admin/container/ubuntu22_py312_rdkit202409.yml renamed to admin/container/ubuntu22_py312_rdkit202503.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
image_name: "ubuntu2022_gcc12_py312_rdkit202409"
16+
image_name: "ubuntu2022_gcc12_py312_rdkit202503"
1717
image_base: "nvcr.io/nvidia/cuda:12.5.0-devel-ubuntu22.04"
1818
cxx_compiler_id: "gcc"
1919
cxx_compiler_version: "12"
@@ -25,8 +25,8 @@ python_conda_deps:
2525
- "libboost-headers"
2626
- "libboost-devel"
2727
- "pytorch-cuda=12.4"
28-
- "rdkit=2024.09.4"
29-
- "librdkit-dev=2024.09.4"
28+
- "rdkit=2025.03.6"
29+
- "librdkit-dev=2025.03.6"
3030
- "pandas"
3131
- "scikit-build=0.18"
3232
- "pytest"

admin/container/ubuntu_24_clang17.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ python_conda_deps:
2626
- "libboost-python-devel"
2727
- "libboost-headers"
2828
- "libboost-devel"
29-
- "rdkit=2024.09.4"
30-
- "librdkit-dev=2024.09.4"
29+
- "rdkit=2025.03.6"
30+
- "librdkit-dev=2025.03.6"
3131
- "scikit-build=0.18"
3232
- "pytest"
3333
- "warp-lang=1.3.1"

0 commit comments

Comments
 (0)