分布线性算子PyLops的一个推广。
pylops-distributed的Python项目详细描述
:vertical_traffic_light::vertical_traffic_light:此库正在早期开发中。 在v1.0.0版本之前,预计情况会不断变化。:垂直交通灯::垂直交通灯:
目的
此库是PyLops的扩展 对于分布式操作员。在
就像numpy和{a9}谎言一样多 作为父项目PyLops的核心,PyLops在 Dask,一个用于分布式计算的Python库。在
这样,线性算子可以分布在单个节点上的多个进程中 甚至跨越多个节点。他们的前进和伴随 它们首先被懒洋洋地构建为有向无环图,并且仅在请求时求值 用户(或自动在我们的解算器中)。在
下面是一个简单的示例,演示如何创建对角线运算符, 使用PyLops应用和反转:
importnumpyasnpfrompylopsimportDiagonaln=10x=np.ones(n)d=np.arange(n)+1Dop=Diagonal(d)# y = Dxy=Dop*x# x = D'yxadj=Dop.H*y# xinv = D^-1 yxinv=Dop/y
同样地,使用PyLops分布:
^{pr2}$在这一点上,有两件事值得注意:
- 在这个特定的例子中,我们甚至不需要重新实现
Derivative
运算符。 调用numpy操作作为方法(例如,x.sum()
)而不是函数(例如np.sum(x)
) 当提供dask阵列时,我们的操作员可以自动充当分布式操作员。不幸的是,并不是所有的numpy函数都是作为方法实现的:在这些情况下,我们 重新实现操作员直接在派洛普斯分布。在 - 使用
*
和{}仍然可以在PyLops分布中使用,但是当初始化 运算符我们将需要决定是要简单地创建dask图还是还要求值。 这给了我们灵活性,因为我们可以决定是否以及何时使用 compute
方法进行评估 在一个选择的达斯克阵列上。在
入门
您需要Python 3.5或更高版本。在
来自PyPi
很快就要来了。。。在
来自Github
也可以直接从主节点安装
pip install https://git@github.com/equinor/pylops-distributed.git@master
贡献
想为项目做贡献吗?添加新操作员或教程?
按照PyLops official documentation中的说明操作。在
文件
派洛普斯发行的官方文档here。在
此外,如果您已经使用developer environment安装了PyLops,您还可以通过 键入以下命令:
make doc
一旦创建了文档,您可以对源代码进行任何更改并通过 简单的打字
make docupdate
请注意,如果创建了新的示例或教程(以及对以前可用的示例或教程进行了任何更改) 您需要重新生成整个文档,然后才能看到更改。在
历史
PyLops Distributed最初是编写的,目前由Equinor维护。 它是PyLops的扩展,用于大规模优化 distributed线性运算符,可以根据我们的需要进行定制,并作为对自由软件社区的贡献。在
贡献者
- 马特奥·拉瓦西,姆拉瓦西87
- 项目
标签: