C、OpenMP、変更スケジュールタイプ、Setenv
質問
Cの関数を使用して、schedule
ループでpragma omp for
タイプを変更する方法はありますか?
私はallarral statementの前にsetenv("OMP_SCHEDULE", "guided", 1);
をしようとしていましたが、コードから取得する時代は非常に似ていますので、それがうまくいかないかどうかは確実にはわかりません。
私がやりたいことは、スケジュールタイプの変更を変更するために、for
関数の文字列としてdynamic
、auto
などを比較するためのsetenv
ループを使用することです。
解決
スケジュール(ランタイム)を使用してOMP_SCHEDULEを設定できます。
https://computing.llnl.gov/tutorials/openmp/ < / P>ランタイム スケジューリング決定は、環境変数opp_scheduleによって実行時まで延期されます。この句のチャンクサイズを指定することは違法です。
私はすでにここでそれを最もよく言ってから、私はちょうど私がhristo ilievを引用しましょう OpenMP:スケジュール
プリコンパイル済みコードはさまざまなプラットフォームで実行できますので、エンドユーザーがスケジューリングを制御できる場合は、素晴らしいことです。 OpenMPが特別なスケジュール(ランタイム)句を提供する理由です。ランタイムスケジューリングでは、タイプは環境変数opp_scheduleの内容から取得されます。これにより、アプリケーションを再コンパイルせずに異なるスケジューリングタイプをテストすることができ、またエンドユーザーが自分のプラットフォームに微調整することを可能にします。
他のヒント
これを行う標準的な方法はありませんが、Intelのライブラリを使用している場合は、kmp_set_defaults()
拡張子を使用できます。これにより、|
文字で区切られた文字列があり、デフォルトのOpenMPの動作をオーバーライドします。あなたの例では、kmp_set_defaults("OMP_SCHEDULE=guided")
はあなたが望むものを達成するべきです。