系统:

Ubuntu 20.04

cpu:AMD64

1. 安装环境ubuntu 20.04

1.1. 编译依赖

ubuntu 20.04

sudo apt install build-essential git m4 scons zlib1g zlib1g-dev \
    libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \
    python3-dev python-is-python3 libboost-all-dev pkg-config gcc-10 g++-10 \
    python3-tk clang-format-18
   
sudo apt install libhdf5-dev libhdf5-cpp-* libhdf5-serial-dev
sudo apt install libcapstone-dev

配置 format:

# Configure clang-format-18 and git-clang-format-18 as the system defaults.
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-18 180 \
        --slave /usr/bin/clang-format-diff clang-format-diff /usr/bin/clang-format-diff-18 \
        --slave /usr/bin/git-clang-format git-clang-format /usr/bin/git-clang-format-18

# [Optional] Add other alternative versions, and select version 18 as the default version.
sudo update-alternatives --config clang-format

1.2. KVM 部分

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

添加到正确的组:

sudo adduser `id -un` libvirt
sudo adduser `id -un` kvm

重新链接 ssh 终端。

$ groups

2.下载编译

2.1. 下载代码

mkdir workspace/
cd workspace/
git clone https://github.com/gem5/gem5.git
cd gem5/
git checkout v24.0.0.1

git clone https://github.com/gem5/gem5-resources.git
cd gem5-resources/
git checkout v24.0.0.1

这里两个项目的文件目录关系:

workspace/gem5/gem5-resources/

2.2. buildGem5 gpu:


pip install -r ./requirements.txt
scons build/VEGA_X86/gem5.debug  -j 32

##or opt for fast
scons build/VEGA_X86/gem5.opt -j 32

2.3. 下载packer

脚本中 wget 自动下载packer 非常慢,故,这里用浏览器下载。

浏览器地址栏输入:

https://releases.hashicorp.com/packer/1.10.0

点击 下载:

packer_1.10.0_linux_amd64.zip

scp 传输给构建机器并解压:

scp packer_1.10.0_linux_amd64.zip  hanmeimei@12.34.56.78:/home/hanmeimei/
cp packer_1.10.0_linux_amd64.zip workspace/gem5-resources/src/x86-ubuntu-gpu-ml/
unzip packer_1.10.0_linux_amd64.zip

可以得到 packer 文件。

2.4. buidle disk image

$ cd ..
$ cd gem5-resources/src/x86-ubuntu-gpu-ml
$ ./build.sh

 3. 编译应用程序

3.1. 拉取 rocm 开发环境 docker image

假设系统中已经安装过 docker 套件,这里可以直接使用:

sudo docker pull ghcr.io/gem5/gpu-fs

3.2. 编译

cd gem5-resources/src/gpu/square
sudo docker run --rm -u $UID:$GID -v $PWD:$PWD -w $PWD ghcr.io/gem5/gpu-fs make -f Makefile.default

显示如下信息:

/opt/rocm/bin/hipcc -O3 -Wno-unused-result --offload-arch=gfx900,gfx90a,gfx942  square.cpp -o ./bin.default/square.default

查看编译结果:

ls ./bin.default/square.default

4. 运行应用程序

这里使用 mi300 gpu 的配置:

build/VEGA_X86/gem5.debug configs/example/gpufs/mi300.py --disk-image gem5-resources/src/x86-ubuntu-gpu-ml/disk-image/x86-ubuntu-gpu-ml --kernel gem5-resources/src/x86-ubuntu-gpu-ml/vmlinux-gpu-ml --app gem5-resources/src/gpu/square/bin.default/square.default

大概十几分钟后结束模拟:

中间过程输出的一些警告,可以忽略:
src/arch/x86/kvm/x86_cpu.cc:1688: warn: kvm-x86: MSR (0x48) unsupported by gem5. Skipping.
src/arch/x86/kvm/x86_cpu.cc:1688: warn: kvm-x86: MSR (0xc0010200) unsupported by gem5. Skipping.
。。。。

src/dev/amdgpu/pm4_packet_processor.cc:346: warn: PM4 packet opcode 0xa0 not supported.
src/dev/amdgpu/pm4_packet_processor.cc:346: warn: PM4 packet opcode 0x58 not supported.

。。。。

src/dev/amdgpu/sdma_engine.cc:973: warn: SDMA poll reg is not implemented. If this is required for correctness, an SRBM model needs to be implemented.
src/gpu-compute/gpu_command_processor.cc:653: warn: Ignoring vendor packet

查看输出信息:

$ cat m5out/system.pc.com_1.device

显示 PASSED!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐