一、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是一個簡單而又精密的基準(zhǔn)測試程序,是專門為測試處理器核功能而設(shè)計的。運行CoreMark會產(chǎn)生一個“單個數(shù)字”的分?jǐn)?shù),(從而)允許用戶在(不同)CPU之間進行快速比較。
簡單來說,就是一個測試CPU性能的程序,類似PC上的Cinebench、CPU-Z之類的CPU性能測試工具。
了解了CoreMark是什么之后,接下來我們嘗試在龍芯2K0500先鋒板上跑一下CoreMark,看看分?jǐn)?shù)是多少。
二、在龍芯2K0500上運行CoreMark
2.1 下載CoreMark源碼
在Linux編譯主機上,執(zhí)行如下命令,將CoreMark源碼下載到本地:
git clone https://github.com/eembc/coremark.git
(左右移動查看全部內(nèi)容)
下載完成后,可以看到有這些文件和目錄:
2.2 交叉編譯CoreMark
接著編譯CoreMark,這里假設(shè)你已經(jīng)正確設(shè)置了龍芯交叉編譯工具鏈,也就是可以直接運行l(wèi)oongarch64-linux-gnu-gcc命令。
在Linux編譯主機上,執(zhí)行如下命令:
cd coremark
make CC=loongarch64-linux-gnu-gcc link
(左右移動查看全部內(nèi)容)
其中:
-
CC用于指定編譯器,這里指定的是龍芯GNU交叉編譯器(loongarch64-linux-gnu-gcc);
-
link是make命令的構(gòu)建目標(biāo),具體定義在Makefile文件中,link是只鏈接不運行;
編譯完成后,可以看到生成了coremark.exe:
2.3 運行CoreMark
通過FTP或U盤,將coremark.exe拷貝到龍芯2K0500先鋒板上,使用如下命令運行coremark.exe:
# 添加可執(zhí)行權(quán)限
chmod +x coremark.exe
# 運行
./coremark.exe
運行結(jié)束后,輸出如下:
可以看到,龍芯2K0500上CoreMark跑分為2213.205459分。
三、和樹莓派3B+上CoreMark結(jié)果對比
我這里測試使用的樹莓派3B+開發(fā)板,系統(tǒng)版本信息是:
由于樹莓派3B+上運行的是Debian系統(tǒng),有完整的編譯工具鏈。因此,在樹莓派3B+上,我們可以直接在開發(fā)板上編譯源碼。
在樹莓派3B+上運行CoreMark之前,也需要下載CoreMark源碼,和前面類似:
git clone https://github.com/eembc/coremark.git
(左右移動查看全部內(nèi)容)
不過這次我們直接將CoreMark源碼下載到了樹莓派上。
3.1 編譯CoreMark
樹莓派上編譯CoreMark之前,需要先安裝編譯構(gòu)建工具鏈,如果還沒有的話,可以使用如下命令:
sudo apt install build-essential
(左右移動查看全部內(nèi)容)
PS:如果已經(jīng)有g(shù)cc、make命令,則可以跳過此步驟。
使用如下命令,編譯CoreMark源碼:
cd coremark
make link
3.2 運行CoreMark
使用如下命令運行coremark.exe:
./coremark.exe
(左右移動查看全部內(nèi)容)
PS:這里由于我們是直接在樹莓派3B+開發(fā)板上編譯的CoreMark,所以直接運行即可。
運行結(jié)束后,輸出如下:
可以看到,樹莓派3B+上CoreMark跑分為1914.486280。
龍芯2K0500和樹莓派3B+的CoreMark跑分對比:
龍芯2K0500 | 樹莓派3B+ | |
---|---|---|
跑分 | 2213.205459 | 1914.486280 |
可以看到,龍芯2K0500上的CoreMark跑分高于樹莓派3B+。
3.3 其他編譯選項跑分對比
查看CoreMark的Makefile和相關(guān)源碼,我們可以知道,通過編譯時添加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
(左右移動查看全部內(nèi)容)
響應(yīng)的,Linux編譯服務(wù)器上,交叉編譯命令為:
make CC=loongarch64-linux-gnu-gcc XCFLAGS="-DPERFORMANCE_RUN=1 -DMEM_METHOD=MEM_STATIC" link
(左右移動查看全部內(nèi)容)
3.4 CoreMark的主要算法
CoreMark項目README的Key Algorithms描述了CoreMark主要用到了那些算法:
-
鏈表(主要是指針操作)
-
矩陣乘法(主要是乘法和加法運算)
-
狀態(tài)機(主要是switch-case操作)
說明在這幾種計算場景下,龍芯2K0500的速度都是比樹莓派3B+要快的。
四、額外的CPU測試
接下來我們看看另外一種場景下的測試結(jié)果。
我們知道,生成一個較大的大質(zhì)數(shù),或者判斷一個大整數(shù)是否為質(zhì)數(shù)是比較復(fù)雜的。
所以,這里我們準(zhǔn)備用生成質(zhì)數(shù)在兩個開發(fā)板上再次進行測試。
4.1 第n個質(zhì)數(shù)
我們使用如下C程序代碼,計算第n個質(zhì)數(shù):
// 判斷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;
}
// 計算第n個質(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;
}
(左右移動查看全部內(nèi)容)
這里為了忽略兩塊開發(fā)板內(nèi)存差異的影響,我們不保存前面得到的質(zhì)數(shù)(雖然保存前面得到的質(zhì)數(shù),可以加速后續(xù)的isprime判斷)。
這里假設(shè)保存的文件名為p1.c,樹莓派3B+上使用如下命令編譯:
gcc -O2 -o p1 p1.c
Linux編譯主機上,使用如下命令交叉編譯:
loongarch64-linux-gnu-gcc -O2 -o p1 p1.c
(左右移動查看全部內(nèi)容)
接下來,分別在龍芯2K0500和樹莓派3B+上運行,得到如下耗時數(shù)據(jù)(編譯選項:-O2):
n | 龍芯2K0500耗時 | 樹莓派3B+耗時 |
---|---|---|
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+計算質(zhì)數(shù)更快。此前的TFLM測試結(jié)果和這里比較類似,同樣顯示,龍芯2K0500成績要稍差一些。
這里龍芯2K500比樹莓派3B+慢的主要原因,很可能是因為求質(zhì)數(shù)算法過程中包含了大量除法運算,而龍芯2K0500的除法運算速度要比樹莓派3B+慢。
4.2 isprime修改
驗證方法也很簡單,我們可以直接修改前面的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) { // 暴力枚舉另外一個因數(shù),不用除法
if (i * j == n) {
return false;
}
}
}
return true;
}
(左右移動查看全部內(nèi)容)
這里假設(shè)保存的文件名為p2.c,樹莓派3B+上使用如下命令編譯:
gcc -O2 -o p2 p2.c
Linux編譯主機上,使用如下命令交叉編譯:
loongarch64-linux-gnu-gcc -O2 -o p1 p1.c
(左右移動查看全部內(nèi)容)
接下來,分別在龍芯2K0500和樹莓派3B+上運行,得到如下耗時數(shù)據(jù)(編譯選項:-O2):
n | 龍芯2K0500耗時 | 樹莓派3B+耗時 |
---|---|---|
400 | 0.293424 | 0.302985 |
500 | 0.616077 | 0.634836 |
600 | 1.123482 | 1.162557 |
這里可以看到,龍芯2K500比樹莓派3B+計算要快。
所以,這里驗證了前面的猜想——龍芯2K500比樹莓派3B+的整數(shù)除法要慢。
五、參考鏈接
-
CoreMark項目:https://github.com/eembc/coremark
-
龍芯GNU編譯工具鏈下載頁面:http://www.loongnix.cn/zh/toolchain/GNU/
-
加入龍芯小組:https://bbs.elecfans.com/group_1650
本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑?/span>微信EEFans0806,或者發(fā)郵箱liuyong@huaqiu.com。
熱門推薦干貨好文
1、社區(qū)精選!PCB多層板設(shè)計挑戰(zhàn)賽作品集合
2、超強性能AI芯片,OpenHarmony多系統(tǒng)支持,可定制高性能AP(附10+開發(fā)Demo)
3、從零入門物聯(lián)網(wǎng)OH開源平臺,從簡單到高階項目,創(chuàng)客、電子愛好者都愛用!
4、低成本ESP32方案,支持OpenHarmony系統(tǒng)開發(fā)(附10+項目樣例Demo)
5、從0到1玩轉(zhuǎn)瑞薩RA4系列開發(fā)板,教你變著花樣玩板子
6、四核64位,超強CPU ,看RK3568“競”開發(fā)板DEMO!
7、人工智能也能這么玩, 簡單快速入手,還能自定義AI運算
8、全部開源 | 基于全志V85X的運動相機,工業(yè)網(wǎng)關(guān),可穿戴式攝像頭
9、高性能雙核RISC-V,滿足大多數(shù)開發(fā),這款國產(chǎn)MCU工程師都
原文標(biāo)題:【試用報告】龍芯先鋒板:CPU性能測試—CoreMark和計算質(zhì)數(shù)
文章出處:【微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
電子技術(shù)
+關(guān)注
關(guān)注
18文章
917瀏覽量
56243 -
電子發(fā)燒友論壇
+關(guān)注
關(guān)注
4文章
197瀏覽量
1137
原文標(biāo)題:【試用報告】龍芯先鋒板:CPU性能測試—CoreMark和計算質(zhì)數(shù)
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論