歡迎使用PyOpenCL的文檔!?
PyOpenCL使您可以方便地通過Pythonic訪問 OpenCL 并行計算API。是什么讓PyOpenCL與眾不同?
對象清理綁定到對象的生存期。這個成語,常被稱為 RAII 在C++中,編寫更為正確的、無泄漏和無崩潰的代碼更容易。
完整性。如果您愿意,PyOpenCL可以將OpenCL的API的全部功能交給您使用。每一個模糊的 get_info() 查詢和所有CL調用都是可訪問的。
自動錯誤檢查。所有錯誤都會自動轉換為Python異常。
速度。PyopCl的底層是用C++編寫的,所以上面的所有細節都是免費的。
有用的文件。你在看。;
自由許可證。PyOpenCL是 MIT license 免費供商業、學術和私人使用。
舉個例子,給你一個印象:
#!/usr/bin/env python
import numpy as np
import pyopencl as cl
a_np = np.random.rand(50000).astype(np.float32)
b_np = np.random.rand(50000).astype(np.float32)
ctx = cl.create_some_context()
queue = cl.CommandQueue(ctx)
mf = cl.mem_flags
a_g = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=a_np)
b_g = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=b_np)
prg = cl.Program(ctx, """
__kernel void sum(
__global const float *a_g, __global const float *b_g, __global float *res_g)
{
int gid = get_global_id(0);
res_g[gid] = a_g[gid] + b_g[gid];
}
""").build()
res_g = cl.Buffer(ctx, mf.WRITE_ONLY, a_np.nbytes)
prg.sum(queue, a_np.shape, None, a_g, b_g, res_g)
res_np = np.empty_like(a_np)
cl.enqueue_copy(queue, res_np, res_g)
# Check on CPU with Numpy:
print(res_np - (a_np + b_np))
print(np.linalg.norm(res_np - (a_np + b_np)))
assert np.allclose(res_np, a_np + b_np)
(你可以找到這個例子 examples/demo.py
在PyOpenCL源代碼發行版中。)
教程?
加斯頓希拉氏 two-part article series 在Dobb博士的期刊中,我們友好地介紹了PyOpenCL。
Simon McIntosh-Smith 和 Tom Deakin 的課程 Hands-on OpenCL 包含兩者 lecture slides 和 exercises (with solutions) (課程涵蓋PyopCopl以及OpenCL的C和C++ API)。
PyOpenCL課程 DTU GPULab 和 Simula (2011): Lecture 1 Lecture 2 Problem set 1 Problem set 2
伊恩·約翰遜的 PyOpenCL tutorial .
使用或增強PyOpenCL的軟件?
Jon Roose's pyclblas (code) makes BLAS in the form of clBLAS available from within
pyopencl
code.兩個早期的包裝器仍然可用:一個由 Eric Hunsberger 一個接一個 Lars Ericson .
格雷戈瑟爾哈默的 gpyfft 為AMD的openclfft庫clFFT提供Python包裝器。
博格丹奧潘丘克 reikna 提供各種基于GPU的算法(FFT、隨機數生成、矩陣乘法),用于
pyopencl.array.Array
物體。Troels Henriksen、Ken Fris Larsen和Cosmin Oancea's Futhark 編程語言提供了一種很好的方法來編寫嵌套的并行程序,并對數據進行縮減和掃描
pyopencl.array.Array
實例。Robbert Harms和Alard Roebroeck的 MOT 提供各種GPU支持的非線性優化算法和MCMC采樣例程,用于并行優化和多問題采樣。
如果你知道一個軟件,你覺得應該在這個名單上,請讓我知道,或者,更好的,發送一個補??!
目錄?
- OpenCL運行時:基礎
- OpenCL運行時:常量
- OpenCL運行時:平臺、設備和上下文
- OpenCL運行時:命令隊列和事件
- OpenCL運行時:內存
- OpenCL運行時:程序和內核
- OpenCL運行時:OpenGL互操作性
- 多維數組
- OpenCL類型映射
- 并行算法
- 操作指南
- 內置公用設施
- 安裝
- 提示
- 指南
- 用戶可見的更改
- 版本2020.3
- 版本2020.2
- 版本2018.2
- 版本2018.1
- 2017.2版
- 2017.1版
- 2016.2版
- 2016.1版
- 版本2015.2.4
- 版本2015.2.3
- 版本2015.2.2
- 版本2015.2.1
- 2015.2版
- 2015.1版
- 2014.1版
- 版本2013.2
- 2013.1版
- 2012.1版
- 版本2011.2
- 版本2011.1.2
- 版本2011.1.1
- 版本2011.1
- 版本0.92
- 版本0.91.5
- 版本0.91.4
- 版本0.91.3
- 版本0.91.2
- 版本0.91.1
- 版本0.91
- 版本0.90.4
- 版本0.90.3
- 版本0.90.2
- 版本0.90.1
- 版本0.90
- 許可
- 常見問題
- 引用PyOpenCL
- 致謝
- 文件交叉引用
- ?? github
- ?? 下載發行版
請注意,本指南沒有解釋OpenCL編程和技術。請向官方咨詢 Khronos OpenCL documentation 為此。
PyOpenCL也有自己的 web site ,您可以在其中找到更新、新版本、文檔和支持。