通信人家园

标题: 基于 Numba 的 CUDA Python 编程简介  [查看完整版帖子] [打印本页]

时间:  2024-11-7 10:57
作者: zhangqibm     标题: 基于 Numba 的 CUDA Python 编程简介


**[CUDA](https://en.wikipedia.org/wiki/CUDA)** 计算平台可以让开发者在 NVIDIA GPU 上实现大规模并行计算,从而加速应用程序的执行,节省宝贵的时间资源。

**[Numba](http://numba.pydata.org/)** 是一款即时(JIT) Python 函数编译器,提供简洁的 API 用于加速 Python 函数运行。对希望使用 GPU 加速其应用又不想写 C/C++ 代码的同学而言,Numba 是个极具吸引力的选择,而对日常使用 NumPy 执行大量计算任务的开发者来说,Numba 更是不二之选。Numba 可用于加速 CPU 上运行的 Python 函数,同样也适用于在 NVIDIA GPU 进行应用加速。**本课程侧重讲解使用 Numba 在 GPU 上加速 Python 应用程序所需的基础技能。**

## 什么是 Numba?

Numba 是一个**类型专用**的**即时函数编译器**,用于为 CPU 或 GPU 加速**以数值计算为主的** Python 函数。此定义很长,下面就让我们逐一解析这些术语:

* **函数编译器**:Numba 用于编译 Python 函数,而非整个应用程序,它也不是函数的一部分。Numba 不会取代 Python 解释器,而仅作为另一个 Python 模块,将普通函数转化为执行速度更快的函数(通常情况下)。
* **类型专用**:Numba 可为您当前使用的特定数据类型生成专门的执行代码,从而加速函数运行。Python函数被设计为对通用数据类型进行操作,这为其带来了极大的灵活性,但也严重拖慢了运行速度。实际上,您只会调用具有少量参数类型的函数,因此Numba会为每种类型的集合生成快速实现。
* **即时**:在函数首次被调用时,Numba 会对它们进行转换,这样可以确保编译器知道您将使用的参数类型。这也使得Numba可以像传统应用程序一样轻松地在Jupyter笔记本中交互使用。
* **以数字计算为主**:Numba 目前以处理数值型数据类型为主,如 `int`、`float` 和 `complex`。字符串处理支持极为受限,且许多字符串处理函数还无法在 GPU 上获得有效加速。若要借助 Numba 获得最佳加速效果,您可能需要搭配使用 NumPy 数组。

## Numba 使用要求

Numba 支持各类操作系统:

* Windows 7 及以上版本,32 和 64 位
* macOS 10.9 及以上版本,64 位
* Linux(RHEL 5 及以上的大多数版本),32 和 64 位

Numba 还支持多种 Python 版本:

* Python 2.7、3.4 至 3.6 版本
* NumPy 1.10 及以上版本

此外,其还支持各类硬件:

* x86、x86_64 及 AMD64 CPU
* NVIDIA CUDA GPU(计算能力 3.0 及更高级别,CUDA 8.0 及以上版本)
* AMD GPU(实验性补丁)
* ARM(实验性补丁)

本课程将使用 Linux 64 位和 CUDA 9 版本。






通信人家园 (https://www.txrjy.com/) Powered by C114