【赛昉科技昉·星光RISC-V单板计算机试用体验】性能测试之花式360°无死角跑分

描述

本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2287285_1_1.html


前言



  赛昉科技昉·星光RISC-V单板计算机,是一款高性价比,可运行桌面Linux64RISC-V单板计算机。使用的是JH7100 多核RISC-V 64CPU
一般拿到手机或者电脑之后我们会跑个分,拿到开发板我们同样也可以跑跑分,从整数性能,浮点性能,基准测试等方面360°无死角跑分,看看打败了全网多少网友。
 
准备工作

能按照https://bbs.elecfans.com/jishu_2286643_1_1.html介绍的进行应用开发
 
下载代码
http://www.roylongbottom.org.uk/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按需修改
 
 
 
 
 
common_64bit/cpuidh.h复制到dhrystone2
common_64bit/cpuidc64.c复制到dhrystone2
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
修改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);

编译运行

gcc *.c -o test
./test
 
打印如下
 
RISC-V
 

提高优化等级
gcc *.c -o test -O3
./test
 
打印如下
 
RISC-V
 

测试结果会添加到文件Dhry.txt
 
RISC-V
 

测试结果

 
默认
-O3
DMIPS
627.69
1964.01
 
 
 
 
结果对比

http://www.roylongbottom.org.uk/dhrystone%20results.htm
可以看到和Atom N455 32b接近。
 
RISC-V
 

浮点运算性能测试whetstone

修改代码


代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
 
//getSecs()
local_time()
start_time()
end_time()
getDetails()
 
 
 
whetstone/whets.c
main按需修改
 
 
 
 
common_64bit/cpuidh.h复制到whetstone
common_64bit/cpuidc64.c复制到whetstone
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
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

编译运行

gcc *.c -o test -lm
./test 打印如下
 
RISC-V
 

提高优化等级
gcc *.c -o test -lm -O3
./test
 
打印如下
 
RISC-V
 

测试结果会记录到文件 whets.txt
 
RISC-V
 

测试结果

 
默认
-O3
MWIPS
347.498
833.258
 
 
 

结果对比

http://www.roylongbottom.org.uk/whetstone%20results.htm
 
看到和Pentium III相当
 
RISC-V
 
 
Linpack浮点

  Linpack是国际上使用最广泛的测试高性能计算机系统浮点性能的基准测试。通过对高性能计算机采用高斯消元法求解一元 N次稠密线性代数方程组的测试,评价高性能计算机的浮点计算性能。Linpack的结果按每秒浮点运算次数(flops)表示。

修改代码

代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
 
//getSecs()
local_time()
start_time()
end_time()
getDetails()
 
 
 
linpack/linpack.c
main按需修改
 
 
 
 
common_64bit/cpuidh.h复制到linpack
common_64bit/cpuidc64.c复制到linpack
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
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
 
编译运行

gcc *.c -o test
./test 打印如下
 
RISC-V
RISC-V
 
 
提高优化等级
gcc *.c -o test -O3
./test
 
打印如下
 
RISC-V
RISC-V
 
 
测试结果会记录到文件 Linpack.txt
 
RISC-V
 

测试结果

 
默认
-O3
MFLOPS
40.19
123.77
 
 
 
 
结果对比
 
http://www.roylongbottom.org.uk/linpack%20results.htm
Celeron A相当
 
RISC-V
 

 
livermore数值计算

修改代码


代码结构
代码位于source_code文件夹下
common_64bit/
common_32bit
CPU相关信息获取和时间测量接口
 
//getSecs()
local_time()
start_time()
end_time()
getDetails()
 
 
 
livermore_loops/lloops.c
main按需修改
 
 
 
 
common_64bit/cpuidh.h复制到livermore_loops
common_64bit/cpuidc64.c复制到livermore_loops
1.注释掉int getDetails()函数,我们这里不获取CPU对应的信息。
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
 
编译运行

gcc *.c -o test -lm
./test 打印如下
 
RISC-V
 
测试结果会记录到文件LLloops.txt
 
测试结果

 
默认
-O3
MFLOPS
82.47
 
 
 
 

结果对比
 
http://www.roylongbottom.org.uk/livermore%20loops%20results.htm
Pentium Pro相当
 
RISC-V
 
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分