使用远程对象使分布式计算变得更容易

distob的Python项目详细描述


使用远程对象,分布式计算变得更加容易
n.b.这是一个开发预发行版:还有很多工作要做

概述

DIOBO将占用您现有的Python对象或对象序列, 把它们分散到许多ipython并行引擎上 在单个计算机或群集上运行。

代理对象代替原始对象保留在客户端上 提供与原始对象相同接口的计算机。你 可以继续使用这些对象,就好像这些对象仍然是本地的一样。全部 方法被传递到远程对象,在那里进行计算。

特别是,支持向集群发送numpy数组。

一个麻木数组也可以沿着一个特定的轴散布在整个群集上。然后可以自动并行地对数组执行操作(可以使用ufuncs,也可以使用下面的vectorize()

注意:启用__numpy_ufunc__功能(尚未发布)的numpy需要支持分布式数组算术和分布式ufunc。您可以在此处启用此实验功能获得numpy:https://github.com/mattja/numpy/archive/master.zip

distob是构建在ipyparallel之上的对象层,因此它将 使用默认的ipython并行概要文件。这使得 集群架构、本地CPU、ssh节点、PBS、Amazon EC2等。

功能

scatter(obj)将任何对象(或对象列表)分发到远程ipython引擎,返回一个代理。
gather(obj)取回一个分布式对象(或列表),使其再次成为本地对象。

vectorize(f)将普通函数(接受单个对象或数组)转换为在分散的列表或数组上并行操作的函数。apply(f, obj)vectorize(f)(obj)
相同

分布式numpy阵列

< div > {tt9}$沿着轴2分发一个单数数组,返回diStRay.< /div >

算术运算可以将普通数组与新数组类型自由混合。
普通numpy ufuncs也可以用于分布式阵列。
算术和ufunc计算将自动路由到引擎,或在多个引擎上并行执行,具体取决于数据的位置。(需要启用__numpy_ufunc__功能的numpy)
concatenatevstackhstackdstackexpand_dimstransposerollaxissplitvsplithsplitdsplitbroadcast_arrays
这些函数的工作方式类似于同名的numpy函数。但这些可以与普通的ndarray、remotearray和distarray混合使用,执行数组结构更改,同时保持实际数据分布在多个引擎上。
例如,堆叠多个远程阵列将产生一个distarray,而无需移动数据。
DIV>迄今为止的分布式数组支持基本索引、切片和高级整数索引。

课程

RemoteArray表示远程numpy ndarray的代理对象
DistArray一个数组分布在多个引擎上

Remote基类,在自动创建Remote*代理类时使用
@proxy_methods(base)类装饰器,用于自动创建Remote*代理类
ObjectHubdict接口为集群范围内的所有分布式对象提供引用
ObjectEnginedict保存单个ipython引擎的分布式对象
Ref对(可能是远程)对象的引用

属性

engine:每个主机上的ObjectEngine实例(ObjectHubon 客户)

待办事项

  • 允许分配到远程数组的片。
  • 正确实现远程方法结果的缓存。
  • 运行时代理类的自动创建(取决于UqField/DILα58)
  • 对于ufunc的执行,仍然需要imp元素reduceaccumulatereduceatouterat方法。
  • 使代理类更加健壮,适应wrapt(pypi.python.org/pypi/wrapt)

谢谢

包括杰伊·哈钦森的pylru.pyhttp://github.com/jlhutch/pylru

ipyparallel交互式并行计算: https://ipyparallel.readthedocs.org/

dill由mike mckerns编写,用于对象序列化,请参见: http://trac.mystic.cacr.caltech.edu/project/pathos

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

推荐PyPI第三方库


热门话题
java如何通过编程将Android置于待机状态?   java mavenjarsignerplugin在Jenkins构建期间失败,但不是在命令行上   java创建具有公共ipv4地址的HttpServer   将数据从jsp传递到servlet的java返回null   Web应用程序中的java JDBC数据库连接   java无法显示unicode字符   java webview应用程序未上载图片或视频   Android客户端Java服务器,如果订单处理方式不正确,客户端将无法连接   java在不复制备份表的情况下创建备份表   集合如何在Java中实现列表折叠   java如何配置在JBoss7中使用EntityListeners?   java JVM ClassUnloadingWithConcurrentMark标志   java如何在Maven中排除特定的单元测试   java线程在SynchronousQueue中执行put操作后挂起   java中的hibernate Comparator和可比较的负面场景   数组中的java连接元素   拖放Java,让面板落在鼠标事件上   java是一种事务管理应用程序,无需在方法上使用@transactional   java有没有办法从安卓的软键板上删除这一行?