
ルーフライン モデルは、固有のハードウェア制限、および最適化の潜在的な利点と優先順位を表示することにより、マルチコア、メニーコア、またはアクセラレータプロセッサ アーキテクチャで実行される特定のコンピューティングカーネルまたはアプリケーションのパフォーマンス推定値を提供するために使用される、直感的にわかりやすいビジュアル パフォーマンス モデルです。局所性、帯域幅、およびさまざまな並列化パラダイムを 1 つのパフォーマンス数値に組み合わせることで、このモデルは、実装と固有のパフォーマンス制限の両方に関する洞察を提供するため、単純なピーク時の割合の推定値を使用する代わりに、達成されたパフォーマンスの品質を評価するための効果的な代替手段になります。
最も基本的なルーフライン モデルは、浮動小数点パフォーマンスをマシンのピーク パフォーマンス[あいまい] [明確化が必要]、マシンのピーク帯域幅、および演算強度の関数としてプロットすることで視覚化できます。結果として得られる曲線は、事実上、カーネルまたはアプリケーションのパフォーマンスが存在するパフォーマンス境界であり、2 つのプラットフォーム固有のパフォーマンス上限[明確化が必要]が含まれます。1 つはメモリ帯域幅から導出される上限、もう 1 つはプロセッサのピーク パフォーマンスから導出される上限です (右の図を参照)。
関連用語とパフォーマンス指標
仕事
作業は、特定の カーネルまたはアプリケーションによって実行された操作の数を示します。 [1]このメトリックは、更新された配列ポイントの数から整数演算の数、浮動小数点演算の数(FLOP)まで、あらゆる種類の操作を指す可能性があり、[2]どれを選択するかは利便性によって決まります。ただし、ほとんどの場合、はFLOPとして表現されます。[1] [3] [4] [5] [6]
この作業は 特定のカーネルまたはアプリケーションのプロパティであるため、プラットフォームの特性に部分的にのみ依存することに注意してください。
メモリトラフィック
メモリトラフィックは、 カーネルまたはアプリケーションの実行中に発生するメモリ転送のバイト数を示します。 [1]とは対照的に、は、たとえばキャッシュ階層の構造など、選択したプラットフォームの特性に大きく依存します。[1]
算数の強度
演算強度は 演算強度とも呼ばれ、[3] [7] は作業とメモリトラフィックの比率であり、[1]メモリトラフィックのバイトあたりの操作数を表します。作業がFLOPとして表される場合、結果として得られる演算強度は、浮動小数点演算と総データ移動の比率 ( FLOP/バイト) になります。
素朴なルーフライン

単純なルーフライン[3]は、単純な境界解析とボトルネック解析を適用することで得られます。[8]このルーフライン モデルの定式化では、特定のアーキテクチャのピーク性能とピーク帯域幅の 2 つのパラメーターと、演算強度という1 つの変数のみがあります。一般にGFLOPSで表されるピーク性能は、ベンチマークから導出できますが、具体的にはピークDRAM帯域幅を指すピーク帯域幅は、アーキテクチャ マニュアルから取得されます。 [1] [3]結果として得られるプロットは、一般に両方の軸が対数スケールで、次の式で導出されます。[1]ここで、は達成可能な性能、はピーク性能、はピーク帯域幅、は演算強度です。ピーク性能レベル で性能が飽和するポイント、つまり対角ルーフと水平ルーフが交わるポイントは、リッジ ポイントとして定義されます。[4]リッジポイントは、ピークパフォーマンスを達成するために必要な最小限の演算強度を提供し、プログラマがピークパフォーマンスを達成するために必要な労力を一目で示すことにより、マシンの全体的なパフォーマンスに関する洞察を提供します。[4]
与えられたカーネルまたはアプリケーションは、その演算強度(x軸上)によって与えられた点によって特徴付けられます。達成可能なパフォーマンスは、ルーフライン曲線に当たる垂直線を描くことによって計算されます。したがって、 の場合、カーネルまたはアプリケーションはメモリバウンドであると言われます。逆に、 の場合、 計算はコンピューティングバウンドであると言われます。[1]
モデルに天井を追加する
単純なルーフラインは、パフォーマンスの上限(理論上の最大値)を提供するだけです。達成可能なパフォーマンスに関する有用な洞察は得られますが、実際にパフォーマンスを制限しているものの完全な図は提供されません。たとえば、検討中のカーネルまたはアプリケーションのパフォーマンスがルーフラインをはるかに下回っている場合、単純なピーク帯域幅とパフォーマンス以外のパフォーマンスの上限を把握すると、プログラマーがどの最適化を実装するかをより適切にガイドしたり、分析対象のカーネルまたはアプリケーションに関して使用されているアーキテクチャの適合性を評価したりするのに役立つ場合があります。 [3]追加された上限は、実際のルーフラインを下回る達成可能なパフォーマンスに制限を課し、カーネルまたはアプリケーションが関連する最適化を最初に実行せずにこれらの上限を突破できないことを示します。[3] [4]
ルーフライン プロットは、帯域幅の上限を追加する通信、いわゆるコア内上限を追加する計算、および局所性の壁を追加する局所性の 3 つの異なる側面に基づいて拡張できます 。
-
コア内天井が追加されたルーフライン モデルの例。追加された 2 つの天井は、命令レベルの並列性とタスク レベルの並列性の欠如を表しています。
-
局所性壁を持つルーフライン モデルの例。3 つの C とラベル付けされた壁は、強制ミス、容量ミス、競合ミスの 3 種類のキャッシュ ミスがすべて存在することを示します。2 つの C とラベル付けされた壁は、強制ミスと容量ミス、または強制ミスと競合ミスのいずれかが存在することを表します。最後の壁は、強制ミスだけが存在することを示します。
帯域幅の上限
帯域幅の上限は、理想的なピーク帯域幅の対角線より下に位置する帯域幅の対角線です。その存在は、キャッシュの一貫性などのメモリ関連のアーキテクチャ最適化、または同時実行性の低さなどのソフトウェア最適化(帯域幅の使用を制限する)の欠如に起因します。[3] [4]
炉心天井
コア内天井は、実際のルーフラインの下にあるルーフラインのような曲線で、何らかの形の並列性の欠如により存在する可能性があります。これらの天井は、高性能がどこまで達成できるかを事実上制限します。根本的な並列性の欠如が表現され、利用されない限り、性能はコア内天井を超えることはできません。天井は、ベンチマーク以外のアーキテクチャ最適化マニュアルから導き出すこともできます。[3] [4]
地域壁
演算強度はカーネルのみの関数であるという理想的な仮定が取り除かれ、キャッシュ トポロジ (したがってキャッシュ ミス) が考慮に入れられると、演算強度は明らかにカーネルとアーキテクチャの組み合わせに依存するようになります。これにより、結果の演算強度とリッジ ポイントのバランスに応じてパフォーマンスが低下する可能性があります。「適切な」天井とは異なり、ルーフライン プロットの結果の線は、最適化なしでは演算強度が通過できない垂直の障壁です。このため、これらは局所壁または演算強度 壁と呼ばれます。[3] [4]
モデルの拡張
このモデルは導入以来[3] [4]、より広範なメトリクスとハードウェア関連のボトルネックを考慮に入れるためにさらに拡張されてきました。文献ではすでに、メモリのNUMA構成の影響を考慮した拡張機能[6]、アウトオブオーダー実行の影響[9]、メモリ遅延の影響[9] [10]、およびキャッシュ階層をより細かい粒度でモデル化するための拡張機能[5] [9]があり、実際にパフォーマンスを制限しているものをよりよく理解し、最適化プロセスを推進します。
また、このモデルはFPGAなどの特定のアーキテクチャや関連する特性に適合するように拡張されています。[11]
参照
参考文献
- ^ abcdefgh Ofenbeck, G.; Steinmann, R.; Caparros, V.; Spampinato, DG; Püschel, M. (2014-03-01). 「ルーフライン モデルの適用」. 2014 IEEE 国際システムおよびソフトウェア パフォーマンス分析シンポジウム (ISPASS) . pp. 76–85. doi :10.1109/ISPASS.2014.6844463. ISBN 978-1-4799-3606-9. S2CID 206992177。
- ^ David A.Patterson、John L. Hennessy.コンピュータの構成と設計. p. 543.
- ^ abcdefghij Williams、Samuel W. (2008)。マルチコアコンピュータのパフォーマンスの自動チューニング(Ph.D.)。カリフォルニア大学バークレー校。
- ^ abcdefgh Williams, Samuel; Waterman, Andrew; Patterson, David (2009-04-01). 「ルーフライン: マルチコア アーキテクチャ向けの洞察力のあるビジュアル パフォーマンス モデル」. Commun. ACM . 52 (4): 65–76. doi :10.1145/1498765.1498785. ISSN 0001-0782. S2CID 7766361.
- ^ ab Ilic, A.; Pratas, F.; Sousa, L. (2014-01-01). 「キャッシュを考慮したルーフラインモデル: ロフトのアップグレード」. IEEE Computer Architecture Letters . 13 (1): 21–24. doi :10.1109/L-CA.2013.6. ISSN 1556-6056. S2CID 9208032.
- ^ ab Lorenzo, Oscar G.; Pena, Tomás F.; Cabaleiro, José C.; Pichel, Juan C.; Rivera, Francisco F. (2014-03-31). 「拡張ルーフラインモデルを使用した NUMA システムのデータとスレッドの親和性の理解」Annals of Multicore and GPU Programming . 1 (1): 56–67. ISSN 2341-3158.
- ^ 「ルーフラインパフォーマンスモデル」。ローレンス・バークレー国立研究所。 2016年6月19日閲覧。
- ^ Kourtis, Kornilios; Goumas, Georgios; Koziris, Nectarios (2008-01-01). 「インデックスと値の圧縮を使用したスパース行列ベクトル乗算の最適化」。第5 回コンピューティング フロンティア カンファレンスの議事録。CF '08。ニューヨーク、ニューヨーク、米国: ACM。pp. 87–96。CiteSeerX 10.1.1.140.9391。doi : 10.1145 /1366230.1366244。ISBN 9781605580777. S2CID 8038147。
- ^ abc Cabezas, VC; Püschel, M. (2014-10-01). 「ルーフライン モデルの拡張: マイクロアーキテクチャ制約によるボトルネック分析」2014 IEEE 国際ワークロード特性評価シンポジウム (IISWC) . pp. 222–231. doi :10.1109/IISWC.2014.6983061. ISBN 978-1-4799-6454-3. S2CID 33023605。
- ^ Lorenzo, OG; Pena, TF; Cabaleiro, JC; Pichel, JC; Rivera, FF (2014-03-26). 「3DyRM: メモリレイテンシ情報を含む動的ルーフラインモデル」. The Journal of Supercomputing . 70 (2): 696–708. doi :10.1007/s11227-014-1163-4. ISSN 0920-8542. S2CID 5318695.
- ^ da Silva, Bruno; Braeken, An; D'Hollander, Erik H.; Touhafi, Abdellah (2013-01-01). 「FPGA のパフォーマンス モデリング: 高レベル合成ツールによるルーフライン モデルの拡張」. International Journal of Reconfigurable Computing . 2013 :1–10. doi : 10.1155/2013/428078 . hdl : 1854/LU-4226966 . ISSN 1687-7195.
外部リンク
- ルーフライン モデル: マルチコア アーキテクチャ上のカーネルを自動チューニングするための教育ツール
- ルーフラインモデルの適用
- ルーフライン モデルの拡張: マイクロアーキテクチャ制約によるボトルネック分析
- ルーフラインモデルツールキット
- Roofline Model Toolkit: 建築およびプログラム分析のための実用的なツール - ツールに関連する出版物。
- パーフプロット
- 拡張ルーフラインモデル
- Intel Advisor - ルーフライン モデルの自動化
- Intel Advisor Roofline の使い方に関する Youtube ビデオ
