Metadata-Version: 2.4
Name: dyng-cu12
Version: 0.2.0
Summary: dynG's CUDA 12 backends: the CUDA plugin of the dyng package (pip install "dyng[cu12]")
Keywords: dynamic graph,batch update,shortest paths,cycle counting,GPU,OpenMP,graph algorithms,CUDA,CUDA 12
Author-Email: S M Shovan <sm.shovan@gmail.com>
License-Expression: Apache-2.0 AND BSD-3-Clause AND MIT AND GPL-3.0-or-later WITH GCC-exception-3.1 AND Apache-2.0 WITH LLVM-exception AND LicenseRef-NVIDIA-End-User-License-Agreement
License-File: LICENSE
License-File: LICENSES/Apache-2.0.txt
License-File: NOTICE
License-File: NVIDIA_CUDA_EULA.txt
License-File: THIRD_PARTY_LICENSES.txt
License-File: THIRD_PARTY_LICENSES_CUDA.txt
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Environment :: GPU :: NVIDIA CUDA
Classifier: Environment :: GPU :: NVIDIA CUDA :: 12
Project-URL: Homepage, https://github.com/dyng-dev/dyng
Project-URL: Documentation, https://dyng-dev.github.io/dyng/
Project-URL: Repository, https://github.com/dyng-dev/dyng
Project-URL: Issues, https://github.com/dyng-dev/dyng/issues
Project-URL: Changelog, https://github.com/dyng-dev/dyng/blob/main/CHANGELOG.md
Requires-Python: >=3.12
Requires-Dist: dyng==0.2.0
Description-Content-Type: text/markdown

# dynG CUDA plugin (dyng-cu12, dyng-cu13)

This distribution adds the **CUDA backends** to [dynG](https://github.com/dyng-dev/dyng), the
library that keeps the results of graph algorithms (shortest paths, multi-objective shortest
paths, cycle counts) up to date while the graph changes in batches of edge insertions and
deletions. It is a plugin of the `dyng` package and is installed through its extras:

```bash
pip install "dyng[cu13]"    # NVIDIA driver for CUDA 13 (580 or newer)
pip install "dyng[cu12]"    # NVIDIA driver for CUDA 12 (525 or newer)
```

`dyng-cu12` is built with the CUDA 12 toolkit, `dyng-cu13` with CUDA 13. Each contains one
extension module with every backend of dynG (sequential, OpenMP and CUDA), compiled for the GPU
architectures from Turing (sm_75) on, with the CUDA runtime linked in: no CUDA toolkit is needed
at run time, only the NVIDIA driver. A plugin always has the same version as the `dyng` it
belongs to, and pip installs that version of `dyng` with it.

```python
import dyng

dyng.show_config()                       # which native module is active, and why
res = dyng.Resources.cuda(device=0)
g = dyng.Graph.from_edges([0, 0, 1, 2], [1, 2, 2, 3], [4, 1, 1, 5], resources=res)
tree = dyng.sssp.compute(g, source=0)    # runs on the GPU
```

You never import this package yourself: `import dyng` finds it through the entry point group
`dyng.backends` and uses it when a CUDA driver and a device are present; otherwise dynG uses its
CPU module and says why in `dyng.show_config()`. `dyng.use_cpu_only()` (before the first use) or
`DYNG_CPU_ONLY=1` (or `true`, `yes`, `on`) forces the CPU module.

Documentation: <https://github.com/dyng-dev/dyng> (installation, troubleshooting, the API).
License: Apache-2.0 for dynG's own code; the wheel also contains third-party code (nanobind,
robin-map, the GCC runtime, the CUDA runtime and the CUDA C++ Core Libraries) under the licences
listed in its licence files (`THIRD_PARTY_LICENSES.txt`, `THIRD_PARTY_LICENSES_CUDA.txt`,
`NVIDIA_CUDA_EULA.txt`).
