出版物
Zachary DeVito, James Hegarty, Alex Aiken, Pat Hanrahan, and Jan Vitek
PLDI '13
自動チューニングやドメイン固有言語(DSL)などの高性能コンピューティングアプリケーションは、高性能と移植性を実現するために生成プログラミング技術に依存しています。しかし、これらのシステムは複数の異なる言語で実装され、プログラム実行と別のプロセスでコード生成が行われるため、特定の最適化が困難です。私たちはLuaという人気のスクリプト言語を活用し、新しい低レベル言語であるTerraの実行を段階的に制御します。ユーザーは高レベル言語で最適化を実装し、組み込みの構文を使って高性能なTerraコードを生成・実行できます。メタプログラミングを簡単にするため、LuaとTerraは同じレキシカル環境を共有しますが、TerraコードはLuaのランタイムとは独立して実行されるため、パフォーマンスも確保されます。既存のマルチ言語システムをTerraのみで再実装することでこの設計を評価しました。TerraベースのBLASルーチン自動チューナーは、ATLASの性能に対し20%以内で動作し、Stencil計算用のDSLは手書きのCコードよりも2.3倍高速に実行されました。
高性能型のファーストクラスランタイム生成を可能にするExotype
Zachary DeVito, Daniel Ritchie, Matt Fisher, Alex Aiken, and Pat Hanrahan
PLDI '14
Exotypeは、動的型付け言語のメタオブジェクトプロトコルの柔軟性と、低レベル言語のパフォーマンス制御を組み合わせたユーザー定義の型です。Exotypeは動的言語のオブジェクトと同様、実行時にプログラムで定義され、データベーススキーマなどの外部データに基づいた動作が可能です。高性能を達成するため、Exotypeの動作はランタイムコンパイル時に定義され、Terra上で実装されています。Exotypeのコンストラクタがどのように構成されるかを示し、Exotypeを使用して、シリアル化、動的アセンブリ、自動微分、確率的プログラミングのための高性能ライブラリを実装しました。これらのExotypeは、動的型付け言語のライブラリに匹敵する表現力を持ちながら、既存の低レベル静的型付け言語で書かれたライブラリを超える最適化を実現しています。シリアル化ライブラリはKryoより11倍高速で、動的アセンブリはGoogleのChromeアセンブリより3~20倍高速です。
Terraの設計: 高レベル言語と低レベル言語の特性を活用する
Zachary DeVito and Pat Hanrahan
SNAPL '15
アプリケーションは、パフォーマンスが重要な部分を最適化し、その他の部分をより生産的に記述するために、高レベルと低レベルの言語を組み合わせて書かれることがよくあります。このアプローチはWeb開発やゲームプログラミング、アプリケーションのビルドシステムでも用いられます。しかし、ほとんどの言語は相互運用性を考慮して設計されていないため、グルーコードや重複する機能が複雑さを増しています。私たちは、相互運用性を考慮して設計された二言語システムを提案します。高レベル言語としてLuaを採用したのは、もともと相互運用性を考慮して設計されていたためです。そして、Luaと相互運用する新しい低レベル言語Terraを設計しました。TerraはLuaに埋め込まれ、Luaからメタプログラミングが可能ですが、抽象度が低く、高性能コードの記述に適しています。LuaとTerraが相互に補完し合い、より強力なシステムとなるための重要な設計決定(ランタイムの分離、グルーコードの不要な相互運用、メタプログラミング機能)について議論します。