Skip to main content

GPU-accelerated radial distribution functions with NVIDIA ALCHEMI Toolkit-Ops neighbor lists and PyTorch.

Project description

cuRDF

DOI PyPI

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 benchmark

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

curdf-0.5.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

curdf-0.5.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

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

Hashes for curdf-0.5.0.tar.gz
Algorithm Hash digest
SHA256 3acfa05801546106ee1569dc21e063679b6bbc06e351afa563b33e6fd75f0f3e
MD5 591a0060f76ed93a685b1a37c8813b1a
BLAKE2b-256 374635f2a21a53a8bf213a858935c549f591c5e10db65916d00b590fc1857b08

See more details on using hashes here.

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

Hashes for curdf-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07f8b26b1bcbe105c1b6664f201c0ff20e64eaca4c4598e22d8641e92fecd534
MD5 3e85d17f19ac11dc95b19d840ae9c9df
BLAKE2b-256 b60eb85f8a6a457bea3888e517f6e75c304d551929511bfcaf85bb71e656d00b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page