亚马逊AWS官方博客

使用 AWS ParallelCluster 一步部署 HPC 集群和远程可视化

自从 2018 年 11 月初次发布后,AWS ParallelCluster 便可使用户更轻松、更经济高效地在云中管理和部署 HPC 集群。从那以后,团队通过提供更高的配置灵活性和增强功能继续增强产品,例如,为 Elastic Fabric Adapter 网络接口提供内置支持,与 Amazon Elastic File SystemAmazon FSx for Lustre 共享文件系统集成。随着版本 2.5.0 的发布,ParallelCluster 增加了对主节点上的 NICE DCV 的原生支持,从而进一步简化了集群部署。

NICE DCV 是一项 AWS 高性能远程显示协议,为客户提供了一种安全的方式,以便他们能够在不同的网络条件下将远程桌面和应用程序流从任何云或数据中心传送到任何设备中。使用 NICE DCV,客户可以在 EC2 实例上远程运行图形密集型 HPC 应用程序,并将结果流传输到其本地机器中,不产生额外费用,从而不再需要昂贵的专用工作站。

版本 2.5.0 发布之前,需要远程可视化的 HPC 用户通常必须部署另一个 EC2 实例来安装和配置 DCV 服务器。这将需要满足一些安装先决条件,如 Window Manager、配置显示驱动程序、安装 DCV 服务器软件、配置安全身份验证和配置桌面会话。随着 ParallelCluster 2.5.0 的发布,您只需要在 ParallelCluster 配置文件中启用 DCV,而且一切都会为您完成好。此博文余下部分将详细介绍预置 HPC 集群来使用 NAMD 运行模拟的过程以及在 DCV 中可视化结果的过程。

对于不熟悉 ParallelCluster 或希望第一次部署集群的任何人,可参阅 ParallelCluster 其中博文中详细介绍的额外背景和引入概念。Parallel Cluster 用户指南也可起到参考作用。

配置 ParallelCluster

安装 ParallelCluster 后的第一步是创建或更新 ParallelCluster 配置文件。默认情况下,ParallelCluster 包含位于用户主目录中的 .parallelcluster/config 文件的设置。所有配置参数的完整列表可参见 ParallelCluster 文档的配置部分

ParallelCluster 2.5.0 大大简化了 pcluster 配置过程。以前,当您启动 pcluster configure 时,系统会提示您需要跟踪和复制/粘贴到终端的信息。在版本 2.5.0 中,配置程序将查询您的 VPC 并为您提供可供选择的选项的编号列表。

要创建初始配置文件,只需键入 pcluster configure。配置向导将提示您输入必要的输入和提供菜单选项列表。您可以选择在现有 VPC 中部署集群,或者程序可以为您创建一个。我想要在现有 VPC 中部署集群,我们将来详细讨论此场景。

bk:~ $ pcluster configure
信息:配置文件 /Users/bkknorr/.parallelcluster/config 将被写入。
按 CTRL-C 中断程序。

AWS 区域 ID 的允许值:

1. ap-northeast-1
2. ap-northeast-2
3. ap-south-1
4. ap-southeast-1
5. ap-southeast-2
6. ca-central-1
7. eu-central-1
8. eu-north-1
9. eu-west-1
10. eu-west-2
11. eu-west-3
12. sa-east-1
13. us-east-1
14. us-east-2
15. us-west-1
16. us-west-2

AWS 区域 ID [ap-northeast-1]:us-east-1
EC2 密钥对名称的允许值:

1. hpc-key

EC2 密钥对名称 [hpc-key]:1
计划程序的允许值:

1. sge
2. torque
3. slurm
4. awsbatch

计划程序 [sge]:1
操作系统的允许值:

1. alinux
2. centos6
3. centos7
4. ubuntu1604
5. ubuntu1804

操作系统 [alinux]:3
集群最小大小(实例)[0]: 
集群最大大小(实例)[10]: 
主实例类型 [t2.micro]:g3s.xlarge
计算实例类型 [t2.micro]:p3.2xlarge
自动化 VPC 创建?(是/否)[n]:否
VPC ID 的允许值:

1. vpc-01234567 | 默认 | 里面有 7 个子网

VPC ID [vpc-01234567]:1
自动化子网创建?(是/否)[y]:否
主子网 ID 的允许值:

1. subnet-ec3fa3c3 | 子网大小:4096

主子网 ID [subnet-a1b2c34d]:1
计算子网 ID 的允许值:

1. subnet-a1b2c34d | 子网大小:4096

计算子网 ID [subnet-a1b2c34d]:1
配置文件已写入 /Users/bkknorr/.parallelcluster/config

您可以编辑您的配置文件或者只是运行 pcluster create -c /Users/bkknorr/.parallelcluster/config cluster-name 来创建您的集群。

当写入配置文件后,您将需要进行一些修改,以在主节点上启用 NICE DCV。启用分为两步:

  1. 在配置文件的集群部分中添加一行 dcv_settings = default
  2. 创建引用了您为 dcv_settings 选择的值的 dcv 部分并包含行 enable = master

在下面的示例配置文件中,我已经用粗体突出显示了与 DCV 相关的项目。我还选择用支持 GPU 的主实例部署集群。主实例通常不需要很多内存和 CPU,因为它不参与任何作业运行;通常,一个 c5.large 实例便已足够。在此案例中, 主节点托管 NICE DCV 远程桌面会话,因此,我选择部署 g4dn.xlarge,因为它为图形密集型应用程序提供经济高效的选项。

pcluster 配置文件示例

[global]
cluster_template = default
update_check = true
sanity_check = false

[aws]
aws_region_name = us-east-1

[aliases]
ssh = ssh {CFN_USER}@{MASTER_IP} {ARGS}

[cluster default]
base_os = centos7
key_name = hpc-key
vpc_settings = public
initial_queue_size = 0
max_queue_size = 10
placement = cluster
placement_group = DYNAMIC
master_instance_type = g4dn.xlarge
compute_instance_type = p3.2xlarge
cluster_type = ondemand
efs_settings = customfs
*dcv_settings = default*

*[dcv default]
enable = master
*# port = 8443
# access_from = 11.22.33.0/24

[vpc public]
vpc_id = [your_vpc_id]
master_subnet_id = [your_subnet_id]
ssh_from = 11.22.33.0/24

[efs customfs]
shared_dir = efs
efs_fs_id = fs-abc12345

创建集群

要创建集群,请发布 pcluster create命令:

bk:~ bkknorr$ pcluster create hpcblog
Beginning cluster creation for cluster: hpcblog
Creating stack named: parallelcluster-hpcblog
Status: parallelcluster-hpcblog - CREATE_COMPLETE
MasterPublicIP: 34.239.191.193
ClusterUser: centos
MasterPrivateIP: 172.31.81.91

用于创建 ParallelCluster 的示例命令。

您应该在几分钟内获得一个集群和远程桌面。当您的创建命令完成后,您可以连接到桌面会话及运行模拟作业。

连接到 NICE DCV 会话

要连接您的 NICE DCV 会话,只需运行 pcluster dcv connect [cluster] -k [keyname],其中 [cluster] 会指定您给予集群的名称,-k 会指定您的私有密钥位置。当您成功进行身份验证后,您的 NICE DCV 会话将在浏览器中启动,且您的凭证将使用授权令牌安全传递到 NICE DCV 服务器中。

bk:~ bkknorr$ pcluster dcv connect hpcblog -k hpc-key.pem

用于启动 NICE DCV 的示例命令。

使用 NAMD 的作业提交

下面的演示使用 NAMDVMD 运行分子动力学作业,然后可视化输出。此演示使用膜蛋白教程第 3 单元的第一部分,从第 34 页开始。必需的软件和教程文件需要上传到共享文件系统中。

连接到您的 NICE DCV 会话后,启动一个终端并导航至包含教程文件的工作目录中。下面的作业提交示例使用默认的 ParallelCluster 作业计划程序 Sun Grid Engine (sge)。

[centos@ip-172-31-93-180 03-MINEQ]$ qsub -cwd -pe mpi 4 -N kcsa_popcwimineq-01 -o kcsa_popcwimineq-01.log kcsa_popcwimineq-01.job
您的作业 1 ("kcsa_popcwimineq-01") 已提交
正在退出。

分解上面的命令:

  • qsub 提交作业至 Sun Grid Engine (sge)。
  • -cwd 从当前工作目录执行作业。
  • -pe mpi 4 从名为 mpi 的并行环境中请求四个插槽。请求的插槽数量将决定运行作业需要多少个内核。我正在使用的 p3.2xlarge 计算实例有四个内核和八个线程。我已禁用超线程,因此,我只请求四个插槽而不是八个。
  • -N kcsa_popcwimineq-01 [可选] 我正在运行的作业名称。
  • -o kcsa_popcwimineq-01.log [可选l ] 输出日志文件名称。
  • kcsa_popcwimineq-01.job 输入文件名称。

在 NICE DCV 中可视化输出

当您的模拟作业完成后,您可以立即使用 VMD 可视化结果。第一步是下载并安装 VMD

[centos@ip-172-31-93-180 ~]$ cd /efs/vmd-1.9.3/
[centos@ip-172-31-93-180 vmd-1.9.3]$ ./configure
使用 configure.options:LINUXAMD64 OPENGL OPENGLPBUFFER FLTK TK ACTC CUDA IMD LIBSBALL XINERAMA XINPUT LIBOPTIX LIBOSPRAY LIBTACHYON VRPN NETCDF COLVARS TCL PYTHON PTHREADS NUMPY SILENT ICC
[centos@ip-172-31-93-180 vmd-1.9.3]$ cd src/
[centos@ip-172-31-93-180 src]$ sudo make install
确保 /usr/local/bin/vmd 在您的路径中。
VMD 安装完成。尽请使用!
[centos@ip-172-31-93-180 src]$

当 VMD 安装完成后,您便可以从您的终端启动 vmd,以查看您的作业输出。

NICE DCV 在远程会话中运行 VMD。

小结

如本博文所示,AWS ParallelCluster 2.5.0 进一步简化了 HPC 集群的部署和管理过程。利用一个命令便可以预置计算资源和远程可视化,HPC 实践者可以更快地进行迭代和缩短获得见解的时间。