🥑Numba映射Python代码至CUDA内核
Numba | Python | CUDA
GPU 架构对机器学习至关重要,而且似乎每天都变得更加重要。但是,您无需接触 GPU 代码即可成为机器学习专家。通过抽象工作很难获得直觉。
本文,以完全交互式的方式教授初学者 GPU 编程。 让您直接进入编码和构建 GPU 内核。 练习使用 NUMBA 直接将 Python 代码映射到 CUDA 内核。 它看起来像 Python,但与编写低级 CUDA 代码基本相同。
Numba编程CUDA GPU
内核实现(GPU 函数)示例
将向量 a 的每个位置加 10 并将其存储在向量输出中。 每个位置有 1 个线程。
将 a 和 b 的每个位置相加并将其存储在 out 中。每个位置有 1 个线程。
将 a 的每个位置加 10 并将其存储在 out 中。您的线程数多于位置数。
将 a 的每个位置加 10 并将其存储在 out 中。输入 a 是 2D 和正方形。您的线程数多于位置数。
添加 a 和 b 并将其存储在 out 中。输入 a 和 b 是向量。您的线程数多于位置数。
将 a 的每个位置加 10 并将其存储在 out 中。每个块的线程数少于 a 的大小。
在 2D 中实现相同的内核。在两个方向上,每个块的线程数都少于 a 的大小。
将 a 的每个位置加 10 并将其存储在 out 中。每个块的线程数少于 a 的大小。
将 a 的最后 3 个位置相加并将其存储在 out 中。每个位置有 1 个线程。每个线程只需要 1 次全局读取和 1 次全局写入。
计算 a 和 b 的点积并将其存储在 out 中。每个位置有 1 个线程。每个线程只需要 2 次全局读取和 1 次全局写入。
计算 a 和 b 之间的一维卷积并将其存储出来。您需要处理一般情况。每个线程只需要 2 次全局读取和 1 次全局写入。
计算 a 的总和并将其存储在 out 中。如果 a 的大小大于块大小,则只存储每个块的总和。
计算 a 的每一列的总和并将其存储在 out 中。
将方阵 a 和 b 相乘并将结果存储在 out 中的内核。
Last updated