使用远程对象使分布式计算变得更容易
distob的Python项目详细描述
使用远程对象,分布式计算变得更加容易
DIOBO将占用您现有的Python对象或对象序列,
把它们分散到许多ipython并行引擎上
在单个计算机或群集上运行。
n.b.这是一个开发预发行版:还有很多工作要做
概述
代理对象代替原始对象保留在客户端上 提供与原始对象相同接口的计算机。你 可以继续使用这些对象,就好像这些对象仍然是本地的一样。全部 方法被传递到远程对象,在那里进行计算。
特别是,支持向集群发送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)
concatenate,vstack,hstack,dstack,expand_dims,transpose,rollaxis,split,vsplit,hsplit,dsplit,broadcast_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元素reduce,accumulate,reduceat,outer,at方法。
- 使代理类更加健壮,适应wrapt(pypi.python.org/pypi/wrapt)
谢谢
包括杰伊·哈钦森的pylru.py, http://github.com/jlhutch/pylru
ipyparallel交互式并行计算: https://ipyparallel.readthedocs.org/
dill由mike mckerns编写,用于对象序列化,请参见: http://trac.mystic.cacr.caltech.edu/project/pathos
推荐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有没有办法从安卓的软键板上删除这一行?