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第三方库


热门话题
maven通过pom文件增加最大java堆大小   java如何在Kojo IDE输出窗格中打印到同一行?   如何使用特定的JRE交付Java应用程序?   java Cordova插件调用日志找不到符号   Java上Redis哈希中的spring列表   java ThreadSafeClientConnManager不是多线程   java如何在激活器中获取IEclipseContext   java如何通过编程更改除法器偏差   在中找不到maven Java/Mvn本地资源。罐包装   JOptionPane的java用户输入验证。showInputDialog   java编辑:如何更改日期对象的日期格式?   文件编写器Java;如何覆盖   一行中包含多个值的java读取属性   java如何在安卓中使用截击上传视频