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 randintdef 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 )</pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!