第0講 高性能計算が目指すもの

 ユーザが求める処理があり,その結果得られる数値がユーザが満足する精度(有効桁数)に到達するまでの処理時間をいかに短くできるか。これが本書で我々が目指す目標であり,それを達成するための情報処理的,数値解析的な手段を学ぶことになる。問題設定と解決手段を考えること,それが高性能計算(High Performance Computing, HPC)研究の核である。

 まずは具体的な問題を複数提示し,それをプログラムで実行して問題設定を理解するとから始めたい。そのためにはまず下記の2つのプログラミング環境を整えておく必要がある。

Pythonエコシステム:Pythonインタプリタを中心に構築されたモジュール類から構成される開発環境。インタプリタであるため,高速性には難があるが,多くの信頼できるモジュールが開発されており,その上にPyTorchをはじめとする現在のAI基盤が構築されていることから,まずはPythonスクリプトで例題を提示して理解の緒に就くようにしたい。

C/C++開発環境:ソフトウェアの高速性は,いかにCPUやGPUといったハードウェアの機能を最大限発揮させることができるか,ということに依存している。一番いいのはハードウェアが直接理解できる機械語と一対一で対応するアセンブラ言語を使うことであるが,CPUやGPUごとに異なるため,ハードウェアに依存する率が高くなり,可読性も低いことからメンテナンス性にも難がある(引継ぎが難しい)。それよりはもっと汎用的に記述でき,しかも機械語に変換できるレベルのコンパイラ言語を使用することで,ある程度の高速性と可読性を維持できる。FORTRAN以来,さまざまなコンパイラ言語が発明されてきたが,現状ではC/C++が一番蓄積が多く,使用者が多いので,Pythonでは不足する高速性を追求する際にはC/C++を使用して記述する。WindowsでGUIで使用できる開発環境もあるが,本書ではLinux環境におけるCUIをベースとして使用することを想定している。

 両者を同じように使用できるよう,Windowsにおける標準的なLinux環境であるWSLでPythonもC/C++も実行するものとする。2026年4月現在の最新版であるUbuntu 24 LTSを使用し,Pythonは3.12.3,GCCは13.3以上で実行できるものとする。Pythonモジュールはpipコマンドで追加できるものを標準的に使用する。まずはNumPy, SciPy, matplotlibはインストールしておいて欲しい。