linuxパフォーマンスカウンタサブシステムに対する新しいコマンドラインインターフェイスコマンドである 'perf'を使用して、アプリケーションによって実行される浮動小数点および算術演算の量を測定したいと考えています。 (テスト目的のために、私が作成したシンプルなダミーのアプリケーションを使用します(以下を参照)。linux perfツールを使用してアプリケーションのFLOPを測定する
FPと整数演算を測定するために定義された 'perf'イベントが見つからなかったので、生のハードウェアイベントコード(NNNはイベントコードの16進値である-rNNNとともに使用される)を掘り起こしました。だから私の本当の問題は、退職した命令(INST_RETIRED)で見つかったコードは、FPと他の命令(X87とMMX/SSE)の区別をしないということです。特定のコードに適切なumasksを使用しようとしたとき、私は何とか 'perf'がumaskインクルードを理解していないか、またはサポートしていないことが分かった。私に実行X87命令を与える、私は間違ったパラメータを与えなければならないと言う
% perf stat -e rC0 ./a.out
私にリタイアした命令を与え
が、
% perf stat -e rC002 ./a.out
:私は試してみました。おそらくそうかもしれませんが、生のハードウェアイベントのumaskを 'perf'で使用する正しい方法は何ですか?通常、perfツールを使用して実行されるプログラムの浮動小数点演算と整数演算の正確な数を取得する方法は何ですか?私はPERFについてはよく分からない
int main(void){
float numbers[1000];
float res1;
double doubles[1000];
double res2;
int i,j=3,k=42;
for(i=0;i<1000;i++){
numbers[i] = (i+k)*j;
doubles[i] = (i+j)*k;
res1 = numbers[i]/(float)k;
res2 = doubles[i]/(float)j;
}
}
あなたのCPUは何ですか? – osgx