一,bsub 提交作业
linux系统编写程序时无可避免要把源文件编译成可执行文件,在进行运行得出结果。但在登录超级计算机等端口(linux系统),若执行文件较大可能会被软件后台查杀,无法执行得到结果。使用bsub提交作业方法可良好解决在登录端运行程序,避免程序运行中用较大较多资源时被kill。使用bsub作业提交的方法能很好的解决这个问题。
命令格式:
bsub [options] command [argument]
相关参数:
-q 选择队列
-i 指定输入文件
-I 交互模式,此时终端不能输入
-o 指定输出文件,作业提交后标准输出的信息会保存到这个文件中。
-e 指定输出文件,作业提交后标准错误输出的信息会保存到这个文件中。
-n 指定作业需要的CPU核
-J 作业的名字
-w 提交作业前,指定操作。
-W 限定作业运行时间
-K 提交作业,并且等待作业完成。当提交作业后,终端打印“waiting for dispath”。当作业完成后,终端打印“job is finished”。作业没有完成,不能提交新的作业。
二, bsub 提交作业 使用详解
- 首先写一个程序代码
Vi hello.c (c语言 编写)
2 gcc 编译 把代码变成可执行文件
gcc -o hello hello.c
gcc : 编译c c++ 程序的编译器
-o : 链接文件 hello.c 把文件生成 hello (可执行文件)
ls : 列表当下文件里的所有文件 此时有 hello hello.c
3 指定当前文件目录
./hello (./t 这种形式就是直接编译)
(Vi Hello 里边是乱码 ,编译出的结果是正确的)
4 编写脚本文件(可以理解为执行hello目标文件前的一些操作设置)
vi hello.bsub
# BSUB -W 00:2 -w 指定运行时间 00:2 小时:分钟
#BSUB -n 1 -n 1 作业需要使用的核心数为1
#BSUB -R “span[ptile=1]” 指定作业在单个节点上使用的核心数为1
#BSUB -q gpu -q 指定作业提交到gpu队列 (一般个gpu,mic即可)
#BSUB -o hello.out 标注输出文件(有错误 输出为空)
#BSUB -e hello.err 错误输出文件(有错误这个文件里会给出,无错误为空)
./hello 指定输出路径
5 运行脚本文件
bsub < hello.bsub
bjobs 命令 查看运行是否结束
ls 此时可看到五个文件:hello.c hello hello.bsub hello.out hello.err
vi hello.out 进入 .out 文件可看到所有详细信息
此时一个完整的bsub 提交作业(运行程序)结束