这个例子展示了如何使用HPC挑战基准评估计算集群的性能。基准测试由几个测试组成,它们度量不同的内存访问模式。有关更多信息,请参见HPC挑战基准.
属性在集群中启动一个并行的工作人员池parpool
函数。默认情况下,parpool
使用默认集群配置文件创建并行池。的默认群集配置文件首页标签,in.平行>选择默认集群.在这个基准中,工人们相互沟通。如果需要优化worker间的通信,请设置'spmdenabled'
来真正的
.
池= parpool ('spmdenabled',真正的);
使用MyCluster配置文件启动并行池(parpool)…连接到64个工人。
使用hpccDataSizes
函数计算满足HPC Challenge要求的每个基准的问题大小。这个大小取决于工作程序的数量和每个工作程序可用的内存量。例如,允许每个worker使用1gb。
gbPerWorker = 1;dataSizes = hpccDataSizes (pool.NumWorkers gbPerWorker);
HPC挑战基金标记由几个部分组成,每个部分都探讨了系统的不同方面的性能。在以下代码中,每个函数运行单个基准标记,并返回包含性能结果的行表。这些功能在分布式阵列上测试各种操作。MATLAB分区跨多个并行工作者分布式阵列,因此它们可以使用群集的组合内存和计算资源。有关分布式阵列的更多信息,请参阅分布式阵列.
hpccHPL (m)
,被称为Linpack Benchmark,测量求解线性方程组的执行速度。它创建了一个随机分布的实矩阵一个
的大小米
——- - - - - -米
和一个实随机分布向量b
的长度米
,并测量解决系统的时间x = A \ b
并行执行。性能以千兆浮点运算(每秒数十亿次浮点运算)返回。
hplResult = hpccHPL (dataSizes.HPL);
启动HPCC基准:数据大小为27.8255 GB的HPL。在64个工人的池上运行分析文件并将文件传输给工人…完成。完成HPCC基准:HPL在196.816秒。
hpccDGEMM (m)
度量实矩阵-矩阵乘法的执行率。它产生随机分布实矩阵一个
,B
,C
的大小米
——- - - - - -米
,并计算执行矩阵乘法的时间C = C + A*B
在平行,α
和bet
是随机的标量。性能以十亿次浮点运算的速度返回。
dgemmResult = hpccDGEMM (dataSizes.DGEMM);
启动HPCC基准:DGEMM,数据大小:9.27515 GB。在64个工人的池上运行分析文件并将文件传输给工人…完成。完成HPCC基准:DGEMM在69.3654秒。
hpccSTREAM (m)
评估集群的内存带宽。它创造了随机分布的向量b
和c
的长度米
,和一个随机标量k
,计算a = b + c * k
.此基准测试不使用互操作者通信。性能在每秒千兆字节中返回。
streamResult = hpccSTREAM (dataSizes.STREAM);
启动HPCC基准:STREAM的数据大小:10.6667 GB。在64个工人的池上运行分析文件并将文件传输给工人…完成。完成HPCC基准:流在0.0796962秒。
hpccPTRANS (m)
用于测量系统的进程间通信速度。它创建了两个随机分布矩阵一个
和B
的大小米
——- - - - - -米
,计算一个“+ B
.结果以每秒千兆字节为单位返回。
ptransResult = hpccPTRANS (dataSizes.PTRANS);
启动HPCC基准:PTRANS,数据大小:9.27515 GB。在64个工人的池上运行分析文件并将文件传输给工人…完成。完成HPCC基准:PTRANS在6.43994秒。
hpccRandomAccess (m)
度量每秒可随机更新的分布式向量中的内存位置数。结果在GUPS中返回,每秒giga的更新。在这个测试中,工作人员使用一个随机数生成器编译成一个MEX函数。将每个操作系统体系结构的这个MEX函数的一个版本附加到并行池中,以便工作人员可以访问与他们的操作系统相对应的那个函数。
addAttachedFiles(池,{“hpccRandomNumberGeneratorKernel.mexa64”,“hpccRandomNumberGeneratorKernel.mexw64”,“hpccRandomNumberGeneratorKernel.mexmaci64”});randomAccessResult = hpccRandomAccess (dataSizes.RandomAccess);
启动HPCC基准:RandomAccess,数据大小:16gb。在64个工人的池上运行分析文件并将文件传输给工人…完成。完成HPCC基准:RandomAccess在208.103秒。
hpccFFT (m)
测量在长度分布向量上并行快速傅里叶变换(FFT)计算的执行速度米
.该测试测试了系统的运算能力和通信性能。性能以十亿次浮点运算的速度返回。
fftResult = hpccFFT (dataSizes.FFT);
启动HPCC基准:FFT数据大小:8gb。在64个工人的池上运行分析文件并将文件传输给工人…完成。完成HPCC基准:FFT 11.772秒。
每个基准测试都会产生一个带有统计信息的表行。连接这些行以提供测试结果的摘要。
allResults = [hplResult;dgemmResult;streamResult;...ptransResult;randomAccessResult;fftResult];disp (allResults);
基准数据表现时间表现___________________________________________________________________________________________________________________19.82 773.11“GFLOPS”9.2752 69.365 1266.4“GFLOPS”流动“10.667 0.079696 4.667”GBPERSEC“”PTRANS“9.2752 6.4399 1.5465”GBPERSEC“”QUANCEACAS“16208.1 0.010319“GUP”“FFT”8 11.772 6.6129“GFLOPS”
批处理
你可以使用批处理
函数将HPC Challenge中的计算卸载到您的集群中,并继续在MATLAB中工作。
使用前批处理
,删除当前并行池。如果并行池已经使用了所有可用的辅助程序,则无法处理批处理作业。
删除(gcp);
发送函数hpccBenchmark
将批处理作业发送到集群批处理
.此函数调用HPC Challenge中的测试,并在一个表中返回结果。当你使用批处理
,一个工作人员担任MATLAB客户端角色并执行该函数。另外,指定以下名称-值对参数:
“池”
:为作业创建一个带有worker的并行池。在这种情况下,指定32
工人。hpccBenchmark
在这些worker上运行HPC Challenge。
“AttachedFiles”:
将文件传输到池中的工作人员。在这种情况下,附加一个版本的hpccRandomNumberGeneratorKernel
用于每个操作系统架构。操作人员在执行时访问对应于他们操作系统的那个hpccRandomAccess
测试。
“CurrentFolder”
:设置workers的工作目录。如果不指定此参数,则MATLAB将工人的当前目录更改为MATLAB客户端中的当前目录。将其设置为“。”
如果要使用Worker的当前文件夹。当工人有一个不同的文件系统时,这很有用。
gbPerWorker = 1;工作=批(@hpccBenchmark 1 {gbPerWorker},...“池”32岁的...“AttachedFiles”, {“hpccRandomNumberGeneratorKernel.mexa64”,“hpccRandomNumberGeneratorKernel.mexw64”,“hpccRandomNumberGeneratorKernel.mexmaci64”},...“CurrentFolder”,“。”);
提交作业后,可以在MATLAB中继续工作。您可以使用作业监视器检查作业的状态。在首页选项卡,环境区域,选择平行>监控工作.
在这种情况下,等待任务完成。要从集群检索结果,请使用fetchOutputs
函数。
等待(工作);结果= fetchOutputs(工作);{1} disp(结果)
基准DataSizeGB时间性能性能单位______________ __________ ________ ___________ ________________ "HPL" 13.913 113.34 474.69 "GFlops" "DGEMM" " 4.6376 41.915 740.99 "GFlops" "STREAM" 5.3333 0.074617 230.24 "GBperSec" "PTRANS" " 4.6376 3.7058 1.3437 "GBperSec" "RandomAccess" 8 189.05 0.0056796 "GUPS" "FFT" 4 7.6457 4.9153 "GFlops"
当您使用大型集群时,您将增加可用的计算资源。如果花在计算上的时间超过花在员工间沟通上的时间,那么您的问题可以很好地扩大。下图显示了HPL基准的扩展与工人的数量,在一个集群4
机器和18
每台机器的物理核。注意,在这个基准测试中,数据的大小随着工人数量的增加而增加。