pyCUDA教程-系列学习(1):GPU结构、pyCUDA、numbapro安装及HelloGPU例子
GPU结构
CPU v.s. GPU
CPU是被设计用来处理复杂任务的,而GPU只能做好一件事-处理百万级的低级任务(原来是被用来生成3D图形中的三角形),而且GPU有上千个ALU(算术逻辑单元),而CPU通常只有8个。而且很多程序大部分时间都花在GPU擅长的简单运算上了,所以GPU加速程序很有必要。
CUDA编程有越来越复杂的趋势,但pyCUDA则大大简化了这个过程,并且拥有GPU加速的享受,所以面向GPU的高级编程正逐渐成为主流。
GPU内部图:
CUDA处理流程图:
可以看出,由CPU向GPU部署处理任务,同时由内存向GPU显存复制处理数据,而后GPU的显存将数据布置到每个核进行搞笑的并行运算,而后将结果返回显存,再由显存将结果返回内存。这个流程将会在程序中反复出现。
pyCUDA的安装在python下很简单,只要:(本人用的python3,例子中都改成python3了,其实变得不大)
ubuntu下,sudo pip3 install pycuda
windows命令行,pip3 install pycuda
同时分享,api和官方例子地址:
api:
https://documen.tician.de/pycuda/index.html、
例子:
https://wiki.tiker.net/PyCuda
HelloGPU例子:
import pycuda.driver as drv import pycuda.tools import pycuda.autoinit import numpy import numpy.linalg as la from pycuda.compiler import SourceModule mod = SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """) multiply_them = mod.get_function("multiply_them") a = numpy.random.randn(400).astype(numpy.float32) b = numpy.random.randn(400).astype(numpy.float32) dest = numpy.zeros_like(a) multiply_them( drv.Out(dest), drv.In(a), drv.In(b), block=(400,1,1)) print(dest-a*b)
pyCUDA教程-系列学习(1):GPU结构、pyCUDA、numbapro安装及HelloGPU例子相关推荐
- Highmaps网页图表教程之图表配置项结构与商业授权
Highmaps网页图表教程之图表配置项结构与商业授权 Highmaps图表配置项结构 Highmaps最核心的部分就是图表配置项.用户通过图表配置项来对标题进行定制,从而实现自己所要的效果.所以,掌 ...
- Android手机ROM定制初级教程以及Android系统文件夹结构介绍【转】
Android手机ROM定制初级教程以及Android系统文件夹结构介绍 一个完整的OM根目录会有以下几个文件夹及文件: data META-IN system boot.img 系统目录说明 1. ...
- Android Studio2.0 教程从入门到精通MAC版 - 安装篇
来自:http://www.open-open.com/lib/view/open1466430392743.html 前言 这个教程你将学会如何使用Android Studio2.0开发Androi ...
- 【Dlib】在GPU环境中运行dlib中的例子dnn_mmod_ex报错...dlib::cuda_error...Error while calling cudaMalloc...
1.问题描述 在GPU环境下运行dlib中的例子dnn_mmod_ex时,报错: terminate called after throwing an instance of 'dlib::cuda_ ...
- CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略
CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略 目录 根据Anaconda的CUDA版本去安装对应匹配的NVIDIA驱动程序图文教程 ...
- fossid安装教程_如何在一个 U 盘上安装多个 Linux 发行版
本教程介绍如何在一个 U 盘上安装多个 Linux 发行版.这样,你可以在单个 U 盘上享受多个现场版live Linux 发行版了. 我喜欢通过 U 盘尝试不同的 Linux 发行版.它让我可以在真 ...
- mysql data文件夹恢复_【专注】Zabbix源码安装教程—步骤详解(2)安装并配置mysql...
四.安装并配置mysql(1) 解压mysql-5.7.26.tar.gz与boost_1_59_0.tar.gz #tar -xvf mysql-5.7.26.tar.gz #tar -xvf bo ...
- php+mysql案例含源码_【专注】Zabbix源码安装教程—步骤详解(1)安装前准备
一.实验环境准备 Rhel 7.6 x86_64(server) 192.168.163.72 Rhel 6.5 x86_64(agent) 192.168.163.61 均已配置操作安装光盘为YUM ...
- python mac os安装教程_教程:在 Mac OS X 上安装 TensorFlow
简评:手把手教你如何在 Mac OSX 系统安装 TensorFlow. 这个文档说明了如何在 Mac OS X 上安装 TensorFlow. 注意:从 1.2 版本开始,在 Mac OS X 上 ...
最新文章
- Android笔记三十三.BroadcastReceiver使用
- 'CUDA driver version is insufficient for CUDA runtime version
- FreeBSD挂截U盘和光盘
- python中difflib_python中的difflib
- fastJson toJSONString注意点
- php魔术方法 效率,PHP常用魔术方法的性能探究
- python︱apple开源机器学习框架turicreate中的SFrame——新形态pd.DataFrame
- PHP设置脚本最大执行时间的三种方法
- 内容管理项目小结 成功案例-公司官网,游戏官网
- Red5流媒体服务器的完整尝试
- 一张图回顾Hadoop十年:Hadoop老矣,尚能饭否?
- 解决UI黑边问题,Alpha Bleeding技术简介
- 隐私计算之差分隐私-Laplace机制
- 前端需要了解的5G网络知识
- 4.4 使用倾斜工具和整形工具制作图标 [Illustrator CC教程]
- 为什么访问亚马逊的网站卡顿?
- 青云客php免费,青云客/小I智能对话机器人API免费版
- GSM MODEN短信发送模块详解(短信的读取、发送过程和编码、解码过程)
- 3d游戏开发――辐射度算法
- oracle中角色的用户和权限管理,用户角色与权限控制