| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

OpenCL的Python封装:PyOpenCL

OpenCL的一个非常完整Python绑定,以及广泛的并行算法。但是,对于那些希望体验OpenCL的开发,核心算法仍然必须用C语言编写。
OpenCL全称 Open Computing Language ,是 第一个面向异构系统通用目的并行编程的开放式、免费标准 ,也是一个统一的编程环境,便于软件开发人员为 高性能计算服务器、桌面计算系统、手持设备 编写高效轻便的代码,而且 广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器 ,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

from py2opencl import Py2OpenCL  import numpy  from numpy.random import randint    def next_it( x, y, dest, src ):      """        neighbor coordinates:           0, 1, 2,         3,    4,         5, 6, 7        """      live_neighbors = ( src[ x-1, y-1 ] + src[ x, y-1 ] + src[ x+1, y-1 ]                         + src[ x-1, y ] + src [ x+1, y ]                         + src[ x-1, y+1 ] + src[ x, y+1 ] + src[ x+1, y+1 ] )      if live_neighbors < 2:          dest[x,y] = 0      elif live_neighbors == 3:          dest[x,y] = 1      elif src[x,y] and live_neighbors == 2:          dest[x,y] = 1      elif live_neighbors > 3:          dest[x,y] = 0      else:          dest[x,y] = 0    grid = randint( 0, 2, size=(40, 40) ).astype(numpy.dtype('uint8'))    iterate = Py2OpenCL( next_it )  iterate.bind( grid, return_type = numpy.dtype('uint8') )    print iterate.kernel    for i in range(int(1e6)):      grid = iterate.apply( grid )

项目主页:http://www.open-open.com/lib/view/home/1417184038956

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1417184038956.html
PyOpenCL OpenGL 图形/图像处理