NEWS
bixverse.gpu 0.5.0
Features
- Experimental MLX backend for Apple Silicon via mlx-c. Opt in at install
time:
brew install mlx-c (or point MLX_C_PREFIX at an install prefix),
then install with BIXVERSE_GPU_MLX=true. Check with mlx_available().
Functions with an MLX path take backend = c("wgpu", "mlx"): PCA, kNN
graphs, Harmony v2, SEACells, NMF (single, stabilised, consensus, k sweep),
UMAP, tSNE and the rs_cor_gpu() / rs_cov_gpu() correlations. For UMAP and
tSNE, "mlx" moves the kNN search and the device optimiser ("adam_gpu",
"fft_3k_gpu"); CPU optimisers stay on the CPU. MLX is fp32 only. WGPU stays
the default and the only portable backend.
- Fast clustering (
fast_cluster_gpu_sc()) can build the centroid graph from
the cells instead of a kNN search over the centroids:
params_sc_fast_cluster_gpu(cell_mediated = TRUE, n_anchors = 5L). Every
cell links its n_anchors nearest centroids. On a 10k cell synthetic set the
agreement with the ground truth went from ARI 0.29 to 0.71 at resolution 1.
Off by default.
- FFT-accelerated tSNE (
approx_type = "fft" and "fft_3k") now works on
Windows too: FFTW was replaced by the pure-Rust rustfft.
- On macOS the CPU GEMMs in the Rust backends go through Apple Accelerate.
Breaking changes
- The
rs_* wrappers with an MLX path gained a backend argument, inserted
before verbose. Named calls keep working (it defaults to "wgpu");
positional calls past seed need updating.
Internal
- Moved to bixverse-rs 0.7.0, manifolds-rs 0.7.0, ann-search-rs 0.11.0,
cubecl 0.11, burn 0.22 and faer 0.24.
bixverse.gpu 0.4.1
Features
- Wired in the faster NEBULA via
edge-rs.
This affects also the GPU path because parts of it run on CPU. To get exactly
the same results, make sure you are on bixverse version "≥0.6.2".
bixverse.gpu 0.4.0
Features
- Improved speed across various methods:
- GPU-accelerated kNN searches
- Harmony (version 2) accelerated on the GPU
- Randomised SVD
- GPU-accelerated fastMNN wired in via
fast_mnn_gpu_sc(). Only the neighbour
searches run on the device. Unlike bixverse::fast_mnn_sc(), it does not
regenerate the PCA on batch-aware HVGs: it corrects the PCA already in the
object. For the batch-aware flavour run find_hvg_batch_aware_sc() and
calculate_pca_gpu_sc() first. See the single cell vignette.
- The GPU-accelerated randomised SVD for single cell are is now using
N_OVERSAMPLING 20 (instead of 100) and increased iterations from 2 to 4.
Across various benchmarks and synthetic data sets, the quality of the trailing
PCs has improved with the new thresholds while being faster.
- The GPU-accelerated NEBULA has now a parameter that enables that a minimum of
samples similar to the CPU-based version.
Fixes
- The GPU-accelerated Harmony version could converge wrongly after one
iteration for some data sets. This has been fixed via a dampening factor.
bixverse.gpu 0.3.6
Features
- Quick-and-dirty Barnes-Hut tSNE optimiser from
qdtsne wired into
tsne_gpu() and
tsne_gpu_sc() via approx_type = "bh_qd". Tree depth is set with
max_depth in params_tsne_gpu(). Runs on the CPU, like "bh".
bixverse.gpu 0.3.5
Features
- GPU-accelerated Sanity
wired in via sanity-sc-rs. This gives
you the GPU-accelerated equivalent of
bonsai_sc():bonsai_gpu_sc().
bixverse.gpu 0.3.4
Feature
- GPU-accelerated FFT 3-kernel optimisation for tSNE wired in and the CPU
version of the same optimiser.
bixverse.gpu 0.3.3
Feature
- Faster GPU-accelerated SVD that also fixed a numerical problem in the same
vein via new
bixverse-rs release.
bixverse.gpu 0.3.2
Feature
- Default GPU-accelerated kNN search for tSNE was set to
"ivf" – due to the
usually larger k needed, "ivf" scales better than the GPU-accelerated
NNDescent approach.
bixverse.gpu 0.3.1
Features
- Agent skill for using bixverse.gpu, shipped under
inst/skills/ and
installed with install_agent_skill_gpu(). Covers which GPU function
replaces which bixverse step, what has no GPU path, and the traps. Same
layout as bixverse::install_agent_skill(), with the API index generated by
data-raw/generate_api_index.R.
- GPU-accelerated BBKNN.
- A GPU-accelerated implementation of NEBULA
for lots and lots of cells.
bixverse.gpu 0.3.0
Features
- Take in substantial improvements on the Rust back-ends. The kNN searches
now return Euclidean distances instead of squared Euclidean distances.
Deprecated
- The previous interface of
generate_cagra_knn_sc(),
find_neighbours_cagra_sc(), params_sc_cagra(), rs_cagra_gpu_knn(),
rs_exhaustive_gpu_knn(), params_sc_ivf() has been deprecated. These are
now all wired into generate_gpu_knn_sc().
bixverse.gpu 0.2.8
Features
- GPU-accelerated NMF for single cells and meta cells:
nmf_gpu_sc(),
stabilised_nmf_gpu_sc(), consensus_nmf_gpu_sc() and
nmf_k_sweep_gpu_sc(), each dispatching on SingleCells and MetaCells.
bixverse.gpu 0.2.7
Features
- GPU-accelerated Scrublet via
scrublet_gpu_sc(). The randomised sparse SVD,
the projection of the simulated doublets and the kNN over the combined
embedding run on GPU. Full parity with bixverse::scrublet_sc(), group_by
included, and the same ScrubletRes object comes back.
params_scrublet_gpu() picks between the GPU and the CPU nearest neighbour
indices through knn_backend, with the knn block validated against
whichever one was asked for. params_knn_gpu_defaults() holds the GPU-side
defaults.
- Improvements in terms of kernels taken from
ann-search-rs.
bixverse.gpu 0.2.6
Features
- GPU-accelerated fast clustering for single cell.
bixverse.gpu 0.2.5
Features
- GPU-accelerated SEACells: both Frank-Wolfe solves, the B-gradient argmin and
the per-cell A columns, are executed on GPU, increasing the speed on larger
data sets.
- Version bumps to get improved GPU performance for the UMAP optimiser from
manifolds-rs.
bixverse.gpu 0.2.4
Features
- Update to
bixverse-rs to enable the new streaming engine.
bixverse.gpu 0.2.3
Fix
- Potentially broken
manifoldsR dependency.
bixverse.gpu 0.2.2
Features
- GPU-accelerated SCENIC
- Improvement in the GPU-accelerated kNN searches ported over from
ann-search-rs.
- Handrolled correlation kernels to increase performance there.
bixverse.gpu 0.2.1
Features
- GPU-accelerated UMAP optimisation exposed.
- GPU-accelerated kNN generation for both tSNE and UMAP (longer term also a
GPU-accelerated tSNE optimiser planned). Additionally, the kNN graphs can
be used more broadly.
umap_gpu_sc() and tsne_gpu_sc() wire the GPU UMAP and t-SNE paths
directly into the SingleCells workflow, mirroring bixverse::umap_sc()
and bixverse::tsne_sc().
bixverse.gpu 0.2.0
Major release.
Features
- CPU-backend of parametric UMAP changed to
flex from burn for better speed.
Reduces also dependencies and packages and easier installation on Linux.
- GPU-accelerated methods for single cell:
- kNN graphs are now multi-modal (see bixverse version
"0.4.0")
- sparse, randomised SVD on GPU available
- GPU-accelerated Harmony (version 2).
- New GPU-accelerated methods:
- k-means clustering
- Correlations and co-variances supported on GPU.
- Option addded to save parametric UMAP models
bixverse.gpu 0.1.3
Features
- Port to rextendr
0.5.0 and updated Rust <> R APIs and various version
updates.
bixverse.gpu 0.1.2
Features
- Version bumps on different Rust crates.
bixverse.gpu 0.1.1
Features
- Parametric UMAP added; leverages a small neural net that can be trained and
then used subsequently for repeat predictions.
bixverse.gpu 0.1.0
Features
- Package release with GPU-accelerated kNN searches implemented for
SingleCells.