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大约高了三倍。

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

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

相关文章

魔行观察-探鱼·鲜青椒爽麻烤鱼-开关店监测-时间段:2013年1月 至 2024年6月

今日监测对象:探鱼鲜青椒爽麻烤鱼,监测时间段:2011年1月 至 2024年6月 本文用到数据源免费获取地址 魔行观察http://www.wmomo.com/ 品牌介绍: 探鱼建立了产、供、销一体全链条式供应链体系,并在低纬珠江口特设潮汐…

大公司图纸管理的未来趋势

随着科技的不断发展,大公司图纸管理正朝着更加智能化、自动化和协同化的方向发展。以下是大公司图纸管理的未来趋势预测。 1. 智能化管理 利用人工智能和机器学习技术,实现图纸的自动分类、标注和检索。通过智能分析算法,预测图纸的使用趋势…

NSSCTF-Web题目19(数据库注入、文件上传、php非法传参)

目录 [LitCTF 2023]这是什么?SQL !注一下 ! 1、题目 2、知识点 3、思路 [SWPUCTF 2023 秋季新生赛]Pingpingping 4、题目 5、知识点 6、思路 [LitCTF 2023]这是什么?SQL !注一下 ! 1、题目 2、知识…

基于Vue的MOBA类游戏攻略分享平台

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java技术、SpringBoot框架、B/S模式、Vue.js 工具:MyEclipse、MySQL 系统展示 首页 用…

lstrip()方法——截掉字符串左边的空格或指定的字符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 lstrip()方法用于截掉字符串左边的空格或指定的字符。lstrip()方法的语法格式如下: str.lstrip([chars]) 参数说明&#xff…

【算法】Merge Sort 合并排序

Merge Sort概述 分而治之算法 递归地将问题分解为多个子问题,直到它们变得简单易解 将解决方案组合起来,解决原有问题 O(n*log(n))运行时间 基于比较的算法的最佳运行时间 一般原则 合并排序: 1. 将数…

【瞎折腾日常】服务器的cpu飙高到1000%了怎么破

一、故障起因 起因是用户反馈系统很卡,我登录普罗米修斯一看,发现docker部署得集群下的一个java应用服务器cpu爆了,直接冲到了1000%以上了,接着就是各种接口超时报警等,赶紧打开对应的服务器查看进程情况,这会使用jstack和top命令定位哪个线程占用的cpu比较大,定位代码问…

椭流线法设计配光器

椭流线法设计配光器 一、设计原理 1、边光原理 边光原理是非成像光学中的一个基础原理,其内容可以表述为:来自光源边缘的光线经过若干有序正则光学曲面后依然落在投射光斑的边缘,而来自光源内部的光线也将落在光斑内部。这里的边缘包含两层…

机械拆装-基于Unity-总体设计

前言 在工业设计和制造领域,零部件的拆装技术是一个重要的应用场景,比如我们在工程训练课程中经历的摩托车发动机拆装课程,是机械类学生的必修课程。虚拟拆装系统模拟和仿真了模型的拆装过程,虽然SolidWorks等机械设计软件能够解决…

性能调优 性能监控

1.影响性能考虑点包括: 数据库、应用程序、中间件(tomcat、nginx)、网络和操作系统等方面。 首先考虑自己的应用属于 CPU密集型 还是 IO密集型 cpu密集型 计算,排序,分组查询,各种算法 IO密集型 网络传输,磁盘读…

大创项目推荐 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

zabbix报警机制,主动监控

zabbix思路流程 主动监控 默认zabbix使用的是被动监控,主被动监控都是针对被监控主机而言的。被动监控:Server向Agent发起请求,索取监控数据。此种模式常用主动监控:Agent向Server发起连接,向Server汇报 配置web2使用…

STM32智能家居掌上屏实战:从WiFi连接到MQTT通信,打造你的家庭物联网网关

摘要: 本文深入探讨一种基于STM32的智能家居掌上屏设计方案,详细阐述其硬件架构、软件设计以及通信协议等关键技术细节。该方案利用WiFi构建局域网,实现与各类传感器、执行器的便捷交互,并通过TFT彩屏提供直观的控制和数据展示,旨…

[数据库原理]事务

如有错误,欢迎指正!!! 期末考了冲突可串行化

动态顺序表实现通讯录

系列文章目录 【数据结构】顺序表 文章目录 系列文章目录前言一、通讯录的功能要求二、通讯录的代码实现1. 新建文件2. 创建通讯录的结构体3. 对顺序表文件进行修改4. 通讯录具体功能实现4.1. 通讯录的初始化和销毁4.2. 增加联系人信息(尾插)4.3. 查找指…

SpringBoot + 虚拟线程,性能炸裂!

一、什么是虚拟线程 虚拟线程是Java19开始增加的一个特性,和Golang的携程类似,一个其它语言早就提供的、且如此实用且好用的功能,作为一个Java开发者,早就已经望眼欲穿了。 二、虚拟线程和普通线程的区别 “虚拟”线程&#xf…

一些硬件知识(十二)

X电容是接在火线和零线之间,Y电容是接在火零线和地之间。X电容滤除差模干扰,Y电容滤除共模干扰: 高频干扰信号经过X电容后幅度没有变化,相位相差180度: DW01电池管理芯片: M1、M2:这两个为N沟道…

【关于C/C++中的scanf不能使用问题】

方法1:scanf_s 方法2:看见后面的日志了吗 CRT……?在第一行加上#define 日志 方法3:#pragma warning(disable:4996) 4996是我们的报错序号

开发笔记:vue3+ts+vant 卡片数据分页,下拉加载,卡片左滑可删除

效果: 实现 使用vantui组件 van-swipe-cell van-card (商品卡片) 核心代码 const currentPage ref(1) const pageSize ref(4) const totalSize ref(10) const loading ref(false) const finished ref(false) const refreshing ref(…

Git新仓库创建流程

平时需要创建新仓库,老要去查代码特别烦,在此写下流程方便备用. 1.创建新的云仓库 无论使用GitHub还是Gitee,首先要创建一个云仓库,这里就直接用国内的gitee做演示了,githup老挂加速器太烦,偷个懒. 我这里创建的是一个空仓库&…