作为this问题和后续answer的延续,是否有人知道如何使用并行计算工具箱创建作业(使用createJob
和createTask
)访问外部工具箱?在创建函数时是否可以指定配置参数以指定应加载的工具箱?
答案 0 :(得分:3)
根据this section of the documentation,您可以这样做的一种方法是指定作业对象的'PathDependencies'
property或'FileDependencies'
property,以便它指向您需要作业的工作人员的功能能够使用。
您应该可以指向KbCheck
function中PsychToolbox的方式,以及KbCheck
正常工作所需的任何其他功能或目录。它看起来像这样:
obj = createJob('PathDependencies',{'path_to_KbCheck',...
'path_to_other_PTB_functions'});
答案 1 :(得分:2)
根据我的工作排除此问题的一些评论:
看来,嵌套函数和匿名函数与Parallel Computation工具包的协作程度有些不一致。我无法让他们工作,而others已经能够。 (另请参阅here。)因此,我建议将每个函数存储在自己的文件中,并使用PathDependencies
或FileDependencies
属性包含这些文件,如上面的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行,截至本答复时;这可能会在将来的版本中发生变化)。