Skip to content

Commit 1fa3f9b

Browse files
committed
headers
Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net>
1 parent 5865b9a commit 1fa3f9b

1 file changed

Lines changed: 14 additions & 16 deletions

File tree

content/blog/2026-rsc-goes-nanobind.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ author = "Severin Dicks"
66
draft = false
77
+++
88

9-
## Why the packaging changed
9+
# Rapids-singlecell release 0.15.0
10+
11+
We are proud to announce rapids-singlecell release 0.15.0 which comes with lots of new features but also changes to the installation process.
12+
13+
## Why the packaging changes
1014

1115
In earlier versions of rapids-singlecell, all GPU kernels were written as CuPy RawKernels.
1216
These were compiled the first time you called them — in your environment, on your machine.
@@ -24,7 +28,7 @@ That worked, but it came with friction:
2428
Starting with 0.15.0, these kernels are compiled once at build time and shipped as nanobind/CUDA C++ extension modules inside the wheel.
2529
The result is a more conventional compiled-extension workflow: you `pip install` the package and every kernel is ready immediately.
2630

27-
## What changed
31+
### Packaging changes in detail
2832

2933
The GPU kernels that were previously CuPy RawKernels are now nanobind C++ extensions built with `scikit-build-core` and CMake.
3034
This gives us:
@@ -45,7 +49,7 @@ import rapids_singlecell as rsc
4549

4650
Your existing analysis scripts should work without modification.
4751

48-
## CUDA-specific wheels
52+
### CUDA-specific wheels
4953

5054
Because the kernels are now compiled binaries, we need to ship one wheel per CUDA major version.
5155
(Python wheel tags don't encode CUDA version, so we encode it in the package name — the same approach used by CuPy, PyTorch, and other CUDA-dependent packages.)
@@ -60,9 +64,9 @@ Both wheels are available for **x86_64** and **aarch64** on Linux.
6064
If you have a Blackwell GPU (B200, GB200) and want the best out-of-the-box performance, the CUDA 13 wheel includes native binaries for Blackwell architectures.
6165
The CUDA 12 wheel still supports Blackwell through PTX just-in-time compilation, so it will work, but the first kernel launch on Blackwell will be slightly slower while the driver JIT-compiles the PTX.
6266

63-
## How to install
67+
### How to install
6468

65-
### Prebuilt wheel (recommended)
69+
#### Prebuilt wheel (recommended)
6670

6771
Pick the wheel that matches your CUDA version:
6872

@@ -74,7 +78,7 @@ pip install rapids-singlecell-cu12 # CUDA 12
7478
This installs rapids-singlecell with precompiled kernels, but does **not** pull in the RAPIDS stack (cupy, cuml, cudf, etc.).
7579
If you manage those dependencies separately — for example, through conda — this is all you need.
7680

77-
### Prebuilt wheel with RAPIDS dependencies
81+
#### Prebuilt wheel with RAPIDS dependencies
7882

7983
If you want pip to also install the matching RAPIDS and CuPy packages:
8084

@@ -87,7 +91,7 @@ Note: on the prebuilt wheels, the dependency extra is always `[rapids]`.
8791
The CUDA version is determined by which package name you install — `rapids-singlecell-cu12` or `rapids-singlecell-cu13`.
8892
If you're building from source instead, the extras are `[rapids-cu12]` and `[rapids-cu13]`.
8993

90-
### Conda / Mamba
94+
#### Conda / Mamba
9195

9296
Environment files are provided in the repository:
9397

@@ -98,7 +102,7 @@ conda env create -f conda/rsc_rapids_26.04_cuda12.yml # Python 3.14, CUDA 12
98102

99103
> **Note:** RAPIDS currently does not support `channel_priority: strict`. Use `channel_priority: flexible` instead.
100104
101-
### Docker / Apptainer
105+
#### Docker / Apptainer
102106

103107
Pre-built containers are available for both CUDA versions:
104108

@@ -114,7 +118,7 @@ apptainer pull rsc.sif docker://ghcr.io/scverse/rapids-singlecell-cu13:latest
114118
apptainer run --nv rsc.sif
115119
```
116120

117-
## Migration from 0.14.x
121+
### Migration from 0.14.x
118122

119123
For most users, upgrading is straightforward:
120124

@@ -126,7 +130,7 @@ For most users, upgrading is straightforward:
126130
Run `nvidia-smi` or `nvcc --version` to confirm whether you're on CUDA 12.x or CUDA 13.x, and install the matching wheel.
127131
If you're using conda, make sure the CUDA runtime library version in your environment matches the wheel you install — e.g., `cuda-cudart` from the `nvidia` channel should be 12.x for the cu12 wheel or 13.x for the cu13 wheel.
128132

129-
## What about `pip install rapids-singlecell`?
133+
### What about `pip install rapids-singlecell`?
130134

131135
The plain install — `pip install rapids-singlecell`, without the `-cu12` or `-cu13` suffix — still works.
132136
It will compile the CUDA extensions from source during installation.
@@ -196,12 +200,6 @@ Both energy distance and co-occurrence kernels gained multi-GPU support ([#545](
196200
- **CUDA kernel error surfacing** — launch errors are now raised instead of silently continuing ([#619](https://github.com/scverse/rapids-singlecell/pull/619)).
197201
- **RAPIDS 26.04 and Python 3.14 support** across all CI and conda environments.
198202

199-
## Get started
200-
201-
```bash
202-
pip install rapids-singlecell-cu13 # or rapids-singlecell-cu12
203-
```
204-
205203
A big thank you to everyone who tested the pre-releases and helped surface issues before this release went out.
206204

207205
For questions and bug reports, visit the [GitHub issue tracker](https://github.com/scverse/rapids_singlecell/issues).

0 commit comments

Comments
 (0)