В моем скрипте Matlab я запускаю алгоритм с циклом for
, в котором на каждой итерации мне нужно выполнить градиентный спуск. Все градиентные спуска независимы. Вот структура моего сценария:Параллельный код matlab
for i=1:p
x=gradient_descent(x_init,grad_g,opts(i));
end
где opts(i)
представляет собой структуру, которая содержит переменные, необходимые для градиентного спуска. В этом случае $ p = 145 $. Мой скрипт работает на моей машине ($ 8 $) (без использования каких-либо параллельных трюков). У меня создалось впечатление, что мой скрипт можно распараллелить, так как каждый градиентный спуск в независимом. Когда я удалю matlabpool
на моем компьютере, я могу использовать до 4 лабораторий. Одновременно каждая лаборатория могла выполнять градиентный спуск и вместо того, чтобы делать один градиентный спуск за раз, я мог бы сделать 4. Но я не знаю, как я мог бы распараллелить свой сценарий. Из того, что я нашел в Интернете, я мог бы использовать функцию batch
, верно?
если у вас есть параллельный набор инструментов вы можете использовать parfor вместо для. Возможно, посмотрите здесь: http://www.mathworks.de/de/help/distcomp/getting-started-with-parfor.html – zinjaai
Parfor не будет работать из-за того, что используется метод «opts». – jibounet
@ jibounet Опубликуйте минимальный пример, в котором переход с for на parfor заставит Matlab показать полученную ошибку. (В вашем примере у нас отсутствует определение 'opts') – Sheljohn