Wird sched_setaffinity
oder pthread_attr_setaffinity_np
verwendet, um die Thread-Affinität unter OpenMP festzulegen?
Siehe auch: CPU-Affinität
Ja, benannte Aufrufe funktionieren, um die Thread-Affinität festzulegen. Das einzige Problem besteht darin, die Thread-Nummer zu korrigieren und die richtige Affinität im rechten Thread festzulegen (Sie können versuchen, die statische Planung von for
loop für die bekannte Anzahl von Threads zu verwenden).
Wie ich weiß, erlaubt fast jedes openmp, die Affinität über die Umgebung einzustellen. Der Name der Umgebungsvariablen variiert (vor einiger Zeit nicht standardisiert). Ich verwende die Seite Ссылка , um die openMP-Implementierung zu finden, und sucht nach dem Namen der spezifischen Umgebungsvariablen. Die Affinität wird in ~ der Hälfte der specOMP-Ergebnisse festgelegt. Es gibt einige zusätzliche Einstellungen für die Einstellung der OpenMP-Leistung in den Ergebnissen.
z. Für den Intel-Compiler lautet die Variable
%Vor% %Vor% %Vor%wobei 63 die maximale CPU-Nummer ist (wenn von 0 gezählt wird)
Und der neuere OpenMP Standard, Version 3.1 definiert die Umgebungsvariable OMP_PROC_BIND (siehe Abschnitt 4.4), die ist eine standardisierte Methode zum Festlegen der Affinität in OpenMP. Verwendung ist:
%Vor%