ai-infra-interview-305

第 21 题:用CUDA写一个简单的vector add,如何绑定到Python?

题目

用CUDA写一个简单的vector add,如何绑定到Python?


完整讲解

一、CUDA vector add 怎么写?

用 CUDA 写 vector add:在 kernel 里每个线程负责若干元素(或一对一),从 global memory 读 a[i]b[i],写回 c[i] = a[i] + b[i]。注意 grid/block 维度:block 内线程数常取 256,grid 大小 = (n + blockSize - 1) / blockSize;kernel 内用 blockIdx.x * blockDim.x + threadIdx.x 得到全局下标,并加 bounds checkif (i < n))防止越界。

二、如何暴露给 Python?

常见方式:PyTorch C++ 扩展torch.utils.cpp_extension)、pybind11 + 自己编译、或 CuPy/NumPy 的 C 扩展

三、工程要点


面试要点


记忆要点

  1. CUDA vector add:每线程算下标 i,读 a[i]、b[i],写 c[i];grid/block 覆盖 n,加 i < n 判断。
  2. 绑 Python:PyTorch 扩展(.cu + .cpp,load_library)或 pybind11;at::Tensor 取 ptr 调 kernel。
  3. 参与 Autograd 需包一层 Function,forward 调 kernel,backward 传梯度。
返回模块 返回总览