主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

集群工作单元基准测试

此示例显示如何在集群工作单元上运行 MATLAB® 基准。基准测试了几个 MATLAB 计算的执行速度。您可以绘制这些结果并比较客户端和工作单元的表现。

此示例使用 pbench,该函数运行 bench(MATLAB 基准)中的部分测试。该子集中的测试包括 LU、FFT、ODE 和 Sparse。有关这些测试的详细信息,请参阅 bench

在客户端上运行 MATLAB 基准。

tClient = pbench
tClient = 1×4

    0.0766    0.0725    0.0194    0.1311

使用 p 函数创建并行池 parpool。默认情况下,parpool 会在默认集群上启动一个带有工作单元的并行池。在 MATLAB 主页选项卡上的环境区域中的并行 > 选择默认集群中选择您的默认集群。

p = parpool();
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).

使用 parfevalOnAll 函数在工作单元上运行 MATLAB 基准测试。parfevalOnAll 将函数的执行卸载到池中的所有工作单元,并在结果准备就绪时返回 parallel.FevalOnAllFuture 对象来保存结果。要从工作单元那里获得结果,请在 future 对象上使用 fetchOutputs

f = parfevalOnAll(@pbench,1);
tWorkers = fetchOutputs(f);

结合客户端和工作单元的结果,并使用条形图绘制它们。比较工作单元和客户端的相对表现。

tClientAndWorkers = [tClient;tWorkers];
bar(tClientAndWorkers');
xticklabels({'LU','FFT','ODE','Sparse'});
xlabel("Benchmark type");
ylabel("Benchmark execution time (seconds)");
workerNames = strcat("Worker ",string(1:size(tWorkers,1)));
legend(["Client",workerNames],'Location','bestoutside');

默认情况下,MATLAB 客户端启用多线程。多线程使 MATLAB 数值函数(例如 lufft)能够使用多个计算线程在多个核心上运行。工作单元默认使用单个计算线程,因为它们通常与单个核心相关联。因此,例如,LU 测试在 MATLAB 客户端上的运行速度比在工作单元上的运行速度更快。其他问题,例如 ODE,无法从多线程中受益,因此它们在 MATLAB 客户端和工作单元上执行相同的操作。在决定是否将计算分配给 MATLAB 并行工作单元(例如 parfor)时,请考虑这种差异。有关详细信息,请参阅决定何时使用 parfor。有关多线程的更多信息,请参阅在多核和多处理器计算机上运行 MATLAB

另请参阅

| | |

主题