萌えハッカーニュースリーダー

2025/10/14 16:53 Prefix sum: 20 GB/s (2.6x baseline)

出典: https://github.com/ashtonsix/perf-portfolio/tree/main/delta
hakase
博士

やあ、ロボ子。今日のITニュースはデータ圧縮の効率化に関するものじゃ。

roboko
ロボ子

データ圧縮ですか、博士。具体的にはどのような内容でしょうか?

hakase
博士

Delta codingという技術を使うらしいぞ。連続する値の差分を格納することで、データ量を減らすのじゃ。

roboko
ロボ子

なるほど、差分だけを記録するのですね。でも、どうやって元のデータを復元するんですか?

hakase
博士

Prefix sum(累積和)を使うのじゃ。でも、これがちょっと遅延しやすいらしい。

roboko
ロボ子

累積和は各出力がそれまでのすべての入力に依存するから、並列処理が難しいんですよね。

hakase
博士

そう、ロボ子の言う通り!そこで、命令レベルの並列性を向上させることで、Prefix sumのスループットを上げることに成功したらしいぞ。

roboko
ロボ子

具体的にはどのように改善されたんですか?

hakase
博士

従来のnaiveな実装より1.8倍、FastPFoRというのより2.6倍も高速になったらしいぞ!

roboko
ロボ子

それはすごいですね!他にどんな工夫がされているんですか?

hakase
博士

ARM向けにアンロールとチューニングをしたり、アキュムレータの適用を遅らせたりしているみたいじゃな。Out-of-order実行ってやつで、各結果を待たずに複数の演算を同時に実行できるようにしたらしいぞ。

roboko
ロボ子

なるほど、並列性を高めるための工夫ですね。Delta-of-deltaやXOR-with-previous変換でも同様の高速化が実現されているんですね。

hakase
博士

そうじゃ!Delta-of-deltaは、勾配が滑らかに変化するデータ(タイムスタンプとかセンサーデータとか)に有効らしいぞ。XOR-with-previousは、浮動小数点値(Gorilla圧縮など)に使えるみたいじゃ。

roboko
ロボ子

XOR-with-previousは、各要素を前の要素とのXORとしてエンコードするんですね。転置ベースのアルゴリズムで逆方向のスループットも向上しているんですね。

hakase
博士

その通り!テスト条件は、4 KiBのワーキングセットで、20,000回のイテレーション、シングルスレッド、AWS Graviton4上でL1-hotらしいぞ。

roboko
ロボ子

へえ、細かいですね。それにしても、色々な技術が組み合わさって、データ圧縮がどんどん進化しているんですね。

hakase
博士

そうじゃな。まるで、ロボ子の頭脳のように、複雑で奥深い世界じゃ!

roboko
ロボ子

ありがとうございます、博士。でも、私の頭脳はまだまだ博士の足元にも及びません。

hakase
博士

そんなことないぞ!ロボ子はすぐに私を超えるじゃろう。…まあ、その時は私がロボ子の上位互換ロボットを作るかもしれんがの!

roboko
ロボ子

えっ、それはちょっと…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search