← Back to public systems
Public system / 01

Vortex CUDA

An exact GPU vector-search engine built from CUDA kernels through C++20, Java JNI and Spring Boot. The interesting work is the boundary between kernel behavior, native lifetime management and a service API that can fail cleanly.

Stack
CUDA 13.3 + C++20
JNI + Java 17
Spring Boot API
Benchmark
500K × 128 vectors
exact Top-10
RTX 3050 6GB Laptop GPU
01 / System path

One request crosses three runtime boundaries.

The architecture keeps the Java API clean while the native layer owns persistent GPU indexes and CUDA failure propagation.

request pathpublic implementation
Spring Bootvalidation · API key · request IDs · metrics
→
Java APIVortexIndex · lifecycle-safe close
→
JNI / C++20opaque handles · shared_ptr lifetime
→
CUDApersistent index · exact Top-K kernels
FP32exact default storage / accumulation path
FP16 storage50% vector-storage reduction with FP32 accumulation
Benchmark harnessP50/P95/P99 · QPS · Recall@K · CSV/JSON output
02 / Engineering record

Performance claims are only useful when the benchmark is reproducible.

The project documents scope and avoids claiming equivalence with an optimized production vector database.

01

Persistent GPU indexes

Vectors stay resident on the device instead of being re-uploaded for every query, so measurement reflects query execution rather than repeated transfer setup.

Boundary: index lifetime is explicit.
02

Kernel-level Top-K work

Hierarchical/fused Top-K, warp reductions, query tiling, vectorized memory access and measured tuning reduce unnecessary intermediate work.

Method: Nsight-guided optimization.
03

Native lifetime safety

JNI uses opaque native handles and shared ownership so Java-side lifecycle events do not race with native index destruction.

Failure mode: use-after-free across JNI.
04

Service hardening

API-key protection, request IDs, finite-value checks, capacity guards, health checks, metrics and exception-based CUDA failure propagation make the demo service operationally inspectable.

Goal: fail explicitly at the boundary.
03 / Reproducible evidence

Benchmark numbers with context attached.

The scalar CPU comparison is the project’s own reference implementation, not a production vector database baseline.

16.7×lower P50 vs scalar CPU reference
1.67–1.72msFP32 P50 · batch 1
1,641–1,662FP32 QPS · batch 32
48/48benchmark cases passed