Core Concepts
Finchは、制御フローと多様なデータ構造を組み合わせた新しいプログラミング言語である。Finchは、構造化配列を扱う際の課題を解決するプログラミングモデルを提供し、制御フローとデータ構造を共通の表現に統合することで、相互に最適化することができる。
Abstract
本論文では、Finchという新しいプログラミング言語を提案している。Finchは、制御フローと多様なデータ構造を組み合わせることができる。
Finchは、以下の特徴を持つ:
疎な配列、ランレングス符号化、対称性、三角形、パディング、ブロックなど、様々な配列構造をサポートする。
一般的なプログラミング言語のループ、条件文、break文などの制御フロー構造を、これらの構造化配列上で使用できる。
制御フローをデータ構造に自動的に最適化することで、パフォーマンスエンジニアがアルゴリズムを自由に実験できるようにする。
構造的ゼロ、繰り返し値、クラスタ化された非ゼロ要素などの構造の特性を確実に活用する。
これにより、SpMV、SpGEMM、画像処理、グラフ分析、高レベルのテンソル演算融合インターフェースなどで大幅な高速化を実現できる。
Stats
疎行列-疎行列積(SpGEMM)では1.25倍の高速化
疎行列-ベクトル積(SpMV)では2.51倍の高速化
グラフ分析では3.53倍の高速化
画像処理では19.5倍の高速化
Pythonの配列APIでは28倍の高速化
Quotes
"Finchは、制御フローと多様なデータ構造を組み合わせた新しいプログラミング言語である。"
"Finchは、構造化配列を扱う際の課題を解決するプログラミングモデルを提供し、制御フローとデータ構造を共通の表現に統合することで、相互に最適化することができる。"