在parfor循环中使用第三方软件

时间:2018-01-18 19:33:43

标签: matlab parallel-processing parfor

我编写了一组嵌套for循环,用于在Matlab中的第三方软件(Lumerical,它是FDTD软件包)中进行参数扫描。这段代码运行得很好,但我似乎无法让并行版本工作。我的猜测是,Matlab在并行情况下分配工作者时遇到了问题,但我遇到了解决这个问题的问题。我已经复制了下面循环的代码和我用来执行每个Lumerical模拟的函数中的行。有没有人对如何解决这个问题有任何建议?

parfor ph = 1:PH
    for p = 1:P
     for bi = 1:BI
      for pii = 1:PI
          for r =1:R
              poolobj = gcp;
              addAttachedFiles(poolobj, FDTD_exec_pillars_parfor.m);
              pitch = [PillarHeight(ph), Pitch(p), BackgroundIndex(bi),...
              PillarIndex(pii), Radius(r)];
              Transdata = FDTD_exec_pillars_parfor(pitch);
              cellframe2(ph,p,bi,pii,r) = Transdata;
          end
      end
    end
  end
end


% Path used to execute simulation in FDTD package within function FDTD_exec_pillars_parfor
[x1,y1]=system('"C:\Program Files\Lumerical\FDTD\bin\fdtd-solutions.exe" -run NOMAD_script.lsf');

错误消息:

  

“错误:MATLAB无法确定”FDTD_exec_pillars_parfor“是指函数还是变量。请参阅MATLAB中的并行循环,”明确的变量名称“。”

在我添加两个poolobj行以尝试解决此错误后出现此错误消息:

  

“对于'FDTD_exec_pillars_parfor',工作人员抛出了UndefinedFunction错误。这可能是因为工作人员无法访问包含'FDTD_exec_pillars_parfor'的文件。使用addAttachedFiles(pool,files)指定要附加的所需文件。有关详细信息,请参阅“parallel.Pool / addAttachedFiles”的文档。

     

引起:未定义函数'FDTD_exec_pillars_parfor'用于'double'类型的输入参数“

0 个答案:

没有答案