本例运行针对Parallel Computing Toolbox™修改的MATLAB®基准测试。我们在工作人员上执行基准测试,以确定分布式计算网络上机器的相对速度。在一台机器上重复运行的测量时间中,5%或10%的波动并不罕见。
这个基准测试旨在比较一个特定版本的MATLAB在不同机器上的性能。它不提供不同版本的MATLAB之间的直接比较。任务和问题大小因版本而异。
有关基准测试的详细信息,请查看pctdemo_task_bench的代码.
先决条件:
相关例子:
该示例在确定要使用的集群时使用默认配置文件。的资料文档说明如何创建新配置文件以及如何更改默认配置文件。看到自定义设置的例子在并行计算工具箱™有关如何更改示例难度级别或创建的任务数量的说明。
因为这个示例使用回调,所以我们还要验证我们有一个MJS集群对象要使用,而不是其他集群类型之一。
[难度,myCluster, numTasks] = pctdemo_helper_getDefaults();如果~ isequal (myCluster。类型,“乔丹”)错误(“pctexample: benchdist: NotMJS”,…[这个例子使用了回调函数,它只能用…一个MJS集群。]);结束流(['此示例将提交带有%d任务的作业'…\n'), numTasks);
此示例将向集群提交一个包含4个任务的作业。
我们将重复这一基准数
次数,和跑一次共numTasks
网络上的基准测试。因为我们无法控制哪些工人执行任务,其中一些人可能会被多次基准测试。另外,请注意,示例难度级别对我们在本例中执行的计算没有影响。你可以查看pctdemo_setup_bench的代码详细信息。
[fig, count] = pctdemo_setup_bench(难度);
我们创造了一个工作,包括numTasks
任务。每个任务由执行组成pctdemo_task_bench(计数)
和调用pctdemo_taskfin_bench
当它完成时。任务完成回调收集任务结果并存储它们。它还使用到目前为止获得的所有结果更新绘图。的代码pctdemo_task_bench和pctdemo_taskfin_bench有关详细信息。
job = createJob(myCluster);为i = 1:numTasks task = createTask(job, @pctdemo_task_bench, 1, {count});集(任务,“FinishedFcn”@pctdemo_taskfin_bench,…“用户数据”图);结束
我们现在可以提交作业并等待它完成。
提交(工作);等待(工作);
当任务完成时,任务完成回调函数收集任务结果并更新输出图。因此,我们不需要在这里执行任何绘图,我们只需验证我们是否获得了期望的所有结果。fetchOutputs
如果任务没有成功完成,将抛出错误,在这种情况下,我们需要在抛出错误之前删除作业。
试一试[~] = fetchOutputs(job);抓犯错删除(工作);重新抛出(错);结束
我们现在已经完成了所有的验证,所以我们可以删除这个作业。
删除(工作);