PAPI を使用してハードウェア カウンターの 1 つを読み取ろうとしています。リストからイベントを読み込もうとするとperf_event、うまくいきます。perf_event_uncoreただし、 で取得したリストからカウンターの 1 つを読み取る必要がありますpapi_native_availが、エラーが発生します。Linux 5.4.0-3-amd64 バージョンのカスケード レイク アーキテクチャで実行されています。
int err = PAPI_event_name_to_code("skx_unc_imc0::UNC_M_WPQ_CYCLES_FULL",&native);
if (err != PAPI_OK)
printf("PAPI_event_name_to_code error: %d\n", err);
err = PAPI_add_event(EventSet, native);
if (err!= PAPI_OK)
printf("PAPI_add_event error: %d\n", err);
PAPI_event_name_to_codePAPI_OK を返しても、無効な引数PAPI_add_eventである -1 を返します。PAPI_EINVALいくつかのカウンターフォームを試しperf_event_uncoreましたが、同じ問題が発生しました。これをイベントセットに追加するには、別の関数を使用する必要がありますか? または、私が間違っていることは他にありますか?