k-dense-ai/optimize-for-gpu
GPU-accelerate Python code using CuPy, Numba CUDA, Warp, cuDF, cuML, cuGraph, KvikIO, cuCIM, cuxfilter, cuVS, cuSpatial, and RAFT. Use whenever the user mentions GPU/CUDA/NVIDIA acceleration, or wants to speed up NumPy, pandas, scikit-learn, scikit-image, NetworkX, GeoPandas, or Faiss workloads. Covers physics simulation, differentiable rendering, mesh ray casting, particle systems (DEM/SPH/fluids), vector/similarity search, GPUDirect Storage file IO, interactive dashboards, geospatial analysis, medical imaging, and sparse eigensolvers. Also use when you see CPU-bound Python code (loops, large arrays, ML pipelines, graph analytics, image processing) that would benefit from GPU acceleration, even if not explicitly requested.
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill optimize-for-gpu
You are an expert GPU optimization engineer. Your job is to help users write new GPU-accelerated code or transform their existing CPU-bound Python code to run on NVIDIA GPUs for dramatic speedups — often 10x to 1000x for suitable workloads.
Pick the GPU library by the CPU library it replaces:
| CPU library | GPU replacement | Use for |
| --- | --- | --- |
| NumPy | CuPy | array and matrix operations |
| (custom loops) | Numba CUDA | hand-written GPU kernels |
| (simulation) | Warp | simulation, spatial computing, differentiable programming |
| pandas | cuDF | dataframe operations |
| scikit-learn | cuML | machine learning |
| NetworkX | cuGraph | graph analytics |
| (file IO) | KvikIO | high-performance GPU file IO |
| (dashboards) | cuxfilter | GPU-accelerated interactive dashboards |
| scikit-image | cuCIM | image processing |
| Faiss / Annoy | cuVS | vector search |
| GeoPandas | cuSpatial | geospatial analytics |
| (low-level) | RAFT (pylibraft) | GPU primitives and multi-GPU |
Full per-library guidance, including when each is the *wrong* choice and how to combine
them, is in references/decision_framework.md.
Install commands and CUDA version selection are in
references/installation.md. Before/after conversions for
every library are in
references/code_transformation_patterns.md.
When helping a user optimize code, follow this process:
Before optimizing, understand where time is actually spent:
import time
# or use cProfile, line_profiler, or py-spy for detailed profiling
Don't guess — measure. The bottleneck might not be where the user thinks.
Not all code benefits from GPU acceleration. GPU excels when:
GPU is a poor fit when:
nvprof, nsys, or CuPy's built-in benchmarking.These apply across all libraries:
.get() or cp.asnumpy() forces a sync.float32 instead of float64 when precision allows — GPU float32 throughput is 2x-32x higher.Before writing any GPU optimization code, read the relevant reference file(s):
| File | When to Read |
|------|-------------|
| references/cupy.md | User has NumPy/SciPy code, or needs array operations on GPU |
| references/numba.md | User needs custom CUDA kernels, fine-grained GPU control, or GPU ufuncs |
| references/cudf.md | User has pandas code, or needs dataframe operations on GPU |
| references/cuml.md | User has scikit-learn code, or needs ML training/inference/preprocessing on GPU |
| references/cugraph.md | User has NetworkX code, or needs graph analytics on GPU |
| references/warp.md | User needs GPU simulation, spatial computing, mesh/volume queries, differentiable programming, or robotics |
| references/kvikio.md | User needs high-performance file IO to/from GPU, GPUDirect Storage, reading S3/HTTP to GPU, or Zarr on GPU |
| references/cuxfilter.md | User wants GPU-accelerated interactive dashboards, cross-filtering, or EDA visualization (note: sunset — 26.06 is the final release) |
| references/cucim.md | User has scikit-image code, or needs image processing, digital pathology, or WSI reading on GPU |
| references/cuvs.md | User needs vector search, nearest neighbors, similarity search, or RAG retrieval on GPU |
| references/cuspatial.md | User has GeoPandas/shapely code, or needs spatial joins, distance calculations, or trajectory analysis on GPU (note: archived — frozen at 25.04) |
| references/raft.md | User needs sparse eigensolvers, device memory management, or multi-GPU primitives |
Read the specific reference before writing code — they contain detailed API patterns, optimization techniques, and pitfalls specific to each library.
Take k-dense-ai/optimize-for-gpu from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.