STREAMとは
Linux環境におけるメモリ帯域幅(Memory Bandwidth)測定のデファクトスタンダードである「STREAM」の使用方法と、その結果がハードウェア選定にどう役立つかを解説します。
Sustainable Memory Bandwidth in High Performance Computers
メモリ帯域幅の基礎
道路の「車線数」で考える
コンピュータを工場に例えると、CPUは「作業員」、メモリは「倉庫」です。
作業員(CPU)がいかに高速に手を動かせても、倉庫(メモリ)から部品が届かなければ作業は止まってしまいます。
メモリ帯域幅(Bandwidth)は、倉庫から作業場へ続く「道路の広さ(車線数)」です。
この道路が広いほど、一度に大量のデータをCPUへ送り込むことができ、PC全体のパフォーマンスが向上します。
(Single Channel)
(Dual Channel)
帯域幅が広いと、渋滞せずにデータを送れる
PC選びで意識すること
STREAMで計測されるような「帯域幅」を確保するために、購入時に確認すべき重要ポイントです。
デュアルチャネル構成にする(最重要)
メモリは1枚(シングルチャネル)よりも、同じ容量の2枚(デュアルチャネル)で動作させる方が、帯域幅は理論上2倍になります。
❌ 16GB × 1枚 = 16GB (帯域幅狭)
世代(DDR4 vs DDR5)を確認する
新しい規格であるDDR5は、DDR4に比べて初期状態で約1.5倍以上の帯域幅を持ちます。動画編集や科学技術計算、AI処理を行う場合はDDR5搭載モデルが有利です。
内蔵GPU (iGPU) 性能への直結
グラフィックボードを搭載しないノートPCや小型PCの場合、映像処理にはメインメモリが使われます。メモリ帯域幅が狭いと、ゲームや画面描画がカクつく原因になります。
使用方法
私はUbuntuのPCで使用してみました。
stream.cを持ってくる。/streamディレクトリ内に保存する。
Directory
/stream
stream.cをコンパイルする。
bash
gcc -O stream.c -o streamsingle
streamsingleを実行する。
bash
./streamsingle
出力結果の読み方
実行ログ
12th Gen Intel(R) Core(TM) i7-12650H$ sudo dmidecode -t memory | grep -E "Size:|Speed:|Number Of Devices:|Locator:"
Number Of Devices: 2
Size: 8 GB
Locator: Controller0-ChannelA-DIMM0
Bank Locator: BANK 0
Speed: 3200 MT/s
Configured Memory Speed: 3200 MT/s
Non-Volatile Size: None
Volatile Size: 8 GB
Cache Size: None
Logical Size: None
Size: 8 GB
Locator: Controller1-ChannelA-DIMM0
Bank Locator: BANK 0
Speed: 3200 MT/s
Configured Memory Speed: 3200 MT/s
Non-Volatile Size: None
Volatile Size: 8 GB
Cache Size: None
Logical Size: None
-------------------------------------------------------------
STREAM version $Revision: 5.10 $
-------------------------------------------------------------
This system uses 8 bytes per array element.
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 19230.6 0.008473 0.008320 0.008691
Scale: 19347.0 0.008478 0.008270 0.008715
Add: 22127.7 0.010961 0.010846 0.011134
Triad: 22511.7 0.010853 0.010661 0.011040
-------------------------------------------------------------
結果の評価方法
4つの指標の意味
- Copy 単純コピー (a = b)
- Scale 定数倍 (a = q * b)
- Add 加算 (a = b + c)
-
Triad
複合演算 (a = b + q * c)
※最も実アプリに近い重要指標
このPCの効率は?
Triadの値 22.5 GB/s は、DDR4-3200メモリ(シングルチャネル)の理論値 25.6GB/s に対して、約 88% の効率が出ています。
実測値(22511) ÷ 理論値(25600) × 100 ≒ 87.9%