Перебирать все файлы в каталоге одновременно
У меня есть цикл внутри цикла Внешний цикл просто проходит через каждый файл в каталоге и запускает внутренний цикл
Могу ли я выбрать несколько файлов и одновременно запустить внутренний цикл для этих файлов
Я использую 32-ядерный 100-Гбайт оперативный сервер. И в настоящее время я использую только 1% процессора, проходящего 1 на 1
Я хотел бы ускорить это, запустив несколько файлов одновременно, чтобы максимально эффективно использовать мой суперкомпьютер и сократить время.
1 ответ
Есть несколько вариантов распараллеливания сценария Matlab.
- если у вас есть лицензия для набора инструментов параллельных вычислений, вы можете заменить внешний цикл на
parfor
петля. Смотрите это. - если у вас нет такой лицензии, вы можете использовать сторонний пакет Multicore. Вам нужно будет изменить свой код, чтобы написать код для мастера и раба. Смотрите это.
- если вы не хотите слишком много переосмысливать свой код, вы можете удалить внешний цикл и принять имя файла в качестве аргумента. Затем используйте GNU параллельно, чтобы запустить столько экземпляров сценария, сколько имеется процессоров на машинах, и продолжайте делать это до тех пор, пока не будут обработаны все файлы. Видеть это.