技能optimize-for-gpu
O

optimize-for-gpu

使用 CuPy、Numba CUDA、Warp、cuDF、cuML、cuGraph、KvikIO、cuCIM、cuxfilter、cuVS、cuSpatial 和 RAFT 对 Python 代码进行 GPU 加速。当用户提到 GPU/CUDA/NVIDIA 加速,或希望加速 NumPy、pandas、scikit-learn、scikit-image、NetworkX、GeoPandas 或 Faiss 的工作负载时就使用。覆盖物理仿真、可微渲染、网格射线投射、粒子系统(DEM/SPH/流体)、向量/相似度搜索、GPUDirect Storage 文件 IO、交互式仪表盘、地理空间分析、医学影像以及稀疏特征求解器。即使用户未明确提出,也应在看到受 CPU 限制的 Python 代码(循环、大型数组、机器学习流水线、图分析、图像处理)且从 GPU 加速中受益时使用。

Python GPU 加速 - optimize-for-gpu 技能详解

技能概述

optimize-for-gpu 是一个专业的 Python GPU 加速技能,帮助开发者使用 NVIDIA GPU 将 CPU 密集型 Python 代码提速 10 倍到 1000 倍,涵盖 NumPy、pandas、scikit-learn 等常用库的 GPU 替代方案。

适用场景

  1. 数据处理加速:当您需要处理大规模数据集,使用 pandas、NumPy 进行数据清洗、转换和分析时,可通过 cuDF 和 CuPy 在 GPU 上完成相同操作,获得显著性能提升。

  2. 机器学习优化:在训练和推理机器学习模型时,使用 cuML 替代 scikit-learn,在 GPU 上执行分类、回归、聚类等算法,特别适合超参数调优和大规模特征工程。

  3. 科学计算与仿真:对于物理模拟、粒子系统、流体动力学、网格计算等计算密集型任务,使用 Numba CUDA 或 Warp 编写自定义 GPU 内核,将 Python 模拟循环加速数百倍。

核心功能

  1. 多库 GPU 加速支持:提供 11 种 NVIDIA 加速库的完整支持,包括 CuPy(NumPy 替代)、cuDF(pandas 替代)、cuML(scikit-learn 替代)、Numba CUDA(自定义内核)、Warp(物理仿真)、cuGraph(图计算)、cuVS(向量搜索)、cuCIM(图像处理)、cuSpatial(地理空间)、KvikIO(GPU 文件 I/O)和 RAFT(底层 GPU 原语)。

  2. 零代码变更加速模式:通过 cudf.pandas、cuml.accel 和 nx-cugraph 后端,无需修改现有代码即可实现 pandas、scikit-learn 和 NetworkX 的 GPU 加速,降低迁移门槛。

  3. 端到端优化工作流:从性能分析、GPU 适配性评估、代码转换到内存管理优化,提供完整的 GPU 加速工作流程指导,包括自定义内核编写、多库组合使用和性能调优最佳实践。

常见问题

如何让 Python 代码在 GPU 上运行?

您可以选择零代码变更方案(如 python -m cudf.pandas your_script.py)或直接使用 GPU 加速库。最简单的方式是替换导入:将 import numpy as np 改为 import cupy as cp,将 import pandas as pd 改为 import cudf。对于现有代码,cudf.pandas 和 cuml.accel 提供自动加速模式,无需修改代码即可获得 GPU 性能提升。

GPU 加速需要什么硬件和软件?

需要支持 CUDA 的 NVIDIA GPU(建议 GTX 1060 或更高),安装 CUDA 12.x 或 13.x 驱动,Python 3.11+ 环境。RAPIDS 库通过 uv add 安装(如 uv add cudf-cu12),CuPy 需要匹配 CUDA 版本(uv add cupy-cuda12x)。安装后可用 import cupy as cp; print(cp.cuda.runtime.getDeviceCount()) 检测 GPU 可用性。

如何判断我的代码是否适合 GPU 加速?

GPU 加速最适合数据并行度高、计算密集型、数据量大的场景(通常 >10,000 元素)。典型适配场景包括:NumPy 数组运算、pandas groupby/aggregation、scikit-learn 训练、NetworkX 图算法、图像处理滤波、物理模拟循环等。不适合的场景:小型数组(<10K 元素)、顺序依赖算法、I/O 密集型操作(除非使用 KvikIO GPUDirect Storage)。