Parsl-Python中的高效并行编程模块

之前从qiime2的更新介绍中了解到了这个模块,这里再详细了解一下!哪天用起来呀!


简介

Parsl是一个基于Python的开源(https://github.com/Parsl/parsl)并行编程库,使用户能够并行化 Python 程序并在各类计算资源(例如个人电脑、集群和超算集群)上扩展且高效地运行它们。

  • 纯Python, 轻松并行化 Python 代码Parsl 提供了一种直观的、pythonic 的方式来通过注释“apps”来并行化代码:Python 函数或并发运行的外部应用程序。自然并行编程!

  • 隐式数据流。应用在遵守数据依赖关系的同时并发执Parsl 创建任务及其数据依赖关系的动态图。仅当满足任务的依赖关系时,才会执行任务。
  • 可扩展的 Jupyter notebook。轻松管理跨分布式资源的执行。Parsl 与 Jupyter notebook无缝协作,允许笔记本中的应用程序并行执行并在远程资源上执行。

  • 一次编写,随处运行。从笔记本电脑到超级计算机Parsl 脚本独立于执行环境。可以在一个或多个执行资源上执行单个脚本,而无需修改脚本。

Parsl已应用于多个科学领域的工作流中,在多个大型超算集群部署和验证,如美国国家能源研究科学计算中心(NESRC)等。相关论文(Parsl: Pervasive Parallel Programming in Python)获HPDC 2019大会最佳论文提名,更多介绍可查看Parsl主页(https://parsl-project.org/)。

快速开始

Parsl 需要 Python3.8+,并且已经在 Linux 和 macOS 上进行了测试。

使用 Pip 安装

虽然pip可用于安装 Parsl,但我们建议使用以下方法当许多 Python 环境可用时进行可靠安装。

$ python3 -m pip install parsl

要将以前安装的 parsl 更新到较新版本,请使用:

python3 -m pip install -U parsl

使用 Conda 进行安装

  1. 创建并激活新的 conda 环境:
$ conda create --name parsl_py38 python=3.8
source activate parsl_py38
$ python3 -m pip install parsl
   # or
 $ conda config --add channels conda-forge
 $ conda install parsl

开始

Parsl与Python的原生并发库有很多共同之处, 但释放Parsl的潜力需要了解几个主要概念。

Parsl 程序提交要在分布在远程计算机上的工作线程上运行的任务。这些任务的说明包含在用户使用 Python 函数定义的“应用程序”中。每台远程计算机(例如,超级计算机上的节点)都有一个管理工作线程的“执行器”。Parsl 可用的远程资源由“提供者”获取, 它将执行器放置在具有“启动器”的系统上。任务执行由在本地系统上运行的“数据流内核”代理。

应用程序类型

Parsl 支持并发执行 Python 函数 (python_app) 或外部应用程序 (bash_app)。两者的逻辑都由标有 Parsl 装饰器的 Python 函数描述。调用修饰的函数时,它们在其他资源上异步运行。调用 Parsl 应用程序的结果是 AppFuture, 它的行为就像一个 Python 未来。

下面的示例演示如何编写一个简单的 Parsl 程序 与hello world Python和Bash应用程序。

>import parsl
from parsl import python_app, bash_app

parsl.load()

@python_app
def hello_python (message):
    return 'Hello %s' % message

@bash_app
def hello_bash(message, stdout='hello-stdout'):
    return 'echo "Hello %s"' % message

# invoke the Python app and print the result
print(hello_python('World (Python)').result())

# invoke the Bash app and read the result from a file
hello_bash('World (Bash)').result()

with open('hello-stdout''r') as f:
    print(f.read())

详细教程

了解有关 Parsl 的更多信息的最佳方式是查看 Parsl 教程。遵循本教程有几个选项:

  1. 使用 Binder 在线学习教程,无需在本地安装或编写任何代码。

  2. 使用本地 Parsl 安装克隆 Parsl 教程存储库。

  3. 通读在线教程文档。

彩蛋

还有个专门的节日呢!2023 年帕斯尔节 – 帕斯尔社区会议(10月19-20日)

第五届ParslFest社区会议将在20日中午左右开始,当天和20日上午进行会谈。20日下午将是一个公开的黑客会议,用于动手工作、黑客攻击、测试、自带代码等。现场部分将在芝加哥大学举行。

会议汇集了来自世界各地的研究人员、开发人员和网络基础设施专家 讨论使用和开发Parsl和Globus Compute(以前称为funcX)的经验 – 与Parsl相关的联合功能即服务平台。

注册是免费的,我们希望您能做一个闪电般的演讲,描述您使用Parsl或Globus Compute的工作

我们有一些资金可用于支持前往研讨会的旅行(航班和住宿)。请联系凯尔·查德(chard@uchicago.edu)获取信息。


本篇文章来源于微信公众号:微因

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注