1

プログラムでopenmpを使用していますが、速度を上げる代わりに速度が低下しています。私の推測では、openmp が使用されるたびにスレッドが生成されるためです。プログラムで一度スレッドを生成する方法はありますか。

4

1 に答える 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 に答える