Parallel: Begrenzte Anzahl von Multithread-Prozessen

715
CGFoX

Ich verwende GNU parallel mehrere Jobs parallel wie folgt auszuführen: parallel python3 main.py arg ::: args*. Bei Single-Threaded-Jobs habe ich -j 100%sichergestellt, dass 1 Job einem Core zugeordnet ist.

Jetzt hat jeder Job vier Threads und ich habe 32 Kerne. Ich möchte die Jobs so verteilen, dass sie sich nicht überschneiden, dh jeweils 8 Jobs auf vier verschiedenen Kernen ausführen. Ich verstehe nicht, wie das geht. Ich habe versucht -j8, was meiner Meinung nach die Anzahl der parallelen Jobs einschränken würde. Aber es startet immer noch alle Jobs auf einmal - und beschränkt sie auf 8 Kerne? -j 25%funktionierte auch nicht ...

1

1 Antwort auf die Frage

0
Ole Tange

Beides -j 8und -j 25%machen dasselbe auf einem 32-Core-Rechner. Wenn dies nicht funktioniert, haben Sie einen Fehler gefunden. Erstellen Sie einen MCVE-Stackoverflow.com/help/mcve.

Aber zuerst: Holen Sie sich die neueste Version, um sich zu vergewissern, dass Sie nicht bereits von einem Fehler beseitigt werden.

Nur zur Klarstellung: Soll `-j` die Anzahl der * Jobs *, die auf vielen Kernen laufen, oder die Anzahl der * Kerne *, die noch viele Jobs verarbeiten, begrenzen? CGFoX vor 7 Jahren 0
-j begrenzt die Anzahl der gleichzeitig ausgeführten Jobs. In der GNU-Parallel-Terminologie wird dies als _job slot_ bezeichnet. Ole Tange vor 7 Jahren 0