Параллельно: ограниченное количество многопоточных процессов

591
CGFoX

Я использую GNU параллельно выполнять несколько заданий параллельно, как это: parallel python3 main.py arg ::: args*. В случае однопоточных заданий я использовал одно -j 100%сопоставление для одного задания.

Теперь у каждой работы четыре потока, а у меня 32 ядра. Я хочу распределить задания так, чтобы они не перекрывались, т. Е. Запускать по 8 заданий одновременно на четырех разных ядрах. Я не понимаю, как это сделать. Я попробовал -j8, что, я думал, ограничит количество параллельных заданий. Но он все равно запускает все задания одновременно - и ограничивает их до 8 ядер? -j 25%тоже не работал ...

1

1 ответ на вопрос

0
Ole Tange

Оба -j 8и -j 25%будут делать то же самое на 32-ядерном компьютере, так что если он не работает, то вы нашли ошибку. Сделайте MCVE stackoverflow.com/help/mcve.

Но сначала: получите самую последнюю версию, чтобы убедиться, что вы не пострадали от уже исправленной ошибки.

Просто чтобы уточнить: должен ли `-j` ограничивать количество * заданий *, работающих на сколь угодно большом количестве ядер, или число * ядер *, обрабатывающих столько же заданий? CGFoX 7 лет назад 0
-j ограничивает количество заданий, выполняемых параллельно в любой момент времени. В терминологии GNU Parallel это называется _job slots_. Ole Tange 7 лет назад 0

Похожие вопросы