IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

ループアンローリングとデータハザードのデモをPerlでやってみた

      2014/03/02

先日のKansai.pmで発表されていた、ループアンローリングを試してみた。
発表のスライド:Cell Challenge 2009 参加記
Wikipedia:ループ展開 - Wikipedia
ループアンローリング自体はWikipediaによればループ展開ということだが、目的としてはデータハザード(データ依存のために計算の並列処理が不可能になること)をなるべく回避するのが目的であった。
スライドの30枚目に展開の方法が書いてるので、それを実際に試してみた。
以下、ベンチマークの結果

Unrolling1は普通に展開したもの。
Unrolling2が展開後に計算順序を入れ替えたもの。
normalは普通のforループ。
計算の順序を入れ替えると、ほんの少しだが速くなった。
多少なりともデータハザードがある、ということなのだろう。
ソースは以下のとおり。

respo

respo link

ZenBackWidget

 - 情報技術について