Loading article…
ループ穿孔は、ループの反復の一部を定期的にスキップできる近似計算手法です。 [ 1 ] [ 2 ] [ 3 ]
これは、穿孔率という1つのパラメータに依存します。穿孔率は、毎回スキップする反復回数、または1回スキップするまでに実行する反復回数として解釈できます。
ループパーフォレーションのバリエーションには、一定間隔で反復処理を決定論的にスキップするもの、ループの開始時または終了時に反復処理をスキップするもの、ランダムに抽出した反復処理をスキップするものなどがあります。コンパイラはコンパイル時にパーフォレーションのバリエーションを選択することも、ランタイムシステムがエンドツーエンドの精度目標を満たすようにパーフォレーション戦略とパーフォレーション率を適応的に調整できるような計測機能を含めることもできます。
ループ穿孔技術は、MITのマーティン・C・リナード教授と、彼の研究グループの研究者であるヘンリー・ホフマン、ササ・ミサイロビッチ、ステリオス・シディログロウによって初めて開発された。
以下の例は、このC言語ライクなソースコードにループ穿孔を適用した結果を示しています。
for ( int i = 0 ; i < N ; i ++ ) { // 何らかの処理を行う}for ( int i = 0 ; i < N ; i ++ ) { // 処理を実行i = i + skip_factor ; }int count = 0 ;for ( int i = 0 ; i < N ; i ++ ) { if ( count == skip_factor ) { count = 0 ; } else { // 処理を行うcount ++ ; } }