2017-06-13 11 views
1

IntelシステムでOpenMPを使用しているときに、KMP_AFFINITY=verbose,(other options...)を設定すると、スレッドが実際にバインドされているコアがライブラリから吐き出されることがよくあります。これは、さまざまなスレッドバインドオプションを試すときに役立ちます。現在、私はPower8システムを使用しており、GNUおよび/またはIBM OpenMPディストリビューションにはKMP_AFFINITY=verbose相当のものがあるかどうか疑問です。言い換えれば、g ++やxlC++でOpenMP実行ファイルをコンパイルすると、スレッドの配置場所に関する情報をどのように取得できますか?gnuおよびibm openmpライブラリのKMP_AFFINITY = verboseに相当しますか?

+0

Libgompは、Windowsなどのターゲットに対する親和性をサポートしていません。 Intelのopenmpがgccのopenmp呼び出しをサポートするLinuxのようなターゲットの場合、それはあなたが求めるものを達成する方法になります。 – tim18

答えて

1

GCC OpenMP documentation(libgomp)これは現在のところ不可能であると言う。

何libgompライブラリルーチンは、CPUアフィニティの指定が有効であるかどうかを決定することはありません。回避策として、C言語のgetenvやFortranのGET_ENVIRONMENT_VARIABLEなどの言語固有のライブラリ関数を使用して、GOMP_CPU_AFFINITY環境変数の設定を照会することができます。起動時に定義されたCPUアフィニティは、アプリケーションのランタイム中に変更または無効にすることはできません。

GOMP_DEBUGを使用して、探しているものがあるかどうかを調べることができます。

+0

'OMP_DISPLAY_ENV = VERBOSE'は' GOMP_CPU_AFFINITY'を表示しますが、明示的にOMP_PLACESを設定しても空白( 'GOMP_CPU_AFFINITY = ''')になります。 'export GOMP_DEBUG = 1'は出力に何も追加しません。私が何か間違っているのかどうか分からない、または私は非常に喋っていないlibgompのバージョンで作業している。 –

+0

おそらく、内部制御変数(ICV)を設定する環境変数の値を出力します。 'GOMP_CPU_AFFINITY'を設定すると、その値が出力されることがあります。もう一つの可能​​性は、それを印刷する関数を書くことです。私は[sched_getaffinity](https://linux.die.net/man/2/sched_getaffinity)を使って行っています。この[有用な例](https://github.com/karelzak/util-linux/blob/143ea06851104ffaa9d3fe8de09c721d2364de64/lib/cpuset.c#L150)で確認できます。あなたが探していることをするlibgompにパッチを提出することさえできます。 –

+0

ありがとうございます。私は、KMP_AFFINITYのように迅速かつ完全な解決策があることを期待していましたが、少なくともこれは私にいくつかのツールを提供します。 –

1

xlC++を使用すると、OMP_DISPLAY_ENV環境変数をTRUEまたはVERBOSEに設定してこの情報を取得できます。詳細はIBM Knowledge Centerにあります。

+0

お返事ありがとうございます。私はすでにOMP_DISPLAY_ENVを試しました。出力には、OMP_PLACESを含む環境変数の値が表示されます。しかし、私は何かが見つからない限り、どのスレッドがどのスレッドにバインドされているのかをKMP_AFFINITYの方法で正確に伝えることはできません。ここでの目標は、与えられた環境変数の組み合わせに起因するスレッドの配置を見ることです。環境変数自体を知ることはそれほど役に立ちません。 –

+0

残念なことにxlC++にはKMP_AFFINITY = verboseと同じくらい便利な機能はありませんが、コードを変更してxlC++の文書化されていない機能を試してみると、_xlsmp_thread_binding()関数があります。呼び出しスレッドそれは正式にサポートされていないので、あなたにとってはうまくいかないかもしれませんが、一発の価値があるかもしれません。 – trudeaun

+0

ありがとう、私はそれを試みます。 –

関連する問題