У меня есть цикл bash который выглядит следующим образом:
for i in $(seq 0 $max); do
my_command $i
done
и я хотел бы запустить это параллельно на n ядер. Я знаю, что я мог сделать
while [[ "$j" -le "$max" ]]; do
for i in $(seq 1 $ncores); do
my_command $j &
done
wait
done
но если время выполнения my_command является линейным в $i , то я теряю циклы ЦП, ожидая самой продолжительной функции. Как я могу непрерывно отправлять новые задания, чтобы задания $ncores выполнялись в любой момент времени? Нужно ли мне запускать на моей машине фактический планировщик заданий, например torque локально на моем компьютере, или я могу сделать это с помощью простого сценария bash ?
