GPU-accelerated radial distribution functions with NVIDIA ALCHEMI Toolkit-Ops neighbor lists and PyTorch.
Project description
cuRDF
CUDA-accelerated radial distribution functions using NVIDIA ALCHEMI Toolkit-Ops O(N) neighbor lists and PyTorch. Compatible with ASE Atoms or MDAnalysis Universe objects.
Benchmarking
cuRDF is benchmarked against RDF (MDAnalysis) and neighbour list implementations on CPU (AMD Ryzen 9 9950X, 32 threads) and GPU (NVIDIA RTX 5090) for systems of varying sizes at a density of 0.05 atoms/ų over 1000 frames.
Install
Latest release:
pip install cuRDF
For development:
git clone https://github.com/joehart2001/curdf.git
cd curdf
pip install -e .
Quickstart
ASE Atoms object:
from ase.io import read
from curdf import rdf
# Load trajectory or frame e.g. XYZ, extxyz, traj, LAMMPS data/dump
atoms = read("md_run.extxyz")
# Compute RDF between species C and O from 1.0 to 8.0 Å
bins, gr = rdf(
atoms,
species_a="C",
species_b="O", # species b can be the same as species a
r_min=1.0,
r_max=8.0,
nbins=200, # resolution of rdf histogram binning
method="cell_list", # neighbor list method: "cell_list" (larger systems) or "naive" (smaller systems, less overhead)
output = "results/rdf.csv" # optional output
)
# Plot RDF
plot_rdf(bins, gr, path="results/rdf.png")
MDAnalysis Universe (topology and trajectory):
import MDAnalysis as mda
from curdf import rdf
u = mda.Universe("topology.data", "traj.dcd", atom_style="id type x y z")
bins, gr = rdf(
u,
species_a="C",
species_b="O",
r_min=1.0,
r_max=8.0,
)
If the topology lacks atom names (only numeric types), supply a mapping:
bins, gr = rdf(u, species_a="C", species_b="O", atom_types_map={1: "C", 2: "H"})
Citation
If you use cuRDF in your work, please cite:
@software{cuRDF,
author = {Hart, Joseph},
title = {cuRDF: GPU-accelerated radial distribution functions},
month = dec,
year = 2025,
publisher = {Zenodo},
version = {0.1.0},
doi = {10.5281/zenodo.1085332119},
url = {https://doi.org/10.5281/zenodo.1085332119}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file curdf-0.5.0.tar.gz.
File metadata
- Download URL: curdf-0.5.0.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3acfa05801546106ee1569dc21e063679b6bbc06e351afa563b33e6fd75f0f3e
|
|
| MD5 |
591a0060f76ed93a685b1a37c8813b1a
|
|
| BLAKE2b-256 |
374635f2a21a53a8bf213a858935c549f591c5e10db65916d00b590fc1857b08
|
File details
Details for the file curdf-0.5.0-py3-none-any.whl.
File metadata
- Download URL: curdf-0.5.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07f8b26b1bcbe105c1b6664f201c0ff20e64eaca4c4598e22d8641e92fecd534
|
|
| MD5 |
3e85d17f19ac11dc95b19d840ae9c9df
|
|
| BLAKE2b-256 |
b60eb85f8a6a457bea3888e517f6e75c304d551929511bfcaf85bb71e656d00b
|