Kann die Anzahl an OMP Threads von der CPU Temperatur abhängen?



  • Titel sagt schon fast alles. Ich habe ein Programm mehrfach mit unterschiedlichen Parametern laufen lassen. Anfangs waren auch alle Threads da*, nun 40h Rechenzeit später fehlt die Hälfte. CPU Cores haben eine Temperatur zwischen 70 und 74°C. Die Taktrate ist bei vielen auf 100% manche haben nur ca 65%. Board Temp. 54°C.

    (*ich hatte nicht geschaut, war aber bisher immer so (in weniger komplizierten Testläufen))

    Bei einem (kurzer) Testlauf auf einen anderen Rechner sind auch alle Threads da. CPU Temperatur da 80 bis 83°C. Board Temp 42°C.

    Welchen anderen Grund köntne das fehlen der Threads haben? Könnte man es mit "omp_set_dynamic(0)" beheben? Würde dann die Taktrate aller CPU's runter gehen?



  • Das kann ich mir absolut nicht vorstellen...es gibt eigentlich nur eine Notabschaltung bei Überhitzung, das habe ich schon selbst erlebt, aber das Erlebnis liegt schon über 15 Jahre zurück, daß sich bei einem heißen Sommer (2003) der Computer einfach ausgeschaltet hat...
    Aber das Threads beendet werden, ohne den ganzen Prozess zu beenden halte ich für äußerst unwahrscheinliche...wenn das mal kein Troll-Thread ist 😉



  • Woran könnte es dann liegen? Könnte es sein, dass eine for-Schleife von zB. 0 bis <400 auf 4 Threads aufgeteilt wurde: 0-99, 100-199, 200-299, 300-399.
    Und 0-99 warum auch immer schneller ging und der erste Thread schon fertig ist, die anderen aber noch rechnen müssen?



  • ja



  • Warum sollte ein Compiler eine for-Schleife von 0 bis 400 auf genau 4 Threads zuweisen? Basiert deine Analyse darauf, dass der Compiler dies tut? Dann würde ich mir sehr starke Gedanken über deinen Testaufbau machen...



  • Du solltest dann mal Start und Beendigung jeden Threads loggen (es kann ja auch sein, daß ein Thread wegen einer Exception beendet wurde - und dies führt dann nicht zum Beenden den ganzen Prozesses!).


Log in to reply