反復法の比較:反復回数とCPU時間


14

ランダム正方行列を反転させるための2つの反復法を比較しています。マトリックスはランダムであるため、すべてのテストケースは、異なる量の反復と異なる経過時間の両方を取ります。私の質問は、平均CPU時間に加えて、メソッドを比較するための有用な情報である両方のメソッドによって取得された反復の平均値です。


4
質問をより明確にするために言い換えました。私があなたの意味を変えていないことを確認してください。
ゴドリックシーア

3
@GodricSeerあなたの編集は私の質問を改善しました。ありがとう
スリジャン

回答:


12

一般に、パフォーマンス比較の両方の方法にはそれぞれの場所があります。

  • CPU時間の比較は、ある意味で最も興味深いメトリックです。1日の終わりには、どのメソッドが高速であるかに本当に関心があるからです。(ただし、終了基準が同等であることを確認してください。たとえば、両方の方法で同じ精度の近似が得られるようにしてください)。欠点は、テストを実行したマシン上で、どのメソッド(より重要なのはどの実装)が高速であるかを示すだけであるということです。異なるアーキテクチャまたはソフトウェアを備えた異なるマシンが同じ勝者を選ぶという保証はありません。

  • 比較の繰り返し数を、一方、機械独立しているが、2つの方法は非常に異なる反復を持っている場合は、潜在的に誤解を招く-この場合には方法は少ないとが、より高価な反復は好ましいことではないかもしれません(最適化のための例えば、ニュートン対勾配方法非常に低い精度のみが必要な場合)。

ですから、はい、両方の数字を与えることは理にかなっており[1]、出版物でよく見られます。3番目のオプションもあります。

  • 比較基本演算の数を。両方の反復が同じ種類の適切に高価な操作で構成されているが、異なる数(各反復で同じ数でなくてもよい)が必要な場合、これらの操作の合計数をカウントすることは理にかなっています。あなたの場合、有望な候補は、行列ベクトルまたは行列行列の乗算です。

[1]複数の実行にわたって統計を確実に提示します。手段を示す場合は、標準偏差も含めることを忘れないでください。


5
手段を取るだけではありません!ランダムな入力で十分なテストポイントがある場合は、分布をプロットします。
ビル・バルト

1
@BillBarth-良い点ですが、それが常に実行可能であるとは限りません。ただし、標準偏差と平均値を同時に指定することは常に可能です。実際、パフォーマンスを報告するためにどの統計を提示するかは、すばらしいフォローアップの質問のように聞こえます。
クリスチャンクラソン

@BillBarthあなたは良い点を挙げました。しかし、複数のテストマトリックスを昇順で使用しています。そのような場合、他のすべてのテスト行列の分布をプロットする必要があるため、分布をプロットすることはできません。それが私がそれらを表にしたかった理由です。コメントしてくれてありがとう。
スリジャン

1
@srijan:データが手に入ります。できる限り、自分でヒストグラムをプロットする必要があります。それらすべてを公開する必要はありませんが、分布のグラフが数字の海または単なる平均値以上のものを示すことをお約束します。
ビルバース

反復ごとの実行時間を含めます。各マトリックスは異なるため、異なる実行時間で異なる反復回数を設定できます。@Cristianが言ったことと合わせて、反復ごとの実行時間は有用です。
jbcolmenares 14年

4

反復の数が「スピード」ではない場合に示唆するため、誤解を招くメトリックであることがわかりました。この違いを示すいくつかの異なる前提条件を比較する簡単な例については、http//www.dealii.org/developer/doxygen/deal.II/step_6.html#Possibilitiesforextensionsを参照してください。


答えてくれてありがとう。この行の「反復の数が誤解を招くメトリックであると理解することはできません」あなたが提案した例は、私が理解するのがいくらか難しいです。
スリジャン

私が言っていることは、「使用されるCPU時間」と同等の「反復回数」を提示することが多いということです。これは、反復回数が少ないメソッドも高速であることを意味します。しかし、私がリンクした図が示すように、それは真実ではありません。
ヴォルフガングバンガース

さて、私はあなたの主張を完全に理解しました。ニュートン法で正方行列の逆行列を近似するのと同じことを観察しました。メソッドの順序は増加し、最初はcpu時間と反復回数の両方が減少しますが、順序が増加すると、反復回数が減少してもcpu time startが増加します。ご回答どうもありがとうございました。
スリジャン

2

他の回答で明確でない場合、反復回数が適しているのはbig-O引数です。

絶対速度には向いていません。これは、反復ごとの平均時間に依存しているため、メソッドごとに大きな要因で異なる場合があります。

たとえば、配列インデックスの計算コストを無視する傾向があり、CPU時間の大部分を占める可能性があります。

追加:また、他の場所で指摘したように、メソッドを呼び出すたびにセットアップコストがかかります。マトリックスが通常それほど大きくない場合、そのセットアップコスト自体がCPU時間の大部分を占める可能性があります(削除すると速度に大きな違いが生じるなど)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.