[Prog]cycle count & CPE
配列の二乗和を計算する関数のサイクルカウントとCPE値を測定する課題が出た。
- sum = a[0]2 + a[1]2 + … + a[N-1]2
配列の長さを変化させ、所要時間(サイクルカウント)と要素数(N)で割ったCPE値の測定をした。
あまり気合入れてないのに、すばらしく時間がかかってしまった…w
測定した配列の要素数はN = 100, 500, 1000, 5000, 10000, 50000,100000,500000であり、
初回実行の結果を除く、10回の平均値(もしくは最小値)を使用した。
時間測定にはstart_counter()及びget_counter()を用い、
volatile double型とvolatile int型への代入も考慮した。
パラレルでの分割数が異なる4つの二乗和の関数を準備し、比較を行った。
分割:1, 2, 4, 8
- sum += a[i]*a[i]
- sum += a[i]*a[i] + a[i+1]*a[i+1]
- sum += a[i]*a[i] + a[i+1]*a[i+1] + a[i+2]*a[i+2] + a[i+3]*a[i+3]
- sum += a[i]*a[i] + a[i+1]*a[i+1] + a[i+2]*a[i+2] + a[i+3]*a[i+3] + a[i+4]*a[i+4] + a[i+5]*a[i+5] + a[i+6]*a[i+6] + a[i+7]*a[i+7]
要素数におけるサイクルカウントを両対数グラフにすると以下のようになる。
余談ながら、エクセルの対数グラフって散布図のときしかできないんだね、やられた><;
トラックバック(0)
このブログ記事を参照しているブログ一覧: [Prog]cycle count & CPE
このブログ記事に対するトラックバックURL: http://delta50.net/mt/mt-tb.cgi/23
コメントする