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集群中運行,充分利用集群資源提高仿真效率。