0

I am using OProfile for OpenMP parallelized code by doing the following,

$ gcc -I/usr/include/hdf5/serial/ -std=c11 -O3 -fopt-info -fopenmp sp_linsvm.c -o sp_linsvm -lhdf5_serial
$ sudo ocount --events=CPU_CLK_UNHALTED,LLC_MISSES,LLC_REFS,MEM_INST_RETIRED,BR_MISP_EXEC, ./sp_linsvm
Events were actively counted for 22.0 seconds.
Event counts (scaled) for /home/aidan/progs/linsvm/sp_linsvm:
    Event                    Count                    % time counted
    BR_MISP_EXEC             6,523,181                80.00
    CPU_CLK_UNHALTED         225,384,009,348          80.00
    LLC_MISSES               276,587,407              80.02
    LLC_REFS                 1,098,236,806            80.00
    MEM_INST_RETIRED         51,754,855,734           79.99

How do I know if the events are counted per CPU or as a whole? I am pretty sure its as a whole as they are close to the numbers if I compiled without OpenMP, but I want to be sure.

4

1 に答える 1

1

のデフォルトモードocount ... ./programは「コマンド」です。私が理解しているように、-t( --separate-thread) または-c( --separate-cpu) オプションなしでは、すべてのスレッドからのデータが集計されます。

したがって、ドキュメントhttp://oprofile.sourceforge.net/doc/controlling-counter.html#controlling-ocount-tを確認し、 /-cオプション を試してください...

--separate-thread/-t このオプションを --process-list または --thread-list オプションと組み合わせて使用​​すると、スレッドごと (プロセスごと) にイベント数を表示できます。このオプションを指定しないと、すべてのカウントが集計されます。

--separate-cpu/-c このオプションを --system-wide または --cpu-list オプションと組み合わせて使用​​すると、CPU ごとのイベント数を表示できます。このオプションを指定しないと、すべてのカウントが集計されます。

于 2016-01-09T01:46:21.747 に答える