【发布时间】:2010-04-26 12:00:37
【问题描述】:
如何在 MATLAB 中进行线程化?我想同时对两个变量运行一个函数。我该怎么做?
【问题讨论】:
-
@hai:请不要发布重复的问题。如果您之前的问题([admin: now this question])没有得到您喜欢的答案,那么您应该编辑它以使您的问题更清楚。
标签: matlab function multithreading parallel-processing
如何在 MATLAB 中进行线程化?我想同时对两个变量运行一个函数。我该怎么做?
【问题讨论】:
标签: matlab function multithreading parallel-processing
并行工具箱中的一些工具可能会对您有所帮助。在下面找到一些从 Matlab 帮助中粘贴的示例
matlabpool % Use default parallel configuration
spmd % By default uses all labs in the pool
INP = load(['somedatafile' num2str(labindex) '.mat']);
RES = somefun(INP);
end
然后,实验室上的 RES 的值可以从客户端访问,如实验室 1 中的 RES{1}、实验室 2 中的 RES{2} 等。
您也可以将parfor 视为for 的简单并行替换。希望这会有所帮助,即使它不是您想要的。
【讨论】:
我不相信 MATLAB 有任何内置的多线程支持。 这来自我最近与同事的一次谈话和quick google search
希望这会有所帮助。
【讨论】:
您可以使用 MEX 文件和 std::thread(请参阅 here)。
我没有尝试从 MEX 文件中调用 mexEvalString,它很可能会导致运行时错误或在执行时冻结 MATLAB。但是,如果您可以用 C++ 编写特定的代码,它可能就是您想要的。
【讨论】: