在hpc平台上执行python的一个子集

compyle的Python项目详细描述


Travis StatusAppveyor StatusDocumentation Status

compyle允许用户执行python的一个子集(几乎类似 c)在各种高性能混凝土平台上。目前我们支持多核执行 使用cython,opencl和cuda作为gpu设备。

用户从使用非常受限的python语法实现的代码开始,这段代码 然后被自动地转译、编译和执行以在任一CPU上运行 核心,或多个CPU核心(通过OpenMP)或在一个GPU上。CPY优惠 源代码到源代码的转换,使它成为编写hpc的一个非常方便的工具 图书馆。

提供了一些简单而强大的并行实用程序,允许您 解决大量有趣的hpc问题。

compyle还具有jit转印功能,如果您希望使其易于使用。

文档位于:https://compyle.readthedocs.io

虽然compyle看起来很简单,但它不是一个玩具,而且被PySPH大量使用。 compyle起源的项目。

安装

compyle本身是纯python,但依赖于numpy,需要Cython 或{a9}或PyCUDA以及C/C++编译器各自的后端, opencl和cuda。如果你只想在CPU上执行代码 需要的是赛顿。

您应该可以通过执行以下操作来安装compyle:

$ pip install compyle

一个简单的例子

下面是一个非常简单的示例:

from compyle.api import Elementwise, annotate, wrap, get_config
import numpy as np

@annotate
def axpb(i, x, y, a, b):
    y[i] = a*sin(x[i]) + b

x = np.linspace(0, 1, 10000)
y = np.zeros_like(x)
a, b = 2.0, 3.0

backend = 'cython'
get_config().use_openmp = True
x, y = wrap(x, y, backend=backend)
e = Elementwise(axpb, backend=backend)
e(x, y, a, b)

这将使用openmp与并行执行elementwise操作 赛顿。代码会自动生成、编译并透明地调用。 第一次运行时,将需要一点时间来编译除 下一次,它会被缓存,运行速度会快得多。

如果您只是更改backend = 'opencl',那么相同的代码将是 使用PyOpenCL执行,如果将后端更改为'cuda',它将 通过CUDA执行,不需要对代码进行任何其他更改。这显然是 很小的例子,也有更复杂的例子。

示例

examples目录中提供了一些简单的示例和基准测试。

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

推荐PyPI第三方库


热门话题
java Android使用两个后台服务错误   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   javax和javax的区别是什么。网ssl。密钥库和服务器。ssl。为SpringBoot应用程序指定密钥库时的密钥库属性   java生成两个JPanel,而我只需要一个   java深度链接从play store安装应用程序时获取数据   java 安卓应用程序在退出时未正确释放蓝牙   java正确使用setCellValueFactory   java开放JdbcTemplate连接处于只读模式?   使用Spring MVC创建服务时发生java错误   JavaFX获取安装在计算机中的特定应用程序的版本   SecureRandom的安全问题:PRNG在java 1.5中不一致   windows我可以创建一个独立的。带Inno设置的Java应用程序的exe安装程序?   如何使用JavaServlet下载csv文件?   java从生成的缓冲图像中添加图像作为jasper中的数据记录?   java日期和时间解析