プログラムでopenmpを使用していますが、速度を上げる代わりに速度が低下しています。私の推測では、openmp が使用されるたびにスレッドが生成されるためです。プログラムで一度スレッドを生成する方法はありますか。
1742 次
1 に答える
1
他のコメントに従って、必ずコードを提供する必要があります。
通常、openMP アプリケーションは、プロセッサの 1 ~ 4 倍のスレッドで実行するように設計されています。
生成されたスレッドの数を制御することに関心がある人は、https ://computing.llnl.gov/tutorials/openMP/ から入手できます。
スレッド数は?
並列領域内のスレッド数は、次の要因によって優先順位に従って決定されます。
- IF句の評価
- NUM_THREADS句の設定
- omp_set_num_threads() ライブラリ関数の使用
- OMP_NUM_THREADS 環境変数の設定
- 実装のデフォルト - 通常はノード上の CPU の数ですが、動的な場合もあります (次の箇条書きを参照)。
スレッドには 0 (マスタースレッド) から N-1 までの番号が付けられます
number スレッド環境変数を設定する方法の例:
export OMP_NUM_THREADS=8
それが役に立てば幸い。
于 2012-10-31T06:53:45.737 に答える