✨ 要約🔬 技術概要
現代のコンピュータは膨大な量のデータを処理するように構築されていますが、そのデータが散在していたり不完全であったりする場合、しばしば苦戦を強いられます。科学計算の世界では、多くの問題が「疎(スパース)」な情報、つまり大きな格子状のデータの大部分がゼロである状況を伴います。都市の地図において、道路だけが記され、空き地は空白のまま残されている状態を想像してみてください。コンピュータがこの地図上の交通流を計算しようとする際、空き地の部分まで処理する必要はありませんが、従来の手法ではそれらをチェックするために時間を浪費してしまいます。これらの問題を効率的に解決するために、エンジニアは物理学、工学、気候科学におけるシミュレーションのエンジンとして機能する、特化したソフトウェアライブラリに頼っています。数十年にわたり、これらのライブラリはSIMDと呼ばれる手法を用いることで高速化してきました。SIMDは、プロセッサが一度に複数の数値に対して同じ計算を行うことを可能にするもので、これは、一つずつ作業するのではなく、工場のアセンブリラインが一度の動作で同一の部品を次々と打ち出す様子によく似ています。しかし、新しいタイプのコンピュータチップ、特にオープンなRISC-Vアーキテクチャに基づいたものが登場するにつれ、チップへの指示内容が製造メーカーごとに大きく異なるため、この速度の優位性を維持することが困難になっています。
スペインの研究チームは、新しいチップが登場するたびにソフトウェアを書き直すことなく、これらの高速計算を異なる種類のハードウェア上でスムーズに動作させる方法を調査しました。彼らは、世界中の科学者によって使用されている、大規模で散在した数値の格子を含む複雑な数学的パズルを解くために設計された3つの主要なライブラリ、Ginkgo、PETSc、およびSLEPcに焦点を当てました。研究者たちは、これらの計算のためのユニバーサルな翻訳機として機能するソフトウェアコードである「Google Highway」というツールをテストしました。開発者は、特定のチップのための具体的な指示を書く代わりに、このツールを使用して一つの指示セットを書くことができ、それによって、大手テック企業のチップであっても、RISC-Vのような新しいオープンソースのデザインであっても、利用可能なプロセッサ上で動作するように自動的に適応させることができます。チームはこれら3つのライブラリから核となる数学的演算を取り出し、このユニバーサルなツールを用いて再構築し、その後、商業用RISC-VチップであるSpacemiT K1で、その速度が維持されるかどうかを検証しました。
結果は、このアプローチが有効であることを示しましたが、データの整理方法に関する重要な注意点もありました。研究者がRISC-Vチップ上でソフトウェアをテストした際、このユニバーサルなツールが計算を正常に加速させたことが分かり、一度書いたコードを異なるマシン上で高速に実行できることが証明されました。しかし、速度の向上はすべてのタスクで一様ではありませんでした。中間結果をプロセッサ内の高速メモリ内に保持する特定の操作では、劇的な改善が見られ、一部のステップでは標準バージョンよりも10倍以上速くなりました。一方で、メモリへのデータの出し入れを頻繁に行う必要がある他のタスクでは、向上はわずかでした。決定的な発見は、データの格納形式がコード自体よりも重要であるということでした。研究者が散在したデータを特定のパディング(詰め物)構造へと再配置したとき、速度の向上は顕著でした。データを元の不規則な形式のままにした場合、加速は最小限でした。このことは、ユニバーサルな翻訳ツールは効果的であるものの、高いパフォーマンスを実現するためには、データの物理的なレイアウトが最も重要な要因であることを示唆しています。
また、このユニバーサルなアプローチを使用することに伴うトレードオフについても、この研究は明らかにしました。研究者たちは、このツールによってコードの記述が容易になり移植性も高まった一方で、計算を効率的に実行するために、元のライブラリが持つ複雑で柔軟な機能の一部を削ぎ落とす必要があったことを発見しました。彼らは、プロセッサを遅延させる特定の条件判定を取り除くなど、ソフトウェアの内部ロジックを簡素化しなければなりませんでした。これは、単に既存のライブラリにこのツールを組み込むだけでは不十分であり、ソフトウェアの特定の部分をゼロから再構築する必要があったことを意味します。こうしたエンジニアリング上の課題にもかかわらず、この実験は、ユニバーサルなツールが異なるプロセッサ間の溝を埋めることに成功したことを実証しました。研究者たちは、ツールは将来のソフトウェアのための強力な基盤を提供するものの、最高レベルの速度を達成するには、依然としてデータの格納方法や計算の構造化に対する入念な計画が必要であると結論付けました。この研究は、将来予想される多様なコンピュータチップ上で動作する、高速な科学用ソフトウェアを構築したい開発者にとって、実践的な道筋を提示しています。
技術要約:RISC-Vにおける疎行列線形代数ライブラリのポータブルなSIMD加速化
問題提起
現代の疎行列線形代数ライブラリ(Ginkgo、PETSc、SLEPcなど)は、最新のCPUアーキテクチャ上で高いパフォーマンスを実現するために、単一命令複数データ(SIMD)ベクトル化に大きく依存しています。しかし、**パフォーマンスのポータビリティ(移植性)**を確保することは依然として大きな課題です。SIMD拡張機能は、プロセッサファミリーや命令セットアーキテクチャ(ISA)によって大きく異なります。従来、開発者はターゲットとなるハードウェアごとに、アーキテクチャ固有のイントリンシック(例:x86のAVX2、ArmのNEON、RISC-VのRVV)を用いた個別の実装を記述し、維持しなければなりませんでした。このアプローチはコードの複雑さを増大させ、ポータブルで高性能な疎行列線形代数フレームワークの開発を阻害しています。
著者らは特にRISC-Vエコシステム(オープンでロイヤリティフリーなISA)を対象としていますが、その取り組みをRISC-Vだけに限定することを避けることを目的としています。核心となる問題は、いかにして、複数の低レベルコードパスを維持する負担なしに、RISC-Vで高性能であり、かつ他のベクトルISAにもポータブルなSIMD加速型疎行列線形代数ソフトウェアを開発するかという点です。
手法
本論文では、ポータブルなSIMD加速実装を開発するために、オープンソースのC++抽象化レイヤーである**Google Highway (GHW)**の使用を検討しています。GHWを使用すると、開発者はネイティブのイントリンシックに近いスタイルでベクトル化されたコードを記述できますが、これはコンパイル時に様々なISA(RVV、AVX、NEONなど)へとマッピングされます。
手法は以下の3つのフェースで構成されています。
ライブラリの選定と分析: 著者らは、異なる設計思想を持つ3つの代表的なライブラリを選定しました。
Ginkgo: ヘテロジニアスアーキテクチャに焦点を当てたモダンなC++ライブラリであり、エグゼキューターベースのデザイン、テンプレート、およびラムダ関数を活用しています。
PETSc: オブジェクト指向デザインパターン(構造体と関数ポインタによる)を用いた科学計算用のCベースのツールキットであり、実行時の設定が可能です。
SLElec: PETScの拡張であり、その設計および並列化モデルを継承しています。
ベクトル化戦略:
カーネルの特定: 著者らは、3つの主要なソルバー演算子とその基礎となるカーネルを特定しました。
Ginkgo: BiCGStabソルバー(カーネル:プリコンディショニング、ドット積、AXPY様操作、SpMV)。
PETSc: GMRESソルバー(カーネル:VecAXPY、VecScale、VecNorm、VecMAXPY、VecMDot、MatMult)。
SLEPc: Krylov–Schurソルバー(GMRESと同様のカーネル)。
実装アプローチ:
Ginkgo については、既存のテンプレート多用型およびラムダベースの構造、ならびに内側ループ内の条件付き不変量が、直接的なベクトル化を妨げていることを発見しました。そのため、テンプレートとラムダを排除し、内側のループにおける条件ロジックを排除した、ベクトル化に適した新しいカーネル を開発することを選択しました。
PETSc/SLEPc については、自己完結型のCルーチンに対してベクトル化された実装を手動で開発しました。PETScは密行列演算において基礎となるBLAS/LAPACKに依存していますが、特定の疎行列ルーチンについては、最適なパフォーマンスを引き出すために手動でのGHW統合が必要であると述べています。
比較: GHWのアプローチを、生のRISC-V Vector (RVV) 1.0 イントリンシックと比較しました。論文では、RVVが低レベルの制御(明示的なベクトル長管理、冗長な命名)を提供する一方で、GHWはより高レベルの抽象化(自動的なテール処理、汎用的な命名、ボイラープレートの削減)を提供することを強調しています。
実験セットアップ:
ハードウェア: Banana Pi BPI-F3ボード上のSpacemiT K1プロセッサ(8コア、1.6 GHz)。実験は、ベクトル化の効果をワークロードのバランシング問題から分離するため、シングルコア に限定されました。ベクトルユニットは、256ビットのベクトル長を持つRVV 1.0をサポートしています。
データセット: SuiteSparse Matrix Collection から抽出された159個の疎行列(次元 >100,000、グラフ関連の問題を除く)。
ソフトウェア: GCC 13.2.0、Ginkgo v1.11.0、PETSc/SLEPc v3.22.3。
フォーマット: 疎行列ベクトル乗算(SpMV)は、CSR (Compressed Sparse Row)とsELL-C (sliced ELLPACK)の両方のフォーマットを用いてテストされました。
主な貢献
ポータブルSIMD抽象化: Google Highwayを使用して、RISC-Vにおける疎行列線形代数のための性能ポータブルなSIMD実装を作成できることを実証し、ネイティブのイントリンシックとクロスISAのポータビリティとの間の溝を埋めました。
ライブラリ固有の適応: 3つの異なるライブラリへのGHW統合におけるエンジニアリング上の課題と解決策を詳細に記述しました。
カーネルのリファクタリングによるGinkgoのテンプレート/ラムダの複雑さの克服。
PETSc/SLEPcのCベースのオブジェクト指向ルーチンのベクトル化への適応。
ソルバーのベクトル化: 3つの重要なソルバー(GinkgoのBiCGStab、PETScのGMRES、SLEPcのKrylov–Schur)およびそれらの基礎となるレベル1およびレベル2のBLASカーネルのベクトル化に成功しました。
経験的特性評価: 商用RISC-Vチップ上での包括的なパフォーマンス評価を行い、ポータビリティ、プログラマビリティ、およびパフォーマンスの間のトレードオフを分析しました。
結果
実験により、以下の観察結果が得られました。
カーネルレベルの加速: ほとんどのベクトル化されたカーネルはスカラーバージョンに対して着実な加速を実現しましたが、その倍率はカーネルの種類や行列の構造によって大きく異なりました。
高い利得: GinkgoのBiCGStabにおけるStep_1およびStep_2は、元のOMPエグゼキューター・ルーチンの非効率性を排除したことにより、最大13倍 という高い加速を示しました。
メモリ帯域の制限: ドット積は、メモリ帯域幅に制限されている(memory-bandwidth-bound)ことと一致して、緩やかで密集した加速を示しました。
フォーマット依存性: データレイアウトの選択が極めて重要でした。SpMVにおいては、sELL-C がCSR を一貫して上回りました。CSRの不規則な行長はベクトル化の効率を制限しましたが、sELL-CのパディングとスライシングはSIMD幅とより良く適合しました。
ソルバーレベルのパフォーマンス:
Ginkgo (BiCGStab): sELL-Cベースのソルバーは、CSRベースのバージョンよりも大幅に高い加速を達成し、SpMVの結果と密接に連動していました。これは、SpMVが全体のソルバー性能の決定要因であることを裏付けています。
PETSc (GMRES) & SLEPc (Krylov–Schur): CSRストレージを使用している場合でも、完全なソルバーはベクトル化の恩恵を受けました。ただし、中間結果をレジスタに保持する操作(例:VecNorm、VecMDot)は、メモリへの書き込みを必要とする操作(例:VecAXPY、VecPointwiseMult)よりも大きな恩恵を受けました。
GHW vs. RVV イントリンシック: GHWは、RVVの複雑さ(例:vsetvlやリダクションステップの手動管理に対し、LoadNやReduceSumによる自動的なベクトル長処理)を、顕著なパフォーマンス低下を招くことなく抽象化することに成功し、プロダクション品質のコードにおけるその有用性を検証しました。
重要性と主張
本論文は、Google Highwayが、RISC-Vおよびその他のベクトルアーキテクチャにおける疎行列線形代数のポータブルなSIMD加速のための有望な基盤を提供すること を主張しています。
実践的な指針: 本研究は、プロダクションソフトウェアにGHWを採用するための実践的な指針を提供しています。すなわち、GHWがポータビリティの問題を解決する一方で、高いパフォーマンスを達成するには、適切なデータレイアウト (例:SpMVにおいてCSRよりもsELL-Cを好む)、カーネルの構成 (条件付き不変の除去)、およびメモリを意識した実装 が必要であることを強調しています。
トレードオフ分析: 結果は、ポータビリティとパフォーマンスの間のトレードオフを特徴づけています。GHWは抽象化レイヤーを導入しますが、RISC-Vにおけるパフォーマンス向上は、基礎となるカーネルがベクトルアーキテクチャに最適化されている限り、その使用を正当化するほど十分に大きいものです。
将来の生存可能性: 本研究は、GHWがRISC-Vを超えて他のISAにも広がる、SIMD加速されたポータブルな疎行列線形代数ライブラリを実現するための基礎となり得ることを示唆しています。これはHPCエコシステムにおける重要なボトルネックに対処するものです。
著者らは、GHWをプロダクショングレードのライブラリに統合するにはコード構造の慎重な検討が必要であり、パフォーマンスは特定のカーネルや行列の特性に強く依存することを述べ、謙虚な姿勢を維持しています。
毎週最高の コンピュータサイエンス 論文をお届け。
スタンフォード、ケンブリッジ、フランス科学アカデミーの研究者に信頼されています。
受信トレイを確認して登録を完了してください。
問題が発生しました。もう一度お試しください。
スパムなし、いつでも解除可能。
週刊ダイジェスト — 最新の研究をわかりやすく。 登録 ×