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

Python实现的CUDA – pyCUDA

Nvidia的CUDA 架构为我们提供了一种便捷的方式来直接操纵GPU 并进行编程,但是基于

C语言的CUDA实现较为复杂,开发周期较长。而python 作为一门广泛使用的语言,具有

简单易学、语法简单、开发迅速等优点。作为第四种CUDA支持语言,相信python一定会

在高性能计算上有杰出的贡献–pyCUDA。

pyCUDA特点

pyCUDA工作流程

调用的基本例子

包含内容

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

你可能感兴趣的:(python,gpu并行计算)