Release v13.3 of the CUDA samples with CUDA 13.3 Toolkit (#435)

This is the release of the CUDA 13.3 samples, which include additions for CUDA Tile C++, and updated CCCL and Python samples.
This commit is contained in:
Dheemanth
2026-05-27 14:50:59 -07:00
committed by GitHub
parent aeab82ff30
commit b7c5481c55
150 changed files with 7977 additions and 246 deletions

View File

@@ -1,5 +1,23 @@
# Sample: PageRank Algorithm (Python)
> **Known issue — version-pinned sample.** Unlike the other samples in this
> repository, this sample is pinned to `cuda-core<1.0.0`. The reason is that
> `cudf-cu13` transitively requires `numba-cuda<0.29.0`, and every
> `numba-cuda` release in that range pins `cuda-core<1.0.0`. Installing this
> sample's `requirements.txt` into a shared environment will downgrade
> `cuda-core` and break the other samples (which use the 1.0 API).
>
> The recommended workflow is one of:
>
> - Install this sample's requirements in a **dedicated virtual
> environment**, or
> - Re-run the other samples' `pip install -r requirements.txt` afterwards
> to upgrade `cuda-core` back to 1.0.
>
> This sample will be re-aligned with the rest of the repository
> (`cuda-core>=1.0.0`) once `cudf-cu13` ships a release that lifts its
> `numba-cuda` upper bound.
## Description
Demonstrates GPU-accelerated PageRank computation for graph analysis using RAPIDS cuGraph, with cuda.core for device, stream, and GPU timing. This sample focuses on cuda.core integration with high-level libraries (cuGraph/cuDF); for custom kernel programming (Program, LaunchConfig, launch), see the blockwiseSum sample.
@@ -16,7 +34,7 @@ Demonstrates GPU-accelerated PageRank computation for graph analysis using RAPID
- `cugraph` - RAPIDS GPU-accelerated graph analytics
- `cudf` - RAPIDS GPU DataFrame library
- `cuda.core` - Device, stream, and event APIs for GPU timing
- `cupy` - GPU array library (ExternalStream for cuDF/cuGraph)
- `cupy` - GPU array library (Stream.from_external for cuDF/cuGraph)
- `numpy` - CPU reference implementation
## Key APIs
@@ -25,7 +43,7 @@ Demonstrates GPU-accelerated PageRank computation for graph analysis using RAPID
- `Device(0)` - Create device, `device.set_current()`, `device.create_stream()`
- `EventOptions(enable_timing=True)` - GPU timing via `stream.record()`
- `cp.cuda.ExternalStream(stream.handle).use()` - Make cuDF/cuGraph use cuda.core stream
- `cp.cuda.Stream.from_external(stream).use()` - Make cuDF/cuGraph use cuda.core stream
### From cuGraph:
@@ -50,6 +68,14 @@ Demonstrates GPU-accelerated PageRank computation for graph analysis using RAPID
- Python 3.10 or newer
- See requirements.txt for package dependencies
### Platform Support:
This sample depends on RAPIDS (`cugraph-cu13`, `cudf-cu13`, `dask-cuda`),
which is currently published only as **Linux (manylinux) wheels** on
`pypi.nvidia.com` — no Windows wheels exist. On Windows the sample exits
early with a waive message and exit code `2` instead of attempting an
install that cannot succeed.
## Installation
```bash

View File

@@ -46,6 +46,14 @@ from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "Utilities"))
from cuda_samples_utils import print_gpu_info, verify_array_result # noqa: E402
if sys.platform == "win32":
print(
"This sample depends on RAPIDS (cugraph-cu13 / cudf-cu13), which is "
"currently published only as Linux (manylinux) wheels on "
"pypi.nvidia.com. Waiving this sample on Windows."
)
sys.exit(2)
try:
import cudf
import cugraph
@@ -210,8 +218,22 @@ def run_pagerank_benchmark(
print()
print_gpu_info(device)
# RAPIDS cuGraph wheels currently don't ship kernel binaries for
# every CUDA architecture. Skip cleanly on architectures known to
# be unsupported instead of failing deep inside cuGraph with a
# cryptic cudaErrorNoKernelImageForDevice. Remove an arch from this
# set once the matching cuGraph release ships kernels for it.
_CUGRAPH_UNSUPPORTED_ARCHES = {"110"} # sm_110 = Thor / Tegra
if device.arch in _CUGRAPH_UNSUPPORTED_ARCHES:
print(
f"RAPIDS cuGraph does not yet ship kernels for sm_{device.arch}, "
"waiving this sample."
)
stream.close()
sys.exit(2)
# Make CuPy/cuDF use our cuda.core stream
cp.cuda.ExternalStream(int(stream.handle)).use()
cp.cuda.Stream.from_external(stream).use()
# Generate random graph
print("\nGraph Parameters:")

View File

@@ -1,8 +1,11 @@
# PageRank Requirements (RAPIDS cuGraph)
cuda-python>=13.0.0
cuda-core>=0.6.0
cugraph-cu13>=25.0.0
cudf-cu13>=25.0.0
cupy-cuda13x>=13.0.0
# cudf-cu13 transitively pins numba-cuda<0.29.0 which requires cuda-core<1.0.0
cuda-core<1.0.0
cugraph-cu13>=26.0.0
cudf-cu13>=26.0.0
# dask-cuda <26.4 incorrectly pins cuda-core==0.3.*; require the fixed release
dask-cuda>=26.4.0
cupy-cuda13x>=14.0.0
numpy>=2.3.2