从纯python代码自动创建opencl内核

py2opencl的Python项目详细描述


===
py2oppencl
==



内核(用类似c的语言编写),然后使用andreas klóckner的pyopencl
模块提交GPU的内核。它不是要将任意的
python代码转换为opencl,因为这是不可能的。相反,它仅限于
简单的python lambda和只包含简单数学运算的函数
和内置的opencl函数。



Py2Pencl,F

Py2=Py2Pencl(Lambda x:-x如果x和lt;0.5否则f.sin(x))
a=Py2.map(np.ran随机.rand(10000000))



>打印Py2.kernel

>>;
>gt;
>gt;int-g id=get_global const float*x,全局float*resu g;
>>>;gt;int-gid=get_global_id(0)id(0);
>>>
>>>;res_g[gid]=((x[gid]<;0.5))?-x[gid]:sin(x[gid]);
>;}




>虽然有许多约束,但支持更复杂的函数。以下函数对图像像素进行平均:


import numpy as np
from py2oppencl import py2oppencl,f
import image


img_path='py2oppencl/test/lenna.png'

img=np.array(image.open(img_path).convert('rgb')

def avg(x,y,z,dest,src):
注意,生成的c代码将自动处理包装
right=src[x+1,y,z]
left=src[x-1,y,z]
up=src[x,y-1,z]
down=src[x,y+1,z]
dest[x,y,(右/4)+(左/4)+(上/4)+(上/4)+(下/4)



dest=py2oppencl(avg.map(img)
image.fromarray(dest'rgb').save('foo.png')




opencl驱动程序应该在mac os x上开箱即用。如果你在linux上,没有一个好的gpu,我应该在macos x上开箱即用。如果你在linux上,又没有一个好的gpu,那么我应该在macos x上开箱即用py2oppencl。如果你在linux上,如果你在linux上,没有一个好的gpu,我建议AMD的ICD,发现`这里是http://developer.amd.com/tools and sdks/opencl zone/opencl tools sdks/amd accelerated parallel processing app sdk/`
(截至2014年7月26日)。它支持现代英特尔CPU,不需要GPU。(可能它也支持AMD CPU。)


截至本文撰写之时,Intel的Beignet驱动程序在Ubuntu14.04上似乎已被破坏。




>在Ubuntu14.04上经过测试的平台
==

-nvidia cuda/nvidia-opencl-icd-331在Ubuntu14.04上
-amd加速并行处理(AMD-app-sdk-v2.9)在Intel Core i7-3610qm上,ubuntu 14.04
-苹果针对intel core i5-4258u的opencl驱动程序,os x 10.9
-苹果针对intel“iris”(intel hd 4000)的opencl驱动程序,os x 10.9


=====

-支持while循环和c-style循环(即,for i i n range(n)
-性能写入

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中创建固定大小的泛型数组?   javascript Paypal Braintree订阅付款   使用BufferedReader和PrintWriter实现java数据持久化?   类似于iCloud的java唯一google id   java使用网格布局和抓取组合框   java我的while循环无限运行,当我检查它时,它说while循环没有主体,而我认为它显然没有主体   java LWJGL碰撞3D OpenGL   java将Tibco RV切换到WebSphere MQ?   java如何使用Postman从curl发布REST   java是超级的,在通用通配符中是独占的吗?   在swing 1.5中,java在指定时间后自动关闭非模态对话框   java PrimeFaces饼图在JSF 2.0中不显示   java如何在Spring MVC中提供带有xml配置的默认bean实现?   java在eclipse中使用按钮关闭JFrame   java Sqoop jar已弃用   Java中的Getter方法