并行图形管理执行异构计算
项目描述
关于Pathos框架
pathos是一个异构计算的框架。它为配置和启动跨异构资源的并行计算提供了一个一致的、高级的接口。pathos提供了可配置的并行和分布式计算启动器,其中每个启动器都包含配置和启动作业的语法逻辑。可以插入到pathos中的启动器示例包括:无队列的基于MPI的启动器(在pyina中),基于ssh的启动器(在pathos中),以及多进程启动器(在multiprocess中)。
pathos 为每个启动器提供了一致的接口,用于并行和/或分布式的 map 和 apply 版本,从而降低了用户将代码扩展到并行和/或分布式资源的门槛。在 pathos 背后的设计原则是,map 和 apply 应该是串行代码中的直接替代品,因此只需切换到 pathos 启动器之一,就可以使代码能够利用所选的并行或分布式计算资源。这不仅大大缩短了将代码转换为并行的转换时间,而且允许维护单个代码库,而不是需要并行、串行和分布式版本的代码。pathos 的映射可以是嵌套的,因此可以通过仅选择所需的 map 和 pipe (apply) 对象的层次结构来实现层次异构计算。
pathos 框架由几个相互协作的软件包组成
dill:序列化所有 Python
pox:文件系统探索和自动构建的实用工具
klepto:将数据持久化到内存、磁盘或数据库
multiprocess:Python 中的改进多进程和多线程
ppft:分布式和并行 Python
pyina:MPI 并行 map 和集群调度
pathos:异构计算中的图管理和执行
关于 Pathos
pathos 软件包提供了一些基本工具,使最终用户更容易访问并行和分布式计算。 pathos 的目标是用最小的重构使用户能够将他们的代码扩展到并行和分布式计算。
pathos 提供了配置、启动、监控和控制远程主机上服务的方法。 pathos 的一个最基本的功能是在远程主机上配置和启动基于 RPC 的服务。 pathos 在远程主机上启动 portpicker 脚本,允许远程主机告知本地主机可用于通信的端口号。
除了建立 RPC 服务并提交请求之外,pathos 还允许并行启动代码。与在节点级别进行的并行计算(通常使用 MPI)不同,pathos 允许用户在异构分布式资源上并行启动作业。pathos 提供了分布式 map 和 pipe 算法,可以选择本地处理器和分布式工人的组合。pathos 还提供了一种基本的自动化负载均衡服务,以及用户直接选择资源的能力。
高级的 pool.map 接口,提供了一个隐藏 RPC 内部实现的 map 实现。使用 pool.map,用户可以在并行中启动他们的代码,作为一个分布式服务,使用标准的 Python,而不需要编写一行服务器或并行批处理代码。
RPC服务器和一般通信被认为是不安全的。然而,pathos并不是尝试使RPC通信本身变得安全,而是提供了自动将任何分布式服务或通信包裹在ssh隧道中的能力。SSH是一种普遍信任的方法。使用ssh隧道,pathos已经在国家实验室集群上启动了多个分布式计算,并且迄今为止已经执行了测试计算,这些计算利用了几个国家实验室集群和用户笔记本电脑之间的节点到节点的通信。pathos允许用户通过原始的ssh和scp访问以非常原子的级别进行配置和启动。
pathos是异构计算Python框架的核心。pathos正在积极开发中,因此任何用户的反馈、错误报告、评论或建议都备受赞赏。问题列表位于https://github.com/uqfoundation/pathos/issues,历史列表维护在https://uqfoundation.github.io/project/pathos/query。
主要功能
pathos提供了一种可配置的分布式并行map接口来启动RPC服务调用,具有以下功能:
一个符合并扩展Python map标准的map接口
将服务请求提交到一组服务器的功能
使用ssh隧道服务器通信的能力
pathos核心基于使用ssh对远程主机进行低级通信构建。ssh、scp和ssh隧道连接的接口可以:
使用ssh配置和启动远程进程
使用scp配置和复制文件对象
建立和关闭ssh隧道
为了快速启动,pathos还提供了基础设施来:
轻松建立与RPC服务器的ssh隧道连接
当前版本
pathos的最新版本可在以下网址获取:
pathos遵循3条款BSD许可证。
开发版本
您可以在以下网址获取带有所有最新功能的最新开发版本:
如果您有新的贡献,请提交一个pull request。
安装
pathos可以使用pip安装
$ pip install pathos
需求
pathos需要以下内容:
python(或pypy),≥3.8
setuptools,≥42
pox,≥0.3.5
dill,≥0.3.9
ppft,≥1.7.6.9
multiprocess,≥0.70.17
更多信息
开始使用最有效的方法是查看http://pathos.rtfd.io上的文档。还可以查看pathos.tests和https://github.com/uqfoundation/pathos/tree/master/examples,其中包含一系列脚本,展示了如何配置和启动使用ssh和scp进行通信,以及如何在分层并行工作流中配置和执行作业。您可以使用python -m pathos.tests运行测试套件。可以使用pathos_connect脚本(或使用python -m pathos)建立与远程服务器的隧道和其他连接。有关更多信息,请参阅pathos_connect --help。pathos还提供了一个portpicker脚本,用于选择一个开放的端口号(也可以使用python -m pathos.portpicker)。源代码通常有很好的文档,因此可以通过检查代码本身来解决更多问题。请随时在github上提交问题,或在stackoverflow上提问(@Mike McKerns)。如果您想分享您如何在工作中使用pathos,请发送电子邮件(至mmckerns at uqfoundation dot org)。
重要的类和函数在这里可以找到
pathos.abstract_launcher [工作池API定义]
pathos.pools [所有pathos工作池]
pathos.core [高级命令接口]
pathos.hosts [主机名注册接口]
pathos.serial.SerialPool [串行Python工作池]
pathos.parallel.ParallelPool [并行python工作池]
pathos.multiprocessing.ProcessPool [多进程工作池]
pathos.threading.ThreadPool [多线程工作池]
pathos.connection.Pipe [启动器的基类]
pathos.secure.Pipe [安全启动器的基类]
pathos.secure.Copier [安全复制器的基类]
pathos.secure.Tunnel [安全隧道基类]
pathos.selector.Selector [选择器的基类]
pathos.server.Server [服务器基类]
pathos.profile [线程和进程的配置文件]
pathos.maps [独立映射实例]
pathos还提供了两个便利的脚本,用于建立安全的分布式连接。这些脚本被安装到用户的$PATH目录中,因此可以从任何地方运行
portpicker [获取开放端口号]
pathos_connect [建立隧道和/或RPC服务器]
将--help作为任何上述脚本的参数将打印出有用的帮助信息。
引用
如果您使用pathos进行研究并导致发表,我们要求您在出版物中承认使用pathos,如下引用
M.M. McKerns, L. Strand, T. Sullivan, A. Fang, M.A.G. Aivazis, "Building a framework for predictive science", Proceedings of the 10th Python in Science Conference, 2011; http://arxiv.org/pdf/1202.1056 Michael McKerns and Michael Aivazis, "pathos: a framework for heterogeneous computing", 2010- ; https://uqfoundation.github.io/project/pathos
请参阅https://uqfoundation.github.io/project/pathos或http://arxiv.org/pdf/1202.1056以获取更多信息。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。