目录
- 今日已完成任务列表
- 遇到的问题及解决方案
- 任务完成详细笔记
- 作业管理系统 slurm
- 作业管理系统及常用用户命令
- 节点状态查询/作业提交命令
- 作业队列查询/作业取消命令
- 任务练习
- 调试器 GDB
- 实时调试
- core 文件调试
- 对自己的表现是否满意
- 简述下次计划
- 其他反馈
今日已完成任务列表
4-2、作业管理系统 slurm、调试器 GDB
遇到的问题及解决方案
无
任务完成详细笔记
作业管理系统 slurm
作业管理系统及常用用户命令
资源管理系统命令
- 管理命令
管理员操作和使用、管理节点以及管理员权限才能执行 - 用户命令
常用用户命令:
yhinfo / yhi:资源信息查询
yhalloc:资源申请 (强占)
yhrun:作业提交 (自动申请资源)
yhqueen / yhq:作业队列查询
yhcancel:作业取消
yhbatch:批处理作业 (输出被保存到 slurm-jobID.out 下)
yhacct:作业历史查询
节点状态查询/作业提交命令
- 节点状态、资源信息查询 yhinfo / yhi
thcp1:分区名,之后使用 -p 命令指定
up:表明分区上线,可以使用
infinite:表明分区使用时间为无限长
266:处于某一状态的节点数量
STATE:节点状态
alloc:表示以及被分配的节点,已经被别人用了,现在不可用
resv:保留的节点,可能有问题或者其他,不可用
idle:空闲节点,表示可以使用的节点
down:节点被关机
NODELIST:处于该状态的节点编号
- 作业提交
yhrun -p [partitionName] -N [nodesNum] -n [totalProcs] -c [numThreadss] [binaryPath]
-p:指定分区
-N:指定程序使用的节点数
-n:指定程序使用的总进程数目,每个节点启动约 n/N 个进程,整除
-c:指定每个进程可使用的处理器个数,通常应该等于每进程派生的线程数
[binaryPath]:可执行文件名字,相对或绝对路径,后面可以继续带程序自身的运行时参数
- 批处理作业
yhbatch -p [partitionName] -N [nodesNum] [scriptPath]
scriptPath:shell 脚本文件,需要包含yhrun命令
【yhbatch 提交的作业终端关闭时不会受到影响,登录节点 down 时也不会受到影响】
作业队列查询/作业取消命令
- 作业队列查询
yhqueen / yhq [options]
-a:查询所有作业
-u :查询指定用户提交的作业
-n :查询指定名称的作业
-s :查询指定状态的作业
-p :查询指定分区的作业
JOBID:作业 ID 号,可以根据作业 ID 使用其他操作,如取消 yhcancel 等
PARTITION:分区名称
NAME:可执行文件名
USER:用户
ST:状态,R 表示 RUN,还有排队PD等
TIME:运行了多长时间
NODES:使用的几点数目
NODELIST:具体节点列表
- 作业取消
yhcancel [JOBID] / yhcancel name=[NAME]
当作业运行时间 (TIME) 远大于预期的运行时间时,可能是出现了问题,此时可以选择取消该作业
任务练习
对于一个可执行文件 saxpy.exe,通过 slurm 系统,编写 shell 脚本 yhrun.sh,通过 yhrun 命令把程序二进制文件提交到计算节点进行串行计算,使用 yhbatch 命令,提交 yhrun.sh 脚本,使程序在后台运行
yhrun.sh
#!/bin/bash
yhrun -c 1 -N 1 -n 1 ./saxpy.exe
执行命令
yhbatch -N 1 -p thcp1 ./yhrun.sh &
调试器 GDB
实时调试
如何进入调试环境运行程序
- 源码编译阶段,需要添加调试选项 “-O0 -g”
gcc -O0 -g -o exe file.c - 进入实时调试的方法
1、先使用 gdb 命令进入 gdb 窗口,再使用 file 命令加载二进制文件:file exe [命令行参数]
2、使用 gdb exe [命令行参数] 直接进入调试模式
l 展示代码
例如:展示第 10 行,l 10 会将其上下 5 行均展示
b [行号] 在指定行处打断点
r 运行程序
p [变量名称] 查看代码中指定变量的值
c 继续执行程序
q 退出程序
info break 查看所有断点信息
disable [断点编号] 禁用指定的断点
enable [断点编号] 恢复指定的断点
clear [断点编号] 删除指定断点
watch [变量名称] 跟踪指定变量
core 文件调试
- core 文件
core 文件 (core dump 文件),有问题的程序运行后,产生 “段错误” 时生成的具有堆栈信息的调试信息的文件 - 生成 core 文件
1、使用 ulimit -c 查看 core 开关,如果为 0 表示关闭,不会生成 core 文件
2、使用 ulimit -c [filesize] 设置 core 文件大小,在最小设置为 4 之后才会生成 core 文件
3、使用 ulimit -c unlimited 设置 core 文件大小为不限制 (常用) - core 文件的目录
默认情况下一般 core 文件的生成目录为程序运行当前目录,用户无须自行修改
gdb -c:使用 core 文件记录的信息进入程序调试 (输入 I 可以显示更多崩溃点附近的代码)
Backstrace,简写 bt,查看崩溃/断点附近的程序调用栈信息
frame [n],简写 f [n],查看调用栈的 #n 层
down,显示程序调用的更深层
up,显示程序调用的外层主调 (函数)
对自己的表现是否满意
今天的学习内容较少,初次了解作业管理系统slurm,感觉这种远程计算的方式还是挺新鲜的,期待之后的学习内容 (≧∇≦)ノ
简述下次计划
下次想要进入对高性能传统优化技术的学习
其他反馈
每周只开放部分的学习阶段吗?