当前位置: 首页 > news >正文

OK527N-C开发板-简单的性能测试

OK527N-C

CoreMark

获取CoreMark源码

首先使用Git克隆仓库:

git clone https://github.com/eembc/coremark.git
cd coremark

修改Makefile

首先复制文件夹

cp -rf posix ok527

之后修改ok527文件夹下的core_portme.mak文件,将CC修改如下

CC = aarch64-none-linux-gnu-gcc

交叉编译

make PORT_DIR=ok527

编译结束后会报错,但是已经生成了交叉编译的coremark.exe可执行程序。这是由于架构不同,该交叉编译的程序并不能在电脑上直接运行。
在这里插入图片描述

将文件夹下的coremark.exe复制到板卡上,执行

chmod 777 coremark.exe
./coremark.exe

在这里插入图片描述

多核

make PORT_DIR=ok527 XCFLAGS="-DMULTITHREAD=4 -DUSE_FORK -pthread"

在这里插入图片描述

Dhrystone(单核性能测试工具)

首先下载源码(http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz)并解压

tar -vxf classic_benchmarks.tar.gz

之后新建一个编译文件夹,复制相关源码到此,并新建Makefile文件

cd classic_benchmarks
mkdir ./build
cd ./buildcp -rf ../source_code/common_64bit/cpuidc64.c ./
cp -rf ../source_code/common_64bit/cpuidh.h ./
cp -rf ../source_code/dhrystone2/dhry.h ./
cp -rf ../source_code/dhrystone2/dhry_1.c ./
cp -rf ../source_code/dhrystone2/dhry_2.c ./
touch Makefile

将如下内容复制到Makefile文件中并保存

CC=aarch64-none-linux-gnu-gccmain:*.o${CC} -o dhry2_64 *.o${CC} -O2 -o dhry22_64 *.o${CC} -O3 -o dhry23_64 *.o*.o:*.c${CC} -g -c *.cclean:rm -f *.o dhry2_64 dhry22_64 dhry23_64

此外由于source_code/common_64bit/cpuida64.asm代码并不适配aarch64-none-linux-gnu-as汇编器,所以我们在复制的时候没有复制此文件,并且需要注释掉 cpuidc64.c中的_cpuida() 、_calculateMHz() 两个汇编函数。
最后执行编译

make clean
make

在这里插入图片描述

生成的三个可执行文件分别为dhry2_64(无优化等级)、dhry22_64(优化等级2)、dhry23_64(优化等级3)。这里我们将dhry2_64复制到板卡中并运行,得到的结果如下
在这里插入图片描述

Stream

STREAM是一种内存带宽测试工具,主要用于评估计算机系统的内存子系统性能,特别是其读写速度和带宽。它通过一系列简单但计算密集型的操作来模拟对连续内存区域的访问,以此来测量系统的实际内存带宽性能。
STREAM测试主要提供以下四种指标:

  1. Copy (复制):测量一个数组中的数据复制到另一个数组的速度。这项测试代表了简单的数据移动操作,如内存拷贝。
  2. Scale (尺度变换):测量将数组中的每个元素乘以一个常数的速度。这代表了需要读取、修改并重新写回内存的数据操作。
  3. Add (矢量求和):测量将两个数组的相应元素相加,并将结果存储到第三个数组中的速度。这代表了常见的向量加法操作。
  4. Triad (复合矢量求和):测量将一个数组的元素与另一个数组的元素相加,然后将结果乘以一个常数,并存储到第三个数组中的速度。这是最复杂的一项测试,因为它涉及读取、计算和写回三个数组的操作。

首先下载源码(http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz),并在同一目录下新建Makefile,并将以下内容复制进去

CC=aarch64-none-linux-gnu-gccmain:${CC} stream.c -o streamclean:rm -f *.o stream

编译执行后得到可执行文件stream,将其复制到板卡上并执行
在这里插入图片描述

此外,在编译程序时还可以启用-fopenmp选项,它会告诉编译器生成能利用多线程的代码,从而可以并行地执行内存读取和写入操作,从而更好地模拟真实应用的负载情况,因为现代应用程序往往利用了多核架构的并行处理能力。因此,启用-fopenmp可以得到更接近实际工作负载下的内存带宽测量值。启用-fopenmp选项后的测试结果如下:
在这里插入图片描述

可以看到板卡的内存性能也很不错。
之后我们修改Makefile来查看不同编译优化等级的影响,

CC=aarch64-none-linux-gnu-gccmain:${CC} stream.c -fopenmp -o stream${CC} stream.c -fopenmp -O1 -o stream1${CC} stream.c -fopenmp -O2 -o stream2${CC} stream.c -fopenmp -O3 -o stream3clean:rm -f *.o stream

交叉编译后分别得到无优化、优化等级1、优化等级2、优化等级3的程序,将其下载到板卡中进行测试。

  1. 无优化
    在这里插入图片描述

  2. 优化等级1
    在这里插入图片描述

  3. 优化等级2
    在这里插入图片描述

  4. 优化等级3
    在这里插入图片描述

可以看到当为优化等级1时效果最好,O2和O3都会导致部分指标有一定的衰减。

ELFBoard

下面以搭载i.MX6ULL芯片的ELFBoard为例进行单核性能比对测试。

coremark

在这里插入图片描述

Dhrystone

在这里插入图片描述

可以看到在单核性能上T527N就比i.MX6ULL大约高了三倍。

相关文章:

  • Python容器 之 字典--字典的常用操作方法
  • 昇思MindSpore学习笔记2--快速入门
  • 中小企业如何防止被查盗
  • 秋招Java后端开发冲刺——并发篇1(线程与进程、多线程)
  • 半年支出8700万美元,财库预算只够再撑2年,波卡之后想咋过?
  • Linux kernel 与 设备树
  • Kubernetes (K8s) 底层原理
  • 一个强大的分布式锁框架——Lock4j
  • 定位线上同步锁仍然重复扣费的Bug定位及Redis分布式锁解决方案
  • JDK 为什么需要配置环境变量
  • 单片机IO
  • 项目实战--Spring Boot + Minio文件切片上传下载
  • PyTorch(六)优化模型参数
  • 2.2.5 C#中显示控件BDPictureBox 的实现----ROI交互续2
  • Golang中defer和return顺序
  • [译]如何构建服务器端web组件,为何要构建?
  • Akka系列(七):Actor持久化之Akka persistence
  • Apache Pulsar 2.1 重磅发布
  • centos安装java运行环境jdk+tomcat
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript对象详解
  • js学习笔记
  • magento2项目上线注意事项
  • MD5加密原理解析及OC版原理实现
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vim 折腾记
  • 对象管理器(defineProperty)学习笔记
  • 服务器从安装到部署全过程(二)
  • 基于游标的分页接口实现
  • 浏览器缓存机制分析
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何在GitHub上创建个人博客
  • 入门到放弃node系列之Hello Word篇
  • 软件开发学习的5大技巧,你知道吗?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 说说动画卡顿的解决方案
  • 我与Jetbrains的这些年
  •  一套莫尔斯电报听写、翻译系统
  • 阿里云重庆大学大数据训练营落地分享
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​​​【收录 Hello 算法】9.4 小结
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $.ajax中的eval及dataType
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)http协议
  • (转)ORM
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net 7 上传文件踩坑