Debian GNU/Linuxで動かすHPCベンチマーク(Stream使用)データ転送速度の計測

ベンチマークソフトは例によって、
[YAMADABenchmarkSuite](https://qiita.com/telmin_orca/items/2d30323a7c96db929ecf)の「RyzenをHPCで使おうとしたベンチマーク」から流用。

以下は、STREAMというメモリ帯域幅を見るプログラムの実行結果。
配列のサイズを1M～64Mぐらいに変えながら実行。
実行回数は50回

スクリプトは以下の通り。
\\$ for i in 1 2 4 8 16 32 64; do echo \\$i ; ./stream_cxx.out --numtimes 50 --arraysize $i\M ; done

# MSI X58M Corei7 920 2.66GHz
MSI X58M
Core i7 920 2.66GHz LGA1366
Intel X58 Chipset + ICH10R DDR3-1332(666MHz) CL8-8-8 (2GBx4 = 8GB)
CFD CSSD-S6M256CG3VZ (SATA3 256G TLC)
Debian bullseye/sid
![alt](https://pbs.twimg.com/media/EhUD_tJUMAIIGnV?format=jpg)
単純なコピーよりも、複雑なことをやるほうが大規模配列では速度を稼げるらしい。
このマザーボード、[対応CPUがBloomFieledとGulfTown、番外でNehalem-wsのXeon](https://www.msi.com/Motherboard/X58M/support#support-cpu)なんだけど、もうSPECTRA/MELTDOWN脆弱性の対応機種から外れてるから、ネットにつないで使うのは危ないだろうな。

# ASRock H610M-HDV/M.2 Corei5 12400F 3.98GHz
ASRock H610M-HDV/M.2
Core i5 12400F 2.50GHz/4.40GHz(Turbo Boost) LGA1700
Intel H610 Chipset DDR4-2666(666MHz) 16GBx2 = 32GB

CPUソケット ： Intel LGA1700
CFD CSSD-S6M256CG3VZ (SATA3 256G TLC)
Debian bookworm(testing)/+experimental
![alt](https://pbs.twimg.com/media/FKt4P3WUYAISBX2?format=jpg)
またキャッシュが増えてバスの速度が小さい配列では計れなくなってる。

# NEC Lavie LL750/H Celeron M420
NEC Lavie LL750/H 
Intel celeron M420 PC2-5300 1.5GB
HTS541680J9SA00 (80GB)
Debian GNU/Linux (stretch)
![alt](https://pbs.twimg.com/media/D-3Nkm5U8AEORVz?format=jpg)
もはや性能的に見るべきものは無いと思うが、比較検討のために参加。
Windows10上でWSLを使って動かすのではなく、ネイティブのLinuxカーネルにDebianを乗せた元Vista機。
Webブラウザを動かすのは苦しいが、音楽演奏ぐらいなら今でも普通にこなす。
配列サイズが64Mになると極端に性能が落ちているのは、オンメモリで動かせなくて、HDDにスワップアウトしたためらしい。

# NEC Lavie LL750/H CORE2Duo T5600
NEC Lavie LL750/H 
Intel CORE2 Duo T5600 PC2-5300 2.5GB
HTS541680J9SA00 (80GB)
Debian GNU/Linux (bookworm)
![alt](https://pbs.twimg.com/media/FP6rf4NakAIJoys?format=jpg&name=small)
後にCPUアップグレードにメモリも増設したLL750/H、OSはHDDに入れたDebianのまま、高速CPUに換装してメモリを増設。これがなかなか効いてWebブラウザが何とか使えるレベルに。
ベンチマークしてみると、何だか変な挙動を示している。どういうわけか、キャッシュが効かないはずの大きなデータを動かすほうが、不思議なことに速度を稼げている。なにげに64bit対応のCPUになってしまったので、x86-64なDebianにするのも可能になった。

# Raspberry Pi 400 (4GB)
Broadcom BCM2711C0 System On Chip(SoC)
Cortex-A72 x4(QuadCore) LPDDR4-3200 SDRAM 4GB
Onchip Dual VideoCore VI 500MHz
Lazos MicroSDHC 32GB class10 L-B32MSD10-U1
Debian 12.6 bookworm(stable)
Linux kernel 6.6.31-1+rpt-rpi-v8 #1 (2024-05-29)
aarch64 GNU/Linux
![alt](https://pbs.twimg.com/media/GU2DoQ7bsAAYJfB?format=jpg&name=small)
シングルボードコンピュータ、ラズベリーパイの４代目派生モデルで、4GBの主記憶を持ったハードウェアを専用のキーボード型筐体に収めた異色のモデル。(専用マウスも付属)
このスタイル、昔のBASICが走るパソコン、PC-8001やMSX、EPSONのPC-CLUBと似た格好で、昔は結構よくあった。
Raspberry Piの中で、キーボードから電源をON/OFFできるモデルは多分コレだけじゃないかと思う。この点でも使い勝手は、かなりパソコン志向のモデルに感じる。
比較的新しいモデルということもあり、64bitCPUにベクトル命令まで用意された高性能コアを採用しているため、g++の最適化オプションに
-O3 -march=armv8-a+simd を追加するとかなり最適化が効いて、データ転送速度もコンスタントに速くなるようだ。
主記憶は他のPi4モデルと同様のDDR4-3200/PC4-25600(25,600MB/Sec)を採用しているが、条件が良いと4GB/Sec台の高速転送ができる辺り、3.5～3.6GB/Secのスコアを出す標準のRaspberry Pi4よりもクロックが高速になっていると、アクセス速度も速いということなのだろう。

# Raspberry Pi4 modelB　(8GB)
Broadcom BCM2711 System On Chip(SoC)
Cortex-A72 x4(QuadCore) LPDDR4-3200 SDRAM 8GB
Onchip Dual VideoCore VI 500MHz
SanDisk Ultra PLUS microSD UHS-1 (16GB)
Debian 12.6 bookworm(stable)
Linux kernel 6.6.31+rpt-rpi-v8
![alt](https://pbs.twimg.com/media/GT0YFPaboAAdoam?format=jpg&name=small)
シングルボードコンピュータ、ラズベリーパイの４代目、LPDDR4-3200を8GB盛った高級モデル。
DDR4-3200相当ならPC用はPC4-25600(25,600MB/Sec)で、実測してみるとPC2-5300(5,300MB/Sec)を積んだLavieよりも1.5倍ぐらいメモリ転送速度が速い。
本来、メモリのスペック的には5倍ぐらい速いようだから、CPUが速ければもっと速度を稼げそうな気はする。

# Raspberry Pi (初代) modelB　(256MB)
Broadcom BCM2635 System On Chip(SoC)
ARM1176JZF-S ARM V6/700MHz(SingleCore) LPDDR2 Mobile SDRAM
SAMSUNG K4P2G324ED-AGC1 (2Gbit)/256MB
Onchip VideoCore VI 256MHz
KIOXIA EXCERIA BASIC SD-K32G UHS-I SDHC (32GB)
Debian 12.6 bookworm(stable) Linux kernel 6.6.31+rpt-rpi-v6 armv6l GNU/Linux
![alt](https://pbs.twimg.com/media/GUcjR8cb0AAXY3Y?format=jpg&name=small)
シングルボードコンピュータ、ラズベリーパイの初代、LPDDR2を256MB積んだ最初期のモデル。
バス帯域が200MB/Sec程度しか出ないとは思わなかった。道理で遅いわけだ。RAM搭載量も少ないので、4M以上のテストはスワップが多発し、意味のあるデータが取得できない。