7 Stimmen

Zeitplan-Klausel in OpenMP

Ich habe ein Stück Code (das Teil einer Anwendung ist), das ich versuche, mit OpenMP zu optimieren, und probiere verschiedene Zeitplanungsstrategien aus. In meinem Fall habe ich festgestellt, dass die schedule(RUNTIME) Klausel einen Vorteil gegenüber anderen hat (ich gebe keine chunk_size an). Ich habe zwei Fragen:

  1. Wenn ich chunk_size nicht angebe, gibt es einen Unterschied zwischen schedule(DYNAMIC) y schedule(GUIDED) ?

  2. Wie bestimmt OpenMP das standardmäßige implementierungsspezifische Scheduling, das in der OMP_SCHEDULE variabel?

Ich habe gelernt, dass, wenn kein Zeitplanschema angegeben wird, standardmäßig schedule(STATIC) verwendet wird. Wenn ich also nicht die OMP_SCHEDULE Variable und verwenden schedule(RUNTIME) in meinem Programm, würde das Zeitplanungsschema sein schedule(STATIC) oder verfügt OpenMP über eine intelligente Möglichkeit, die Zeitplanstrategie dynamisch zu entwickeln und von Zeit zu Zeit zu ändern?

5voto

High Performance Mark Punkte 75503
  1. Ja, wenn Sie keine Chunk-Größe angeben, wird DYNAMIC die Größe aller Chunks auf 1 setzen. Bei GUIDED ist die Mindestgröße der Chunks 1, die anderen Chunk-Größen sind jedoch von der Implementierung abhängig. Vielleicht können Sie Ihre Situation herausfinden, indem Sie einige Experimente durchführen oder die Dokumentation lesen.

  2. So wie ich die Situation verstehe: Wenn die Umgebungsvariable OMP_SCHEDULE nicht gesetzt ist, ist der Laufzeitplan von der Implementierung abhängig. Ich fände es sehr merkwürdig, wenn nicht für jede Ausführung des Programms derselbe Zeitplan gewählt würde. Ich glaube nicht, dass OpenMP, bei dem es sich um einen Satz von Compile-Direktiven handelt, über eine Möglichkeit verfügt, die Laufzeitleistung Ihres Programms zu verstehen und auf der Grundlage dieser Informationen einen Zeitplan zu wählen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X