Ich habe Zugang zu einer Maschine, wo ich Zugang zu 10 der Kerne habe - und ich möchte sie tatsächlich benutzen. Was ich bin es gewohnt, auf meine eigene Maschine etwas zu tun, so sein würde:Bash: Das gleiche Programm über mehrere Kerne laufen lassen
for f in *.fa; do
myProgram (options) "./$f" "./$f.tmp"
done
Ich habe 10 Dateien Ich mag würde dies auf tun - nennen wir sie blah00.fa, blah01.fa, .. blah09.fa.
Das Problem mit diesem Ansatz ist, dass myProgram nur 1 Kern auf einmal verwendet, und so auf dem Multi-Core-Rechner würde ich 1 Kern zu einer Zeit 10 Mal verwenden, also würde ich nicht sein mit meinem Mahcine zu seiner maximalen Fähigkeit.
Wie kann ich mein Skript ändern, so dass es alle 10 meiner .fa-Dateien gleichzeitig ausführt? Ich schaute auf Run a looped process in bash across multiple cores, aber ich konnte nicht den Befehl bekommen, genau das zu tun, was ich wollte.
Sie haben 'gnu parallel' versucht? Was hat nicht für dich funktioniert? –
Haben Sie versucht, den Gnu-Parallelvorschlag in dieser Antwort zu verwenden? –
'seq 0 10 | parallel myProgram -opt1 -opt2 ./blah{}.fa ./blah {}. tmp' –