charm4py并行编程框架

charm4p的Python项目详细描述


(注意:在版本v0.11中,我们已经将项目名称更改为charm4py。见 有关详细信息,请参见forum

https://travis-ci.org/UIUC-PPL/charm4py.svg?branch=masterhttp://readthedocs.org/projects/charm4py/badge/?version=latesthttps://img.shields.io/pypi/v/charm4py.svg

charm4py(charm++for python-以前是charmpy-)是一个通用的并行程序,并且 基于 可移植的python对象和远程方法调用;构建在自适应 C++运行时系统提供^ {EM1} $速度EEM>、^ {EM1} $可伸缩性和^ {EM1}动态负载平衡

charm4py允许开发从笔记本电脑到 超级计算机,使用python语言。它建在Charm++之上。

请看Documentation

简短示例

下面使用任意数量的计算机和处理器并行计算pi:

fromcharm4pyimportcharm,Chare,Group,ReducerfrommathimportpiimporttimeclassWorker(Chare):defwork(self,n_steps,pi_future):h=1.0/n_stepss=0.0foriinrange(self.thisIndex,n_steps,charm.numPes()):x=h*(i+0.5)s+=4.0/(1.0+x**2)# perform a reduction among members of the group, sending the result to the futureself.contribute(s*h,Reducer.sum,pi_future)defmain(args):n_steps=1000iflen(args)>1:n_steps=int(args[1])mypi=charm.createFuture()workers=Group(Worker)# create one instance of Worker on every processort0=time.time()workers.work(n_steps,mypi)# invoke 'work' method on every workerprint('Approximated value of pi is:',mypi.get(),# 'get' blocks until result arrives'Error is',abs(mypi.get()-pi),'Elapsed time=',time.time()-t0)exit()charm.start(main)

这是一个简单的例子,只演示了charm4py的一些特性一些需要注意的事情 从这个例子来看:

  • chares是分布式python对象。
  • group是一种分布式集合,其中指定的 在每个处理器上创建字符类型
  • charm4py中的远程方法调用是asynchronous

在这个例子中,每个处理器只有一个字符,但是有多个字符(相同的 或不同类型的)可以存在于任何给定的处理器上,这可以带来性能。 好处有关详细信息,请参阅documentation

联系人

我们需要社区的反馈如果您有功能建议、支持问题或一般性意见,请访问我们的forum

主要作者在<;jjgalvez@illinois.edu>;

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

推荐PyPI第三方库


热门话题
java如何在导航抽屉中显示图像   DDD中的java聚合对象   java如何在登录后隐藏主活动上的项目?   java如何知道MouseWheelListener是否可以接收事件?   java地图中未显示新标记   Z3Java绑定是否具有与python相同的get_vars()API?   java重置或清除Lucene索引   Java骑士之旅代码   集合Java类树集合中的Java方法headSet和tailSet在日志(N)时间内工作吗?   java从SpringWeb服务获取Jetty实例   java需要在jira中将jsp文件更改为vm文件   创建对象时发生java IllegalMonitorStateException   java SnakeYaml从字符串第一行转储   使用java在文件中逐个使用for循环写入行