如何使外部工具箱可用于MATLAB Parallel Computing Toolbox作业?

时间:2010-12-12 21:52:23

标签: parallel-processing external matlab

作为this问题和后续answer的延续,是否有人知道如何使用并行计算工具箱创建作业(使用createJobcreateTask)访问外部工具箱?在创建函数时是否可以指定配置参数以指定应加载的工具箱?

2 个答案:

答案 0 :(得分:3)

根据this section of the documentation,您可以这样做的一种方法是指定作业对象的'PathDependencies' property'FileDependencies' property,以便它指向您需要作业的工作人员的功能能够使用。

您应该可以指向KbCheck functionPsychToolbox的方式,以及KbCheck正常工作所需的任何其他功能或目录。它看起来像这样:

obj = createJob('PathDependencies',{'path_to_KbCheck',...
                                    'path_to_other_PTB_functions'});

答案 1 :(得分:2)

根据我的工作排除此问题的一些评论:

  • 看来,嵌套函数和匿名函数与Parallel Computation工具包的协作程度有些不一致。我无法让他们工作,而others已经能够。 (另请参阅here。)因此,我建议将每个函数存储在自己的文件中,并使用PathDependenciesFileDependencies属性包含这些文件,如上面的gnovice所述。

  • 很难对Parallel Computation工具包进行故障排除,因为一切都发生在您的视图之外。在代码中使用断点,inspect命令是你的朋友。另请注意,如果出现错误,任务对象将包含一个错误参数,该参数将包含ErrorMessage字符串,可能还包含Error.causes MException对象。这两个在调试中都非常有用。

  • 在加入Psychtoolbox时,您需要按照以下方式进行操作。首先,使用以下行创建jobStartup.m文件:

    PTB_path = '/Users/eliezerk/Documents/MATLAB/Psychtoolbox3/';
    addpath( PTB_path );
    cd( PTB_path );
    SetupPsychtoolbox;
    

    但是,由于Parallel Computation工具包无法处理任何图形功能,因此按原样运行SetupPsychtoolbox实际上会导致线程崩溃。为避免这种情况,您需要编辑PsychtoolboxPostInstallRoutine函数,该函数在SetupPsychtoolbox的最后调用。具体来说,您想要注释掉AssertOpenGL行(第496行,截至本答复时;这可能会在将来的版本中发生变化)。