Недавно я получил доступ для запуска моих кодов в кластере.Мой код полностью распараллелен, но я не знаю, как лучше всего использовать его параллельную природу.Я должен вычислить элементы большой матрицы, и каждый из них не зависит от других.Я хочу отправить задание на несколько машин (например, на 100), чтобы ускорить вычисление матрицы.
Сейчас я написал сценарий для отправки нескольких заданий, каждое из которых отвечает за вычисление части матрицы.и сохраните его в файле .mat.В конце я объединяю их, чтобы получить всю матрицу.Для отправки каждого отдельного задания я создал новый файл .m (run1.m, run.2, ...) для установки переменной, а затем запустил функцию для вычисления связанной части в матрице.Таким образом, в основном run1.m равен
id=1;compute_dists_matrix
, а затем compute_dists_matrix использует id, чтобы найти часть, которую он собирается вычислить.Затем я написал скрипт для создания run1.m через run60.m и qsub их в кластер.
Интересно, есть ли лучший способ сделать это, например, с использованием некоторых функций MATLAB.Потому что это кажется очень типичной задачей.