HeadlinesBriefing HeadlinesBriefing.com

Vx 言語: 1つの言語、すべてのチップに

Hacker News •
×

Vx は CPU、GPU、NPU、アクセラレータのメモリが型システムの一部である異種コンピューティング向けのシステムプログラミング言語です。ホストスレッドがデバイスポインタを参照外しすると、セグフォルトではなくコンパイルエラーになります。Apple Silicon 上の macOS と Linux x86_64 で利用可能です。異種性はランタイムではなく型システムに属すべきです。データが存在する場所はその型の一部です。ほとんどの言語ではアクセラレータはインフラストラクチャとして扱われます:あなたは数学を書き、大きな不透明なランタイムがそれをどのように送信するかを決定します。Vx はそれを意味論として扱います。NPU の高帯域幅メモリにピン留めされたテンソルは、ホスト DRAM のテンソルとは異なる型を持ち、その間を行き来するには hardware の境界が自由であっても explicit な transfer() が必要です。Apple の統一メモリでは、この transfer はほとんど何もコンパイルされません。それでも書かれているのは、データの局所性はバイナリをプロファイリングするのではなくソースコードを読むことで証明可能であるべきだからです。

コンパイラはアドレススペースの型付け、容量の受け入れ、シーム契約、線形型、トポロジーの到達可能性、および自動微分の問題を除外します。マシンは仮定されるのではなく宣言されます。ほとんどのコンパイラはコストモデルをハードコードします。Vx はそれを読み取ります。マシンファイルは実際の部品のメモリ階層とインターコネクトを記述し、コンパイラはそれに従って配置を受け入れたり拒否したりします。単位は正確な整数変換であり、決して浮動小数点ではありません:SI 接頭辞は10進数(GB = 10^9)、IEC 接頭辞は2進数(GiB = 2^30)。ベンダーシートからコピーされた数字は、そのシートが意味したとおりの意味を持ちます。リポジトリには H100、H200、B200、A100、MI300X、Apple M4、およびマルチ GPU ノードのマシンファイルが含まれており、それぞれの出典を引用し、検証されていない数値は「未検証」としてマークされています。

どのようにコンパイルされるか:データ指向のパラレルフロントエンド。すべてのシンボル、名義型、および単形化されたバリアントはフラットな 256 ビット識別子です。名義型システムに加えて再帰的型のための必須ボックスングによりモジュールが分離され、クエリエンジンやロック競合なしでコア間でパイプラインを並列実行できます。コンパイルはポインタを追いかける木ではなくフラットな配列を歩きます。同じソースは、シリアルに構築してもパラレルに構築してもバイト同一の MLIR を生成します。これはテストスイートで断言されており、単なる期待ではありません:ベンチマークスケールで、1 スレッド、4 スレッド、およびスレッドプールがパスから完全に外されている状態でも、さらに新しいプロセスでコーパスを再コンパイルして各実行に独自のハッシュシードを与えることで確認されます。

よくある質問: Vx とは何か、そして何がそれを独自のものにしているのか?

Vx は CPU、GPU、NPU、アクセラレータのメモリ型が型システムの一部である異種コンピューティング向けのシステムプログラミング言語です。コンパイル時にデバイスポインタの参照外しを検出することで、セグフォルトなどのランタイムエラーを防ぎます。アクセラレータをインフラストラクチャではなく意味論的コンポーネントとして扱い、ハードウェアの境界が自由であってもメモリ空間間での明示的なデータ転送を必要とします。

出典: Hacker News · 要約:HeadlinesBriefing