Changes in version 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. Changes in version 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". Changes in version 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. Changes in version 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". Changes in version 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(). Changes in version 0.3.4 Feature - GPU-accelerated FFT 3-kernel optimisation for tSNE wired in and the CPU version of the same optimiser. Changes in version 0.3.3 Feature - Faster GPU-accelerated SVD that also fixed a numerical problem in the same vein via new bixverse-rs release. Changes in version 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. Changes in version 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. Changes in version 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(). Changes in version 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. Changes in version 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. Changes in version 0.2.6 Features - GPU-accelerated fast clustering for single cell. Changes in version 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. Changes in version 0.2.4 Features - Update to bixverse-rs to enable the new streaming engine. Changes in version 0.2.3 Fix - Potentially broken manifoldsR dependency. Changes in version 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. Changes in version 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(). Changes in version 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 Changes in version 0.1.3 Features - Port to rextendr 0.5.0 and updated Rust <> R APIs and various version updates. Changes in version 0.1.2 Features - Version bumps on different Rust crates. Changes in version 0.1.1 Features - Parametric UMAP added; leverages a small neural net that can be trained and then used subsequently for repeat predictions. Changes in version 0.1.0 Features - Package release with GPU-accelerated kNN searches implemented for SingleCells.