写点什么

使用 Elastic Fabric Adapter 和 AWS ParallelCluster 扩展 HPC 工作负载

  • 2019-09-27
  • 本文字数:2446 字

    阅读完需:约 8 分钟

使用 Elastic Fabric Adapter 和 AWS ParallelCluster 扩展 HPC 工作负载

2019 年 4 月,AWS 宣布正式发布 Elastic Fabric Adapter (EFA),这是一种 EC2 网络设备,它可以提高分布式高性能计算 (HPC) 和机器学习 (ML) 工作负载的吞吐量和可扩展性。今天,我们很高兴宣布通过 AWS ParallelCluster 支持 EFA。


EFA 是一种适用于 Amazon EC2 实例的网络接口,您可以借助它在 AWS 上大规模运行需要高水平实例间通信的 HPC 应用程序(例如计算流体动力学、天气建模以及库区模拟等)。它使用行业标准的操作系统绕过技术,借助新的自定义可扩展可靠数据报 (SRD) 协议来增强实例间通信性能,这对于 HPC 应用程序的扩展至关重要。有关 EFA 和所支持实例类型的更多信息,请参阅 Elastic Fabric Adapter (EFA) for Tightly-Coupled HPC Workloads


建立启用 EFA 功能的 HPC 集群涉及许多并无重要价值的繁重工作,这些全部都由 AWS ParallelCluster 负责。当您在“cluster”部分设置 enable_efa = compute 标签时,AWS ParallelCluster 将会为所有网络增强实例添加 EFA。具体而言,AWS ParallelCluster 将会执行下列步骤:


  1. 在启动模板中设置 InterfaceType = efa。

  2. 确保安全组的规则允许指向自己的所有入站和出站流量。与传统 TCP 流量不同,EFA 要求有一条入站规则和一条出站规则明确允许指向自己的安全组 (ID sg-xxxxx) 的所有流量。更多信息请参阅准备启用了 EFA 的安全组。

  3. 安装 EFA 内核模块(这是一个 AWS 专用版本的 Libfabric 网络堆栈)和 OpenMPI 3.1.4。

  4. 验证实例类型、基础操作系统和置放组。

  5. 如要开始使用,您需要安装 AWS ParallelCluster,具体请参阅 AWS ParallelCluster 入门。对于本教程,我们将假设您已经安装了 AWS ParallelCluster 并且熟悉 ~/.parallelcluster/config 文件。


修改您的 ~/.parallelcluster/config 以使“cluster”部分至少包含下列参数:


[global]cluster_template = efaupdate_check = truesanity_check = true
[aws]aws_region_name = [your_aws_region]
[cluster efa]key_name = [your_keypair]vpc_settings = publicbase_os = alinuxmaster_instance_type = c5.xlargecompute_instance_type = c5n.18xlargeplacement_group = DYNAMICenable_efa = compute [vpc public]vpc_id = [your_vpc]master_subnet_id = [your_subnet]
复制代码


base_os — 目前我们支持启用 EFA 的 Amazon Linux (alinux)、Centos 7 (centos7) 和 Ubuntu 16.04 (ubuntu1604)。master_instance_type可以是任何实例类型(它位于为计算节点组件的置放组之外,不启用 EFA)。我们选择的是 c5n.xlarge,因为与 c5n.18xlarge 相比,它的价格更便宜但仍具有极佳的网络性能。compute_instance_type EFA 仅在计算节点上启用;这是您通过某个计划程序提交作业时运行代码的地方,这些实例应为支持的实例类型(在本文执笔之时包括 c5n.18xlarge、i3en.24xlarge、p3dn.24xlarge)。请参阅文档以了解当前支持的实例类型。placement_group 以物理相邻的方式放置您的计算节点,便于您充分发挥 EFA 的低网络延迟和高吞吐量优势。enable_efa 这是唯一的新增新参数,用于为计算节点增加 EFA 支持。目前只有一个选项,即 compute。这是为了提醒您注意 EFA 仅在计算节点上启用。
复制代码


然后您可以创建集群:


$ pcluster create efaStatus: CREATE_COMPLETEMasterServer: RUNNINGMasterPublicIP: 3.215.238.41ClusterUser: ec2-userMasterPrivateIP: 172.31.25.64
复制代码


完成集群创建后,您可以为集群添加 SSH:


$ pcluster ssh efa -i ~/path/to/ssh_key
复制代码


这时您可以看到其中有一个模块 openmpi/3.1.4 可用。该模块加载时,您可以在 /opt/amazon/efa 中确认 PATH 中的 mpirun 已正确设置为启用 EFA 的版本:


[ec2-user@ip-172-31-17-220 ~]$ module avail
----------------------------------------------- /usr/share/Modules/modulefiles ------------------------------------------------dot module-git module-info modules null openmpi/3.1.3 use.own[ec2-user@ip-172-31-17-220 ~]$ module load openmpi/3.1.4[ec2-user@ip-172-31-17-220 ~]$ which mpirun/opt/amazon/efa/bin/mpirun
复制代码


此版本的 openmpi 是借助 libfabric 的支持编译的。libfabric 库可让我们使用标准的 mpi 命令通过 EFA 设备通信。在本文执笔之时,Open MPI 是唯一支持 EFA 的 mpi 库。Intel MPI 预计也将很快发布。


现在您可以提交作业。首先创建一个包含下列参数的文件 submit.sge:


#!/bin/bash#$ -pe mpi 2
module load openmpimpirun -N 1 -np 2 [command here]
复制代码

CFD++ 示例

EFA 可加速计算流体动力学等常见工作负载。在下面的示例中,我们将使用启用 EFA 的 c5n.18xlarge 实例,在 24M 电池箱上运行 CFD++。CFD++ 是 Metacomp Technologies 开发的一种流量求解器。此模型是三倍音速外流计算(克林贡猎禽舰)的一个例子:



3 倍音速外流计算示例。


您可以看到下面的两个扩展曲线;蓝色曲线显示了启用 EFA 的扩展;紫色曲线为未启用 EFA 的扩展。EFA 提供的扩展能力明显更高,以更高的内核数提供远超多倍的性能。



扩展曲线,启用和不启用 EFA 对比。

新文档!

最后(当然不是最不重要),我们也非常高兴地宣布推出新的 AWS ParallelCluster 文档。这些文档现提供十种语言以及支持多种访问方式的 readthedocs 版本。立即阅读,先睹为快! 当然,您仍可以通过在 AWS Docs GitHub 存储库上创建 pull 请求以提交文档更新。


AWS ParallelCluster 是一个以社区为中心的项目。欢迎提交 pull 请求或通过 GitHub 问题提供反馈。用户反馈促进了我们的开发,推动我们全面做到卓越!


作者介绍:


Sean Smith


Sean Smith


Sean Smith 是 Amazon Web Services 的一名软件开发工程师。他最初从事 HPC 领域的工作,作为一名实习生参与 CfnCluster 项目,成为该团队(后来成为 AWS ParallelCluster)的首位工程师。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/scale-hpc-workloads-elastic-fabric-adapter-and-aws-parallelcluster/


2019-09-27 14:351018
用户头像

发布了 1890 篇内容, 共 141.7 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

Redis 内存碎片清理

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

架构师知识笔记2

felix徐

LeetCode链表专题01: 反转链表

小马哥

Java 链表 LeetCode 数据结构与算法 七日更

mysql 检索分享上篇

new life

程序思维与架构思维

Simon

架构实战营

那些不得不知的缓存知识

Java 缓存 程序员 面试

火爆全网!2021年最新发布Java面试清单(九大技术点)

比伯

Java 程序员 架构 程序人生 架构师

Go语言的初体验

Phoenix

Go 语言

(Day31) 变革流程的流程

mtfelix

28天写作 bewriting

华为 IS-IS防环、泄露

艺博东

网络

极客时间·产品训练营·第八周作业

二大爷

极客大学产品经理训练营

软件工程笔记:学习方法

风翱

软件工程 笔记 3月日更

初识Golang之条件语句

Kylin

基础语法 3月日更 Go 语言

畅玩国服LOL?MacBook M1 Windows虚拟机体验

Zhendong

arm MacBook m1

Python OpenCV 图像标记,取经之旅第 12 天

梦想橡皮擦

3月日更

看完这篇,再也不怕面试官问我线程池了

牧小农

多线程 高并发 线程池 阻塞队列 拒绝策略

Wireshark数据包分析学习笔记Day24

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

Go Modules 常见使用陷阱

Rayjun

go modules Go 语言

阿里二面,面试官居然把 TCP 三次握手问的这么细致

鞋子特大号

面试 TCP 三次握手 四次挥手

蚂蚁开源增强版 SpringBoot,都有高级特性?

Java小咖秀

开源 springboot 蚂蚁金服 SOFA

go-admin开源项目分析-1[安装、配置、启动]

happlyfox

学习 3月日更 Go 语言 go-admin

Redis - RDB

insight

redis 3月日更

面试三轮我倒在了一道sql题上——sql性能优化

牧小农

MySQL 数据库 面试 索引 索引优化

Redis - AOF

insight

redis 3月日更

小白也能看懂的锁升级过程和锁状态

牧小农

乐观锁 悲观锁 锁升级

隐式等待、显示等待和强制等待?

Geek_6370d5

10年后端开发程序员精心整理「C/C++ Linux服务器」 成长路线(附思维导图)

Linux服务器开发

Linux 后端 C/C++ Linux服务器开发 Linux后台开发

一篇文章让你彻彻底底理解 I/O 多路复用

Java 程序员 架构 面试 计算机

设计与思考,关于资源和生命周期(三)

程序员架构进阶

设计模式 架构设计 28天写作 3月日更 池化技术

Spring Boot Feign 使用与源码学习

Yangjing

Feign Spring boot Feign 源码解读

一线大厂软件测试流程(思维导图)详解

程序员阿沐

编程 程序员 软件测试 测试工程师 测试流程

使用 Elastic Fabric Adapter 和 AWS ParallelCluster 扩展 HPC 工作负载_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章