GPU共享内存:pycuda使用教程
最近在学习pycuda,因为资料比较少,而且杂乱,所以我就拷贝到了自己的博客
使用Python写CUDA程序有两种方式:
* Numba
* PyCUDA
numbapro现在已经不推荐使用了,功能被拆分并分别被集成到accelerate和Numba了。
例子
numba
Numba通过及时编译机制(JIT)优化Python代码,Numba可以针对本机的硬件环境进行优化,同时支持CPU和GPU的优化,并且可以和Numpy集成,使Python代码可以在GPU上运行,只需在函数上方加上相关的指令标记,
如下所示:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
PyCUDA
PyCUDA的内核函数(kernel)其实就是使用C/C++编写的,通过动态编译为GPU微码,Python代码与GPU代码进行交互,如下所示:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
对比
numba使用一些指令标记某些函数进行加速(也可以使用Python编写内核函数),这一点类似于OpenACC,而PyCUDA需要自己写kernel,在运行时进行编译,底层是基于C/C++实现的。通过测试,这两种方式的加速比基本差不多。但是,numba更像是一个黑盒,不知道内部到底做了什么,而PyCUDA就显得很直观。因此,这两种方式具有不同的应用:
* 如果只是为了加速自己的算法而不关心CUDA编程,那么直接使用numba会更好。
* 如果为了学习、研究CUDA编程或者实验某一个算法在CUDA下的可行性,那么使用PyCUDA。
* 如果写的程序将来要移植到C/C++,那么就一定要使用PyCUDA了,因为使用PyCUDA写的kernel本身就是用CUDA C/C++写的。
GPU共享内存:pycuda使用教程相关推荐
- GPU 共享内存bank冲突(shared memory bank conflicts)
GPU 共享内存bank冲突(shared memory bank conflicts) 时间 2016-11-05 21:47:58 FindSpace 原文 http://www.findspac ...
- cuda合并访问的要求_在 CUDA C / C ++ 中使用共享内存
在 上一篇文章 中,我研究了如何将一组线程访问的全局内存合并到一个事务中,以及对齐和跨步如何影响 CUDA 各代硬件的合并.对于最新版本的 CUDA 硬件,未对齐的数据访问不是一个大问题.然而,不管 ...
- PyCuda学习三之--共享内存与Thread的同步
共享内存与Thread的同步 给出3072*3072大小的数组, 每一个元素都是整数, 现在要做的就是, 将每个元素的立方相加, 并求出最终的结果. 首先,我们先用PyCuda基础知识写出来一个可以运 ...
- 实验9Linux共享内存通信,操作系统原理与Linux实践教程(卓越工程师培养计划系列教材)...
导语 由申丰山和王黎明共同编著的<操作系统原理与Linux实践教程(卓越工程师培养计划系列教材)>一书理论与实践并重,全面.系统地阐述了操作系统的重要概念和原理,深入.细致地剖析了操作系统 ...
- 【GPU结构与CUDA系列4】GPU存储资源:寄存器,本地内存,共享内存,缓存,显存等存储器细节
0 软件抽象和硬件结构对应关系的例子 把GPU跟一个学校对应起来,学校里有教学楼.操场.食堂,还有老师和学生们:很快有领导(CPU)来检查卫生(需要执行的任务Host程序),因此这个学校的学生们要完成 ...
- 盘点来自工业界的GPU共享方案
作者丨阎姝含@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/398369404 编辑丨极市平台 导读 本文总结了目前有公开PR的.来自工业界的部分GPU容器计算共享方 ...
- windows共享内存
在windows编程中避免不了使用共享内存,因为他是进程间通信.文件读取最简单的方式,有书上还说其他进程间通讯机制如管.油槽.WM_COPYDATA底层也是用的共享内存机制.关于使用方法还是请参考MS ...
- 共享内存简介及docker容器的shm设置与修改
共享内存简介及docker容器的shm设置与修改 共享内存简介 共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存.由于多个CPU需要快 ...
- GPU事务性内存技术研究
点击上方蓝字关注我们 GPU事务性内存技术研究 林玉哲1,2, 张为华1,2 1 复旦大学软件学院,上海 201203 2 上海市数据科学重点实验室,上海 201203 论文引用格式: 林玉哲,张为华 ...
- docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...
最近比赛要提交打包好的CNN模型给主办方去测试,使用Docker镜像.这可难倒了我这个小白,搞了好几天才打包好.在这里记录一下Docker使用过程,希望能给广大同学们提供点帮助. 文章内容包含以下3个 ...
最新文章
- 「深度学习知识体系总结(2021版)」开放下载了!
- 四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?
- GetModuleHandle,AfxGetInstanceHandle使用区别
- 基于Docker的GoldenGate部署
- Ubuntu根目录下各文件夹的功能详细介绍
- 【ES】es 查询超时listener timeout after waiting for [60000] ms
- 2013年蓝桥杯题集C本科B
- 【系统分析师之路】2011年系统分析师上午综合知识真题
- GPS导航知识——DGPS
- 【python爬虫】http.cookiejar库之CookieJar,模拟登录与访问
- python 正则表达式量词
- docker实现nginx反向代理、负载均衡
- ATEN CS22DP 2端口USB DisplayPort带线式KVM多电脑切换器 (外接式切换按键)
- 数据库批量插入和存在的问题
- 巴比特首发 | 银行卡司法冻结应遵循法治程序
- ios 扇形 按钮_iOS开发教程之扇形动画的实现
- 提示格式化怎么修复??
- 一个公司有m名推销员,他们都推销n种不同的产品。其中m>=l;m<=100,n>=l,n<=10。每天,每个推销员都要为售出的每一种产品交上来一个卡片。
- 明日方舟公式计算机,明日方舟公开招募公式汇总
- mybatis foreach