【Python - GPU】基于Python的GPU加速并行计算 -- pyCUDA

Python实现的CUDA – pyCUDA

Nvidia的CUDA 架构为我们提供了一种便捷的方式来直接操纵GPU 并进行编程,但是基于
C语言的CUDA实现较为复杂,开发周期较长。而python 作为一门广泛使用的语言,具有
简单易学、语法简单、开发迅速等优点。作为第四种CUDA支持语言,相信python一定会
在高性能计算上有杰出的贡献–pyCUDA

  • pyCUDA特点

  • pyCUDA工作流程

  • 调用的基本例子

  • 包含内容

pyGPU

pyCUDA特点

  • CUDA完全的python实现

  • 编码更为灵活、迅速、自适应调节代码

  • 更好的鲁棒性,自动管理目标生命周期和错误检测

  • 包含易用的工具包,包括基于GPU的线性代数库、reduction和scan,添加了快速傅里叶变换包和线性代数包LAPACK

  • 完整的帮助文档Wiki

pyCUDA的工作流程

具体的调用流程如下:

Created with Raphaël 2.1.0 开始 编写python程序 python程序检查? 调用pyCUDA编译CUDA 源码并上传GPU 编译正确? PyCUDA’s numpy进行数据读入处理 数据读入处理成功? 输出GPU 加速处理结果 结束 yes no yes no yes

调用基本例子

import pycuda.autoinit
import pycuda.driver as drv
import numpy

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), grid=(1,1))

print dest-a*b

#tips: copy from hello_gpu.py in the package.

具体内容

  • 设备交互

  • Profiler Control

  • 动态编译

  • OpenGL交互

  • GPU数组

  • 超编程技术

补充内容:对于GPU 加速python还有功能包,例如处理图像的pythonGPU加速包—— pyGPU

以及专门的GPU 加速python机器学习包—— scikitCUDA

Matlab对应的工具包并行计算工具箱GPU计算技术
以及教程介绍文档

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值