工作站使用方法登录到工作站你需要一个账号才能登录到工作站。如何登录 提交前准备在你准备提交任务之前,你需要额外进行如下的工作。 将本地文件上传至服务器你需要将任务的源码以及所需的输入文件上传至服务器,通常情况下,由于系统环境不同,服务器不能直接运行从本地上传的可执行文件,因此编译的工作必须在服务器上重新执行一次。
复制文件(将本地文件复制到你的Home文件夹下,需要输入你的登录密码,username为用户名。) $ scp 本地文件 username@ip_address:/public/home/username 复制文件(将服务器文件复制到你当前计算机的当前目录下,需要输入你的登录密码,username为用户名。) $ scp username@ip_address:/public/home/username/远程文件 . 复制文件夹(将本地文件夹复制到你的Home文件夹下,需要输入你的登录密码,username为用户名。) $ scp -r 本地文件夹 username@ip_address:/public/home/username/ 复制文件夹(将服务器文件夹复制到你当前计算机的当前目录下,需要输入你的登录密码,username为用户名。) $ scp -r username@ip_address:/public/home/username/远程文件夹 . 如果不想使用 scp 命令,可以利用 sshfs 将服务器的 home 目录挂载到本地。这并不会消耗你本地的存储空间。 首先,使用如下命令安装 sshfs 应用 $ sudo apt-get install sshfs 其中 apt-get 是 ubuntu/debian 的安装包管理器,如果你在使用其它 linux 发行版,请使用相应的安装包管理器进行安装。 安装完毕后,在你喜欢的本地目录下建立挂载点,为了方便,可以选择个人的本地 home 文件夹。 $ mkdir workstation 其中workstation为挂载点的名称,可以随意填写。 最后,将服务器端的 home 文件夹挂载到本地 $ sshfs username@ip_address:/public/home/username/ workstation 其中username为你用户名,ip_address为服务器的地址。上面命令的最后一个 workstation 表示将服务器文件夹挂载到刚创建的挂载点 workstation 上。使用时请将其替换成你实际创建挂载点的路径。 挂载成功后,你可以从挂载点处(在本说明中为个人 home 文件夹下的 workstation 目录)直接访问你的服务器远端的目录,非常方便。 当你不需要使用服务器文件时,需要将服务器挂载目录卸载。命令为 $ fusermount -u workstation 其中 workstation 为你事先创建好的挂载点。
配置运行环境将源码编译成可执行文件使用C/C++等语言编写的程序时,需要在服务器上对源码进行编译,尽量不要在本地编译,否则你的程序可能因为库版本不一致而导致无法运行。目前管理员正在编写可简单编译 C 程序的脚本。 指定 gcc 编译环境 服务器安装了多个 gcc 编译工具的版本,在使用 gcc 编译工具时需要配置 gcc 的编译环境。 使用 $ module avail 可以列出所有可用的运行环境模块。执行此语句之后可以看到服务器中的所有 gcc 版本。 从服务器中已有的 gcc 版本中,选择你需要的版本作为你的编译器。例如,更改当前 gcc 版本为 4.8.5 $ module add gcc/4.8.5 有关配置服务器运行环境的详细说明,请参考这里。 使用Intel MKL 使用Intel MKL进行计算时,需要使用gcc/g++编译工具,并将MKL链接到你的目标文件上。 编译所需的命令行较为复杂,推荐使用Intel® Math Kernel Library Link Line Advisor来指导编译和链接。 MKL Link Line Advisor 工具需要用户指定选项才可正确完成链接命令的生成。各个选项的含义如下:
按照如上设置完毕后,即可在下方的输出中看到链接选项和编译选项。直接复制到 Makefile 中即可。 注意:使用matlab,python则只需要上传脚本,并指定运行环境即可,不需要编译。 查看可用资源与计算节点状态在提交任务之前,务必检查一下各个节点的状态,例如资源是否充足,当前有多少正在执行的任务等。 使用 $ pbsnodes -a 命令可以显示所有计算节点的状态,如下图。状态为free时计算机空闲。 提交任务你需要编写一个PBS脚本来完成任务提交的设置。PBS脚本可以在本地编写后上传,也可以直接在工作站服务器上编辑。如何编辑 编写PBS脚本一个PBS脚本的模板如下 #!/bin/sh #PBS -N <作业名> #PBS -a <作业开始运行时间> #PBS -l walltime=hh:mm:ss 作业最长运行时间 #PBS -l nodes=X:ppn=Y 在 X 个节点上申请 Y 个 CPU 核心 #PBS -l mem=XXmb 申请最大内存为 XX MB #PBS -q <队列名> #PBS -o <标准输出流文件路径> #PBS -e <标准错误流输出路径> # 在输入表示计算任务的命令之前,需要强制设置当前的工作路径 cd $PBS_O_WORKDIR # 设置运行环境 # 输入要执行的Shell脚本 其中,第一行是固定的,表示使用/bin/sh来执行脚本。其余的说明如下
以上的所有#PBS属性均可以不设置,当缺少某属性时,系统将使用默认值。 请在使用时估计自己任务的开销,适量申请计算资源,避免造成资源的浪费。
此外,由于我们的计算资源较少,因此我们对每个用户使用的总计算资源也有限制。
一个PBS脚本的例子 #!/bin/sh #PBS -N test #PBS -q debug #PBS -l nodes=1:ppn=1 cd $PBS_O_WORKDIR module add gcc/4.8.5 ./hello 该脚本任务名为 test,加入到 debug 队列中,申请 1 个节点上的一个 CPU 核心,任务内容为运行指定目录下的 hello 程序。此程序的运行环境为 gcc/4.8.5。 使用 MEX 文件Linux用户可直接将生成的 mexa64 文件上传至服务器,Windows/Mac用户则需要在服务器上编译 mex 文件。在Windows/Mac系统下生成的 mex 文件无法在 Linux 系统下使用。不过,仍然推荐 Linux 用户在服务器上重新编译 mex 文件。 注:以下操作实例仅适用于 MATLAB R2015b 或更低的版本 首先,需要将/public/examples/MATLAB文件夹下的 mexopts.sh 文件复制到个人的工作目录下。 $ cp /public/examples/MATLAB/mexopts.sh workdir 执行命令matn,进入matlab命令行模式。在matlab命令行下,输入 >> mex src.cpp 常见的计算软件/软件库的启动命令以下列出服务器中常见的软件启动命令,可以作为手动编写 PBS 脚本的参考,也可以作为交互式计算的使用参考。 以命令行模式运行 MATLAB $ matn 使用 MATLAB 运行 m 脚本 $ matbg <脚本名(不带.m后缀)> <输出文件名> 在以上命令中将‘matbg’替换为‘matbg-jvm’可以开启 MATLAB 的 jvm,此功能用于作图。 使用 R 运行 R 脚本 Rscript <脚本名> 使用 python 并载入 tensorflow 库 $ module add gcc/4.8.5 $ LD_PRELOAD=/lib64/librt-2.12.so python <脚本名> 第一行的目的是载入 gcc-4.8.5 环境,因为 tensorflow 必须在 C++11 环境下运行,实际使用时也可以替换成更高版本的 gcc。第二行是指定 python 运行的预先载入库,这个库同样也是 tensorflow 需要的。 提交任务将PBS脚本编写完毕并上传工作站后(或直接在工作站编辑),进入PBS脚本的目录,使用 $ qsub <PBS脚本文件名> 即可提交任务。 提交 MATLAB 任务注:此命令近期的用法会有调整 你可以手动编写PBS脚本,然后使用qsub命令手动提交 matlab 任务,但是我们推荐使用如下的脚本命令直接提交 matlab 任务。无需编写PBS脚本和手动调用qsub,此脚本会自动帮你完成,为此,你只需要准备你的 matlab 脚本(M文件)。 $ matpbs.py [-j][-c <使用 CPU 数>][-t <脚本运行时间>][-o <输出文件名>] -f <脚本名称(不带.m后缀)> 此命令的详细用法如下:
一个例子(使用 jvm 功能,申请 12 个 CPU 核心和 2 小时的运行时间,脚本名为 test.m): $ matpbs.py -j -c 12 -t 2:00:00 -f test 程序执行完毕后,产生的标准输出在名为PBS_MATLAB_<提交任务时间>_<脚本名(不带.m后缀)>的文件夹中。 注意:m 脚本文件必须在当前目录中。 提交 R 任务注:此命令近期的用法会有调整 你可以手动编写PBS脚本,然后使用qsub命令手动提交 R 任务,但是我们推荐使用如下的脚本命令直接提交 R 任务。无需编写PBS脚本和手动调用qsub,此脚本会自动帮你完成,为此,你只需要准备你的 R 脚本(R文件)。 $ Rpbs.py [-c <使用 CPU 数>][-t <脚本运行时间>][-o <输出文件名>] -f <脚本名称(带.R后缀)> 此命令的详细用法如下:
一个例子(申请 12 个 CPU 核心和 2 小时的运行时间,脚本名为 test.R): $ Rpbs.py -c 12 -t 2:00:00 -f test.R 程序执行完毕后,产生的标准输出在名为PBS_R_<提交任务时间>_<脚本名(不带.R后缀)>的文件夹中。 注意:R 脚本文件必须在当前目录中。 查看任务状态使用qsub命令之后,如果出现如下图的提示 则说明提交成功,左边的数字表示任务的ID,右边表示提交的节点,目前所有用户都只能在admin节点上提交任务。 使用 $ qstat 可以查看当前所有任务的运行状态。 其中,第五列(指标为S)表示运行的状态。R:运行中;C:已完成;H:被挂起;Q:排队中 使用 $ pestat 可以查看当前所有节点的占用状态。 删除任务 $ qdel <任务ID> 注意:用户只能删除自己的作业,不能删除别人的作业。 挂起任务 $ qhold <任务ID.节点> 取消任务挂起 $ qrls <任务ID.节点> 如果忘记作业ID可以使用qstat命令查看。 输出文件计算时,标准输出流和标准错误流被重定向到文件,因此控制台中不再显示这些输出。当程序结束时,系统默认会将标准输出文件和标准错误文件复制到调用qsub的目录下。如果在PBS脚本中使用了 -o /-e 选项,则这些文件会被复制到用户所指定的目录下。 文件命名规则:
如果使用matlab脚本,则标准输出流和标准错误流也会被定向到matbg命令所指定的文件中。 其它功能用户可以使用工作站的一些其它功能。 交互式计算使用命令(代码中申请资源数前面的选项为小写的‘L’) $ qsub -I -l <申请资源数> 即可进入交互式计算模式。该模式下,用户将会被自动切换到一个计算节点,此后所有的计算都在这个节点上进行。使用时需要指定申请的资源数,格式为nodes=X:ppn=Y,资源数不能超过剩余资源的最大值。在此节点上计算无需编写PBS脚本,直接执行Shell命令即可。此模式大多用于计算任务需要计时或者实时调试的情况。如果你熟悉UNIX系统,那么这个模式的使用方法和你单独在PC上计算几乎没有区别。在此模式下,不要使用qsub命令提交任务,因此在登出之前,确保你的任务都已经执行完毕。 使用完毕后,请执行 $ exit 命令可以结束该次交互式任务,此命令也用于登出工作站。 注1:交互式模式只能提交到 debug 队列中,因此最大单次占用时间为 3 小时。 VIM 编辑器为了编写脚本方便,可以直接使用服务器系统的 VIM 编辑器进行对脚本的编辑。 使用 $ vim <文件名> 可以新建或者打开已有的文本文件。 VIM 编辑器一共有两个主要的编辑模式:普通模式和插入模式。进入 VIM 编辑器后,编辑器处于普通模式。 在普通模式下,VIM编辑器会将按键解释成命令。
在插入模式下,即可插入文本到光标的位置。按下Esc键即可返回普通模式。 常见问题Q:登录服务器时,输入密码时终端无反应。 Q:在服务器运行编译好的 C 程序或者 MEX 文件时,会报告‘GLIBC version 2.14 not found’的错误。 Q:提交任务时,任务显示在‘Q’(排队)状态,但是有空闲的计算资源存在。 Q:我如何才能保存计算过程中控制台中输出的结果? ./test > out.txt 如果使用 matpbs.py 提交任务,则只需要指定 -o 选项即可。 附录工作站总资源数以下参数未加说明均表示每台节点的资源。
已经安装的软件/运行环境
联系管理员如果有疑问,请联系工作站管理员。
|