此处略去用户苦求历程,假定你照旧领有了超算中心用户。好了,运行吧!工欲善其事,必先利其器。率先咱们需要无意纠合到超算中心贪图机的器具。Putty:优点:开源,免费。 下载地址FileZilla:用于文献传输。优点:开源,免费。下载地址Xmanager:生意软件,功能宏大,带图形处事(X Server),整合文献传输。官方地址初学教程将以Putty和FileZilla为例进行教授。接下来咱们就用Putty来纠合到超算中心处事器(节点称号会因系统辖疗而有所不同,使用步调不变少妇空姐,后同):大开Putty:修复纠合:禁受处事器公钥(hostkey,初度使用需要):
按次输入用户名和密码(戒备:密码输入时,不会败露任何字符):
登录顺利后界面:
要是出现上头界面,那么恭喜你照旧顺利纠合到超算中心处事器。接下来,咱们来运行一些基本的Linux大叫:
讲明:
[simon@n0255 ~] #大叫教唆符,simon 默示你的用户名,n0255 默示刻下登录的节点的名字[simon@n0255 ~]$ pwd #败露刻下旅途/home/simon #/home/用户名 即为你的home目次[simon@n0255 ~]$ ls -l #列出刻下目次的整个文献及子目次total 0lrwxrwxrwx 1 simon simon 11 Apr 11 22:50 data -> /data/simon #/data/用户名 为你的数据目次,在home目次中会有一个流畅指向该目次。该目次用于存放你的数据文献[simon@n0255 ~]$ cd data #干与data目次(其实是干与到/data/simon目次)[simon@n0255 data]$ ls -l #列出刻下目次的整个文献及子目次total 4-rw-rw-r-- 1 simon simon 171 Apr 13 00:22 HelloWorld.c[simon@n0255 data]$ cd .. #复返到表层目次[simon@n0255 ~]$ [simon@n0255 ~]$
恩,很好。咱们顺利地运行了一些系统系统大叫,接下来咱们将编写我方的本事并运行。好吧,照旧以经典的 Hello World C本事脱手。在大叫教唆符下输入:vim HelloWorld.c
[simon@n0255 ~]$vim HelloWorld.c
讲明:vim 为Linux下常用的裁剪器,HelloWorld.c为文献名,要是刻下目次下不存在该文献,则新建并裁剪,要是存在,大开并裁剪。按下 i 键干与插入形式:
输入以下内容:
#include <stdio.h>int main(){printf("Hello world!\n");return(0);}
输入完成后按下 Esc 键 退出插入形式,然后输入 :wq 写入并退出。此时,输入ls,应该能看到刚刚修复的文献:
[simon@n0255 ~]$ lsdata HelloWorld.c
接下来,咱们要调用系统的编译器来将咱们刚才修复的HelloWorld.c源本事编译成可扩充文献:
[simon@n0255 ~]$ gcc HelloWorld.c[simon@n0255 ~]$ lsa.out data HelloWorld.c
讲明:gcc 即为系统的C编译器(也不错使用Intel的 icc编译器),背面接你的源本事。使用 ls 列出刻下目次内容 不错看到生成了名为a.out的本事。是的,就这样简便,你的可扩充的本事就这样产生了。接下来,咱们扩充 a.out 稽查下效果:
[simon@n0255 ~]$ ./a.outHello world![simon@n0255 ~]$
讲明:./a.out 中. 代表刻下目次。Hello world! 即为本事的输出了。恩,本事能运行了,望望还有什么问题?好吧,我来告诉你:面前你运行的这个本事是在你刻下登录的这个节点,也便是n0255上运行的,这个节点也就一个平凡的处事器,领有16个CPU核,要是是运行许多个像咱们这样的HelloWorld的本事照旧莫得啥问题的,然则要是你的一个本事运行需要很长的运行时分,那么16核的CPU就不够用了。绝顶是这个登录节点同期还有其他用户登录同期使用的,是以 n0255这个节点是阻挠运行大王人的、永劫分占用CPU时分的本事的 。此时咱们就需要使用调理系统(SLURM),将咱们的本事投放到其它的节点上来运行。好,说作念就作念:
[simon@n0255 ~]$ srun -p hpxg ./a.outHello world![simon@n0255 ~]$
相通很简便吧,srun为咱们提交本事,用于把咱们本事提交到整个这个词集群系统的节点上去运行的。-p 用于指定分区,hpxg为分区名,咱们的集群阐明底层齐集纠合类型分红了hpxg(万兆齐集互连,面前照旧升级为Infiniband齐集互连)、hpib(Infiniband齐集互连)、debug(调试用途分区)分区。使用sinfo大叫,咱们稽查各个分区的情况:
咱们接着说 srun 的事,从之前运行的情况来看,输出 Hello World!好像径直在n0255登录节点输出没啥两样,面前咱们将本事略微修改下,就不错看出运行的不同了:
[simon@n0255 ~]$vim HelloWorld.c
按 i 干与插入形式,输入:
#include <stdio.h>#include <stdlib.h>int main(){char hostname[1024];gethostname(hostname,1024);printf("%s:",hostname);printf("Hello world!\n");return(0);}
讲明:上述本事改造的作用便是在输出Hello World!之前取得主机名并输出。按 Esc 退出插入形式,然后按 :wq 保存并退出。
[simon@n0255 ~]$ gcc HelloWorld.c[simon@n0255 ~]$ ./a.outn0255:Hello world!
不错看出,径直运行的本事前边有了 n0255 的主机名了。接下来,咱们使用 srun来进行提交望望:
重庆高校在线开放课程平台[simon@n0255 ~]$ srun -p hpxg ./a.outn0242:Hello world![simon@n0255 ~]$
由此不错看出,咱们这个Hello World!应该是在节点n0242上运行了。接下来,咱们不时修改一下源本事,用来模拟长少量时分(100s)的本事:
#include <stdio.h>#include <stdlib.h>int main(){char hostname[1024];sleep(100);gethostname(hostname,1024);printf("%s:",hostname);printf("Hello world!\n");return(0);}
上头本事前sleep了100s,然后才有输出。vim HelloWorld.c,然后 gcc 编译,再行生成 a.out,并运行:
不错看出,本事运行莫得复返到大叫行,处于恭候输入或输出的状况。是以以 srun 提交的本事处于处于交互形式下。一般只消在本事运行后需要用户东谈主工判断进行输入时才使用交互形式。处于交互形式下运行的本事被东谈主工退出(如Ctrl+c、末端关闭等)或因登录节点故障退出时,本事运行节点的本事也会退出。当咱们程度不需要东谈主工烦闷时,咱们不错使用sbatch大叫来进行任务的提交,这样无论是末端退出或登录节点故障王人不会影响到咱们本体运行的本事。要使用sbatch提交本事,咱们只需要写一个很简便的剧本:
[simon@n0255 ~]$ vim a.sbatch
新建一个a.sbatch(名字或后缀不错粗率取)输入以下内容:
#!/bin/bash./a.out
保存退出,然后给这个剧本加上可扩充的权限:
[simon@n0255 ~]$ chmod +x a.sbatch
接着使用 sbatch 提交:
[simon@n0255 ~]$ sbatch -p hpxg a.sbatchSubmitted batch job 2653283[simon@n0255 ~]$
不错看到,提交会复返了一个job的ID(2653283),之后便又回到了大叫教唆符的状况。接下来,咱们便不错使用 squeue 来稽查咱们照旧提交了的功课的信息:
squeue的输出咱们不错看出咱们提交的任务的ID(JOBID),运行场所的分区(PARTITION),任务的称号(NAME),运行的用户(USER),任务状况(ST,R默示正在运行),运行了的时分(TIME),使用了多个节点(NODES)以及使用了的节点的列表(NODELIST)。任务运行完之后,要是需要稽查咱们本事的输出情况,默许会在提交任务的目次产生 slurm-jobid.out的文献,整个任务运行的诞妄照旧规范输出会重定向至此文献中。squeue 只可稽查正在运行的任务。要是念念稽查照旧罢休的任务历史,不错使用 sacct大叫:
接下来,咱们来先容一下使用filezilla 上传或下载文献到超算。大开filezilla:
通过依稀或者右键菜单中可将文献或文献夹进行上传和下载少妇空姐。