前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Parsl-Python中的高效并行编程模块

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

作者头像
用户1075469
发布2023-08-26 14:16:52
2270
发布2023-08-26 14:16:52
举报
文章被收录于专栏:科技记者科技记者

之前从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 环境:
代码语言:javascript
复制
$ 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应用程序。

代码语言:javascript
复制
>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 在线学习教程,无需在本地安装或编写任何代码。
  1. 使用本地 Parsl 安装克隆 Parsl 教程存储库。
  2. 通读在线教程文档。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 快速开始
    • 使用 Pip 安装
      • 使用 Conda 进行安装
        • 开始
          • 应用程序类型
        • 详细教程
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档