Benchmark tool

STREAMとは

Linux環境におけるメモリ帯域幅(Memory Bandwidth)測定のデファクトスタンダードである「STREAM」の使用方法と、その結果がハードウェア選定にどう役立つかを解説します。

STREAM Official

Sustainable Memory Bandwidth in High Performance Computers

cs.virginia.edu

メモリ帯域幅の基礎

Concept

道路の「車線数」で考える

コンピュータを工場に例えると、CPUは「作業員」、メモリは「倉庫」です。
作業員(CPU)がいかに高速に手を動かせても、倉庫(メモリ)から部品が届かなければ作業は止まってしまいます。

メモリ帯域幅(Bandwidth)は、倉庫から作業場へ続く「道路の広さ(車線数)」です。
この道路が広いほど、一度に大量のデータをCPUへ送り込むことができ、PC全体のパフォーマンスが向上します。

Narrow Bandwidth
(Single Channel)
High Bandwidth
(Dual Channel)

帯域幅が広いと、渋滞せずにデータを送れる

PC選びで意識すること

STREAMで計測されるような「帯域幅」を確保するために、購入時に確認すべき重要ポイントです。

1

デュアルチャネル構成にする(最重要)

メモリは1枚(シングルチャネル)よりも、同じ容量の2枚(デュアルチャネル)で動作させる方が、帯域幅は理論上2倍になります。

⭕ 8GB × 2枚 = 16GB (帯域幅広)
❌ 16GB × 1枚 = 16GB (帯域幅狭)
2

世代(DDR4 vs DDR5)を確認する

新しい規格であるDDR5は、DDR4に比べて初期状態で約1.5倍以上の帯域幅を持ちます。動画編集や科学技術計算、AI処理を行う場合はDDR5搭載モデルが有利です。

3

内蔵GPU (iGPU) 性能への直結

グラフィックボードを搭載しないノートPCや小型PCの場合、映像処理にはメインメモリが使われます。メモリ帯域幅が狭いと、ゲームや画面描画がカクつく原因になります。

使用方法

私はUbuntuのPCで使用してみました。

stream.cを持ってくる。/streamディレクトリ内に保存する。

Directory

/stream

stream.cをコンパイルする。

bash

gcc -O stream.c -o streamsingle

streamsingleを実行する。

bash

./streamsingle

出力結果の読み方

Result Log

実行ログ

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
-------------------------------------------------------------
Analysis

結果の評価方法

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%