LSF
LSF(Load Sharing Facility)是一种常用的集群作业调度系统,bsub
命令用于提交作业到 LSF 集群,而若要关闭(终止)一个正在运行的作业,需要使用 bkill
命令,下面为你详细介绍相关操作:
1. 查找作业 ID
在终止作业之前,你需要先获取该作业的作业 ID(Job ID)。可以使用 bjobs
命令来查看当前用户或所有用户提交的作业信息,不同查看需求对应的命令如下:
查看当前用户的作业
bjobs
执行该命令后,会显示当前用户提交的所有作业的状态信息,其中包含作业 ID、作业名称、作业状态等,示例输出如下:
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
1234 youruser RUN normal host1 host2 test_job Sep 20 10:00
这里的 1234
就是作业 ID。
查看所有用户的作业(需要管理员权限)
bjobs -u all
2. 使用 bkill
命令终止作业
获取到作业 ID 后,就可以使用 bkill
命令来终止作业,以下是具体的使用方式:
终止单个作业
bkill <job_id>
例如,要终止作业 ID 为 1234
的作业,可执行:
bkill 1234
执行该命令后,LSF 会尝试终止指定的作业。如果作业成功终止,会显示相应的提示信息。
终止多个作业
若要同时终止多个作业,可以在 bkill
命令后依次列出这些作业的 ID,用空格分隔,示例如下:
bkill 1234 1235 1236
强制终止作业
在某些情况下,作业可能无法正常终止,这时可以使用 -9
选项来强制终止作业:
bkill -9 <job_id>
例如:
bkill -9 1234
使用 -9
选项相当于发送 SIGKILL
信号,会直接终止作业,但这种方式可能会导致数据丢失或其他副作用,应谨慎使用。
3. 验证作业是否终止
终止作业后,可以再次使用 bjobs
命令来验证作业是否已经被成功终止。如果作业已经终止,在 bjobs
的输出中将不会再显示该作业信息。
makefile+bsub+vcs
使用makefile管理vcs编译、仿真。如何使用bsub运行vcs
为了使用makefile管理VCS编译和仿真,并通过bsub提交任务到LSF(Load Sharing Facility)集群,可以按照以下步骤操作:
1. 编写Makefile
以下是一个完整的Makefile示例,包含编译、仿真和清理规则,同时支持通过bsub提交任务到LSF。
makefile复制
# Makefile for VCS Simulation with LSF support
# Environment variables
VCS_HOME := /path/to/vcs
export PATH := $(VCS_HOME)/bin:$(PATH)
# Source files
RTL_FILES := ./src/*.v
TB_FILES := ./testbench/*.sv
FILELIST := ./filelist.f
# Compilation and simulation options
VCS_OPTS := -full64 -sverilog -debug_all -timescale=1ns/1ps
SIM_OPTS := +vcs+lic+wait
# Targets
.PHONY: all compile simulate clean submit
# Default target
all: compile simulate
# Compilation target
compile:
vcs $(VCS_OPTS) -f $(FILELIST) -o simv
# Simulation target
simulate:
./simv $(SIM_OPTS) | tee simulation.log
# Clean target
clean:
rm -rf simv csrc simv.daidir *.log *.vpd *.fsdb *.key
# Submit to LSF
submit:
bsub -J VCS_SIM -o ./logs/sim_%J.out -eo ./logs/sim_%J.err -n 4 -M 16GB -W 2:00 -R "span[hosts=1]" "make all"
2. 项目目录结构
假设项目目录结构如下:
复制
project/
├── src/ # Verilog源码
├── testbench/ # 测试平台代码
├── filelist.f # 文件列表
├── logs/ # 日志文件目录
├── Makefile # 编译和仿真控制文件
3. 提交任务到LSF
通过bsub提交任务到LSF集群,可以直接使用make submit命令。
提交任务
make submit
查看任务状态
bjobs
查看任务日志
tail -f ./logs/sim_<jobID>.out
终止任务
bkill <jobID>
4. 高级功能
依赖任务
如果仿真依赖编译完成,可以分步提交:
# 提交编译任务
COMPILE_JOB_ID=$(bsub -J COMPILE -o compile.log "make compile" | awk '{print $2}' | tr -d '<>' )
# 提交仿真任务,依赖编译任务
bsub -J SIMULATE -w "done($COMPILE_JOB_ID)" -o sim.log "make simulate"
并行仿真
如果VCS支持多线程仿真,可以通过-j选项启用:
simulate:
./simv $(SIM_OPTS) -j 8
提交时请求相应资源:
bsub -n 8 -R "span[ptile=8]" "make simulate"
通过上述步骤,你可以使用makefile管理VCS的编译和仿真,并通过bsub将任务提交到LSF集群中运行,充分利用集群资源提高仿真效率。