仕様設計フェーズ
性能要求、計算機環境、アルゴリズム候補、調整可能な性能パラメータ等を設計段階から明示します。
Auto-Tuning Software Engineering
Auto-Tuning Software Engineering (ATSE)
高性能ソフトウェアの分析・設計・実装・最適化・運用・維持を、性能チューニングの知識とフィードバックを含む ソフトウェア工学の体系として捉える考え方です。2005年に提案し、2006年に改訂しました。 その後、2008年に提案した「自動チューニング工学(ATE)」では、ATSEを3本柱の一つとして位置づけています。
Original Proposal
原提案の中心的な問題意識は、性能最適化を実装後の付加的作業として扱うのではなく、 ソフトウェアの分析・設計・製作・運用・維持を貫く工学的対象として体系化することにあります。
自動チューニングソフトウェア工学とは、高性能を達成するソフトウェアの問題分析・設計・製作・運用・維持の過程に存在する 人の知的活動から、再利用可能な原理・知識・方法を抽出し、それを工学体系として構築することを目指す研究分野です。
従来のソフトウェア工学では、まず正しく単純な実装を作り、その後に性能チューニングを行うという考え方が一般的でした。 一方、HPCや組込みシステムのように性能制約そのものが設計の成否を左右する領域では、性能を開発サイクルの初期段階から扱う必要があります。
Development Cycle
ATSEでは、高性能ソフトウェア開発を4フェーズに整理します。特に重要なのは、最後に得られたチューニング知識を 次の仕様設計へ戻す循環型の開発モデルです。
性能要求、計算機環境、アルゴリズム候補、調整可能な性能パラメータ等を設計段階から明示します。
チューニング可能性を保ちながら実装し、自動生成・記述言語・性能パラメータ化をソフトウェア構造へ組み込みます。
実機測定、性能モデル、探索、コンパイラやシステム情報を使って、高性能な実装・パラメータを選択します。
最適化で得られた知識を抽出・蓄積し、他の問題・環境・将来の設計へ再利用可能な形にします。
Interdisciplinary Engineering
原提案では、ATSEは単一の技術分野ではなく、性能可搬性を実現するために複数の工学分野を横断する必要があると整理しました。
仕様設計・プログラミングのための記述方式、ドメイン固有言語、コード生成、プリプロセッサ。
性能パラメータ探索、性能モデル、最適化アルゴリズム、探索空間設計。
OS、コンパイラ、ミドルウェア、プロセッサ・メモリ・通信を考慮した実行時最適化。
チューニング結果からの知識発見、学習、再利用可能な性能知識の抽出。
過去のチューニング知識・性能データ・環境情報を体系的に蓄積・検索する基盤。
他者・他環境で得られたチューニング知識を共有し、異なる計算機環境で再利用する仕組み。
Technologies in the Original Proposal
2005–2006年の原ページでは、ATSEを実現する技術をソフトウェアライフサイクルに沿って整理していました。 「なし」とした領域は、当時まだ開拓すべき研究課題であることを明示していました。
| 領域 | 原提案で挙げた技術 | 役割 |
|---|---|---|
| 方法論 | FIBER / 自動チューニングポリシー / 性能安定化機構 | いつ・どの段階で・どの情報を使ってチューニングするかを体系化。 |
| 問題分析 | 当時:なし | 問題特性から最適化方針を導く技術は未開拓領域として残されていました。 |
| 設計 | ABCLibScript | 自動チューニング機能を明示的に記述し、専門家知識をソフトウェア設計へ埋め込む。 |
| 製作 | ABCLibCodeGen | ABCLibScriptを処理し、自動チューニング機能を持つプログラムを自動生成。 |
| 運用 | 当時:なし | 運用中の環境変化や継続的最適化は今後の課題として残されていました。 |
| 維持 | RAO-SS | 実行時自動チューニングにより、環境や入力に応じた性能を維持。 |
Evolution
2005年のATSEで提示した「性能知識を開発サイクルへ戻す」という発想は、その後の自動チューニング工学(ATE)、 さらに現在の生成AI・AIエージェントによるHPCコード開発へ接続できます。
ATSEの基本構造は、生成AI・AIエージェントを導入すると、次のような自律的HPCソフトウェア開発ループとして再解釈できます。