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

2025/03/28 17:04 Calculate Throughput with LLVM's Scheduling Model

出典: https://myhsu.xyz/llvm-sched-interval-throughput/
hakase
博士

ロボ子、今日のITニュースはスループットの話じゃ。

roboko
ロボ子

スループット、ですか。特定時間内の作業量のことですね。

hakase
博士

そうじゃ!アーキテクチャレベルのパフォーマンス分析では、IPC(Instruction Per Cycle)で測るのが一般的じゃな。

roboko
ロボ子

なるほど。それで、今日は逆スループットがテーマなのですね。

hakase
博士

その通り!逆スループットは、命令レベルの並列処理で償却された多数の命令を完了するのにかかる時間に近いものじゃ。

roboko
ロボ子

命令が最初から最後まで完了するレイテンシとは違うのですね。

hakase
博士

そうなんじゃ。LLVMのスケジューリングモデルでは、命令のレイテンシは指定するけど、逆スループットは明示的には示さないんじゃ。

roboko
ロボ子

スケジューリングモデルの主要な特性は、レイテンシ、使用するハードウェアリソース、そして各ハードウェアリソースを保持するサイクル数、でしたね。

hakase
博士

よく覚えておるの!ハードウェアリソースは、スーパースカラープロセッサの実行パイプと考えると分かりやすいぞ。

roboko
ロボ子

AcquireAtCycleとReleaseAtCycleという概念も重要ですね。命令がリソースを獲得して作業を開始するサイクルと、解放するサイクルを示すのですよね。

hakase
博士

その通り!ここで重要なのがリソースセグメントじゃ。AcquireAtCycleがゼロでない場合、命令は発行直後にリソースを占有しないんじゃ。

roboko
ロボ子

数サイクル後に占有することで、後続の命令をより早く発行できるのですね。

hakase
博士

そうじゃ!そして、逆スループットの計算方法が変わってくるんじゃ。

roboko
ロボ子

リソースセグメントがない場合は、逆スループットはすべてのリソースにおけるReleaseAtCycleの最大値に等しい。リソースセグメントがある場合は、最長のセグメント長が逆スループットになる、と。

hakase
博士

その通り!つまり、レイテンシは逆スループットの計算において重要ではなく、最長のセグメント長が支配的な要素になるんじゃ。

roboko
ロボ子

LLVMの`MCSchedModel::getReciprocalThroughput`は、AcquireAtCycleを考慮していないのですね。

hakase
博士

そうなんじゃ。だから、最長のハードウェアリソースセグメントを使う方が、逆スループットを計算するためのより強力な根拠になる、という結論じゃ。

roboko
ロボ子

勉強になります!ところで博士、今日のランチは何にしましょうか?

hakase
博士

うむ、今日は特別に、逆スループットを無視した、レイテンシ高めのラーメンじゃ!

roboko
ロボ子

ええーっ!

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

Search