| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Python知识库 -> python使用numba库实现gpu加速 -> 正文阅读 |
|
|
[Python知识库]python使用numba库实现gpu加速 |
|
????????Numba是一个针对Python的开源JIT编译器,由Anaconda公司主导开发,可以对Python原生代码进行CPU和GPU加速。Numba对NumPy数组和函数非常友好。 ????????使用Numba非常方便,只需要在Python原生函数上增加一个装饰器(Decorator)。Numba会将这些函数使用即时编译JIT方式编译成机器码,这些代码将以近乎机器码的速度运行。 1.CPU加速:只用1行代码即可加速,对loop有奇效在函数前面加一个@nb.jit? 其他不用变
耗时大约75s(c++编程在不加速的情况下需要20分钟) 输出:
2.GPU加速:?与传统的Python CPU代码不同的是:
?Thread层次结构:
????????CUDA将核函数所定义的运算称为线程(Thread),多个线程组成一个块(Block),多个块组成网格(Grid)。这样一个Grid可以定义成千上万个线程,也就解决了并行执行上万次操作的问题。例如,把前面的程序改为并行执行8次:可以用2个Block,每个Block中有4个Thread。原来的代码可以改为 ????????CUDA提供了一系列内置变量,以记录Thread和Block的大小及索引下标。以 某个Thread在整个Grid中的位置编号为:
?将CPU的代码改进一下就能得到:
?最后耗时约25s,其中并行运算的仅耗时0.5s,将数据从GPU拷贝回CPU耗时24.5s 输出:
(但是两种方法求出的数据有些许出入,还没搞清楚为什么)? Reference:初识GPU编程 | Weizheng |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/1 18:27:31- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |