<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NumPy on Text Matrix</title><link>https://txtmix.com/tags/numpy/</link><description>Recent content in NumPy on Text Matrix</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 21 Jul 2026 20:06:14 +0800</lastBuildDate><atom:link href="https://txtmix.com/tags/numpy/index.xml" rel="self" type="application/rss+xml"/><item><title>CuPy 架构拆解：把 NumPy/SciPy 移植到 GPU 的分层与边界</title><link>https://txtmix.com/posts/tech/cupy-cupy-numpy-cuda-gpu-acceleration-guide/</link><pubDate>Sun, 28 Jun 2026 21:08:46 +0800</pubDate><guid>https://txtmix.com/posts/tech/cupy-cupy-numpy-cuda-gpu-acceleration-guide/</guid><description>&lt;h2 id="开场判断">开场判断&lt;/h2>
&lt;p>CuPy 解决的真正问题不是「让 NumPy 跑得快」，而是&lt;strong>把 NumPy/SciPy 这套 Python 数值计算体系，从 CPU 生态完整搬到 GPU 生态&lt;/strong>，并且保持 API 表面几乎不变。它通过三层机制做到这一点：&lt;/p>
&lt;ol>
&lt;li>用 &lt;code>cupy.ndarray&lt;/code> 镜像 &lt;code>numpy.ndarray&lt;/code>，让用户的 Python 代码可以「换 import 名字」直接跑在 GPU 上；&lt;/li>
&lt;li>用 &lt;code>cupy_backends/&lt;/code> 目录把 CUDA 和 ROCm（HIP）藏在同一个 C-API 后面，使同一份上层 Cython 代码可以选 NVIDIA 或 AMD GPU；&lt;/li>
&lt;li>用运行时 NVRTC（NVIDIA Runtime Compilation，CUDA 动态编译库）即时合成 kernel，并把 cuBLAS、cuSOLVER、cuTENSOR、cuSPARSE、NCCL 这些厂商库包装成 &lt;code>cupyx.linalg&lt;/code>、&lt;code>cupy.cuda.*&lt;/code> 等用户 API。&lt;/li>
&lt;/ol>
&lt;p>读完这句话，读者应当已经能区分 CuPy 与 PyTorch、与 Numba CUDA 的边界：PyTorch 的目标是深度学习 tensor 计算与自动求导；Numba CUDA 是 Python 子集 + 手写 kernel；CuPy 则是把 NumPy/SciPy 这套既有生态用 GPU 重新实现一遍，重点是「不动业务代码，只换底层」。这也是为什么这个仓库有 11356 stars、1061 forks、MIT 协议、Preferred Networks 长期维护——它在 HPC（High Performance Computing，高性能计算）、信号处理、计算化学、辐射成像等需要既有 NumPy 代码又想用 GPU 的领域是不可替代的。&lt;/p></description></item></channel></rss>