Многопоточность в MATLAB - PullRequest
       10

Многопоточность в MATLAB

18 голосов
/ 21 декабря 2010

Я прочитал информацию MATLAB о многопоточности и о том, как она встроена в определенные функции. Однако мое требование другое. Скажем, у меня есть 3 функции: fun1 (data1), fun2 (data2), fun3 (data3) .... Могу ли я реализовать многопоточность между этими функциями? У меня на самом деле есть более 300 функций, использующих много данных. Многопоточность может помочь мне сократить время. Пожалуйста, предложите команду или кое-что, что я могу продолжить исследовать. Спасибо!

Ответы [ 2 ]

22 голосов
/ 21 декабря 2010

Если вы хотите запустить пакет различных функций на разных процессорах, вы можете использовать Parallel Computing Toolbox, более конкретно, цикл parfor , но вам нужно передать функции в виде списка дескрипторов..

funList = {@fun1,@fun2,@fun3};
dataList = {data1,data2,data3}; %# or pass file names 

matlabpool open 

parfor i=1:length(funList)
    %# call the function
    funList{i}(dataList{i});
end

Редактировать: Начиная с R2015a * Функция matlabpool удалена из Matlab, вам нужно вместо этого вызвать parpool.

2 голосов
/ 21 декабря 2010

Попробуйте взглянуть на Parallel Computing Toolbox. (я, к сожалению, не слишком знаком с ним, но, похоже, это правильное место.) Посмотрите на параллели gather и для ...петли .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...