【ARM】——Cortex-A57浮点峰值的计算

news/2024/10/18 9:21:06/

arm, cortex-a57

1. 什么是浮点峰值

首先阅读这篇博客了解这个浮点峰值的概念。

浮点峰值那些事儿

2. cortex-a57浮点峰值的计算

这里采用:https://github.com/Mengjintao/gflops_benchmark的code进行测试。

这里其实有几个疑问:

  • 为什么要在一个循环里写几条命令
  • 硬件的浮点峰值怎么计算呢?
  • 跑起来只用了单核,那多核的flops又怎么计算呢?

2.1 为什么要在一个循环里写几条命令

这是单条指令的延迟有关,可以下载Cortex-A57 Software Optimization Guide文档,其中有每条指令的延时。

在这里插入图片描述
可以看到FMLA指令的延时是9/10。这里我们改变每个循环中FMLA指令的条数来实际测试一下。注意改变#define OP_FLOATS (88)的值。OP_FLOATS = 2*4*n

; // func2.S 每次循环做 40 次乘法,每条指令处理 4 个 float,共 10 条。
.text
.align 5
.global func2func2:
.loop2:fmla v0.4s, v0.4s, v0.4sfmla v1.4s, v1.4s, v1.4sfmla v2.4s, v2.4s, v2.4sfmla v3.4s, v3.4s, v3.4s// fmla v4.4s, v4.4s, v4.4s// fmla v5.4s, v5.4s, v5.4s// fmla v6.4s, v6.4s, v6.4s// fmla v7.4s, v7.4s, v7.4s// fmla v8.4s, v8.4s, v8.4s// fmla v9.4s, v9.4s, v9.4s// fmla v10.4s, v10.4s, v10.4s// fmla v11.4s, v11.4s, v11.4ssubs x0, x0, #1bne .loop2ret

测试结果:

硬件架构浮点峰值(GFlops)备注
Jetson NanoCortex-A57,armv8a11.39
Jetson tx2Cortex-A57,armv8a16.215759
Jetson tx2Cortex-A57,armv8a6.4794
Jetson tx2Cortex-A57,armv8a12.918
Jetson tx2Cortex-A57,armv8a14.4689
Jetson tx2Cortex-A57,armv8a16.18610
Jetson tx2Cortex-A57,armv8a16.19711

上面的备注就是单次循环中包含的fmla指令的条数,实测大概a57上FMLA的延时大概是10

2.2 硬件的浮点峰值怎么计算呢?

按浮点峰值那些事儿的介绍,这里我们是用的FMLA测的。一条FMLA指令针对float32的计算量为:4个float32数 ×( 1次乘法 + 1次加法)× cpu的频率 × cpu的核心数。

前面的程序实测的时候,只有一个cpu核心跑起来了。所以这里我们也只计算一个核心的理论峰值。
在这里插入图片描述
cpu的主频可以通过lscpu命令来看,在tx2上的执行结果:

Architecture:        aarch64
Byte Order:          Little Endian
CPU(s):              6
On-line CPU(s) list: 0-5
Thread(s) per core:  1
Core(s) per socket:  3
Socket(s):           2
Vendor ID:           ARM
Model:               3
Model name:          Cortex-A57
Stepping:            r1p3
CPU max MHz:         2035.2000
CPU min MHz:         345.6000
BogoMIPS:            62.50
L1d cache:           32K
L1i cache:           48K
L2 cache:            2048K
Flags:               fp asimd evtstrm aes pmull sha1 sha2 crc32

可以看到单核的最高主频为:2.0352GHZ

单核理论峰值 = 4 × 2 × 2.0352GHZ = 16.2816Gflops,实测和这都相差不大了。

2.3 如何做多核的flops

暂时还没有看到有人做。。。


http://www.ppmy.cn/news/201943.html

相关文章

Qt6 C++基础入门1 定时器与QTimer

定时器 定时器图片流水灯案例 实现效果:构建一个界面,点击开始按钮轮流播放文件夹下图片,点击停止按钮停止播放 构建页面,上部是一个没有内容的 label 下面是开始和暂停按钮,各自的名称分别为 startBtn 和 stopBtn 先保…

oppoa57升级android版本,OPPO A57刷机教程 OPPO A57升级更新系统包

下面整理一下咱们的OPPO A57手机的卡刷教程,这个卡刷教程也是针对的rom包的,之前有机友下载了的rom包,可是又不知道如何的操作,所以在这里整理了一个详细的卡刷刷机的教程供大家参考,不过今天在这里说的卡刷教程只是的…

qemu运行linux5.5.8,qemu模拟Cortex-A57运行Linux4.5.1

主机运行操作系统,deepin15.1.1 http://www.deepin.org/ 1.安装qemu sudo apt-get install qemu-system-arm 2.安装arm编译工具 sudo apt-get install gcc-aarch64-linux-gnu 3.下载Linux内核 从https://www.kernel.org/下载,并解压缩 修改Makefile&…

oppo a57刷机成功教程

(注意:此贴转载至http://bbs.7to.cn/forum.php?modviewthread&tid315939 ) 手机关机-->下载MiFlash工具和Recovery工具包-->手机关机状态同时按住音量上下键插上数据线-->使用MIFlash刷奇兔Recovery-->刷入完成后,手机不要开机,长按电源…

arm cortex a57 linux,ARM Cortex-A57处理器详细介绍-控制器/处理器-与非网

Cortex-A57处理器简介 The Cortex-A57 processor is ARM’s highest performing processor, designed to further extend the capabilities of future mobile and enterprise computing applications including compute intensive 64-bit applications such as high end comput…

Vue3 + ElementPlus实战学习——模拟简单的联系人列表管理后台

文章目录 📋前言🎯demo 介绍🎯功能分析🧩数据的展示与分页功能🧩编辑功能🧩删除功能 🎯部分代码分析🎯完整代码📝最后 📋前言 这篇文章介绍一下基于 Vue3 和…

爱普生6轴机械手原点调整 RC+7,0

爱普生机械手如撞机或者长时间未换电池导致电池没电报警则需要重新校准原点。 先把机械手回到原点,就是6个轴密匙可以在槽内来回滑动。 输入指令 查看结果

如何清零爱普生调整程序和重置工具– L365,L360,L310,L220,L130

爱普生调整程序是解决与爱普生打印机有关的所有问题的解决方案。爱普生打印机最常见的问题之一是废墨垫计数器溢出错误。在此问题中,出现错误消息“ 打印机的墨水垫已到期。每次尝试打印出某些东西时,请在计算机屏幕上显示“ 请联系Epson支持 ”。在此博…