集群工作单元基准测试
此示例显示如何在集群工作单元上运行 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 数值函数(例如 lu 或 fft)能够使用多个计算线程在多个核心上运行。工作单元默认使用单个计算线程,因为它们通常与单个核心相关联。因此,例如,LU 测试在 MATLAB 客户端上的运行速度比在工作单元上的运行速度更快。其他问题,例如 ODE,无法从多线程中受益,因此它们在 MATLAB 客户端和工作单元上执行相同的操作。在决定是否将计算分配给 MATLAB 并行工作单元(例如 parfor)时,请考虑这种差异。有关详细信息,请参阅决定何时使用 parfor。有关多线程的更多信息,请参阅在多核和多处理器计算机上运行 MATLAB。
另请参阅
bench | parpool | fetchOutputs | parfevalOnAll