思ったように超大規模でのマルチスレッドの性能が出ないので、CPU使用率をタスクマネージャではなく、ソルバ上で得ようと思いました。中々良いコードが見当たらなかったのですが、StackOverflowにありました。Windows用です。
#pragma once #include#include #include #include #include #include #include #include "pdh.h" #pragma comment(lib, "pdh.lib") class Query { PDH_HQUERY cpuQuery; PDH_HCOUNTER cpuTotal; public: Query() { PdhOpenQuery(NULL, NULL, &cpuQuery); PdhAddCounter(cpuQuery, TEXT("\\Processor(_Total)\\% Processor Time"), NULL, &cpuTotal); PdhCollectQueryData(cpuQuery); } operator double() { PDH_FMT_COUNTERVALUE counterVal; PdhCollectQueryData(cpuQuery); PdhGetFormattedCounterValue(cpuTotal, PDH_FMT_DOUBLE, NULL, &counterVal); return counterVal.doubleValue; } };
使い方は、簡単です。omp forループ後に、
Query q;
cout << q << "[%]" <<endl;
で表示されます。
0 件のコメント:
コメントを投稿