座標スキーム形式 (COOS) と圧縮行形式 (CSR) でスパース行列を乗算するための ASM プログラムを実装する必要がありました。これらのアルゴリズムをすべて実装したので、通常の行列乗算と比較してどれだけパフォーマンスが高いかを知りたいと思います。これらすべてのアルゴリズムの実行時間を測定するコードを既に実装しましたが、実行できる 1 秒あたりの浮動小数点演算 (FLOPS) の数も知りたいと判断しました。これを測定/カウントする方法の提案はありますか?
ここでは、使用されているシステムに関する背景情報をいくつか示します。
processor : 0
model name : ARMv7 Processor rev 2 (v7l)
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc08
CPU revision : 2
私たちの最初のアイデアは、浮動小数点演算 (算術演算、比較演算、移動演算) ごとにインクリメントする一種の FPO カウンターを実装することでしたが、これはコード全体にインクリメント演算を挿入する必要があり、速度も遅くなります。アプリケーションをダウンさせます...浮動小数点演算の数をカウントする何らかのハードウェアカウンターがあるかどうか、またはプログラムを監視してFPOの数を測定するために使用できる何らかのパフォーマンスツールが存在するかどうか、誰かが知っていますか. 提案や指針をいただければ幸いです。
以下は、カウンティング アプローチを使用した行列乗算の FLOP の評価です。最初に、関心のある各命令の挿入されたカウンターよりも実行時間を測定し、その後、1 秒あたりの浮動小数点演算の数を計算しました。