0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【試用報(bào)告】龍芯先鋒板:CPU性能測(cè)試—CoreMark和計(jì)算質(zhì)數(shù)

電子發(fā)燒友論壇 ? 來源:未知 ? 2023-02-21 16:35 ? 次閱讀

一、CoreMark簡介

什么是CoreMark?

來自CoreMark首頁的解釋是:

CoreMark is a simple, yet sophisticated benchmark that is designed specifically to test the functionality of a processor core. Running CoreMark produces a single-number score allowing users to make quick comparisons between processors.

翻譯一下就是:

CoreMark是一個(gè)簡單而又精密的基準(zhǔn)測(cè)試程序,是專門為測(cè)試處理器核功能而設(shè)計(jì)的。運(yùn)行CoreMark會(huì)產(chǎn)生一個(gè)“單個(gè)數(shù)字”的分?jǐn)?shù),(從而)允許用戶在(不同)CPU之間進(jìn)行快速比較。

簡單來說,就是一個(gè)測(cè)試CPU性能的程序,類似PC上的Cinebench、CPU-Z之類的CPU性能測(cè)試工具。

了解了CoreMark是什么之后,接下來我們嘗試在龍芯2K0500先鋒板上跑一下CoreMark,看看分?jǐn)?shù)是多少。

二、在龍芯2K0500上運(yùn)行CoreMark

2.1 下載CoreMark源碼

Linux編譯主機(jī)上,執(zhí)行如下命令,將CoreMark源碼下載到本地:

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

(左右移動(dòng)查看全部內(nèi)容)


	

下載完成后,可以看到有這些文件和目錄:

cf658466-b1c1-11ed-bfe3-dac502259ad0.png

2.2 交叉編譯CoreMark

接著編譯CoreMark,這里假設(shè)你已經(jīng)正確設(shè)置了龍芯交叉編譯工具鏈,也就是可以直接運(yùn)行l(wèi)oongarch64-linux-gnu-gcc命令。

在Linux編譯主機(jī)上,執(zhí)行如下命令:

cd coremark
make CC=loongarch64-linux-gnu-gcc link

(左右移動(dòng)查看全部內(nèi)容)


	

其中:

  • CC用于指定編譯器,這里指定的是龍芯GNU交叉編譯器(loongarch64-linux-gnu-gcc);

  • link是make命令的構(gòu)建目標(biāo),具體定義在Makefile文件中,link是只鏈接不運(yùn)行;

編譯完成后,可以看到生成了coremark.exe:

cf7e2d40-b1c1-11ed-bfe3-dac502259ad0.png

2.3 運(yùn)行CoreMark

通過FTP或U盤,將coremark.exe拷貝到龍芯2K0500先鋒板上,使用如下命令運(yùn)行coremark.exe:

# 添加可執(zhí)行權(quán)限
chmod +x coremark.exe


# 運(yùn)行
./coremark.exe

	

運(yùn)行結(jié)束后,輸出如下:

cfa5990c-b1c1-11ed-bfe3-dac502259ad0.png

可以看到,龍芯2K0500上CoreMark跑分為2213.205459分。

三、和樹莓派3B+上CoreMark結(jié)果對(duì)比

我這里測(cè)試使用的樹莓派3B+開發(fā)板,系統(tǒng)版本信息是:

cfc44c9e-b1c1-11ed-bfe3-dac502259ad0.png

由于樹莓派3B+上運(yùn)行的是Debian系統(tǒng),有完整的編譯工具鏈。因此,在樹莓派3B+上,我們可以直接在開發(fā)板上編譯源碼。

在樹莓派3B+上運(yùn)行CoreMark之前,也需要下載CoreMark源碼,和前面類似:

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

(左右移動(dòng)查看全部內(nèi)容)


	

不過這次我們直接將CoreMark源碼下載到了樹莓派上。

3.1 編譯CoreMark

樹莓派上編譯CoreMark之前,需要先安裝編譯構(gòu)建工具鏈,如果還沒有的話,可以使用如下命令:

sudo apt install build-essential

(左右移動(dòng)查看全部內(nèi)容)

PS:如果已經(jīng)有g(shù)cc、make命令,則可以跳過此步驟。

使用如下命令,編譯CoreMark源碼:

cd coremark
make link

	

3.2 運(yùn)行CoreMark

使用如下命令運(yùn)行coremark.exe:

./coremark.exe

(左右移動(dòng)查看全部內(nèi)容)

PS:這里由于我們是直接在樹莓派3B+開發(fā)板上編譯的CoreMark,所以直接運(yùn)行即可。

運(yùn)行結(jié)束后,輸出如下:

cff13380-b1c1-11ed-bfe3-dac502259ad0.png

可以看到,樹莓派3B+上CoreMark跑分為1914.486280。

龍芯2K0500和樹莓派3B+的CoreMark跑分對(duì)比:

龍芯2K0500 樹莓派3B+
跑分 2213.205459 1914.486280

可以看到,龍芯2K0500上的CoreMark跑分高于樹莓派3B+。

3.3 其他編譯選項(xiàng)跑分對(duì)比

查看CoreMark的Makefile和相關(guān)源碼,我們可以知道,通過編譯時(shí)添加XCFLAGS參數(shù),可以指定CoreMark的編譯參數(shù)。

下面是幾組不同XCFLAGS參數(shù)下,龍芯2K0500和樹莓派3B+的CoreMark跑分:

XCFLAGS 龍芯2K0500 樹莓派3B+
2213.205459 1914.486280
"-DPERFORMANCE_RUN=1" 2213.532059 1916.198263
"-DPERFORMANCE_RUN=1 MEM_METHOD=MEM_STACK" 2218.278616 1915.219612
"-DPERFORMANCE_RUN=1 MEM_METHOD=MEM_STATIC" 2216.475803 1916.687963

可以看到,幾種不同XCFLAGS參數(shù)條件下,龍芯2K0500上的CoreMark跑分都要高于樹莓派3B+。

添加XFLAGS參數(shù)后,樹莓派上的編譯命令為(以表格最后一行參數(shù)為例):

make XCFLAGS="-DPERFORMANCE_RUN=1 -DMEM_METHOD=MEM_STATIC" link

(左右移動(dòng)查看全部內(nèi)容)


	

響應(yīng)的,Linux編譯服務(wù)器上,交叉編譯命令為:

make CC=loongarch64-linux-gnu-gcc XCFLAGS="-DPERFORMANCE_RUN=1 -DMEM_METHOD=MEM_STATIC" link

(左右移動(dòng)查看全部內(nèi)容)


	

3.4 CoreMark的主要算法

CoreMark項(xiàng)目README的Key Algorithms描述了CoreMark主要用到了那些算法:

  • 鏈表(主要是指針操作)

  • 矩陣乘法(主要是乘法和加法運(yùn)算)

  • 狀態(tài)機(jī)(主要是switch-case操作)

說明在這幾種計(jì)算場(chǎng)景下,龍芯2K0500的速度都是比樹莓派3B+要快的。

四、額外的CPU測(cè)試

接下來我們看看另外一種場(chǎng)景下的測(cè)試結(jié)果。

我們知道,生成一個(gè)較大的大質(zhì)數(shù),或者判斷一個(gè)大整數(shù)是否為質(zhì)數(shù)是比較復(fù)雜的。

所以,這里我們準(zhǔn)備用生成質(zhì)數(shù)在兩個(gè)開發(fā)板上再次進(jìn)行測(cè)試。

4.1 第n個(gè)質(zhì)數(shù)

我們使用如下C程序代碼,計(jì)算第n個(gè)質(zhì)數(shù):

#include 
#include 
#include 
#include 
#include 
#include 
#include 


// 判斷n是否為質(zhì)數(shù)
bool isprime(uint64_t n)
{
    assert(n > 0);


    if (n == 2) return true;
    if ((n % 2) == 0) return false;


    for (uint64_t i = 3, up = n / 2; i < up; i += 2) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}


// 計(jì)算第n個(gè)質(zhì)數(shù),例如:1 => 2, 2 => 3, 3 => 5
uint64_t prime(int n)
{
    assert(n > 0);


    if (n == 1) return 2;


    int count = 1;
    for (uint64_t i = 3; i < UINT64_MAX; i += 2) {
        if (isprime(i)) {
            if (++count == n) {
                return i;
            }
        }
    }
    return 0;
}


int main(int argc, char* argv[])
{
    int n = argc > 1 ? atoi(argv[1]) : 10;


    clock_t start = clock();
    uint64_t prim = prime(n);
    clock_t end = clock();
    float costs = (end - start) / (float) CLOCKS_PER_SEC;


    printf("%10d	%.6f	%" PRIu64 "
", n, costs, prim);
    return 0;
}

(左右移動(dòng)查看全部內(nèi)容)


	

這里為了忽略兩塊開發(fā)板內(nèi)存差異的影響,我們不保存前面得到的質(zhì)數(shù)(雖然保存前面得到的質(zhì)數(shù),可以加速后續(xù)的isprime判斷)。

這里假設(shè)保存的文件名為p1.c,樹莓派3B+上使用如下命令編譯:

gcc -O2 -o p1 p1.c

	

Linux編譯主機(jī)上,使用如下命令交叉編譯:

loongarch64-linux-gnu-gcc -O2 -o p1 p1.c

(左右移動(dòng)查看全部內(nèi)容)


	

接下來,分別在龍芯2K0500和樹莓派3B+上運(yùn)行,得到如下耗時(shí)數(shù)據(jù)(編譯選項(xiàng):-O2):

n 龍芯2K0500耗時(shí) 樹莓派3B+耗時(shí)
1000 0.018571 0.014308
2000 0.080962 0.061902
3000 0.191983 0.146851
4000 0.353578 0.271425
5000 0.567774 0.435833
6000 0.831575 0.640650
7000 1.153037 0.890962
8000 1.533347 1.172405
9000 1.965950 1.517557

這里得到的結(jié)論是——樹莓派3B+計(jì)算質(zhì)數(shù)更快。此前的TFLM測(cè)試結(jié)果和這里比較類似,同樣顯示,龍芯2K0500成績要稍差一些。

d00624d4-b1c1-11ed-bfe3-dac502259ad0.png

這里龍芯2K500比樹莓派3B+慢的主要原因,很可能是因?yàn)榍筚|(zhì)數(shù)算法過程中包含了大量除法運(yùn)算,而龍芯2K0500的除法運(yùn)算速度要比樹莓派3B+慢。

4.2 isprime修改

驗(yàn)證方法也很簡單,我們可以直接修改前面的isprime函數(shù):

// 判斷n是否為質(zhì)數(shù)
bool isprime(uint64_t n)
{
    assert(n > 0);


    if (n == 2) return true;
    if ((n & 1) == 0) return false; // n % 2  =>  n & 0x1


    for (uint64_t i = 3, up = (n >> 1); i < up; i += 2) {  // n / 2  =>  n >> 1
        for (uint64_t j = 3; j < up; j += 2) { // 暴力枚舉另外一個(gè)因數(shù),不用除法
            if (i * j == n) {
                return false;
            }
        }
    }
    return true;
}

(左右移動(dòng)查看全部內(nèi)容)


	

這里假設(shè)保存的文件名為p2.c,樹莓派3B+上使用如下命令編譯:

gcc -O2 -o p2 p2.c

	

Linux編譯主機(jī)上,使用如下命令交叉編譯:

loongarch64-linux-gnu-gcc -O2 -o p1 p1.c

(左右移動(dòng)查看全部內(nèi)容)


	

接下來,分別在龍芯2K0500和樹莓派3B+上運(yùn)行,得到如下耗時(shí)數(shù)據(jù)(編譯選項(xiàng):-O2):

n 龍芯2K0500耗時(shí) 樹莓派3B+耗時(shí)
400 0.293424 0.302985
500 0.616077 0.634836
600 1.123482 1.162557

這里可以看到,龍芯2K500比樹莓派3B+計(jì)算要快。

所以,這里驗(yàn)證了前面的猜想——龍芯2K500比樹莓派3B+的整數(shù)除法要慢。

五、參考鏈接

  1. CoreMark項(xiàng)目:https://github.com/eembc/coremark

  2. 龍芯GNU編譯工具鏈下載頁面:http://www.loongnix.cn/zh/toolchain/GNU/

  3. 加入龍芯小組:https://bbs.elecfans.com/group_1650

本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑?/span>微信EEFans0806,或者發(fā)郵箱liuyong@huaqiu.com。

d02749c0-b1c1-11ed-bfe3-dac502259ad0.png

熱門推薦干貨好文

1、社區(qū)精選!PCB多層板設(shè)計(jì)挑戰(zhàn)賽作品集合

2、超強(qiáng)性能AI芯片,OpenHarmony多系統(tǒng)支持,可定制高性能AP(附10+開發(fā)Demo)

3、從零入門物聯(lián)網(wǎng)OH開源平臺(tái),從簡單到高階項(xiàng)目,創(chuàng)客、電子愛好者都愛用!

4、低成本ESP32方案,支持OpenHarmony系統(tǒng)開發(fā)(附10+項(xiàng)目樣例Demo)

5、從0到1玩轉(zhuǎn)瑞薩RA4系列開發(fā)板,教你變著花樣玩板子

6、四核64位,超強(qiáng)CPU ,看RK3568“競”開發(fā)板DEMO!

7、人工智能也能這么玩, 簡單快速入手,還能自定義AI運(yùn)算

8、全部開源 | 基于全志V85X的運(yùn)動(dòng)相機(jī),工業(yè)網(wǎng)關(guān),可穿戴式攝像頭

9、高性能雙核RISC-V,滿足大多數(shù)開發(fā),這款國產(chǎn)MCU工程師


原文標(biāo)題:【試用報(bào)告】龍芯先鋒板:CPU性能測(cè)試—CoreMark和計(jì)算質(zhì)數(shù)

文章出處:【微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:【試用報(bào)告】龍芯先鋒板:CPU性能測(cè)試—CoreMark和計(jì)算質(zhì)數(shù)

文章出處:【微信號(hào):gh_9b9470648b3c,微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    龍芯2K0300蜂鳥試用報(bào)告

    龍芯2K0300蜂鳥試用報(bào)告 一、試用環(huán)境 操作系統(tǒng)和框架:Linux+QT5.15 交叉編譯工具鏈
    發(fā)表于 09-13 18:00

    【作品合集】龍芯2K0300蜂鳥開發(fā)試用精選

    :@jf_99374259【龍芯2K0300蜂鳥試用】適配opencv-mobile 作者:@tinnu【龍芯2K0300蜂鳥
    發(fā)表于 09-10 18:17

    高速數(shù)據(jù)轉(zhuǎn)換應(yīng)用報(bào)告

    電子發(fā)燒友網(wǎng)站提供《高速數(shù)據(jù)轉(zhuǎn)換應(yīng)用報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 14:57 ?0次下載
    高速數(shù)據(jù)轉(zhuǎn)換應(yīng)<b class='flag-5'>用報(bào)告</b>

    龍芯2K0300蜂鳥試用試用開箱體驗(yàn)及調(diào)試

    龍芯2K0300蜂鳥試用開箱: 龍芯2K0300蜂鳥開發(fā)是一塊集成度很高的板卡,龍芯2K03
    發(fā)表于 09-08 12:08

    龍芯2K0300蜂鳥試用龍芯2K0300蜂鳥開發(fā)上電測(cè)試

    。無論是進(jìn)行硬件調(diào)試、軟件開發(fā)還是系統(tǒng)集成,都能顯著提升開發(fā)效率,優(yōu)化產(chǎn)品設(shè)計(jì)流程。 市場(chǎng)潛力 :龍芯2K0300蜂鳥的發(fā)布,預(yù)示著國產(chǎn)嵌入式開發(fā)在體積、性能、能效比等方面的新突破,對(duì)于推動(dòng)國產(chǎn)芯片
    發(fā)表于 09-05 20:46

    龍芯2K0300蜂鳥試用報(bào)告

    龍芯2K0300蜂鳥試用報(bào)告 概述 龍芯2K0300蜂鳥龍芯中科推出的一款面向嵌入式領(lǐng)域的
    發(fā)表于 09-03 08:32

    用于測(cè)試POL穩(wěn)壓器的HS負(fù)載/線路瞬態(tài)測(cè)試夾具和應(yīng)用報(bào)告

    電子發(fā)燒友網(wǎng)站提供《用于測(cè)試POL穩(wěn)壓器的HS負(fù)載/線路瞬態(tài)測(cè)試夾具和應(yīng)用報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 08-26 10:06 ?0次下載
    用于<b class='flag-5'>測(cè)試</b>POL穩(wěn)壓器的HS負(fù)載/線路瞬態(tài)<b class='flag-5'>測(cè)試</b>夾具和應(yīng)<b class='flag-5'>用報(bào)告</b>

    龍芯2K0300蜂鳥試用】+5.CoreMark跑分

    越大則說明測(cè)試性能越好。 ??目前在嵌入式CPU行業(yè)中普遍公認(rèn)的性能測(cè)試指標(biāo)的標(biāo)準(zhǔn)主要使用以下三種,MIPS、Dhrystone、
    發(fā)表于 08-18 22:06

    龍芯2K0300蜂鳥試用】開箱體驗(yàn)

    本帖最后由 ele2022 于 2024-8-13 19:54 編輯 首先感謝電子發(fā)燒友和龍芯中科提供的試用機(jī)會(huì)。 今天開箱體驗(yàn)龍芯中科的一款2K0300蜂鳥開發(fā)。
    發(fā)表于 08-12 19:59

    龍芯2K0300蜂鳥試用】第一篇 龍芯2K0300蜂鳥開箱python點(diǎn)燈測(cè)試

    首先感謝電子發(fā)燒友社區(qū)(測(cè)試福利群)舉辦的活動(dòng),讓我有幸參與此次龍芯2K0300蜂鳥開發(fā)試用活動(dòng)(之前的2K0500先鋒
    發(fā)表于 08-10 23:19

    龍芯2K0300蜂鳥試用龍芯2K0300蜂鳥試用報(bào)告

    龍芯2K0300蜂鳥試用報(bào)告 1.拆箱、上電開機(jī) 2.自帶CH340串口通訊芯片,不需要再用串口工具,已經(jīng)板載了 3.主要由JW5079A、SW34201B、FORESEE
    發(fā)表于 08-09 11:58

    智能嵌入式系統(tǒng)設(shè)計(jì)大賽--龍芯2K500先鋒

    (插針形式)2個(gè)SPI,2個(gè)I2C,6路串口,2路CAN,4路PWM, 8個(gè)GPIO等接口。 更多資料詳見: [用戶手冊(cè)], [先鋒詳細(xì)資料], [用戶試用報(bào)告等板卡使用資料]。 完成注冊(cè)并核驗(yàn)資質(zhì)成功的隊(duì)伍,
    發(fā)表于 05-14 21:15

    龍芯:自主研發(fā)CPU提升性能,單核通用性能提高20倍

    張戈強(qiáng)調(diào),龍芯CPU的主要IP核均為自主研發(fā),這使得其性價(jià)比得到顯著提升。他指出,國產(chǎn)CPU與主流CPU的差距主要體現(xiàn)在單核性能上,而非多核
    的頭像 發(fā)表于 04-25 15:26 ?631次閱讀

    【愛芯派?Pro?開發(fā)試用體驗(yàn)】CPU性能測(cè)試,與樹莓派4B對(duì)比

    性能的程序,類似PC上的Cinebench、CPU-Z之類的CPU性能測(cè)試工具。 了解了CoreMark
    發(fā)表于 01-01 16:36

    RK3566的CoreMark測(cè)試

    EEMBC 的 CoreMark? 評(píng)分是一種比較通用的基準(zhǔn)測(cè)試方式,用于測(cè)量嵌入式系統(tǒng)中使用的微控制器(MCU)和中央處理單元(CPU)的性能,可以幫助人們比較不同的
    的頭像 發(fā)表于 10-09 17:52 ?1876次閱讀
    RK3566的<b class='flag-5'>CoreMark</b><b class='flag-5'>測(cè)試</b>