群集上的Parfor:无法识别功能

时间:2012-02-14 17:10:42

标签: matlab parallel-processing cluster-computing

我尝试在群集的不同计算机上运行一个简单的任务。 我的配置已经过验证(没关系)。当我运行代码 在“本地”配置上,它的工作原理。但是当我使用集群时 配置,我收到以下错误:

使用parallel_function时出错(第598行) 未定义的函数'lafunc'用于'double'类型的输入参数。 错误堆栈:(没有远程错误堆栈) petittest出错(第6行) - »(petittest是我程序的名字) parfor it = 1:200

我尝试修改代码以使用“dfeval”而不是parfor循环, 但我得到了同样的结果(无法识别函数lafunc)。

如何让群集中的其他工作人员识别该功能 我手动定义的lafunc?

代码如下:

%%%%%%%%%%%%%
laconfig='/home/matlab/fred/LACED_DC1.mat';
setmcruserdata('ParallelConfigurationFile',laconfig);

matlabpool open

parfor it=1:200

yo=lafunc(it);
disp(yo)

end

matlabpool close

%%%%%%%%%%%

lafunc函数是

%%%%%%%%%%%%%%

function [y]=lafunc(x)
y=x*x;
end

%%%%%%%%%%%%%%%%%%%%%%

非常感谢,每一条信息对我都有用!!

1 个答案:

答案 0 :(得分:7)

确保在同一工作目录中运行的所有工作节点上的MATLAB脚本以及具有所需功能的其他目录都包含在路径中。因此,您可以在脚本中专门设置工作目录和路径:

matlabpool open
cd workdir
addpath funcdir
...

运行matlabpool open后,它将在所有工作程序上运行所有与路径相关的命令。请参阅here

您还可以使用'FileDependencies'参数打开matlabpool,以便所有工作人员都知道在哪里查找所需文件。请参阅MATLABPOOL的文档。