高性能计算平台使用指南

Singularity

Singularity 是用来在高性能计算平台管理、运行容器的工具,它允许普通用户可以方便使用容器,并兼容Docker。
获取容器镜像
si search image_name
获取Singularity 镜像
si pull library://library/default/centos:7.6
获取Docker 镜像
si pull docker://ubuntu
运行镜像
si exec /cluster/apps/simg/centos_7.6.sif date
映射host目录
将host 的/data 目录映射到 容器的 /mnt 目录
si exec --bind /data:/mnt centos_7.6.sif ls /mnt

module

module 是linux下的一个用来管理不同环境的软件,每个用户所需要的环境不同,并且需要在软件的不同版本之间切换,modules就可以方便的管理当前用户所处的环境。
显示当前可用的软件清单
module avail
将anaconda3/2019.07 的环境变量路径加入当前用户的环境当中
module load anaconda3/2019.07
查看已装载的软件
module list 
卸载当前的cuda并重新module load其他版本的cuda.
module unload anaconda3/5.3.0
module load anaconda3/2019.07
使用anaconda
anaconda是一个python的数据科学平台,anaconda的特点是拥有大量的科学包和一些依赖项,相对于python不用自行下载相关的包,anaconda支持创建虚拟环境,可以让不同用户在自己的环境下安装和管理包。
加载anaconda
module load anaconda3/2019.07
创建用户自己的环境 tf
conda create -n tf
激活test4 环境并安装软件包
source activate tf
conda install numpy(包名)
查看当前环境里面已安装的包
conda list
退出当前的虚拟环境
source deactivate
查看所有的虚拟环境
conda env list
删除tf这个虚拟环境及其下面的所有包
conda remove -n tf —all
使用调度系统-SLURM
编写作业递交脚本
主要更改以下部分内容
作业名称 -J cae
资源需求 --gres=gpu:1
用户程序脚本
python -u train.py
vim run.sh
#!/bin/bash
#SBATCH -J Jobname
#SBATCH -p gpu
#SBATCH -N 1
#SBATCH --output=log.%j.out
#SBATCH --error=log.%j.err
#SBATCH --mail-type=all
#SBATCH --mail-user=youname@example.com #change to your email address
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:1
ulimit -HSn 1002400
ulimit -s unlimited
ulimit -l unlimited

module load anaconda3/2019.07
source activate tf
python -u train.py
递交作业
sbatch run.sh
交互式作业
>srun -N1 -p gpu --gres=gpu:1 --pty bash
查看当前运行作业
[u2@head1]$ sq
JOBID    NAME  GRES     ST   USER       QOS       GROUP      PARTITION    PRIORITY   NODES TIME    NODELIST(REASON)
151      cae   gpu:1    R    u2         normal        u2         gpu       111036     1     0:36     node1
取消作业
scancel jobid
使用调度系统-PBS
作业脚本 run.sh
vi run.sh
#PBS -N Jobname
#PBS -l nodes=1:ppn=2
#PBS -q batch
#PBS -j oe
echo $PBS_O_WORKDIR
echo $PBS_NODEFILE
NCPUS=`wc -l $PBS_NODEFILE | awk '{print $1}'`
echo $NCPUS

#Run your executable
echo starting
cd $PBS_O_WORKDIR
#mpirun -np $NCPUS -machinefile $PBS_NODEFILE hostname
echo ending
递交作业
    qsub run.sh
查看作业
    qstat -an
取消作业
    qdel JobId
使用调度系统-LSF
作业脚本 run.sh
vi run.sh
#!/bin/bash
#BSUB -J Jobname                  #提交作业名
#BSUB -n 20                             #指定使用的核数
#BSUB -R "span[ptile=20]“       #代表单个节点跑20核
#BSUB -o output_%J                 #结果输出文件
#BSUB -e errput_%J                 #错误输出文件
#BSUB -q fatB             #指定提交的队列

module load anaconda3/2020.02
source activate r-3.6
Your script
递交作业
    bsub < run.sh
查看作业
    bjobs
取消作业
    bkill JobId

使用tmux
tmux 主要是用来维持远程shell 窗口不因为退出而终止,类似的有screen
查看当前窗口
>tmux ls
创建 tmux windows
>tmux
Attach tmux windows
>tmux a
FAQ
Python 实时输出log
python -u



SimpleHPC 微信公众号