「AI時代の高性能計算入門」目次

  • 初めに
  • 目次
  • 第0講 「高性能計算」で目指すもの・開発環境の準備
  • 第1講 コンピュータアーキテクチャと演算
  • 第2講 浮動小数点演算の基礎
  • 第3講 多倍長精度演算技法
  • 第4講 基本線形計算とLAPACK/BLAS
  • 第5講 基本線形計算の並列化技法
  • 第6講 無誤差変換技法と尾崎スキーム
  • 第7講 固有値・固有ベクトル計算(中間レポート1)
  • 第8講 Pythonにおける浮動小数点演算
  • 第9講 深層学習とPyTorch
  • 第10講 PyTorchとHugging Face
  • 第11講 PyTorchベンチマーク(中間レポート2)
  • 第12講 Juliaによる高性能計算
  • 第13講 非線形計算問題(最終レポート)

「AI時代の高性能計算入門」テキスト執筆開始

 今のところ理想に近いものが見当たらないようなので,「AI時代の高性能計算入門」の執筆を開始することにした。といいながらWebで下書きしながらだし,他の急ぎの仕事もあるので,それが終わってから,暇を見つけての仕事になるから,気が付いたら尻切れトンボになる可能性もある。とはいえ,次年度(2026年度)中には終わらせておかないと,2027年からの卒研開始に間に合わなず,ゼミ資料が皆無の状態で始めるのは不味いので,2026年夏休みぐらいにはある程度の完成度には持っていきたい。 

 ここで言う「AI時代」には二つの意味がある。一つは,あらゆる計算資源が生成AIに象徴される深層学習(deep learning)に動員されるようになってしまい,CPUもGPUも計算リソースを低精度浮動小数点(FP)演算強化にフォーカスした進化を遂げるようになってしまったことである。このため,今までは倍精度FP演算(binary64)を標準として使っていた多くの科学技術計算の性能向上のためには,低精度FP演算を高精度にするためのテクニックが必要で,我が従事してきた多倍長精度演算技法が不可欠となった。当然,深層学習そのものを利用するにしても,低精度FP演算能力を生かすための工夫が必要であることは言うまでもない。つまり,利用用途に応じた可変長精度(variable-precision)演算技法が求められるようになったということである。
 もう一つの意味は,生成AIによってあらゆる人間の知的活動が下支えされるようになったことである。その中でも,多彩なソフトウェアを構築するためのプログラミング技法は,かなりの部分,AIによる助力が期待できるようになった。もちろん,完璧なプログラムを作るにはいささか心もとないところがあり,プロンプト(指示文)による詳細な指示も必要な上,現状では人間によるチェックが欠かせない。「高性能計算(high performance computing)」は,与えられた計算環境の性能を最大限発揮するための技法を追求する学問であるから,AIの助力を得て作成したソフトウェアの性能を評価する方法についてもしっかり学ぶ必要がある。

 以上,2点の需要を満たした最適なテキストは,2026年現在存在しない。今までの知見を総合し,かつ,自分の所有するNote PCでも可能なプログラミングやベンチマークテストを行えるような自主学習テキストが,今の時代は不可欠である。古くても重要な数値計算や低レイヤーに関連する話題も,PyTorchやTensorFlowといった深層学習ツールを使った演習も含め,「AI時代」に相応しい「高性能計算」の入門用テキストを目指し,本blogに記事を積み重ねていきたいと考えている。

2026年1月25日(日) 駿府城下の自宅にて
幸谷智紀

数理・データサイエンス概論解説動画

1年生向けのオムニバス講義「数理・データサイエンス概論」2回分の解説動画をYouTubeにアップしました。本研究室で行っている研究の一端が分かるかもしれません。

数理・データサイエンス概論「高性能計算」(1/2)

数理・データサイエンス概論「高性能計算」(2/2)

卒研テーマ例)Arm CPU向け可変長精度計算高速化

 Arm CPU向けの可変長精度計算,特にBLASレベルの高速化を希求する。SVEが使える環境は,コンシューマレベルでは2025年2月現在なさそうで,AWSとか不老とか富岳を使う必要があるが,とりあえず128bit SIMDのNEONから対応を考える。比較検討するのは同じく128bitの下記二つ。

  • WASM SIMD
  • SSE

BNCmatmulの書き換えが必要になりそうだけど,それよりはC++でTemplateライブラリにしてMPBLASに合わせた方が良さげ。

 Copilot+PC仕様のWindowsマシン上でWSL環境とかVisual Studio環境がまともに動くようならこれ使うけど,基本,Rasberry Piでいいんじゃないかなと。とりあえず1台買ったので,まずはBNCmatmulのコンパイルができるところまでは持っていくつもり。

卒研テーマ例)MPIBNCmatmulの実装と性能評価

 卒研というより,教員個人研究の延長線上のテーマですが,現状のBNCmatmulのOpenMP並列化された基本線形計算の機能を,分散メモリ並列環境のMPIに対応させるという,単純ですが労力のかかるテーマです。MPIBNCpackという先行ライブラリがあり,MPFR任意精度計算は対応済み。あとはDD, TD, QDといったマルチコンポーネント固定精度計算部分をMPI化するというのがメインの開発になります。あとはBLAS1, 2, 3のベンチマークテストをスパコン上で行うという,これも結構面倒なものになりますが,Python化しておけば楽なので,検証用スクリプト開発が核心になりそう。

HPC関連Cheat Sheetメモ

 高性能計算研究に役立ちそうなCheat Sheet(カンペっぽいお役立ちメモ)をこちらにメモっておきます。飽きるかめんどくさくなるまで随時更新。

SIMD関連

Python関連

卒研テーマ例)WebAssemblyベースの関数表

Abramowittz and Stegun, “Handbook of Mathematical Functions” (Dover)は,著作権フリーの媒体としてデジタル版が作成され,世界中にミラーが存在する(ここにも置いた)。このバージョンアップ版は,”NIST Handbook of Mathematical Functions” (Cambridge)で,Web版もあるが,動的に動かせるものではないし,任意精度に対応した数表を作る機能もない。WebAssembly化したMPFRとMPCをベースとした,Dover版のものから派生した動的関数表を作成する。カシオが提供するkeisanがこれに近いものであったが,動的に関数グラフを作成する機能は2024年12月現在停止されている。サーバサイドに負荷がかかる構成では長続きしないので,提供側の計算資源を提供せず,コードの著作権にも配慮したサービスとしたい。

卒研テーマ例)多倍長精度GMRES(m)法の性能評価

 Krylov部分空間法をはじめ,多倍長精度計算を行うことで丸め誤差が低減し,アルゴリズムの挙動が安定するケースは少なくない。本テーマでは,GMRES(m)法を多倍長精度化し,あれこれ弄ることでどのように性能が変化するかを見極める。

参考文献

「JavaScriptによるWebアプリケーション開発入門」一応完成

 以前に書いた通り,PHPベースのWebプログラミング解説書をベースに,JavaScript+Node.jsによる入門テキストがようやっと完成しました。

 未完成部分も多々ありますが,追々直していきます。TypeScriptベースにするのは,Next.jsまで進んでからですかねぇ。

卒研メモ: Googleで関数グラフ描画

Googleの関数グラフ描画機能を初めて知らされたTweet

 年のせいか,新しい物事をキャッチする能力が落ちているようで,Google検索に関数グラフ描画機能が付いたことも知りませんでした。単位変換や電卓機能があるのは知っていたのですが,こういう機能までつけてくるとは,さすがGoogle,コンピュータリソースが有り余ってますね。

 1変数関数だけでなく,2変数関数のグラフも描けるようです。ちなみにz = x^2 + y^2をググってみると,下記のようになります。

x^3 – exp(x) = 0という方程式を解く時には,y = x^3 – exp(x)のグラフを描画し,x軸との交点付近を拡大して

x = 1.58718・・・ぐらいかなぁというアタリを付けることも簡単ですね。今後色々活用してみたいところです。