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例子相关推荐

  1. Highmaps网页图表教程之图表配置项结构与商业授权

    Highmaps网页图表教程之图表配置项结构与商业授权 Highmaps图表配置项结构 Highmaps最核心的部分就是图表配置项.用户通过图表配置项来对标题进行定制,从而实现自己所要的效果.所以,掌 ...

  2. Android手机ROM定制初级教程以及Android系统文件夹结构介绍【转】

    Android手机ROM定制初级教程以及Android系统文件夹结构介绍 一个完整的OM根目录会有以下几个文件夹及文件: data META-IN system boot.img  系统目录说明 1. ...

  3. Android Studio2.0 教程从入门到精通MAC版 - 安装篇

    来自:http://www.open-open.com/lib/view/open1466430392743.html 前言 这个教程你将学会如何使用Android Studio2.0开发Androi ...

  4. 【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_ ...

  5. CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略

    CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略 目录 根据Anaconda的CUDA版本去安装对应匹配的NVIDIA驱动程序图文教程 ...

  6. fossid安装教程_如何在一个 U 盘上安装多个 Linux 发行版

    本教程介绍如何在一个 U 盘上安装多个 Linux 发行版.这样,你可以在单个 U 盘上享受多个现场版live Linux 发行版了. 我喜欢通过 U 盘尝试不同的 Linux 发行版.它让我可以在真 ...

  7. 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 ...

  8. 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 ...

  9. python mac os安装教程_教程:在 Mac OS X 上安装 TensorFlow

    简评:手把手教你如何在 Mac OSX 系统安装 TensorFlow. 这个文档说明了如何在 Mac OS X 上安装 TensorFlow. 注意:从 1.2 版本开始,在 Mac OS X 上 ...

最新文章

  1. Android笔记三十三.BroadcastReceiver使用
  2. 'CUDA driver version is insufficient for CUDA runtime version
  3. FreeBSD挂截U盘和光盘
  4. python中difflib_python中的difflib
  5. fastJson toJSONString注意点
  6. php魔术方法 效率,PHP常用魔术方法的性能探究
  7. python︱apple开源机器学习框架turicreate中的SFrame——新形态pd.DataFrame
  8. PHP设置脚本最大执行时间的三种方法
  9. 内容管理项目小结 成功案例-公司官网,游戏官网
  10. Red5流媒体服务器的完整尝试
  11. 一张图回顾Hadoop十年:Hadoop老矣,尚能饭否?
  12. 解决UI黑边问题,Alpha Bleeding技术简介
  13. 隐私计算之差分隐私-Laplace机制
  14. 前端需要了解的5G网络知识
  15. 4.4 使用倾斜工具和整形工具制作图标 [Illustrator CC教程]
  16. 为什么访问亚马逊的网站卡顿?
  17. 青云客php免费,青云客/小I智能对话机器人API免费版
  18. GSM MODEN短信发送模块详解(短信的读取、发送过程和编码、解码过程)
  19. 3d游戏开发――辐射度算法
  20. oracle中角色的用户和权限管理,用户角色与权限控制

热门文章

  1. JavaFX源码分析实战:如何设置窗体标题小图标和任务栏图标
  2. before和after怎么区分_before和after区别 关于before和after
  3. 自学软件测试1个半月上岸拿5个offer
  4. ie测试兼容的软件,IE系列浏览器兼容性测试点整理
  5. 归一化互相关(NCC)计算视差图
  6. python+opencv实现NCC模板旋转匹配(图像处理)
  7. python yaml PyYaml入门
  8. matlab版本转换
  9. 7-4 帅到没朋友(20 分)
  10. 阿里云推出高效病毒基因序列检索功能,它的底层逻辑原来是这样的