FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Ubuntu on ZedBoardでCoremark性能計測

折角ZedBoard上でUbuntuが動作するようになったので、性能計測の基本、ベンチマークソフトウェアを動作させて、ZedBoard上のCortex-A9の性能を評価してみよう。

ちなみに、性能測定については、以前ZedBoardを動かしたときにCoremark-1.0を使って実施している。 以下のブログだ。

msyksphinz.hatenablog.com

このときは、CMK/MHzとしては3.0に到達しない、2.x後半くらいの数値であった。ただしこのときはOSは動作しておらず、SDKの上からプログラムを流しこんで動作している。

Ubuntu上でNativeにコンパイルし、動作させたらどうなるだろう?

1. Coremark-v1.0をダウンロードし、動作させる。

EEMBCのサイトからCoremarkをダウンロードする。EEMBCのサイトはwgetが難しいので、Windowsでダウンロードしておき、SDカード上にあらかじめ展開しておいた上でブートする。

www.eembc.org

ZedBoardでUbuntuを起動したら、展開し、コンパイルし、実行する。異常なほど簡単だ。

tar xvfz coremark_v1.0.tgz
cd coremark_v1.0
make PORT_DIR=linux
make XCFLAGS=" -DPERFORMANCE_RUN=1" load run1.log
make[1]: Entering directory '/home/linaro/coremark_v1.0'
make port_prebuild
make[2]: Entering directory '/home/linaro/coremark_v1.0'
make[2]: Nothing to be done for 'port_prebuild'.
make[2]: Leaving directory '/home/linaro/coremark_v1.0'
make link
make[2]: Entering directory '/home/linaro/coremark_v1.0'
...
See readme.txt for run and reporting rules.

これで計測は完了だ。超簡単! run1.log, run2.logを見てみると、Coremarkスコアは1858.505761だった。Cortex-A9は666MHzで動作しているので、2.79程度だ。まあ、リーズナブルな性能ではないだろうか。 それにしても、簡単すぎる。

2. Coremark-Proの計測をする

次に、Coremark-Proを動作させてみよう。以下のサイトからダウンロードし、同様に、SDカードに入れておく。

www.eembc.org

これも、解答してmakeするだけで動作する。

tar xvfz coremark-pro_1.1.2470.tgz
cd coremark-pro_1.1.2470
make TARGET=linux

coremark-pro_1.1.2470/builds/linux/gcc/logs/linux.gcc.log に以下のようなファイルが格納されているので、

UID     Suite   Name    Contexts        Workers Item Fails      Time(secs)      Iterations      It/s    Codesize        Datasize        Variance        Standard Deviation
#Results for run started at 16061:16:48:37 XCMD=
236760500       MLT     cjpeg-rose7-preset      1       default 0          0.067        1       14.9253731343284        69601   266828
1050863061      MLT     sha-test        1       default 0           0.04        1       25      52413   1556
490760323       MLT     core    1       default 0          9.717        1       0.102912421529279       44579   3688
549578576       MLT     nnet_test       1       default 0           2.39        1       0.418410041841004       48551   42844
1046644201      MLT     linear_alg-mid-100x100-sp       1       default 0          0.125        1       8       49037   3388
780641437       MLT     parser-125k     1       default 0          0.342        1       2.92397660818713        56717   1468
1814569103      MLT     loops-all-mid-10k-sp    1       default 0          2.785        1       0.359066427289048       57592   6912
1862946660      MLT     radix2-big-64k  1       default 0          0.118        1       8.47457627118644        1423747 1712
946108807       MLT     zip-test        1       default 0          0.096        1       10.4166666666667        89577   1660

という訳で、結果は以下のようになる。これも簡単に計測できる!

Bench Score
cjpeg-rose7-preset 0.369955
sha-test 0.51525
core 0.360464
nnet_test 0.286871
linear_alg-mid-100x100-sp 0.207456
parser-125k 0.607749
loops-all-mid-10k-sp 0.40822
radix2-big-64k 0.085036
zip-test 0.487631
GeoMean 0.326417
Score 326.4169