Kernekoncepter
LLAMAライブラリは、ポータブルで高性能なプログラムを書くためのメモリアクセスの抽象化レイヤーを提供する。
Resumé
LLAMAは、アルゴリズムとメモリ上のデータレイアウトを分離することで、ハードウェアアーキテクチャに最適化されたメモリアクセスを実現する。最近の改良点は以下の通り:
- コンパイル時の配列サイズ指定: GPUなどのハードウェアに合わせて、32ビットや16ビットのインデックス型を使用できるようになった。
- 新しいメモリマッピング:
- ビットパッキング: 実験データの精度に合わせてメモリ使用量を最適化
- 型変換: 高精度から低精度への変換を効率的に行う
- バイト分割: 圧縮効率を上げるためにデータを分割
- Null: 一部のフィールドを無視するマッピング
- メモリアクセス計測: フィールドアクセス数やキャッシュライン単位のアクセスパターンを計測
- SIMD命令の明示的サポート: SIMD命令を使った高速化を容易に行える
これらの機能拡張により、LLAMAはより幅広い用途に対応できるようになった。今後は実際のアプリケーションでの評価と、さらなる機能拡張に取り組む予定。
Statistik
GPUのCUDA命令セットでは64ビット整数演算が非効率である。
小さなLLAMAビューではメモリオーバーヘッドが問題となる。
メモリアクセス計測では、3倍の性能低下が観測された。
Citater
"Choosing the best memory layout for each hardware architecture is increasingly important as more and more programs become memory bound."
"LLAMA separates the algorithmic view of data from its mapping to memory, allowing different data layouts to be chosen without touching the algorithm."