「結果をベンチマークと比較」して、何をしますか?
FLOPSはあなたが必要とすることを意味します
1) ある作業単位あたりの FLOP。
2) その作業単位の時間。
ループを 1,000 回繰り返す入力ファイルがあるとします。ループは便利な作業単位です。1,000回実行されます。1時間かかります。
ループには、いくつかの加算と乗算、およびいくつかの除算と平方根があります。足し算、掛け算、割り算ができます。+、*、および / を探して、ソースでこれを数えることができます。コンパイラからのアセンブラ言語の出力を見つけて、そこでカウントすることもできます。異なる番号を取得する場合があります。どちらが正しいですか?上司に聞いてください。
平方根を数えることはできますが、乗算と加算に関して実際に何をするかはわかりません。したがって、平方根にかかる時間を把握するには、ベンチマーク乗算と平方根の比較などを行う必要があります。
これで、ループ内の FLOPS がわかります。そして、それを 1,000 回実行する時間を知っています。1 秒あたりの FLOPS がわかります。
次に、LINPACK を見て、速度が遅いことがわかります。それで?あなたのプログラムは LINPACK ではなく、LINPACK より遅いです。コードが遅くなる可能性は非常に高いです。コードが LINPACK と同じ年数にわたって記述および最適化されていない限り、遅くなります。
これが他の部分です。お使いのプロセッサには、さまざまなベンチマークに対して定義された FLOPS 評価があります。あなたのアルゴリズムはそれらのベンチマークの 1 つではないため、ベンチマークに達していません。これは悪いですか?それとも、これはベンチマークではないことの明らかな結果ですか?
実行可能な結果はどうなりますか?
ベンチマークコードベースに対する測定は、アルゴリズムがベンチマークアルゴリズムではないことを示すだけです。あなたが違うというのは当然の結論です。通常は遅くなります。
明らかに、LINPACK に対して測定した結果は、(a) 異なるため、(b) 最適化する必要があります。
測定は、自分自身に対して行われる場合にのみ、本当に価値があります。架空の命令ミックスではなく、独自の命令ミックスです。自分のパフォーマンスを測定します。変える。自分自身と比較して、自分のパフォーマンスが良くなったり悪くなったりするかどうかを確認します。
FLOPS は関係ありません。重要なのは、作業単位あたりの時間です。ハードウェア設計者が期待したベンチマークを実行していないため、ハードウェアの設計パラメーターと一致することはありません。
LINPACK は関係ありません。重要なのは、コード ベースと、パフォーマンスを変更するために行っている変更です。