即用的云超算服务器怎么使用?

一. 创建一个仅能个人访问的文件夹
我们为何要创建一个这样的文件夹:
- 数据安全保证,除去管理员权限以外,任何其他用户都无权访问我个人的文件夹
- 计算进程需要在云端进行,要使用云端计算资源,文档必须上云
如果有更高的安全需求,比如实现从端到端的加密,请使用严格的加密处理
以下命令可以找到我们现在的位置
$ pwd# 比如我的账号# 输出:/home/u23301020039按照学校的要求,要在/share子目录下创建我们自己的文件夹;我们一并确定操作权限
注意:/share的绝对路径是 /home/u23301020039/share
操作权限解释:
- 读 = 4,写 = 2,执行 = 1,每个用户的权限就是可用的权限的加和
- 三个数字分别是:文件所有者,文件所有者组,所有用户
$ mkdir share/MBW # 这不是绝对路径!!!$ ckmod 700 share/MBW如此,我们建立的文件夹就是一个仅我个人可读可写可执行的目录,其他人没有任何权限(除了管理员权限和无法防御的外界攻击)
如果课题组需要共同在一个目录下协作,那么需要向管理员申请创建一个group,把相关人员写入其中,这时可以将权限设置为770,以满足课题组协作需求 因为不允许user直接创建组...,组只能使用管理员权限创建
二. 上传文件到我的文件夹中
打开云超算平台 - 数据,找到我们刚刚创建的文件夹,点击上传,然后把我们的数据/代码拖进去,就成功上传啦!
注意:计算完成之后,可以将不需要的文件删除,一方面节约云平台的内存,另一方面也是保证原始数据的安全。
这里我们上传一个py文件test.py和一个R文件test.R
三. 执行文件(普通版)
首先设置好我们的工作目录,然后使用命令工具;
需要注意的是,代码和数据的路径一定要正确,从local直接上传可能没法直接运行
实用小建议1:local打包为文件之后一齐上传,数据只要原始数据,避免一次占用过多空间,这样工作目录指定只需要查找修改前缀即可(比如在local工作目录文件夹名称之前统一加上"share/MBW")
实用小建议2:强烈推荐!!!把很长的代码文件分块,使用什么部分就运行什么部分,不要一次使用过多计算资源,节约时间且简单(也可以指定运行的行数
$ cd share/MBW# 1. 在终端直接使用Rscript命令$ Rscript test.R#输出:[1] "hello world"# 2. 进入到R的交互环境$ Rsource("test.R")# 同样输出:[1] "hello world"# 指定运行的行数 需要在后台打开文件对照!# 这里是执行test_line.R的1,3,4行和5~7行$ sed -n -e '1p' -e '3p' -e '4p' -e '5,7p' test_line.R | Rscript -以上的用法都需要终端存续期间完成,不能在后台运行!!! 但是云超算平台的终端使用很容易超时断开连接,不太建议使用这些方法
四. 执行文件(slurm版)
srun在终端进行,sbatch可以在终端关闭时继续进行,推荐slurm
# 首先查看服务器的可用分区和节点状态$ sinfo# 输出:# PARTITION AVAIL TIMELIMIT NODES STATE NODELIST# interactive* up 6:00:00 1 drng cpu7# interactive* up 6:00:00 1 drain cpu16# interactive* up 6:00:00 14 mix cpu[1,4-6,8-11,13,15,17-20]# interactive* up 6:00:00 3 alloc cpu[2-3,12]# interactive* up 6:00:00 1 idle cpu14# dna up 5-00:00:00 8 mix cpu[1,4,9-11,13,15,22]# dna up 5-00:00:00 4 alloc cpu[2-3,12,21]# dna up 5-00:00:00 1 idle cpu14# rna up 10-00:00:0 1 drng cpu7# rna up 10-00:00:0 1 drain cpu16# rna up 10-00:00:0 11 mix cpu[5-6,8,10-11,13,15,17-20]# rna up 10-00:00:0 1 alloc cpu12# rna up 10-00:00:0 1 idle cpu14# protein up 15-00:00:0 1 drain cpu16# protein up 15-00:00:0 5 mix cpu[15,17-20]# cell up 5-00:00:00 1 mix fat1# organ up 5-00:00:00 1 drain* gpu2# organ up 5-00:00:00 2 mix gpu[1,3]# organ up 5-00:00:00 2 idle gpu[4-5]# body up 10-00:00:0 1 drain* gpu2# body up 10-00:00:0 2 mix gpu[1,3]# body up 10-00:00:0 2 idle gpu[4-5]check计算资源状态之后,选择STATE为完全空闲idle和部分占用mix的节点进行计算。
我们下一步要写一个slurm脚本test_slurm.sh(可以用记事本写作,但window的记事本写出来必须转换一步格式才能给Linux用)注意一个进程只能在一个节点上跑!!! 所以剩余资源还不如local的时候,不如在本地跑。
以下是一个 test_slurm.sh 脚本
#!/bin/bash# ====== Slurm 参数 ======# 指定作业名称#SBATCH --job-name=MBW_slrum_test# 指定分区(队列)#SBATCH --partition=dna# 申请1节点#SBATCH --nodes=1# 在该节点上运行4个任务(进程)#SBATCH --ntasks=1# 每个任务分配1个CPU核心#SBATCH --cpus-per-task=4# 设置作业最大运行时间为1h#SBATCH --time=01:00:00# 指定标准输出文件,%j 会替换为作业ID#SBATCH --output=slurm_%j.out# 指定错误输出文件#SBATCH --error=slurm_%j.err# ====== 你的程序命令 ======# 打印开始时间echo"开始运行: $(date)"# 加载所需环境模块(如果需要)# module load lang/R# module load python/3.9# 进入作业目录cd share/MBW# 运行程序# Python脚本,使用绝对路径python3 /home/u23301020039/share/MBW/test.py# R脚本,使用绝对路径python3 /home/u23301020039/share/MBW/test.R# 打印结束时间echo"运行结束: $(date)"echo"作业完成!"这里可以将程序分块,每执行一块写入一个作业时间,以供追踪运行状态
常用参数:
- -J, --job-name:作业名称
- -p, --partition:指定分区
- -N, --nodes:需要的节点数
- -n, --ntasks:总任务数(进程数)
- -c, --cpus-per-task:每个任务需要的CPU核心数,用于多线程程序
- --mem, --mem-per-cpu:指定内存,如 `--mem=4G
- -t, --time:作业运行时间限制
- -o, --output:标准输出文件
- -e, --error:标准错误文件
- --gres:申请特殊资源,如GPU `--gres=gpu:1
cd share/MBW# 转换格式dos2unix test_slurm.sh# sbatch运行sbatch test_slurm.sh# 任务编号# 输出:Submitted batch job 1371427scontrol show job 1371427可以显示作业的详细信息,sacct可以查看历史作业,查看任务完成情况 如果想要取消作业 则输入scancel 1371427
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



