# DPX ## 定義 DPX(Dynamic Programming X)は、動的計画法で頻出する加算と最小値・最大値の組み合わせを高速化する CUDA 12 以降の命令・関数群である。Hopper では専用ハードウェアで実行されるが、Ampere と Ada ではソフトウェアエミュレーションになる。 ## 横断的知見 - **DPX は Hopper の命令レベル機能を具体的なアルゴリズムへ接続する専用加速である**: 公式解説は Smith-Waterman のゲノム処理と Floyd-Warshall の動的経路探索を例に、A100 対比最大7倍の高速化を示す。一方、H800 の命令マイクロベンチマークは、`relu` を含む16ビット演算など一部の関数に効果が集中することを示しており、アルゴリズム全体の高速化はメモリと同期を含めて別途検証が必要である。(Source: [[@2022__NVIDIA Developer Blog__NVIDIA Hopper Architecture In-Depth]], [[@2024__arXiv__Benchmarking and Dissecting the Nvidia Hopper GPU Architecture]]) - DPX の高速化は関数一律ではない。H800 では `relu` を含む一部の16ビット演算で最大13倍の高速化を示した一方、`__viaddmax_s32` のような単純な演算では VIMNMX が使われても世代間差が小さかった。(Source: [[@2024__arXiv__Benchmarking and Dissecting the Nvidia Hopper GPU Architecture]]) - 起動ブロック数を変えた測定では、H800 の DPX スループットが SM 数との関係で増減した。この結果は、命令の有無だけでなく、アクセラレータの配置単位とブロック割当てが実効性能を決めることを示す。(Source: [[@2024__arXiv__Benchmarking and Dissecting the Nvidia Hopper GPU Architecture]]) ## 未解決の問い - DPX の各関数がどの演算パイプへ割り当てられ、どの条件で CUDA コア上の命令へ最適化されるか。 - Smith-Waterman などの実際の動的計画法アルゴリズムで、命令レベルの高速化がメモリ・同期コストを含む end-to-end 性能へどの程度反映されるか。 ## 関連 - 概念: [[GPUマイクロベンチマーク]] / [[GPU最適化]] - エンティティ: [[NVIDIA Hopper]] / [[CUDA]] - ソース: [[@2022__NVIDIA Developer Blog__NVIDIA Hopper Architecture In-Depth]] / [[@2024__arXiv__Benchmarking and Dissecting the Nvidia Hopper GPU Architecture]] ## 出典 - [[@2022__NVIDIA Developer Blog__NVIDIA Hopper Architecture In-Depth]] - [[@2024__arXiv__Benchmarking and Dissecting the Nvidia Hopper GPU Architecture]]