mirror of
https://github.com/NVIDIA/cuda-samples.git
synced 2026-10-13 00:08:26 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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:")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user