uiCA模拟器和bHive benchmark的使用

news2024/12/24 21:12:28

概念

uiCA 基本块吞吐量预测器

github地址:GitHub - andreas-abel/uiCA: uops.info Code Analyzer

uiCA是一个模拟器,可以预测基本块在最新的英特尔微体系结构上的吞吐量。除此之外,它还提供了代码执行的洞察。

uiCA基于来自uops.info的数据,结合了详细的流水线模型。与相关工具类似,它假设所有内存访问都会导致缓存命中。

关于uiCA的流水线模型的详细信息,以及与类似工具的比较,可以在论文《uiCA: Accurate Throughput Prediction of Basic Blocks on Recent Intel Microarchitectures》中找到。

bHive benchmark

github 地址:GitHub - ithemal/bhive

BHive Benchmark 是一个基准测试套件和测量框架,旨在验证 x86-64 平台上的基本块性能模型。该基准测试套件通过执行一系列基本块级别的测试来评估处理器的性能和行为。这些基本块通常是指程序中相对较小且不包含分支跳转的代码块,对于评估处理器的基本执行能力非常有用。

BHive Benchmark 旨在提供一个统一的平台,使得研究人员和开发人员可以使用相同的测试套件来评估不同处理器的性能,并验证基本块性能模型的准确性。通过使用 BHive Benchmark,用户可以更好地了解处理器在执行基本块时的行为,从而更好地优化和评估代码的性能。

如何使用uiCA模拟器运行bHive benchmark

部署

uiCA按照 readme部署就行,bHive同样

这里仅仅展示一个例子

bHive拿到一个basic block的数据

bhive_path/benchmark/disasm 工具用法:  

./bhive_path/benchmark/disasm  <basic block十六进制编码> 

就会输出basic block十六进制编码 ,对应的汇编代码

比如: 

./disasm 488b442450488d78e8

同时,该 十六进制编码对应的吞吐量数据可以在这个目录下找到:

 bhive_path/benchmark/throughput

三个文件分别对应haswell架构、ivy bridge、 skylake架构对应的数据。

打开skylake架构的数据(截的windows系统的图) 可以查到该basic block对应的吞吐数据,为0.74秒

通过这样,我们就知道了,特定basic block的信息:

汇编代码为

        .text
        movq    80(%rsp), %rax
        leaq    -24(%rax), %rdi

十六进制编码为

488b442450488d78e8

吞吐量为

0.74秒

uiCA预测该basic block的数据

先进入uiCA根目录
vim tests.asm
将得到的汇编代码粘贴进去
        .text
        movq    80(%rsp), %rax
        leaq    -24(%rax), %rdi

 

vim 保存退出
as test2.asm -o test2.o
 ./uiCA.py test2.o

 

uica给的预测结果是0.56s,

然后同时,bHive给的数值是0.74s

有点差异也正常,同时我上述操作也有一些细节没有指定好 

这样,就完成了一次uiCA模拟和bHive benchmark的数值对比。批量化的话,那就是写点脚本就好了。

 

 

 

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

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

相关文章

SpringCloud Hystrix 断路器

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第五篇&#xff0c;即介绍 Hystrix 断路器。 二、概述 2.1 分布式系统面临的问题 复杂分布式体系结构中…

深入探究Java中的TransferQueue:机制、特性与应用场景

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! TransferQueue是Java并发包中的一个强大工具&#xff0c;专为需要精确的数据传递场景而设计。它实现了BlockingQueue接口&#xf…

Midjourney绘图欣赏系列(十)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

快速构建Vue2/Vue3项目

1.创建一个空文件夹 我创建了一个vue的空文件夹 2.使用vscode打开 3.终端输入npm init -y npm init -y 含义是项目初始化 运行后会出现一个文件&#xff1a;package.json 在运行第四步前&#xff0c;我的项目出现的问题&#xff01;&#xff01;&#xff01; 就是我的文件…

Go——运算符,变量和常量,基本类型

一.运算符 Go语言内置的运算符有&#xff1a; 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 1.1 算术运算符 注意&#xff1a;(自增)和--(自减)在go语言中是单独的语句&#xff0c;并不是运算符。 1.2 关系运算符 1.3 逻辑运算符 1.4 位运算符 位运算符对整数在内存…

【每日八股】Java基础经典面试题2

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;适合在学Java基础的小白…

给多篇文章注音 只要拼音不要汉字 怎么办?快看过来 小编帮你解决

在日常办公和学习中&#xff0c;我们有时需要对Word文档中的文字进行拼音标注&#xff0c;特别是当我们需要教授儿童识字或者制作一些特殊的文档时。然而&#xff0c;很多时候&#xff0c;我们可能只需要拼音而不需要汉字本身。那么&#xff0c;如何在Word中给文字注音&#xf…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 认识Document文档对象

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 Document对象 …

Rust异步编程 Async Await 入门

Rust Async Await 入门 在本文中&#xff0c;我们将仔细研究 Rust 中的异步编程。到目前为止&#xff0c;我对 Rust 异步的体验主要是从 Stack Overflow 复制代码。本文旨在帮助您了解什么是异步代码以及如何有效地使用它。 什么是异步代码&#xff1f; 要了解什么是异步代码…

openGauss使用BenchmarkSQL进行性能测试(上)

一、前言 本文提供openGauss使用BenchmarkSQL进行性能测试的方法和测试数据报告。 BenchmarkSQL&#xff0c;一个JDBC基准测试工具&#xff0c;内嵌了TPC-C测试脚本&#xff0c;支持很多数据库&#xff0c;如PostgreSQL、Oracle和Mysql等。 TPC-C是专门针对联机交易处理系统…

金融知识分享系列之:MACD指标精讲

金融知识分享系列之&#xff1a;MACD指标精讲 一、MACD指标二、指标原理三、MACD指标参考用法四、MACD计算步骤五、MACD分析要素六、根据快线DIF位置判断趋势七、金叉死叉作为多空信号八、快线位置交叉信号九、指标背离判断行情反转十、差离值的正负十一、差离值的变化十二、指…

K 近邻算法

为什么学习KNN算法 KNN是监督学习分类算法&#xff0c;主要解决现实生活中分类问题。 &#xff08;1&#xff09;首先准备数据&#xff0c;可以是视频、音频、文本、图片等等 &#xff08;2&#xff09;抽取所需要的一些列特征&#xff0c;形成特征向量 &#xff08;3&…

iPhone, Android 手机是如何收到推送通知的?

本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 iPhone, Android 手机是如何收到推送通知的&#xff1f; 我们的手机或电脑是如何收到推送通知的&#xff1f; 通常我们可以使用消息解决方案 Firebase 来支持通知推送。下图显示了 Fi…

云数据库Redis配置用户名密码连接

一般情况,生产环境6379端口是禁止对外开放的, 所有用户名密码可以不设置。 但是如果有格鲁需求,需要开放redis公网访问,建议端口限制IP,并设置用户密码 spring中配置 阿里云数据库 云数据库 Redis_缓存数据库_高并发_读写分离-阿里云 添加白名单 申请公网访问地址 配…

2024年共享WiFi项目到底怎么样?

共享WiFi项目是近年来兴起的一种新型商业模式&#xff0c;商家通过在自己店铺升级wifi链接模式使其数字化&#xff0c;让用户能够方便地连接到互联网&#xff0c;提升到店体验&#xff0c;增加线上引流。这一项目的出现&#xff0c;为人们的生活带来了诸多便利&#xff0c;同时…

基于SpringBoot的“实习管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“实习管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 学生注册界面图 后台登录界面图 …

1.Python是什么?——《跟老吕学Python编程》

1.Python是什么&#xff1f;——《跟老吕学Python编程》 Python是一种什么样的语言&#xff1f;Python的优点Python的缺点 Python发展历史Python的起源Python版本发展史 Python的价值学Python可以做什么职业&#xff1f;Python可以做什么应用&#xff1f; Python是一种什么样的…

LoadBalancer负载均衡服务调用

LoadBalancer负载均衡服务调用 1、Ribbon目前也进入维护 ​ Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 ​ 简单的说&#xff0c;Ribbon是Netflix发布的开源项目&#xff0c;主要功能是**提供客户端的软件负载均衡算法和服务调用。**Ribbon…

自动备份文件:守护数据安全新利器

随着信息化时代的到来&#xff0c;文件已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;数据丢失或损坏的风险也随之而来&#xff0c;因此自动备份文件的重要性愈发凸显。自动备份文件不仅可以保护我们的宝贵数据&#xff0c;还可以在意外发生时迅速恢复&#…

Seata源码流程图

1.第一阶段分支事务的注册 流程图地址&#xff1a;https://www.processon.com/view/link/6108de4be401fd6714ba761d 2.第一阶段开启全局事务 流程图地址&#xff1a;https://www.processon.com/view/link/6108de13e0b34d3e35b8e4ef 3.第二阶段全局事务的提交 流程图地址…