单片机/MCU论坛
直播中

jf_1137202360

9年用户 1528经验值
擅长:嵌入式技术
私信 关注
[文章]

【PHYTEC开发板试用体验】phyBOARD-Pollux i.MX 8M Plus之跑分

前言
一般拿到手机或者电脑之后我们会跑个分,拿到开发板我们同样也可以跑跑分,从整数性能,浮点性能,数值计算等方面360°无死角跑分,看看打败了全网多少网友。
准备工作
设置虚拟机共享目录
图片1.png
cp dhrystone2 dhrystone2o3 /mnt/share
即可在windows下的E:virtualboxshare目录下看到复制过来的文件。
图片2.png
假设程序复制到了windows下的e:/
lcd e:/
cd /home/root
put livermore windows下程序导入到开发板的/home/root目录下
chmod +x livermore
./livermore执行
图片3.png
能按照https://bbs.elecfans.com/jishu_2287978_1_1.html介绍的进行应用开发
下载代码
wget http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz
tar -xvf classic_benchmarks.tar.gz
整数运算性能测试Dhrystone
Dhrystone是于1984年由Reinhold P. Weicker设计的一套综合的基准程序,该程序用来测试CPU(整数)计算性能。其输出结果为每秒钟运行Dhrystone的次数,即每秒钟迭代主循环的次数。
修改代码
代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
//getSecs()
local_time()
start_time()
end_time()
getDetails()
ldhrystone2/dhry_2.c
算法无需修改
ldhrystone2/dhry_1.c
main按需修改
l common_64bit/cpuidh.h复制到dhrystone2
l common_64bit/cpuidc64.c复制到dhrystone2
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
l 修改dhry_1.c
因为没有实现getDetails,注释掉如下代码.
#if 0
    getDetails();
    for (i=1; i<10; i++)
    {
        printf("%sn", configdata);
    }
    printf("n");
    fprintf (Ap, " #####################################################nn");                     
    for (i=1; i<10; i++)
    {
        fprintf(Ap, "%s n", configdata);
    }
    fprintf (Ap, "n");
    printf("##########################################n");
#endif
如下地方语法错误
   #endif                 "Register option      Selected."改为
   #endif         //        "Register option      Selected."
前面添加接口函数申明
  void local_time();
  void start_time();
  void end_time();
两处 printf ("  Ptr_Comp:       *    %dn", (int) Ptr_Glob->Ptr_Comp);改为
printf ("  Ptr_Comp:       *    %pn", Ptr_Glob->Ptr_Comp);
编译运行
$CC *.c -o dhrystone2o3 -O1
$CC *.c -o dhrystone2o3 -O3
将程序导入到开发板运行
图片4.png
图片5.png
测试结果会添加到文件Dhry.txt
图片6.png
测试结果
-O1
-O3
DMIPS
3078.98
4452.61
结果对比
http://www.roylongbottom.org.uk/dhrystone%20results.htm
可以看到和Athlon 64 接近。
图片7.png
浮点运算性能测试whetstone修改代码
代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
//getSecs()
local_time()
start_time()
end_time()
getDetails()
whetstone/whets.c
main按需修改
l common_64bit/cpuidh.h复制到whetstone
l common_64bit/cpuidc64.c复制到whetstone
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
l Whets.c
注释掉以下代码
#if 0
    getDetails();
    for (i=1; i<10; i++)
    {
        printf("%sn", configdata);
    }
    local_time();
    printf("n");
    printf("##########################################n");
    printf("%s Precision C Whetstone Benchmark %s, %sn", Precision, opt, timedaa
y);
#endif
前面添加接口函数申明
  void local_time();
  void start_time();
  void end_time();
#include "cpuidh.h"后包含math.h
#include "cpuidh.h"
#include
        fprintf (outfile, "            %9.3f %9.3fn",
             loop_mops[section], loop_time[section], results[section]);
改为
        fprintf (outfile, "            %9.3f %9.3f %9.3fn",
             loop_mops[section], loop_time[section], results[section]);
编译运行
$CC *.c -o whetstone -lm -O1
$CC *.c -o whetstoneo3 -lm -O3
将程序导入到开发板运行
图片8.png
图片9.png
测试结果会记录到文件 whets.txt
图片10.png
测试结果
-O1
-O3
MWIPS
1369.125
1931.551
结果对比
http://www.roylongbottom.org.uk/whetstone%20results.htm
看到和Core 2 Duo 1 CP相当
图片11.png
Linpack浮点
  Linpack是国际上使用最广泛的测试高性能计算机系统浮点性能的基准测试。通过对高性能计算机采用高斯消元法求解一元 N次稠密线性代数方程组的测试,评价高性能计算机的浮点计算性能。Linpack的结果按每秒浮点运算次数(flops)表示。
修改代码
代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
//getSecs()
local_time()
start_time()
end_time()
getDetails()
linpack/linpack.c
main按需修改
l common_64bit/cpuidh.h复制到linpack
l common_64bit/cpuidc64.c复制到linpack
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
l linpack.c
注释掉以下代码
#if 0
        getDetails();
        for (i=1; i<10; i++)
        {
            printf("%sn", configdata);
        }
        printf("n");
        printf("##########################################n");
#endif
前面添加接口函数申明
  void local_time();
  void start_time();
  void end_time();
#include "cpuidh.h"后包含string.h
#include "cpuidh.h"
#include
main原型函数添加返回类型int
编译运行
$CC *.c -o linpack -O1
$CC *.c -o linpacko3 -O3
将程序导入到开发板运行
图片12.png
图片13.png
图片14.png
图片15.png

测试结果会记录到文件 Linpack.txt
图片16.png
测试结果
-O1
-O3
MFLOPS
240.57
460.94
结果对比
http://www.roylongbottom.org.uk/linpack%20results.htm
Pentium 4 相当
图片17.png
livermore数值计算修改代码
代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
//getSecs()
local_time()
start_time()
end_time()
getDetails()
livermore_loops/lloops.c
main按需修改
l common_64bit/cpuidh.h复制到livermore_loops
l common_64bit/cpuidc64.c复制到livermore_loops
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
l lloops.c
注释掉以下代码
#if 0
    getDetails();
    for (i=1; i<10; i++)
    {
        printf("%sn", configdata);
    }
    printf("n");
    fprintf (outfile, " #####################################################n\
n");
    for (i=1; i<10; i++)
    {
        fprintf(outfile, "%s n", configdata);
    }
    fprintf (outfile, "n");
#endif
前面添加接口函数申明
  void local_time();
  void start_time();
  void end_time();
#include "cpuidh.h"后包含string.h
#include "cpuidh.h"
#include
main原型函数添加返回类型int
编译运行
$CC *.c -o livermore -lm
$CC *.c -o livermoreo3 -lm -O3
将程序导入到开发板运行
图片18.png
测试结果会记录到文件LLloops.txt
测试结果
-O1
-O3
MFLOPS
174.5
/
结果对比
http://www.roylongbottom.org.uk/livermore%20loops%20results.htm
Celeron A相当
图片19.png

更多回帖

×
20
完善资料,
赚取积分