欢迎来到 PyOpenCL 中文文档

原作者: Andreas Kloeckner inform@tiker.net

原文地址

翻译:CycleUser


PyOpenCL 让你可以以Pythonic风格,简单地使用OpenCL 的并行计算接口(parallel computation API).它具有如下的特点:

  • 与对象生命周期(ifetime of objects)绑定的对象清理(Object cleanup). 在C++中这个术语(idiom)也叫做 RAII(中文直译为”资源获取即初始化”,具体来说是在构造函数中申请资源,析构函数中释放资源).这样有利于写正确代码,避免代码出现泄漏或者崩溃.
  • 完备性(Completeness). PyOpenCL 为开发人员提供了全部的 OpenCL API 支持. 所有的get_info() 查询(query)以及所有的CL调用(calls)都是可用的(accessible).
  • 自动错误检查.所有的错误都会自动翻译成 Python 异常(exceptions).
  • 速度. PyOpenCL 的底层是用 C++ 写的, 所以速度非常快.
  • 有帮助的文档. 也就是你现在在读的这个. ;).
  • 自由的授权协议(Liberal license). PyOpenCL 在 MIT 协议下开源发布,可以自由用于商业用途/学术用途或者私人用途(free for commercial, academic, 和 private use).

样例代码地址

指南(Tutorials)

PyOpenCL 相关的软件项目

  • Jon Roose 的 pyclblas (代码地址) 提供了 clBLAS 形式的 BLAS, 被用在了 PyOpenCL 的代码中.(译者注:BLAS,是 Basic Linear Algebra Subprograms 的缩写,是一个基础线性代数库.)

    另外还有两个早期的封装(earlier wrappers),作者分别是 Eric Hunsberger 以及 Lars Ericson.

  • Cedric Nugteren 提供了对 CLBlast, 一个OpenCL BLAS 库的封装(wrappers): PyCLBlast.

  • Gregor Thalhammer 的 gpyfft 是一个 OpenCL FFT 的 Python 封装, 基于 AMD 的 clFFT.(译者注: FFT 是 Fast Fourier Transform 的缩写,快速傅里叶变换的意思.).
  • Bogdan Opanchuk 的 reikna 提供了很多基于 GPU 的算法 (快速傅里叶变换,随机数生成,矩阵乘法),这些算法是设计用于 pyopencl.array.Array 对象.
  • Troels Henriksen, Ken Friis Larsen, 和 Cosmin Oancea 的 Futhark 编程语言提供了在对 pyopencl.array.Array 实例(instance)的数据进行缩减和扫描, 以编写网络并行程序( nested-parallel programs)的良好方法.
  • Robbert Harms 和 Alard Roebroeck 的 MOT 提供了各种基于 GPU 的非线性优化算法(non-linear optimization algorithms) 和 MCMC 采样方法(sampling routines) 来进行并行优化 (parallel optimization) 和多重采样 (sampling of multiple problems).

如果你觉得有某些软件应该添加到这个列表里面,可以到GitHub 上的 PyOpenCL 项目上 告知开发者,或者直接提交补丁就更好了.

内容(Contents)

要注意这份文档并不会解释 OpenCL 的编程和技术细节,这部分内容请参考Khronos 官方网站的 OpenCL 文档

PyOpenCL 也有自己的 官方网站, 你可以在官网来查找更新,新版本,文档,以及获取支持.

目录和列表

  • genindex
  • modindex
  • search