zer-compute 1.1.0

Hardware-accelerated backend for zer, pairwise comparison and EM via CUDA, Vulkan, or AVX2
Documentation
[package]
name        = "zer-compute"
version     = "1.1.0"
edition     = "2021"
description = "Hardware-accelerated backend for zer, pairwise comparison and EM via CUDA, Vulkan, or AVX2"
license     = "Apache-2.0"
repository  = "https://github.com/ZAL-Analytics/zer"
keywords    = ["cuda", "gpu", "entity-resolution", "avx2", "simd"]
categories  = ["algorithms", "science"]
readme      = "README.md"

[features]
default = []
# NVIDIA CUDA path, requires CUDA Toolkit 13.1+ and nvcc at build time.
# Minimum hardware: SM 8.6 (Ampere, RTX 30-series). PTX compiled via nvcc and embedded at build time.
cuda    = ["dep:cudarc", "zer-prof/cuda"]
# Vulkan compute path, works on NVIDIA (Maxwell+) and other Vulkan 1.3-capable GPUs.
# Requires slangc on PATH at build time (https://github.com/shader-slang/slang/releases).
vulkan  = ["dep:ash", "dep:gpu-allocator", "zer-prof/vulkan"]
# AVX2 SIMD path, x86_64 only, no external toolchain required.
avx2    = ["dep:rayon", "zer-prof/avx2"]
# CPU-only path, no GPU required.
cpu     = ["zer-prof/cpu"]
# Embed debug information in compiled CUDA kernels for cuda-gdb / Nsight stepping.
debug-shaders = []

[dependencies]
zer-core    = { path = "../zer-core",    version = "1.1" }
zer-compare = { path = "../zer-compare", version = "1.1" }
zer-prof    = { path = "../zer-prof",    version = "1.1" }
rayon         = { workspace = true, optional = true }
serde         = { workspace = true }
thiserror     = { workspace = true }
tracing       = { workspace = true }
bytemuck      = { version = "1", features = ["derive"] }

# CUDA path
cudarc = { version = "0.19.4", default-features = false, features = [
    "std", "driver", "nvrtc", "cuda-version-from-build-system", "fallback-dynamic-loading",
], optional = true }

# Vulkan path
ash           = { version = "0.38", optional = true }
gpu-allocator = { version = "0.27", optional = true }

[dev-dependencies]
csv                  = "1"
rand                 = "0.8"
zer-test-utils       = { path = "../zer-test-utils" }