Benchmarks in LiteX/Rocket on FPGA boards
Luffcaでは、ベンチマークのCoreMarkを使って、前回の記事で紹介した64-bit Rocket ChipのマルチコアSoCの性能を計測しました。
Qmtech社のWukongボードとDigilent社のNexys Videoの2つのFPGAボード上でCoreMarkを実行しました。
WukongボードとNexys VideoのSoCは、それぞれデュアルコアとクワッドコアです。
また、OSはLinuxを用いています。
CoreMark on Wukong board
Wukongボード用のSoCは、デュアルコアの64-bit Rocket Chipです。
下の表が、ベンチマークの結果を表しています。
スレッド数 | CoreMark | CoreMark/MHz | スピードアップ係数 |
---|---|---|---|
1 | 107.0 | 2.14 | 1.00 |
2 | 208.8 | 4.18 | 1.95 |
シングルスレッドのCoreMark/MHzは、2.14です。
RocketのCoreMark/MHzは2.32として知られているので、シングルスレッドの結果(OS: Linux、-O2
オプション)は、92%の性能になっています。
ちなみに、オプションを-O2
から-O3 -funroll-loops
に変更したプログラムでは、95%の性能が得られています。
また、2スレッドのCoreMark/MHzは、4.18です。
2スレッドのスピードアップ係数が1.95となっていることから、デュアルコアの効果が得られていることが分かります。
下記は、2スレッドのCoreMarkを実行した時の出力を示しています。
2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 19151 Total time (secs): 19.151000 Iterations/Sec : 208.866378 Iterations : 4000 Compiler version : GCC10.2.0 Compiler flags : -O2 -DMULTITHREAD=2 -DUSE_PTHREAD -pthread -DPERFORMANCE_RUN=1 -lrt Parallel PThreads : 2 Memory location : Please put data memory location here (e.g. code in flash, data on heap etc) seedcrc : 0xe9f5 [0]crclist : 0xe714 [1]crclist : 0xe714 [0]crcmatrix : 0x1fd7 [1]crcmatrix : 0x1fd7 [0]crcstate : 0x8e3a [1]crcstate : 0x8e3a [0]crcfinal : 0x4983 [1]crcfinal : 0x4983 Correct operation validated. See readme.txt for run and reporting rules. CoreMark 1.0 : 208.866378 / GCC10.2.0 -O2 -DMULTITHREAD=2 -DUSE_PTHREAD -pthread -DPERFORMANCE_RUN=1 -lrt / Heap / 2:PThreads
CoreMark on Nexys Video
Nexys Video用のSoCは、クワッドコアの64-bit Rocket Chipです。
上のアイキャッチ画像と下の表が、ベンチマークの結果を表しています。
スレッド数 | CoreMark | CoreMark/MHz | スピードアップ係数 |
---|---|---|---|
1 | 106.2 | 2.12 | 1.00 |
2 | 210.1 | 4.20 | 1.98 |
3 | 311.6 | 6.23 | 2.94 |
4 | 415.4 | 8.31 | 3.92 |
シングルスレッドのCoreMark/MHzは2.12で、Wukongボード上の結果とほぼ同じ値です。
また、4スレッドのCoreMark/MHzは、8.31です。
このため、4スレッドのスピードアップ係数は、3.92になります。
このことから、4スレッドまで、ボトルネックとなるような要素はないようです。
下記は、4スレッドのCoreMarkを実行した時の出力を示しています。
2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 19258 Total time (secs): 19.258000 Iterations/Sec : 415.411777 Iterations : 8000 Compiler version : GCC10.2.0 Compiler flags : -O2 -DMULTITHREAD=4 -DUSE_PTHREAD -pthread -DPERFORMANCE_RUN=1 -lrt Parallel PThreads : 4 Memory location : Please put data memory location here (e.g. code in flash, data on heap etc) seedcrc : 0xe9f5 [0]crclist : 0xe714 [1]crclist : 0xe714 [2]crclist : 0xe714 [3]crclist : 0xe714 [0]crcmatrix : 0x1fd7 [1]crcmatrix : 0x1fd7 [2]crcmatrix : 0x1fd7 [3]crcmatrix : 0x1fd7 [0]crcstate : 0x8e3a [1]crcstate : 0x8e3a [2]crcstate : 0x8e3a [3]crcstate : 0x8e3a [0]crcfinal : 0x4983 [1]crcfinal : 0x4983 [2]crcfinal : 0x4983 [3]crcfinal : 0x4983 Correct operation validated. See readme.txt for run and reporting rules. CoreMark 1.0 : 415.411777 / GCC10.2.0 -O2 -DMULTITHREAD=4 -DUSE_PTHREAD -pthread -DPERFORMANCE_RUN=1 -lrt / Heap / 4:PThreads
まとめ
Luffcaでは、ベンチマークのCoreMarkを使って、前回の記事で紹介した64-bit Rocket ChipのマルチコアSoCの性能を計測しました。
Wukongボード用のデュアルコアSoCとNexys Video用のクアッドコアSoCのスピードアップ係数は、それぞれ1.95と3.92になることが分かりました。