前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大规模运行MPI应用

大规模运行MPI应用

原创
作者头像
用户1078344
修改2019-02-25 11:28:36
2.2K0
修改2019-02-25 11:28:36
举报
文章被收录于专栏:并行计算

一、应用场景

科学计算

在现代科学和工程中,数值计算工程师会遇到大量复杂的数学计算问题。这些问题突出的共性表现在高维数、计算规模大、多时空尺度、强非线性等方面。批量处理Batch拥有一套完整的并行计算框架,适配常见的并行模型(MPI应用)。利用海量弹性的云资源,有力地支撑高性能科学计算应用软件和算法。

影视和效果图渲染

在影视、广告、建筑规划等视觉创作行业中,内容制作者和后期制作公司需要使用到海量机器来完成影视特效、三维动画、特效图等相关渲染工作,批量处理 Batch 为用户提供了自动化内容渲染工作流水线的能力,用户可以构建自己的渲染依赖流程,同时利用 Batch 的海量资源和作业调度能力来高效的完成视觉创作工作。

基因测序

生物信息公司或实验室利用测序仪获取基因组序列的原始文件,在完成基因组序列的初步分析后将信息上传到云上存储系统,比如对象存储或文件存储,然后通过腾讯云批量计算 Batch 对信息进行更进一步分析。

二、准备

三、Batch介绍

图1

如图1所示,Batch的核心概念包括计算环境和作业。计算环境是由一个或多个计算节点组成。每一个计算节点可能是一个CVM云服务器,一台黑石物理机,或者一个Docker容器。作业运行于计算环境中,由一个或多个具有前后依赖关系的任务组成。一个作业就是一个基本的工作流。需要进一步了解Batch,请移步《腾讯云批量计算介绍》。

四、运行MPI应用基本流程

  • 创建CVM自定义镜像
  • 准备数据,并使用迁移工具上传至对象存储文件存储(如图1第①步所示)
    • 使用空密码短语生成SSH秘钥对。
    • 上传密钥对“.ssh”目录,目录包含公钥文件、秘钥文件和带公钥的authorized_keys文件。
    • 上传Linux MPI主任务和子任务应用程序包(“main exec”和“sub exec”)。
    • 上传Linux MPI应用输入数据。
  • 调用Batch计算环境接口创建资源池(如图1第②步所示)
    • 创建安全组,配置网络访问控制,允许SSH端口访问。
    • 推荐使用私有网络,不同计算环境之间网络空间逻辑隔离。
    • 如图1第③步,利用计算环境存储映射挂载安全的“.ssh”目录、MPI子任务应用程序包“sub exec”目录和输入数据“data”目录。
    • 如图1第④步所示,利用计算环境存储映射重定向MPI子任务标准输出和标准错误到“data”目录。
  • 创建多个MPI应用作业(如图1“Job A”、“Job B”和“Job C”所示)
    • 利用任务存储映射,如图1第⑥步所示,下载MPI主任务应用程序压缩包“main exec”。
    • 随机选择一台计算节点运行Linux MPI主任务。以MPICH实现为例: “mpiexec -f $ BATCH_ENV_PRIVATE_IPS ~/main.sh” 其中$ BATCH_ENV_PRIVATE_IPS是Batch提供的系统环境变量,表示计算节点IP集合。
    • 主任务完成后,如图1第⑦步所示,利用任务存储映射重定向MPI主任务标准输出和标准错误到第三方存储stdout和stderr目录。
    • 如图1第⑨步所示,用户可登陆到任意计算节点,完成程序调试和性能诊断。

五、计算环境样例

代码语言:javascript
复制
{
  "ComputeEnv": {
    "EnvName": "test compute env",
    "EnvDescription": "test compute env",
    "EnvType": "MANAGED",
    "EnvData": {
      "InstanceType": "S1.SMALL2",
      "ImageId": "{cvm image id}"
    },
    "InputMappings": [
      {
        "SourcePath": "cos://{bucket}-{app id}.cos.{region}.myqcloud.com/.ssh",
        "DestinationPath": "~/.ssh"
      },
      {
        "SourcePath": "cos://{bucket}-{app id}.cos.{region}.myqcloud.com/subtask/",
        "DestinationPath": "/usr/local/subtask/"
      }
    ],
    "DesiredComputeNodeCount": 100
  }
}

六、MPI应用作业样例

代码语言:javascript
复制
{
  "Job": {
    "JobName": "test job",
    "Priority": 1,
    "Tasks": [
      {
        "TaskName": "hello",
        "TaskInstanceNum": 1,
        "ComputeEnvId": "{env id}",
        "InputMappings": [
          {
            "SourcePath": "cos://{bucket}-{app id}.cos.{region}.myqcloud.com/input/data",
            "DestinationPath": "{local path}"
          }
        ],
        "OutputMappings": [
          {
            "SourcePath": "{local path}",
            "DestinationPath": "cos://{bucket}-{app id}.cos.{region}.myqcloud.com/output/data"
          }
        ],
        "Application": {
          "DeliveryForm": "PACKAGE",
          "Command": "mpiexec -f $ BATCH_ENV_PRIVATE_IPS ~/main.sh",
          "PackagePath": "cos://{bucket}-{app id}.cos.{region}.myqcloud.com/main.tar.gz"
        }
      }
    ],
    "Dependence": []
  }
}

参考文献

[1] Azure.Use multi-instance tasks to run Message Passing Interface (MPI) applications in Batch, https://docs.microsoft.com/en-us/azure/batch/batch-mpi

[2] StarCluster User Manual, http://star.mit.edu/cluster/docs/latest/manual/index.html

[3] MPICH Guide, http://www.mpich.org/documentation/guides/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、应用场景
  • 二、准备
  • 三、Batch介绍
  • 四、运行MPI应用基本流程
  • 五、计算环境样例
    • 六、MPI应用作业样例
    • 参考文献
    相关产品与服务
    批量计算
    批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档