好网的docker项目-02dsa-framework
Setup — Decoupled Spatial Architecture Framework documentation (dsa-framework.readthedocs.io)
设置
先决条件
我们强烈建议您使用Docker来设置环境。通过下载这个Dockerfile,您可以通过键入构建 docker 镜像来简单地设置环境:
$ sudo docker build . -t polyarch/dsa-framework:latest
然后你可以通过执行下面的命令来启动一个 docker 容器。docker 选项-v /home/<user>/dsa-share:/root/dsa-share允许您在主机和 docker 容器之间共享文件。
$ sudo docker run -tid [-v /home/<your username>/dsa-share:/root/dsa-share] --name=overgen polyarch/dsa-framework:latest /bin/bash
或者,更积极地,您可以构建映像并使用一条命令启动容器
$ sudo docker run -tid [-v /home/<your username>/dsa-share:/root/dsa-share] --name=overgen \\`sudo docker build . | tail -1 | awk '{ print $3 }'` /bin/bash
注意:zsh是必需的。如果我们使用默认的 bash,我们的环境设置脚本的行为是不受欢迎的。
建造
我们的 docker 仅解决所有依赖关系,并克隆 repos。因此,docker 容器启动后,您应该从源代码构建框架基础设施:
# Attach to docker container
$ sudo docker attach overgen
在终端中输入 "sudo docker attach overgen",这将连接到名称为"overgen"的Docker容器,并将当前终端会话设置为该容器的主终端。
# Switch from `bash` to `zsh`, DO NOT use zsh when start docker container
$ zsh
# Inside the docker, enter dsa-framework root folder
$ cd /root/dsa-framework
# Initialize all submodules, SKIP this step if you are using docker
$ ./scripts/init-submodules.sh
# Setup dsa-framework environment variables
$ source ./setup.sh # setup environement variables# Compile the entire dsa-framework
$ make all -j
这是一个用于编译 DSA (Data Stream Alignment) 框架的 Bash 脚本。该脚本首先设置一些环境变量,然后运行 'make all' 命令以编译整个框架。
要运行该脚本,请在终端中导航到脚本所在的目录,并使用 'source' 命令来运行该脚本:
source ./setup.sh
然后,可以使用 'make all' 命令来编译整个 DSA 框架。 '-j' 选项指定了使用多个线程进行编译,以加快编译速度。
请注意,这是一个 Bash 脚本,因此您需要在支持 Bash 的终端中运行它。此外,确保已经安装了所需的编译器和库,并且已经在系统上设置了正确的环境变量,以便编译顺利完成
# Please source chipyard/env.sh manually if this is a first time build
$ source chipyard/env.sh
注意:如果你只是想暂时离开容器(分离,而不是关闭),你应该只是<Ctrl-p><Ctrl-q>分离,而不是输入exit。
例子
要验证 repo 是否已成功构建,您可以
$ cd dsa-apps/demo
$ ./run.sh ss-vecadd.out
上面的命令制作了一个简单的向量加法示例,由 LLVM 编译并在 Gem5 中模拟。
所有编译的应用程序都是由相同的软件开发工具包 (SDK) 开发的,请参阅SDK 部分了解更多详细信息。
预制
您还可以在此处下载预构建的 docker 镜像 (~70GB) ,其中包含构建了所有工具链的整个 dsa-framework。
您可以通过以下方式导入 docker 图像并使用 dsa-framework:
$ docker import <downloaded tar file>.tar polyarch/dsa-framework:latest
看起来你遇到了一个错误消息,它指示当前目录中的 make 命令无法找到目标 ss-vecadd.out 的规则。
为了解决这个问题,你可以尝试以下步骤:
确认 dsa-apps/demo 目录中存在 ss-vecadd.out 文件。如果不存在,请确保使用适当的命令或脚本构建该文件。
检查 dsa-apps/demo 目录中的 Makefile 的内容,以确保它包含用于构建 ss-vecadd.out 的规则。该规则应该指定构建目标所需的依赖项和命令。
确保你是从正确的目录运行 make 命令。make 命令应该在包含 Makefile 的相同目录中运行。
如果问题仍然存在,尝试使用 -n 选项运行 make 命令,以查看将要执行的命令,而不实际运行它们。这可以帮助你确定构建过程中的任何问题。
如果仍然无法解决问题,请尝试联系项目的开发人员或社区以获取进一步的帮助。他们可能能够提供额外的指导或故障排除步骤。
make
(ss-stack) ➜ demo git:(polyarch) ls
chipyard-harness.o crs.c extract.py Makefile mv_0_1.dfg.h mv.c run.sh spmv_0_1_1.dfg.h spmv_0_1_1.log ss-crs.ll ss-crs.riscv ss-mv.ll ss-mv.riscv viz
common crs.ll m5out mv_0_1.dfg mv_0_1.log mv.ll spmv_0_1_1.dfg spmv_0_1_1.gv spmv_0_1_1.png ss-crs.o ss-crs.s ss-mv.o ss-mv.s
(ss-stack) ➜ demo git:(polyarch) ./run.sh ss-vecadd.out
make: * No rule to make target 'ss-vecadd.out'. Stop
您可能希望检查Makefile并确保它包含用于构建ss-vecadd.out。规则应该是这样的
ss-vecadd.out: ss-vecadd.cgcc -o ss-vecadd.out ss-vecadd.c
This rule says that the ss-vecadd.out target depends on the ss-vecadd.c file, and that it should be built by running the gcc command.
If you have already defined the rule in the Makefile, ensure that the ss-vecadd.c file is present in the correct directory, and that its name and path are correctly specified in the rule.
Once you have made the necessary changes, run the make command again to build the ss-vecadd.out target.
Global frequency set at 1000000000000 ticks per second
warn: No dot file generated. Please install pydot to generate the dot file and pdf.
warn: DRAM device capacity (32768 Mbytes) does not match the address range assigned (512 Mbytes)
panic: panic condition fd < 0 occurred: Failed to open file ./ss-vecadd.out.
Memory Usage: 1025672 KBytes
Program aborted at tick 0