1. ハードウェア要件#

1.1. 説明#

ハードウェアの性能に対して,数理最適化モデルがどれだけのパフォーマンスを発揮できるかは, 評価が難しく一般論としての考察の域をでない.

しかしそれでもハードウェアの改善でおよそどれくらいを期待できるかを想定しておくことには意味がある. 以下ではこのことを念頭に置いてハードウェア要件を整理するものである.

1.1.1. CPU クロック周波数#

CPU クロック周波数が大きいほど,同じ時間で実行できる命令回数が増える.

今,次の関係にある CPU クロック周波数のみが異なる計算機があったとする.

(1.21)#\[f_{\mathrm{CPU1}} < f_{\mathrm{CPU2}}\]

そして同じ最適化計算タスクに対して,それぞれの計算時間を \(T_1\)\(T_2\) だったとすれば, これらはおよそ次の関係で結ばれる速度改善を最大で望める.

(1.22)#\[T_2 \simeq \frac{f_{\mathrm{CPU2}}}{f_{\mathrm{CPU1}}} T_1\]

なおこれはあくまでも傾向であり,必ずしもクロック周波数が高ければ良いというわけではなく,CPU の性能はクロック周波数だけで決まるものではない. また CPU クロック周波数は 2005 年から 2022 年現在にかけては, ハードウェア改善が \(3\) から \(4\) GHz あたりで停滞しており,指数的成長が鈍化している.

CPU DB | VLSI RESERCH GROUp - Stanford University

Tip

最適化計算と無関係な他のアプリケーションを動作させている場合は, その分だけ CPU の動作周波数が奪われるため, 万全を期す場合は必要最低限のアプリケーションのみ動作させる必要がある.

1.1.2. コア数と計算の安定性#

並列計算数 \(N_{\mathrm{p}}\) は,理想的にはその数だけシーケンシャルな計算を同じ時間で複数に分けて計算できることを意味する. このため並列処理を行わない計算時間 \(T_1\) に対して,並列計算による計算時間 \(T_2\) は,およそ最大で次だけの短縮が望める.

(1.23)#\[T_2 \simeq \frac{1}{N_{\mathrm{p}}} T_1\]

解の一意性が保証されていない限り,並列計算が絡むアルゴリズムによっては,計算のたびに異なる解を出力しえる. コア数を増やすことで並列計算の恩恵に与れるが,解の安定性 に気を配る必要がある. 並列計算で劇的な速度向上が望める機会は多くはなく過度な期待は禁物となる.

Tip

このためシングルスレッドでのパフォーマンスを第一に考えて CPU を比較するとよいと考えられる. 比較は例えば次のサイトで行うことができる.

1.1.3. RAM およびアーキテクチャ#

メモリ消費量上限はユーザが明示的にプログラムで指定しない限り, 使用する計算機にあるだけ使用する.

このため,OS アーキテクチャとしては \(32\) bit ではなく \(64\) bit が推奨される. \(32\) bit の場合,最大でも \(4\) GiB (= \(2^{32}\) bit) までしか利用できないためだ.

また世界的に見ても \(32\) bit OS は絶滅の方向に向かっており, 新規にシステムを構築する場合は,\(64\) bit OS を前提とすることが強く推奨される.

1.1.4. RAM クロック周波数#

RAM クロック周波数 \(f_{\mathrm{RAM}}\) も CPU クロック周波数と同様に, 次の関係で結ばれる速度改善を最大で望める.

(1.24)#\[T_2 \simeq \frac{f_{\mathrm{RAM2}}}{f_{\mathrm{RAM1}}} T_1\]

Tip

Windows OS の場合,RAM クロック周波数はタスクマネージャーから確認できる. またはコマンドプロンプトから次のコマンドで確認できる.

1> wmic memorychip get speed
2Speed
32667
42667

この場合は 2667 MHz を意味する.

1.2. 関連#