Skip to content

xyyy1420/checkpoint_scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

环境准备

可以访问公共服务器

  • 请执行
source /nfs/home/share/workload_env/env.sh

无法访问公共服务器

export ARCH=riscv
export LINUX_HOME=/path/to/linux
export OPENSBI_HOME=/path/to/opensbi
export XIANGSHAN_FDT=/path/to/nemu_board/dts/build/xiangshan_dualcore.dtb
export RISCV=/path/to/riscv-toolchain
export RISCV_ROOTFS_HOME=/path/to/riscv-rootfs
export CPU2006_RUN_DIR=/path/to/cpu2006_run_dir
export CPU2017_RUN_DIR=/path/to/cpu2017_run_dir
export CROSS_COMPILE=/path/to/riscv-toolchains/bin/riscv64-unknown-linux-gnu-
export GCPT_HOME=/path/to/LibCheckpoint
export NEMU_HOME=/path/to/NEMU
export QEMU_HOME=/path/to/qemu

单核检查点

  • 修改环境变量
    • 公共服务器
      • export XIANGSHAN_FDT=/nfs/home/share/workload_env/workload_build_env/dts/build/xiangshan.dtb
      • export GCPT_HOME=/nfs/home/share/workload_env/LibCheckpointAlpha
    • 私有环境
      • export XIANGSHAN_FDT=/path/to/nemu_board/dts/build/xiangshan.dtb
      • export GCPT_HOME=/path/to/LibCheckpointAlpha
  • 修改下述配置文件
    • 修改字段 copies 为 1

多核检查点

  • 在导入环境变量之后仅需按照下述说明修改配置文件,并保证 copies 字段大于 1 即可(目前的环境下请保证该字段小于 4 )

使用说明

usage: generate_checkpoint.py [--config]

Auto profiling and checkpointing

optional arguments:
  --config              指定配置文件
  • 配置文件说明
base_config:
  message: "NULL" # 通常为空
  spec_app_list: null # 与下面的 spec_apps 选项作用一致,这里填写一个 list 文件的路径,list 文件中每行一个子项
  spec_apps: "gcc_scilab" # 这里填写用英文逗号分割的子项
  elf_folder: "./jemalloc_elf" # 使用的 elf 的路径
  times: "1,1,1" # profiling cluster checkpoint 各运行的次数
  start_id: "0,0,0" # profiling cluster checkpoint 各运行的结果保存路径的起始 id
  emulator: "QEMU" # 用于 profiling 和 checkpoint 的模拟器,可选 "QEMU" 或者 "NEMU"
  build_bbl_only: false # 设置为 true 时编译完所有的 workload 后结束运行
  max_threads: 70 # profiling cluster checkpoint 时可以使用的最大线程数
  CPU2017: false # 目标 elf 是否是 speccpu2017
  generate_rootfs_script_only: false # 是否仅生成 rootfs 脚本之后停止
  copies: 2 # profiling 和 checkpoint 并行执行多少个 spec 子项,当 copies=1 时 kernel 将放置在 0x80200000,否则 kernel 将放置在 0x80800000
  archive_id: null # 如果设置了 archive_id 将跳过 workload 构建前的阶段,直接使用该 id 下已有的 workload
  redirect_output: false # 是否重定向子项的输出
  cpu_bind: 0 # useless
  mem_bind: 0 # useless
  bootloader: "opensbi" # 使用 opensbi 还是 riscv-pk 作为启动器,riscv-pk 的流程目前维护不佳
  all_in_one_workload: true # 如果使用 all in one workload,将会使用 gcpt 链接 workload,生成的 workload 可以直接被启动,在使用 QEMU 作为模拟器时,必须使用 all in one workload
  boot_for_test: true # 设置为 true 时将在构建完 workload 使用上述配置文件中指定的模拟器运行 1min
archive_id_config: # 配置生成的 archive id,仅影响结果放置在哪里
  gcc_version: "gcc12.2.0"
  riscv_ext: "rv64gcb"
  base_or_fixed: "base"
  special_flag: "intFppOff_for_qemu_dual_core"
  group: "archgroup"
  • 一键checkpoint
python3 generate_checkpoint.py --config config.yaml
  • 导出 checkpoint list 和权重文件

    • 修改 dump_result.py 文件中的 spec_list,base_path
    • 运行该脚本,随后会在 checkpoint 目录下生成 list 文件和 权重文件
  • 本脚本目前仅维护使用opensbi的环境

  • Reference

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors