SPEC CPU 2017 Qemu RISCV

SPEC CPU 2017 Qemu RISCV

以下是 SPEC CPU 2017 的官方描述, 据说在 1.1.9 版本之后支持 RISCV

  • SPEC CPU 2017 may be updated from time to time. To update your copy, use runcpu --update.

History:

  • v1.1.9, Nov-2022: Add RISC-V Linux toolset; update sysinfo.
  • v1.1.8, Apr-2021: Update presubmit tools and sysinfo.
  • v1.1.7, Feb-2021: Add macOS arm64 support.
  • v1.1.5, Nov-2020: Improve sysinfo, improve GCC compatibility.
  • v1.1.0, Sep-2019: fully support power measurement.
  • v1.0.5, May-2018: improve Spectre/Meltdown vulnerability reporting; improve GCC compatibility for both examples and documentation.
  • See SPEC CPU 2017 Changes and the detailed list in Revisions.

我本地是一个 cpu2017-1_0_2.iso, 说是可以通过 runcpu --update 来更新, 但是不安装去哪里有 runcpu 这个命令呢? 于是我就在 qemu-system-riscv64 中编译挂载, 然后安装, 在qemu中跑了一下.

零\ 根文件系统

我使用的是 ubuntu-base 的文件系统, 它可以借助 apt 进行安装, 比buildroot等构造的文件系统功能强一些, 可以参考:

https://blog.csdn.net/jingyu_1/article/details/135822574

内核可以参考其他文档, 只有一点特别强调, 如果像我一样在 qemu 中挂载 iso, 就需要添加相应的 iso9660 模块, 这一点可以参考我的这篇博客的第一部分:

https://blog.csdn.net/jingyu_1/article/details/135822574

如果需要构建交叉编译工具链或者安装qemu,可以参考我的其他博客

注意: 以下的记录均为 根用户 的操作, 在存在用户的情况下, 则类似于使用了 sudo

一\ 安装必要的工具

提前安装, 否则后面可能回报错

# 此命令针对 Ubuntu 系统
apt install gcc g++ gfortran flex bison

如果使用 Qemu + Ubuntubase 文件系统, 可以参考零\根文件系统 中提到的 ubuntu-base 的那一篇博客, 借助 chroot 在 qemu中 进行安装

二\ 编译以及安装

参考的几篇博客(基本解决了riscv的问题)编译是在qemu上编译的:

https://zhuanlan.zhihu.com/p/425497845

https://blog.csdn.net/zhangkefan116/article/details/128019033 (这篇文档中提到的问题, 基本都遇到了, 参考并可解决了)

https://zhuanlan.zhihu.com/p/429399630

https://github.com/mollybuild/RISCV-Measurement/blob/master/En-Run-SPEC-CPU2017-on-Unmatched.md

这是官方的文档:https://www.spec.org/cpu2017/Docs/tools-build.html, 个人觉得略微抽象了点

mount cpu2017-1_0_2.iso /mnt
# 这个位置可以自定义, 一般会创建在 ~ 目录下
mkdir cpu2017
cp -r /mnt/* cpu2017/

/mnt/install_archives/目录下会有tools-src.tar类似名字的压缩包,这就是制作tools的源码。

将上文的 tools-src.tar 解压至 cpu2017/tools

cpu2017/tools 文件下应该包括了 bin (镜像中预编译的内容) 和 src(刚拷贝近来的目录)

cd cpu2017/tools/src
# 然后执行编译
./buildtools

这期间会遇到一些列问题

参考我上面提到的几篇博客, 问题基本都解决了, 这里就不再赘述

这里提供以下config.guess 和 config.sub 的替换命令(我是在当前目录创建了一个config.guess+config.sub方便替换)

cp config.guess ./specinvoke/config.guess
cp config.guess ./tar-1.28/build-aux/config.guess
cp config.guess ./expat-2.1.0/conftools/config.guess
cp config.guess ./specsum/build-aux/config.guess
cp config.guess ./make-4.2.1/config/config.guess
cp config.guess ./rxp-1.5.0/config.guess
cp config.guess ./xz-5.2.2/build-aux/config.guesscp config.sub ./specinvoke/config.sub
cp config.sub ./tar-1.28/build-aux/config.sub
cp config.sub ./expat-2.1.0/conftools/config.sub
cp config.sub ./specsum/build-aux/config.sub
cp config.sub ./make-4.2.1/config/config.sub
cp config.sub ./rxp-1.5.0/config.sub
cp config.sub ./xz-5.2.2/build-aux/config.sub

替换1*) -> 1.*) 时可以借助 vim 的查找或者其他方便的工具

# 会提示以下内容
Tools built successfully.  Go to the top of the tree and
source the shrc file.  Then you should be ready.

然后在 cpu2017 的目录下:

cd cpu2017
# 能成功则表示构建好了
. ./shrc
runcpu -V
toolset 打包:

在 cpu2017/tools/bin/ 下创建文件夹linux-riscv64,并在该文件夹下创建 description文件。description文件用来描述新构建工具支持哪些系统和它构建的环境,运行 install.sh 时将会显示此文件内容

可以参考linux-aarch64 的内容,将特定的内容环城 uname -a 命令查到的信息

# 然后在 cpu2017 目录下执行
packagetools linux-riscv64
安装toolset:
./install.sh -u linux-riscv64 -d /home/riscv/benchmarks/cpu2017_install

随后, 就可以运行一些准备测试了

三\ runcpu

部分问题同x86上执行一致, 可以参考我的 quick start 的记录的博客: https://blog.csdn.net/jingyu_1/article/details/135695701

这部分已经在 cpu2017_install 目录下了

首先准备测试文件

source shrc
# 参考其他架构的拷贝
cd config
cp Example-gcc-linux-aarch64.cfg try1.cfg 
# 修改这部分的内容为如下:#--------- Preprocessor -------------------------------------------------------
%ifndef %{bits}                # EDIT to control 32 or 64 bit compilation.  Or, 
%   define  bits        64     #      you can set it on the command line using:
%endif                         #      'runcpu --define bits=nn'%ifndef %{build_ncpus}         # EDIT to adjust number of simultaneous compiles.
%   define  build_ncpus  8     #      Or, you can set it on the command line: 
%endif                         #      'runcpu --define build_ncpus=nn'# Don't change this part.
%define    os           LINUX
%if %{bits} == 64
%   define model        -march=rv64imafdc
%elif %{bits} == 32
%   define model        -march=rv32
%else
%   error Please define number of bits - see instructions in config file
%endif
# 这部分就不修改!
# 要不然还需要修改 spec_config.h, 比较麻烦, 这两个 AARCH 不修改成 RISCV!500.perlbench_r,600.perlbench_s:  #lang='C'
%if %{bits} == 32
%   define suffix AARCH32
%else
%   define suffix AARCH64
%endifPORTABILITY    = -DSPEC_%{os}_%{suffix}

然后就像x86那样运行就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KVM部署Alibaba Cloud Linux操作系统

下载镜像文件 下载链接:https://mirrors.aliyun.com/alinux/image/?spma2c4g.11186623.0.0.79ed5af6pehv54 下载文件:aliyun_3_x64_20G_nocloud_alibase_20230727.qcow2 部署KVM虚拟化环境 yum -y install qemu libvirt rr-testsuite systemctl star…

[SUCTF 2019]CheckIn1

黑名单过滤后缀’ph&#xff0c;并且白名单image类型要有对应文件头 对<?过滤&#xff0c;改用GIF89a<script languagephp>eval($_POST[cmd]);</script>&#xff0c;成功把getshell.gif上传上去了 尝试用.htaccess将上传的gif当作php解析&#xff0c;但是失败…

常见的前端打包构建工具有哪些

Webpack&#xff1a; Webpack 是一个模块打包工具&#xff0c;它能够将各种资源&#xff08;JavaScript、CSS、图片等&#xff09;打包成一个或多个静态文件&#xff0c;以优化加载性能。 Parcel&#xff1a; Parcel 是一个零配置的前端打包工具&#xff0c;可以自动识别项目中…

Flutter Text文字下方出现黄色双下划线

在Flutter中&#xff0c;Text组件是属于Material风格的&#xff0c;这就要求我们的根组件最好也是Material风格的&#xff0c;否则UI展示可能会有一些问题。刚刚提到的启动页&#xff0c;根组件直接使用的层叠布局Stack&#xff0c;而Stack就不属于Material风格&#xff0c;当S…

美工前端和数据对接一起做的可视化大屏开发项目工期一周足矣

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 可视化大屏已经成为企业和组织中不可或缺的一部分。它不仅可以帮助企业更好地展示业务数…

[docker] Docker的私有仓库部署——Harbor

一、Docker原生私有仓库—— Registry 1.1 Registry的简单了解 关于Docker的仓库分为私有库和公有仓库&#xff0c;共有仓库只要在官方注册用户&#xff0c;登录即可使用。但对于仓库的使用&#xff0c;企业还是会有自己的专属镜像&#xff0c;所以私有库的搭建也是很有必要的…

jQuery实现选择方法和保护信息方法

最近呢&#xff01;一直在学习jQuery语法&#xff0c;也没时间发布文章&#xff0c;现在学的差不多了&#xff0c;先跟大家分享下学习感受吧&#xff01;JavaScript学过后&#xff0c;再学习jQuery语法&#xff0c;应该是简单的&#xff0c;但我总是容易把它们搞混&#xff0c;…

开源模型部署及使用

开源模型部署及使用 1.Langchain-Chatchat1.环境2.运行3.效果 2.facefusion1.环境2.运行3.效果 3.Aquila1.环境2.运行 1.Langchain-Chatchat Langchain-Chatchat这里面可以调用许多模型&#xff0c;我本地下载了chatglm3模型文件&#xff0c;所以就用这个模型。 1.环境 根据…

牛客网---------[USACO 2016 Jan S]Angry Cows

题目描述 Bessie the cow has designed what she thinks will be the next big hit video game: "Angry Cows". The premise, which she believes is completely original, is that the player shoots cows with a slingshot into a one-dimensional scene consistin…

实现负载均衡

1.安装依赖 sudo apt insta11 libgd-dev 2.下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 3.解压nginx tar -zvxf nginx-1.22.1.tar.g2 4.编译安装 cd nginx-1.22.1 5.编译并指定安装位置&#xff0c;执行安装之后会创建指定文件夹/www/env/nginx ./configure…

【大数据】流处理基础概念(二):时间语义(处理时间、事件时间、水位线)

流处理基础概念&#xff08;一&#xff09;&#xff1a;Dataflow 编程基础、并行流处理流处理基础概念&#xff08;二&#xff09;&#xff1a;时间语义&#xff08;处理时间、事件时间、水位线&#xff09;流处理基础概念&#xff08;三&#xff09;&#xff1a;状态和一致性模…

使用pysimplegui+opencv编写一个摄像头的播放器

需求 使用pysimplegui和opencv实现一个播放器&#xff0c;播放 摄像头的画面。 代码实现 import cv2 import time from typing import Iterable, NamedTuple, Optionalimport PySimpleGUI as sgclass CameraSpec(NamedTuple):name: strindex: intwidth: intheight: intfps: i…

c# ADODB.Recordset实例调用Fields报错

代码&#xff1a; using System; using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ADODB;namespace ConsoleApp1 {internal class Programre{static ADODB.Recordset recordsetInstance…

代码随想录刷题笔记 DAY15 | 翻转二叉树 No.226 | 对称二叉树 No.101

Day 15 01. 翻转二叉树&#xff08;No. 226&#xff09; 题目链接 代码随想录题解 1.1 题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9…

GPU无进程但显存占用

在服务器的docker里面使用显卡发现在终端 ctrl c之后&#xff0c;代码会停掉但是GPU资源不会释放。 nvidia-smi里面还看不到PID进程号&#xff0c;有PID号直接kill 就行了 如果想要把GPU上所有程序全都杀掉可以执行下面的命令 fuser -v /dev/nvidia* |awk {for(i1;i<NF;i…

Odoo14 中的小部件列表

们有不同类型的小部件用于不同的目的&#xff0c;帮助我们简化操作。小部件用于使代码变得简单且用户友好&#xff0c;这将有助于软件的编码和编程方面。在 Odoo 14 开发中&#xff0c;我们可以利用不同的小部件&#xff0c;这些小部件可用于编程操作的某些特定方面。这些简化工…

Oracle Linux 9.3 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

微信小程序元素/文字在横向和纵向实现居中对齐、两端对齐、左右对齐、上下对齐

元素对齐往往是新学者的一大困惑点&#xff0c;在此总结常用的各种元素和文字对齐方式以供参考&#xff1a; 初始显示 .wxml <view style"width: 100%;height: 500rpx; background-color: lightgray;"><view style"width: 200rpx;height:100rpx;bac…

2023年NOC大赛(学而思赛道)创意编程Python初中组决赛真题

2023年NOC大赛&#xff08;学而思赛道&#xff09;创意编程Python初中组决赛真题 题目总数&#xff1a;7 总分数&#xff1a;100 编程题 第 1 题 问答题 二进制回文 编程实现: 输入一个正整数&#xff0c;判断它的二进制形式是否是回文数&#xff0c;如果是输出True…

MySQL建表练习

练习题目&#xff1a;通过所提供的E-R图和数据库模型图完成库表的创建&#xff0c;并插入适量的数据.要求必须使用SQL命令进行构建。 已知如下&#xff1a; 1、创建客户信息表&#xff1a; 代码&#xff1a; CREATE DATABASE Bank; //建库CREATE TABLE Userinfo(Cust…