|
|
发表于 2022-9-11 21:05:03
|
查看: 1413 |
回复: 0
本文目录连接天河二号天河二号运行环境天河二号运行程序天河二号超级计算机于2013年在国家超算广州中心已正式投入运行,委托中山大学管理,目前是中国超算能力排名第二、全球排名前十的超级计算机。天河二号价格大约是0.1元/小时/cpu,费用不算高。# W6 }5 }# D4 ]9 V8 J
本文简要介绍天河二号的使用步骤,包括连接到超级计算机、运行并行程序等。内容主要参考天河二号官方下方的文档,如遇到请问,请查看官方文档或联系工作人员。2 a- u3 g5 B, @7 y9 L( Y$ p
准备工作:联系天河二号工作人员,填写申请表,审核通过后获得账号、密码、登录密钥和使用说明手册。
5 ?( F O2 U- y8 A6 [ 连接天河二号返回目录连接天河二号机器前,需先登录VPN。如果未安装VPN,先进入网页https://vpn3.nscc-gz.cn:4433下载Windows客户端,然后安装并运行程序。在出现的登录界面中填入以下信息:
# L/ k6 J6 Q9 U0 ]: ?+ D5 Z: M服务器:vpn1.nscc-gz.cn
! c" m$ V% y% R- n: E/ N; E端口: 4433' @: `9 ~& d4 q' l7 n7 C5 y2 U0 H
账号: 账号
; }$ ^& w& E/ Y* K! u* i ^密码: 密码( M/ Y% M* u: N$ {; T7 Z7 G# S
如果信息无误,点解登录后VPN客户端会最小化到右下角托盘并显示绿色图标。
3 M6 G, N, X1 w9 n. \登录VPN后,才可以用SSH方式连接到天河二号的登录节点。登录节点默认的认证方式是免密私钥认证,需提供开设账号时分发的私钥作为凭证。使用OpenSSH客户端连接的示例为:& D3 {# g6 T. S; H) a& K
chmod 600 private_key && ssh -i private_key username@172.16.22.11
& ?. T5 _" o2 U% _, X1 ^private_key在windows下默认为755权限,OpenSSH会拒绝使用安全性低的私钥,chmod保证读写权限均为私有。# V' z8 B0 _ O& b# e
天河二号运行环境返回目录通过一些命令可以探测到天河登录系统的运行环境。8 `/ G0 b D: M1 E* S1 P
uname -a: 系统的内核版本是2.6.32cat /proc/cpuinfo: 登录节点使用了intel芯片,含4个物理CPU,每个CPU8核心16线程free -g: 登录节点配备了128G内存df -h: 大约5P的硬盘存储gcc -v: gcc版本为4.4.7icc -v: 系统默认的icc版本为14.0.2,其他版本需使用module命令加载mpicc -v: mpi版本为3.1.3,使用icc 14.0.2编译make -v: make版本为3.81cat /etc/hosts|grep ln: 系统有几十个登录节点,这也解释为了登录的时候会经常提示指纹不匹配module avail: 系统支持模块,高版本的GCC/CUDA/FFT等均可以模块方式加载,无需自行编译ping cn.bing.com/ping 114.114.114.114: 提示找不到主机,表明机器无法访问外网通过查看yhinfo等命令的帮助,可以看到任务管理系统使用的是slurm。把slurm命令中的s替换成yh,则是yh系列的各个命令。: A3 Z) S3 k$ `3 _+ o- {
计算节点无法登录,可以通过yhrun执行程序探测。以下是一些计算节点的信息:
: S- I' F. H6 R3 Q0 P$ E( k0 T# WCPU: Xeon(R) CPU E5-2692 v2 @ 2.20GHz(未启用超线程) 内存: 64G 操作系统:天河自编译的Linux系统,内核版本2.6.32- p% L8 ?/ b" ~5 I' K
天河二号运行程序返回目录按照官方指南,程序的源码和编译可在主目录下,运行时的存储应放置在BIGDATA目录中。程序运行的命令主要是yhrun和yhbatch,yhrun是交互式提交作业,yhbatch是批量提交作业。实际使用中建议用yhbatch提交作业。
+ x! A3 {+ n/ ~& Gyhinfo/yhi通过yhinfo或者yhi可查看用户可用的节点状态。命令的输出中,需要关注的是PARTITION和STATE两列。PARTITION指示任务可提交到的分区,在yhrun中会使用;STATE表示节点状态,只有idle的节点才是可直接使用的。
+ G& y2 x( E+ j要查看所有分区/队列信息,可加上-a选项。" M3 |4 ], f1 l
yhrunyhrun用来交互式提交作业。基本用法是: yhrun [options] program [program-options]。options中,常见指定如下选项:
4 V N% B" }* f6 W+ K-n: 任务数。在MPI作业中,即进程数-p: 任务运行分区。可用分区通过yhi命令查看-N: 节点数。希望作业运行在几个节点上-c: 任务使用的核心数。该值默认为1,非openMP程序一般用不到,指定了也不影响运行。天河二号的每个计算节点配置24核,并且是独占式的。这意味着节点在同一时间只能被一个用户所使用,为了节省结算计时,尽量让N=[n/24],或者不指定-N参数。+ p8 S" [# z: {( A& u4 g
yhrun可以替代mpirun使用,而不是简单的在各个主机上执行相同程序。例如在多个进程上运行非MPI程序:yhrun -n20 -p free hostname,结果将返回进程所在节点的主机名,结果类似于pssh执行同一条命令。通过yhrun运行的程序能否让MPI程序的各个进程正常进行通信和交互,刚开始尚有疑惑。
5 J& v4 ]3 }, S" {为了检测yhrun和mpirun有相同效果,写了一个小demo进行校验。以下的测试代码:
2 \4 X+ [: p6 p#include "mpi.h"" D4 m* K, N1 R. S' X' r2 c' ]
#include
% B7 Q0 r. d* s" I# ^ Yint main(int argc, char **argv)- \" x, K' P7 N) t6 ^+ z$ c5 c1 Z4 C
{! ~% N9 M0 r& U1 E
int rank, size, namelen; X, A0 d" `2 m2 R/ J4 C6 D+ @
char name[1024];
0 C5 U3 w X! P$ b- s5 U. F MPI_Init(&argc, &argv);
: m5 Y. X! s: x8 G4 x MPI_Comm_rank(MPI_COMM_WORLD, &rank);
2 U7 K: X9 {' ?. p J MPI_Comm_size(MPI_COMM_WORLD, &size);
" [$ l7 i' g, D) a+ i MPI_Get_processor_name(name, &namelen);
4 ]! z: }0 F. j6 ~ printf("Hello world! I'm %s(%d) of %d\n", name, rank, size);
& E# z- d' s: h2 ?, u MPI_Finalize();% e: ]* g# H/ ^
return 0;
- _5 A' b8 p4 f4 k6 \/ W1 ^}1 T q8 Q8 w* y$ b
编译和运行:7 s7 o' D2 v. P. O( }/ s$ E+ v$ k
mpicc -o foo -O2 demo.cpp2 T1 `$ y. t& ~+ n2 s
yhrun -n20 -p free ./foo: m/ h& v: S& f4 Z/ j$ Y
从结果上看,yhrun的执行效果和mpirun一致,说明yhrun确实可以替代mpirun执行有通信的多进程程序。+ X0 x; f! A1 N: U0 L3 q
yhbatchmpirun是交互式的提交作业,这意味着会一直占据终端,直到程序开始计算并将结果返回回会释放终端。大部分的程序运行时间周期都较长,在等待期间,如果用yhrun,用户只能等待结果或另开连接,否则无法进行其他操作。实际使用中,应使用yhbatch提交作业,yhrun执行具体任务。作业系统在yhbatch提交时申请的资源满足后,调度执行任务并将结果存放到用户的目录下。
9 D) l& Q3 a+ kyhbatch命令选项和mpirun命令相差不大,猜测的主要不同是yhbatch是向调度中心进行资源申请,只有满足这些条件才运行用户的程序,否则继续等待。/ Q0 f7 K+ y$ y+ X
使用yhbatch首先建立一个脚本文件,里面放入程序执行命令:
# o* _! V) a) p3 ^' Z- l#!/bin/bash- f2 ]! c$ I. i3 K5 o. c; f+ \. t/ b
yhrun -n10 -p free ~/foo6 M* F' n: x4 n: c
然后使用yhbatch提交:chmod u+x ./batch.sh; yhbatch -n10 -pfree ./batch.sh。yhbatch中的-N等参数应该不小于yhrun中的参数,否则运行时的进程数和节点可能并非所想,甚至出现资源错误提示。, f& g5 [* Z; y1 k
yhqueue/yhqyhbatch提交作业后,使用yhqueue/yhq可查看正在运行的任务状况。
$ ?) G7 O8 M7 x9 m% wyhcancal提交到任务队列后,yhq可查看提交或者正在运行的任务id。如果想终止任务,使用yhcancel。& D; Z* C5 e7 z' n& h$ K
其他事项,请参考官方说明手册。9 |. e5 g8 h) F% I& [. Y$ U
AD:【国外VPS推荐】 Vultr全球16个数据中心,高速SSD硬盘,月付2.5$起,注册充10$送100$打赏赞(9) |
|