高性能计算集群一期.docx
高性能计算集群(一期)用户使用说明2023年2月1集群基本概况1.1 硬件部分计算节点:64台刀片节点(单节点48核心-志强6336Y2.4GHz),1台GPU节点(单节点48核心-志强6336Y2.4GHz,4张NV-AloO-40G)和1台胖节点:(单节点48核心-志强6336Y2.4GHz,2048GB内存)集群存储:6台OceanStorPacific9550机箱(5U,14TB*120*3.5"z2*64C2.6GHz,4*480GBSSDz8*25GEz512GB内存,DPE80000)。(管理网络10.168.201.X、BMC网段10.168.202.X、高速网络12.12.13.X)集群网络:1IOOGbpsInfiniband高速网络(12.12.12.X网段);1套千兆管理网络(10.168.X.X网段)。登陆节点:1台登陆节点,提供用户登陆、编译软件,提交作业,上传下载数据等功能。管理节点:1台管理节点,安装集群管理软件GridView,包括SIUrm作业管理系统,并提供集群监控功能。1.2 软件部分名称版本操作系统Centos7.6-1810内核3.10.7.x86_64作业管理系统Gridview5.1.0.79221gcc4.8.5java1.8.0_181可用的队列有:序号队列名包含节点单节点CPU核数单节点内存单本地硬盘空间S队列总核数1normalnodel至node6048384GB480GBSSD6028802excludednode61至node6448384GB480GBSSD41923gpunodel8148256GB960GBSSD1484fatnodel84482048GB960GBSSD148说明:可能有序有调整,请以集群系统上的队列信息为准2基本使用2.1 平台登录通过院内网络,使用SSH登陆到集群的登陆节点,SSH登录端口为默认的22端口,IP地址为:Loginl10.168.203.190WindoW可用的SSh软件有:SeCUreShelIClien3Xmanager,putty,git-bash等。Mac和Linux,系统默认安装OPenSSh,可直接使用ssh命令。2.2 数据传输网络传输:通过院内网络,使用登录集群的账号密码,通过SCP或rsync来传输数据。移动硬盘传输:如果数据较大(大于300GB),或者网络传输速度很慢,请联系管理员使用移动硬盘传输。2.3 软件安装系统软件:操作系统默认是完全安装,已安装rpm包3530个。包如有未安装的rpm包,请提醒管理员来安装。用户软件:用户一般可使用两种形式的软件:下载的可执行文件和从源代码安装的软件。下载可执行软件:必须选择与操作系统(CemC)S7.6-1810x86_64glibc-2.17)相匹配的软件版本。如果软件是开放源代码的,可以从源代码编译安装,不太建议下载可执行文件来运行。源代码编译安装:下载源代码,按照软件说明,编译安装软件到用户自己的目录(普通用户有权限安装到自己目录)。标准的C语言软件,一般会有COnfigure,make,makeinstall三个步骤来编译安装。详细内容参考3.1软件安装部分。软件版本:LinUX系统支持安装软件多个版本,调用时可使用绝对路径或者配置环境变量来分别调用。例如系统中会有多个版本的perl,python,gcc,java和数据分析软件等。集群的账号,默认是使用共享存储系统的,集群中所有节点都会挂载相同的目录。在自己目录下的数据和软件,在不同的计算节点上都是可以访问和执行的。2.4 环境设置module环境:集群默认使用module程序管理环境变量。集群安装了一些常用软件、库,通过可使用module命令使用:moduleavailmoduleloadmodulelistmoduleunloadmodulepurge# 查看可用环境变量# XXX加载某环境变量例如:moduleloadcompiler/intel/2021.3.0# 查看己加载环境变量# XXX卸载某环境变量例如:moduleunloadmpi/intelmpi/2021.3.0# 清除所有环境变量普通用户只能通过module命令使用已经安装好的软件。用户环境此外,如果用户自己安装程序,安装完软件后,一般会设置环境变量,比如PATH,LD_LIBRARY_PATH,方便用户的使用。系统的环境变量一般用冒号":”来分割多个路径,系统会按照从左到右的方式搜索环境变量。其中:LD_IJBRARY_PATH中包含了动态库的查找路径;PATH中包含了使用命令的搜索路径,比如PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:$PATH,会从左往右的搜索。假设有多个版本的执行命令,需要把希望使用的软件目录设置在PATH变量的最左边。保存和生效环境变量的永久生效,需要把module命令或用户环境变量保存到特定的文件。普通用户保存环境变量的文件主要是:.bashrc,/.bash_profile,文件中需要用export命令来添加,例如:exportPATH=/home/root/sbin:/home/software/bin:$PATH如果修改了上述文件后,可使用SoUrCe命令来在当前终端生效:source.bashrc0临时生效的环境变量,可在当前终端直接使用export命令来生效。关闭某个环境变量,可使用UnSet命令,例如:unsetPYTHONPATHecho命令可用于查看当前环境变量,例如:echo$PATH($用于引用当前变量的变量值)2.5 作业提交集群使用SIUrm作业管理系统为用户作业分配计算资源,将用户的作业提交到计算节点,执行作业中的命令。作业的提交有脚本提交和交互式提交。建议用户以作业脚本的方式提交作业,如果有临时作业需求,也可以通过交互式提交作业。常用的SlUrm命令有:命令说明sbatch像SLURM调度系统提交作业脚本srun可用来请求一个交互式作.业的资源,或启动MPI软件的多个(MPI)进程scancel取消正在运行或排队的作业squeue查看当前用户提交的作业状态(包括排队,运行,正在退出等状态的任务)sinfo查看当前集群中用户可用节点的总体状态Scontrol查看SlUrm集群的作业、节点、队列等的详细信息sacct查看当前和历史作业的信息,(查询Slurm历史数据库信息)2.5.1 准备脚本首先,用户需要确定作业所需的计算资源(CPU核数、内存大小),查看系统当前可用资源情况(可用命令SinfO,sinfo-s),选定作业提交的队列、节点,准备作业要执行的程序或脚本,设置输出STDoUT、STDERR和结果数据,编辑作业脚本,例如:usernamelogin01$cat sbatch-#!/bin/bash#SBATCH -J bwatest# SBATCH -N 1# SBATCH -p normal#SBATCH -exclusive# SBATCH -n 12# SBATCH -mem 30g# SBATCH -o %x_%j.out# SBATCH -e %x_%j.errmodule purgemodule load compiler/intel/2017.5.239genomefile=somepathtognomefile inputl=/some/path/to/input_Rl. input2=/some/path/to/input_R2.# #SlUrm脚本需要的脚本解析程序(必须*)# #作业的名称:bwatest# #作业申请节点数为:1个计算节点# #作业申请的队列是:normal(必须*)# #作业使用的计算节点为独占,排除其他作业影响# #作业申请的并行作业task数为:12(必须*)# #作业申请节点的内存限制为:30GB# #作业stdout输出文件为:作业名_作业id.out# #作业Stderr输出文件为:作业名_作业id.er# #清空module环境# #请根据程序需要,加载所需要的module环境# #根据作业脚本需求,设置脚本参数和命令bwamem-M-t12$genomefile$inputl$input2Username(S)IoginOl$sbatch的常用参数及说明:参数说明-job-name或-J作业的名称-partition或-P作业申请的队列名称-nodes或-N作业申请的计算节点个数-ntasks或-n作业总的task数量(可以理解为mpi的总进程数)-mem作业每个计算节点申请的内存数量,单位可以是M、G等-gres作业申请资源,可用于申请gpu,例如-gres=gpu:8申请单节点8个gpu卡-time=HH:MM:SS或限制作业的运行时间,默认为分钟,超过限制时间,SlUrm会杀掉作业-exclusive作业申请的节点属性为独占,Slurm不在分配其他作业到同一个计算节点-output=path2dirfilename或-o作业的标准输出StdOUt的输出文件-error=path2dirfilename或-e作业的标准错误stderr的输出文件-nodelist=<nodel.node×>或w设置作业在nodelist描述的节点上运行-exclude=<nodel.nodeY>或-X设置作业不在nodelist描述的节点上运行使用Sinfo查看集群队列信息和节点状态:SinfoOPTIONS.查看队列空闲节点的信息,可使用SinfO-s,该命令输出中的NoDES(A/I/0/T),节点状态信息:节点状态缩写节点状态说明Aallocated节点CPU核心全部被分配,没有空闲可用的核心Iidle节点空闲,没有分配任何作业0other节点下线、或者故障等状态,无法提供计算服务Ttotal某个队列节点的总个数更详细的使用请参考manSinfo帮助文档,或者2.5.2提交作业提交作业脚本:sbatchjobscript说明:I)SbatCh的命令行参数,是可以以#SBATCH作为开头的参数,在作业脚本中设置的,例如SbatCh_中的#SBATCHN1和#SBATCH-n48参数,与SbatCh-N1n48sbatch是一样的,需要注意的是:如果命令行的参数和脚本中的#SBATCH参数有冲突,命令行的参数会覆盖掉作业脚本中的参数。2)建议用户将参数写到作业脚本中,方便后续查看的使用。3)若使用独占参数-e×lusive,在作业计费时是按照节点的全部CPU核心和GPU卡来计费的,请用户知悉。4)详细的参数和使用文档,请参考mansbatch或者。2.5.3交互式作业Slurm作业调度系统可试用SrUn来提交交互式作业:SrUn-P队列名称-N节点数量-n任务数量-gres=gpu:1-ptybash-i执行后,待分配好计算节点后,可以使用hostname查看已经登录到计算节点,用户可执行所需的计算命令。待执行完,可用exit退出计算节点,即可退出交互式作业。2.5.4查看作业用户可以使用squeue命令查看已经提交的作业信息:squeueoptionssqueue常用的参数有:参数说明-jobs=jobid或-jjobid查看作业id为jobid的作业信息(或者以逗号分割的id列表)-name=<nameJist>K-n<namejist>查看作业名称为JobName的作业信息-states=<state-list>-t<state_list>查看作业状态为某类的作业信息,可使用缩写PD、R、CG等-partition=ptname或-Pptname查看队列名称为ptname队列上的作业信息-sort=<sortjist>或-S<sortjist>以sort_list排序来查看作业信息,比如以作业jobid排序-SiSqUeUe作业的输出自选是可以自定义的,可以使用-。(字段缩写)或者-。(字段)参数,常用的有:-。参数-0参数说明%ijobid作业的jobid或者jobstepid%Ppartition作业使用的队列名称%jname作业的名称%uusername作业所属的用户名称%Tstate作业的状态信息%Mtimeused作业己经运行的时间%1timelimit作业的时间限制%Dnumnodes作业申请使用的节点个数%Cnumcpus作业申请使用的CPU核心总数%mminmemory作业申请的min-memory内存大小%Rnodelist排队作业的排队原因,或者运行作业的节点列表如果不希望每次squeue都使用或者0的参数来指定输出,可以使用环境变量SQUEUE.FORMAT(对应o参数)或者SQUEUE_FORMAT2(对应0参数),例如:exportSQUEUE_FORMAT="%.10i%.15P%.IOj%.20u%.8T%.10M%.12l%.5D%.5C%.3H%.3l%.7m%R"#exportSQUEUE_FORMAT2="jobid:12,USemame:18,name:10,PartitiOn:.10,timeused:.12,numnodes:.7,numcpus:.7,nodelist:.25"常见的作业状态有:状态缩写状态信息说明CACANCELLED状态为取消,被用户或者管理员取消CDCOMPLETED状态为完成,退出码为0CFCONFIGURING状态为配置,作业已经被分配了计算资源,等待资源可以被使用CGCOMPLETING状态为正在完成,长时间的CG状态,可能是计算节点存储卡顿NFNODE_FAIL状态为失败,由于某个或某些计算节点故障导致PDPENDING状态为排队,如果reason是priority,是由于前面还有排队作业;如果reason是resource,表明资源不足,资源满足申请时会立即运行RRUNNING状态为运行,作业正在运行中说明:1)为了保护用户的作业信息私密性,集群设置了Slurm的PrivateData参数,普通用户只能查看到自己账号的作业信息。2)更详细的使用请参考mansqueue帮助文档,或者2.5.5取消作业用户使用scancel来取消排队或运行中的作业:scancel-jjobid常用的参数有:参数说明<jobid>取消作业id为jobid的作业-User=Username或-U取消属于IJSemame用户的所有作业(慎用)-name=JobName或-n取消作业名称为JobName的所有作业(慎用)-State=RUNNINGPENDING或-S取消作业状态为运行或者排队的所有作业(慎用)-partition=partition_name或-P取消partition_name队列上的所有作业(慎用)更详细的请参考manscancel帮助文档,或者3使用进阶3.1 软件编译安装3.1.1 普通C程序安装通常LinUX的C语言软件从源代码编译安装需要通过configure,make,makeinstall3个步骤:ICOnfigUre步骤,主要做一些环境变量的设置,检查依赖软件、软件包和版本。普通用户指定安装路径的参数是-prefix=SomePath;查看configure的帮助,使用命令./configure-help,COnfigUre过程完成后,会在当前目录下生成一个MakefiIe文件。configure过程如果有错误输出,大多数是缺少安装一些依赖的软件,请按照软件README中检查和安装需要的软件包、库文件。可以使用rpm-qaIgrepSOFTWARE来检查系统是否已经安装了: 如果已经安装了某个软件或者库,可跟根据configure的文档使用参数来指定,比如:./configure-with-blas=somepath; 某些所需的软件可通过配置环境变量来找到,比如:JAVAJ0ME,LAPACKjJBS,BC)OST_R0。T等 如果环境中所需软件或库文件有多个版本,或者LD_LIBRARY_PATH和CJNCLUDE_PATH环境变量可使用变量在configure命令中指定:./configure-prefix=somepathLDFLAGS=-L/home/software/lib/CPPFLAGS=-Ihomesoftwareinclude2 make过程,是将源代码编译成二进制代码的过程。make过程如果出错,通常是找不到一些头文件或库文件,如果确认依赖的软件包、库文件已经安装,则需要在configure时安装指定路径,或者在MakefiIe里修改一些参数,具体的需要参考其帮助文档。有时,尽管COnfigUre过程不报错,但make时报错,可能是依赖软件版本不兼容的问题,可尝试依赖软件的不同版本。如果需要多任务加速make过程,可使用-j选项来加速;例如:make-j8,启动8个线程同时编译。3 makeinstall过程,是将可运行的二进制程序、头文件、库文件和帮助文档等,copy和install到默认或-PrefiX指定的目录下。makeinstall如果出错,通常是需要安装的路径没有写的权限,用户需要再次确认-PrefiX=/some/Path/中的/some/Path是否有写权限。3.1.2Conda软件安装COnda是个流行的开源版本管理和Python环境工具,支持多种操作系统,并包含了众多的科学计算、数据分析的软件和软件包,可轻松解决软件安装时需要的依赖环境。普通用户在没有管理员权限情况下,可以创建、安装和管理自己软件和虚拟python环境。用户可以根据需求选择anaconda或者miniconda来使用。下面以miniconda为例介绍常用的命令:./Miniconda3-latest-Linux-x86_64.shcondaconfig -set auto_activate_base false conda env listconda env create -n pysot python=3.8#交互式安装,可根据需求设置安装目录#设置默认SSH登录后不激活base环境#查看当前conda已经有的env环境#创建名称为pysot的环境,并安装版本为3.8的pythoncondaenvcreate -f conda activate pysot conda list#或者根据前期导出的yml文件来创建,并安装软件#激活env环境#在激活的env环境中,查看当前环境中已经安装的软件condainstall-c ChanneIName AppName#安装软件,例如:condainstall-cbiocondagatk4condainstall-cChanneINameAppName=Version#指定软件包的版本,例如:condainstall-cpytorchpytorch=1.10.1condaremove-n EnvName SoftwareNameconda remove -n EnvName -allconda deactivate#例如condaremove -n pytorch tzdata#删除某个env环境的所有软件包#退出己经激活的环境3.2 存储使用3.2.1 目录的使用建议建议用户根据自己的喜好,合理整理和安排自己的publichome目录树。对于含有几万个以上文件的目录,不管是LinUX命令还是应用程序的使用,可能会造成较大的文件系统负载,在并行文件系统中,主要是元数据(metadata)服务器的负载。在分布式集群文件系统中,为了保证文件系统的一致性,对文件的访问和修改,都涉及到使用锁来保护。比如,要创建、删除一个文件,会需要对这个文件的父目录加锁(否则,无法处理同时创建了相同文件名的情况),如果同时创建几百个文件,就会引发锁的竞争,导致文件系统吞吐量IoPS急剧下降。如果将这几万个文件在分别放在100个目录中,每个目录几百个文件,就可能会减少这种竞争。因此,建议用户合理使用目录,将大量小文件的目录分成合理的树形结构。比如,有20000个文件在目录DirA中,可以在DirA中在建立100个目录,每个目录下再有200个文件。尽量限制一个目录中的文件个数,比如小于400个。如果为了方便脚本的使用,需要统一存放,可以对着20000个文件做软连接,软连接存放在同一个目录,在某方面可能会比将文件都存放在同一个目录效率高一些。3.2.2 用户之间数据读写用户可以通过设置自己目录的权限,来达到让同组用户访问的目的。比如,设置目录为750,同组用户会有读和执行的权限,设置为770,同组用户会有写目录的权限。请注意,不要将publichome目录下的用户目录的设置为777模式。原因是publichomeUSerA目录下的.ssh目录,关系到账号在平台所有节点中无密码登录。一旦将USerA设置为777,。PenSSh会视为账号不安全,有其他用户会修改authority文件,无法在节点间无密码登录,直接影响用户作业的调度,输出文件的传输。例如,USERA用户要访问同组USERB用户目录下的Data目录,不要把publichomeUSERB目录设置为777,而设置为750,此时USERA用户就可以进入至"home/USERB目录;在对Data目录设置为所需的权限,比如770,USERA就有Data目录的写权限了。3.2.3 存储试用建议如果需要,请华为工程师补充3.3 最佳实践提醒1重中之重,慎重使用删除命令,并及时备份重要文件,以免出现问题造成损失。由于平台存储是共享文件系统,删除文件后,空间和元数据项可能很快被重新分配(尤其在存储空间紧张的情况),理论上找回的可能性不大。2程序选择:如果某类数据分析有多个软件可选,尽量选择由C或C+语言编写的并行版本。3作业脚本中,尽量使用软件绝对路径指明应用软件所在位置。4尽量随时关注作业运行,查看作业运行的进度,以免影响项目进展。5尽量不要在登录节点执行作业任务,以免影响其他用户正常使用。6screen命令:如果用户需要在登录节点长时间保持登录(比如Wget卜.载数据),或者在网络中断后希望可以还原前面登录的会话,可以使用SCreen命令。简单的使用步骤:1)开启SCreen:screen-SName,打开一个名为Name(随便取名)的SeSSiOn。2)如果希望是保留这个SeSSion的退出,使用Ctrl+a+d,保存退出。3)再次回到到这个屏幕,可先screen-Is查看哪些screen被detach了,确定恢复session的PID或Name04)使用SCreen-rPID/Name回到指定的SeSSiono5)如果要退出这个SeSSiOn,在这个SeSSiOn中使用exit退出。另外,如果出现某些错误,无法开启或恢密到原先的SeSSiOn,可以使用screen-wipe来清理故障的SeSSiOn。更多详细信息,请参考SCreen的文档:manscreen.4附录LilnIX常用命令1浏览目录命令IsoptionsdirectoryIs-Ia给出当前目录下所有文件的一个长列表,包括以句点开头的隐藏文件。Is-I*.doc列出当前目录下以字母.doc结尾的所有文件。Is-a显示当前目录所有文件及目录。Is-t将文件依建立时间之先后次序列出。Is-Itrs*列当前目录下任何名称是s开头的文件,愈新的文件排愈后。2切换目录命令切换到用户家目录。切换到目录/tmp。切换到上一层目录切换到系统根目录cddirectorycdcdtmpcd.cd/3浏览文件命令cattextfile显示文本文件内容catetcpasswd显示文本文件passwd中的内容。catImore逐页显示文件中的内容。cat»将的内容附加到文件之后。cata.txtb.txt>将文件a.txt和b.txt合并成文件。moretextfile和lesstextfile逐屏显示文本文件内容head和tail命令用于查看从文件头或文件尾开始的指定数量的行的内容。4目录操作命令pwd显示用户目前所在的工作目录的绝对路径名称。mkdir-pdirectory创建目录mkdirmydir在当前目录下建立mydir目录。mkdir-pone/two/three在当前目录下建立指定的嵌套子目录。rmdir-pdirectory删除目录rmdirmydir删除“空"的子目录mydir。rmdir-pone/two/three删除“空”的嵌套子目录one/two/three。注意:选项“-p”表示可以递归删除多层子目录,但删除的目录须为空目录,且须具有对该目录的写入权限。5文件操作命令cpsourcetarget复制文件cptestltest2cp test3 homebible-将文件testl复制成新文件test2,-将文件test3从当前目录复制到homebible目录中。cp-rdirl(目录)dir2(目录)熨制目录dirl为目录dir2o-r参数表示递归。注意:CP命令默认将覆盖己存在的文件,加-i参数表示覆盖前将与用户交互。mvsourcetarget移动文件,文件改名mvafilebfile将文件afile改名成新文件bfile.mvafiletmp将文件afile从当前目录移动到tmp目录下。mvafile./将文件afile移动到上层目录。mvdirl./将目录dirl移动到上层目录。rmfiles删除文件或目录rmmyfiles删除myfiles文件。rm*一一删除当前目录下的所有未隐藏文件。rm-f*.txt一一强制删除所有以后缀名为txt文件。rm-rfmydir删除目录mydir以及其下的所有内容.rm-Ia*一一删除当前目录下所有以字母a开头的文件,-i选项表示将与用户交互。注意:建议慎重使用rf选项,完全确认要删除的文件后,可以使用。In-ssourcetarget建立链接In-Susrsharedocdoc创建链接文件doc,并指向目录/usr/share/doc。In-safileIinkafile为文件afile创建名为Iinkafile的软链接Inafilebfile为文件afile创建名为bfile的硬链接Inusrsharetesthard创建一个硬链接文件hard,这时对于test文件对应的存储区域来说,又多了一个文件指向它。touchoptionsfilename新建一个文本文件新建一个文本文件或修改文件的存取/修改的时间记录值。touch*一一将当前目录下的文件时间修改为系统的当前时间。touch-dtest将test文件的日期改为2010年1月1日。touchabc若abc文件存在,则修改为系统的当前时间;若不存在,则生成一个为当前时间的空文件。6帮助命令mancommand查看COmmand命令的说明文档manIs查看Is命令的帮助信息command-h或-help,-h,-helpinfocommand查看COmmand命令的说明文档7打包、解包,压缩、解压缩命令taroptionsfilename打包命令。tar命令常用参数:- c:创建一个新tar文件- V:显示运行过程的信息- f:指定文件名- z:调用gzip压缩命令进行压缩或解压- j:调用bzip2压缩命令进行压缩或解压- t:查看压缩文件的内容- X:解开tar文件- P:使用原文件的原来属性(属性不会依据使用者而变)实例:tar-cvf*将所有文件打包成,扩展名.tar需自行加上。tar-zcvf.gz*将所有文件打包并调用gzip命令压缩成为.gz<.tar-tf一一查看文件中包括了哪些文件。tar-×vf将文件解开。tar-zxvf.gz将.gz解压缩。tar-jxvf.bz2将.bz2解压缩。tar-cvftmp/etc将整个/etc目录下的文件全部打包成为tmp<.tar-zcvftmp.gz/etc将整个/etc目录下的文件全部打包并调用用gzip命令压缩成为tmp.gz,tar-z×vpftmp.gz/etc将/etc/内的所有文件备份下来,并且保存其权限。参数-p非常重要,尤其是当需要保留原文件的属性时!8其他常用命令date显示/修改当前的系统时间date一-显示当前系统的时间及日期。date.10将时间更改为12月10日10点23分10秒2009年月日时分年.秒。duoptionsdirectoryorfilename-显示指定的目录或文件所占用的磁盘空间。du-hhomeusername查看USemame用户的目录下己经使用的容量大小。free查看系统内存,虚拟内存(交换空间)的大小占用情况。