3

BG Torus 相互接続を使用して BG/Q システムでネットワーク パフォーマンス カウンター データを収集しようとしています。これが最も推奨される方法のように思われるため、私は PAPI を使用しています。他のオプションは bgpm ライブラリであり、このシステムにはインストールされていないと思います。(locate bgpm私には何もくれませんでした。)

システムで利用可能なすべてのカウンターの名前を取得しようとしています。を実行するpapi_native_availと、一連のイベントが返されます。たとえば、ネット カテゴリからの抜粋を次に示します。

...
--------------------------------------------------------------------------------
| net:::ib0:rx:bytes                                                           |
|            ib0 receive bytes                                                 |
--------------------------------------------------------------------------------
| net:::ib0:rx:packets                                                         |
|            ib0 receive packets                                               |
--------------------------------------------------------------------------------
| net:::ib0:rx:errors                                                          |
|            ib0 receive errors                                                |
--------------------------------------------------------------------------------
...

papi_native_availセグメンテーション違反ですが、それは関係ないと思います。

したがって、この時点での私の理解では、イベント名を使用して を使用してイベント コードを取得できるはずですPAPI_event_name_to_code()が、これは機能していないようです。これらは、その関数が期待するイベント名ではないと推測しています。だから誰かが説明できます:

  1. BG/Q のすべてのネットワーク イベントはどこにありますか?

  2. これらのイベントのコードを取得するにはどうすればよいですか?

完全を期すために、ここに私のコードと出力があります:

#include <stdio.h>
#include <papi.h>

int main(){
  int code = 0;
  int ret = 0;
  PAPI_library_init(PAPI_VER_CURRENT);
  ret = PAPI_event_name_to_code("net:::ib0:tx:fifo", &code);

  if(ret != PAPI_OK){
    printf("Error in getting code\n");
  }
  printf("code: %d\n", code);
}

出力:

Error in getting code
code: 0
4

0 に答える 0