Я прочитал информацию MATLAB о многопоточности и о том, как она встроена в определенные функции. Однако мои требования разные. Скажем, у меня есть 3 функции: fun1 (data1), fun2 (data2), fun3 (data3).... Могу ли я реализовать многопоточность между этими функциями? На самом деле у меня есть более 300 функций с большим количеством данных. Многопоточность может помочь мне сократить время. Пожалуйста, предложите команду или что-то, что я могу продолжить. Спасибо!
Многопоточность в MATLAB
Ответ 1
Если вы хотите запустить партию различных функций на разных процессорах, вы можете использовать Parallel Computing Toolbox, точнее, parfor loop, но вам нужно передать функции в виде списка дескрипторов.
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
Edit:
Начиная с R2015a matlabpool
функция была удалена из Matlab, вам нужно вместо этого вызвать parpool
.
Ответ 2
Попробуйте найти Parallel Computing Toolbox. (к сожалению, я не слишком хорошо знаком с этим, но это кажется правильным местом. ) Посмотрите gather
и параллельные for-loops.