7

OpenMPを使用して最適化しようとしているコード(アプリケーションの一部)があり、さまざまなスケジューリングポリシーを試しています。私の場合、句が他のschedule(RUNTIME)句よりも優れていることに気づきました(chunk_sizeを指定していません)。私は2つの質問があります:

  1. チャンクサイズを指定しない場合、との間に違いはschedule(DYNAMIC)ありschedule(GUIDED)ますか?

  2. OMP_SCHEDULEOpenMPは、変数に格納されているデフォルトの実装固有のスケジューリングをどのように決定しますか?

スケジューリングスキームが指定されていない場合、デフォルトschedule(STATIC)で使用されることを学びました。したがって、OMP_SCHEDULE変数を変更せずschedule(RUNTIME)、プログラムで使用する場合、スケジューリングスキームはschedule(STATIC)常に使用されますか、それともOpenMPには、スケジュール戦略を動的に考案して随時変更するインテリジェントな方法がありますか?

4

1 に答える 1

5
  1. はい、チャンクサイズを指定しない場合、DYNAMICはすべてのチャンクのサイズを1にします。ただし、GUIDEDは最小チャンクサイズを1にしますが、他のチャンクサイズは実装に依存します。おそらく、いくつかの実験を実行したり、ドキュメントを読んだりすることで、状況を把握することができます。

  2. 私が状況を理解しているように、環境変数OMP_SCHEDULEが設定されていない場合、ランタイムスケジュールは実装に依存します。プログラムの実行ごとに同じスケジュールが選択されなかった場合、それは非常に奇妙だと思います。コンパイル時のディレクティブのセットであるOpenMPには、プログラムの実行時のパフォーマンスを理解し、そのような情報に基づいてスケジュールを選択する方法があるとは思いません。

于 2010-06-18T17:28:57.000 に答える