sched_setaffinity
またはpthread_attr_setaffinity_np
OpenMPではスレッドアフィニティを設定できますか?OpenMPとCPUアフィニティー
関連:CPU Affinity
sched_setaffinity
またはpthread_attr_setaffinity_np
OpenMPではスレッドアフィニティを設定できますか?OpenMPとCPUアフィニティー
関連:CPU Affinity
はい、名前の呼び出しは、スレッドアフィニティを設定していきます。唯一の問題は、スレッド番号を修正し、正しいスレッドで正しいアフィニティを設定することです(既知のスレッド数に対してfor
ループの静的スケジューリングを試すことができます)。
私が知っているように、ほとんどすべてのopenmpでは、環境によってアフィニティを設定できます。環境変数の名前はさまざまです(これは以前のところ、それは問題にはなっていませんでした)。 http://www.spec.org/omp2001/results/omp2001.htmlページを使用してopenMPの実装を見つけ、特定の環境変数名を検索します。親和性はspecOMP結果の約半分に設定されます。結果にはさらにいくつかのOpenMPパフォーマンスチューニング設定があります。
など。 For intel compiler変数である63
そしてnewer OpenMP Standard, version 3.1環境変数OMP_PROC_BINDを(0から数えて)最大CPUの数を定義され
export KMP_AFFINITY=compact,0
export SUNW_MP_PROCBIND=TRUE
export GOMP_CPU_AFFINITY=0-63
(セクションを参照してください4.4)、これはOpenMPで親和性を設定する標準化された方法です。使用法:
export OMP_PROC_BIND=true
ありがとうございます! 'pthread_attr_setaffinity_np'のように、言語レベルでは何もありません。 –
いいえ、openmp標準にはスレッドバインディングプラグマまたは関数がありません。唯一の方法(および推奨される方法)は、環境変数、コンパイラ固有またはopenmp3.1を介してスレッドをバインドすることです。この設定は、メインを開始する前に早めに行う必要があります。 – osgx
厳密に言えば、答えは「いいえ」で始まるはずです:) –