Dies ist vollkommen in Ordnung - nichts sollte abstürzen oder hängen als Folge davon.
Allerdings ist Ihre "so, dass es minimale CPU verwendet" ein wenig beunruhigend. Führen Sie mehr MPI-Prozesse aus, als Sie über Hardware-Threads verfügen, um sie auszuführen? Diese Art der Überzeichnung ist im Allgemeinen für die Leistung schrecklich und sollte vermieden werden. Die beste Leistung wird oft mit einem Prozess pro Hardwareknoten weniger als die Anzahl der Hardware-Threads, die es bietet angezeigt, damit Systemprozesse an einem beliebigen Ort ausgeführt werden können, ohne die Anwendung vorwegzunehmen.
Der Fall, wo dies gut begründet werden könnte (auf dem ich gerade veröffentlicht a paper) ist, wenn Sie einen Abschnitt Ihres Programms haben, wo Sie weniger Parallelität haben als Sie Prozesse haben. Wenn Sie auf Intel-CPUs mit Turbo Boost arbeiten, können die aktiven Prozesse durch den Leerlaufprozess tatsächlich mit einer höheren Taktfrequenz ausgeführt werden.
Die meisten MPI-Implementierungen starten jeden Rang in einem eigenen separaten Prozess. Jeder Prozess hat mindestens einen Thread. Die Verwendung von 'this_thread' ist daher vollkommen in Ordnung, aber bedenken Sie, dass MPI oft zusätzliche Threads für den internen Gebrauch erzeugt und Sie sollten sich nicht mit ihnen anlegen (was eigentlich mit der C++ - Schnittstelle sowieso kaum möglich ist). –
@HristoIliev: Ich würde dies als Antwort aufwerten. – Richard