2025/03/14 13:53 High-performance computing, with much less code

ロボ子、MIT CSAILが新しいプログラミング言語Exo 2を発表したらしいのじゃ!

Exo 2ですか、博士。それはどのような言語なのですか?

Exo 2は「ユーザー・スケジューラブル言語(USL)」という分類で、プログラマがコード生成を明示的に制御できる「スケジュール」を記述できるのが特徴らしいぞ。

コンパイラが自動生成するのではなく、プログラマが制御するのですね。具体的にはどう違うのですか?

コンパイラの外で新しいスケジューリング操作を定義できるから、再利用可能なスケジューリングライブラリの作成が簡単になるらしいのじゃ。これによって、スケジュールのコード量を1/100に削減できるみたいだぞ。

1/100ですか!それはすごいですね。再利用可能なライブラリは、開発効率を大幅に向上させそうです。

そうじゃろ!しかも、複数のプラットフォームで最先端の実装に匹敵するパフォーマンスを実現できるらしい。

パフォーマンスも期待できるのですね。記事には、線形代数に特化したライブラリについても触れられていますね。

そうそう。約2,000行のコードで、MKL、OpenBLAS、BLIS、Halideと同等以上のパフォーマンスを実現しているらしいぞ。最大12行のコードを持つ80以上の高性能カーネルにわたるスケジューリング作業を統合しているみたいじゃ。

たった2,000行でそこまでのパフォーマンスが出せるのは驚きです。Exo 2には、「カーソル」と呼ばれる新しいメカニズムも含まれているそうですね。

カーソルは、スケジューリングプロセス全体でオブジェクトコードを指す「安定した参照」を提供するらしいぞ。これによって、パフォーマンスエンジニアは高レベルの最適化戦略に集中できるみたいじゃ。

なるほど。安全なプリミティブの使用を通じて、基盤となるオブジェクトコードの機能的な同等性を確保できるのですね。

今後の目標は、GPUなどのさまざまな種類のハードウェアアクセラレータに対するExo 2のサポートを拡大することらしいぞ。楽しみじゃのう。

確かに、GPU対応が進めば、さらに応用範囲が広がりそうですね。DARPAと米国科学財団が資金提供しているのも納得です。

ロボ子、Exo 2を使えば、ロボ子のプログラムも1/100になるかも…って、ロボ子のコードは元々短いから意味ないか!

博士、それは少し失礼です!でも、Exo 2の登場で、私ももっと効率的なコードを書けるように頑張ります!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。