質問

Cの関数を使用して、scheduleループでpragma omp forタイプを変更する方法はありますか? 私はallarral statementの前にsetenv("OMP_SCHEDULE", "guided", 1);をしようとしていましたが、コードから取得する時代は非常に似ていますので、それがうまくいかないかどうかは確実にはわかりません。 私がやりたいことは、スケジュールタイプの変更を変更するために、for関数の文字列としてdynamicautoなどを比較するための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")はあなたが望むものを達成するべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top