用HPC挑战对集群进行基准测试
这个例子展示了如何使用HPC挑战基准测试评估计算集群的性能。基准测试由几个测试组成,这些测试度量不同的内存访问模式。有关更多信息,请参见HPC挑战基准.
准备HPC挑战赛
方法在集群中启动并行工作池parpool
函数。默认情况下,parpool
使用默认集群配置文件创建并行池。上的默认集群配置文件首页选项卡,在平行>选择默认集群.在这个基准测试中,工作人员彼此通信。为保证最优化的互通,请设置“SpmdEnabled”
来真正的
.
池= parpool (“SpmdEnabled”,真正的);
使用“MyCluster”配置文件启动并行池(parpool)…与64名工人相连。
使用hpccDataSizes
函数计算满足HPC挑战要求的每个基准测试的问题大小。这个大小取决于worker的数量和每个worker可用的内存量。例如,允许每个工人使用1gb。
gbPerWorker = 1;dataSizes = hpccDataSizes (pool.NumWorkers gbPerWorker);
运行HPC挑战赛
HPC Challenge基准测试由几个部分组成,每个部分探索系统不同方面的性能。在下面的代码中,每个函数运行一个基准测试,并返回一个包含性能结果的行表。这些函数测试分布式数组上的各种操作。MATLAB在多个并行工作者之间划分分布式数组,因此它们可以使用集群的组合内存和计算资源。有关分布式阵列的更多信息,请参见分布式阵列.
HPL
hpccHPL (m)
,被称为Linpack基准测试(Linpack Benchmark),它衡量求解线性方程组的执行率。它创建了一个随机分布实矩阵一个
的大小米
——- - - - - -米
一个真实的随机分布向量b
的长度米
,并测量求解系统的时间x = A \ b
并行执行。性能以十亿次浮点运算(每秒数十亿次浮点运算)的速度返回。
hplResult = hpccHPL (dataSizes.HPL);
启动HPCC基准测试:数据大小为27.8255 GB的HPL。在64个工作人员的池中运行分析文件并向工作人员传输文件…完成。用196.816秒完成HPCC基准测试:HPL
DGEMM
hpccDGEMM (m)
度量实矩阵-矩阵乘法的执行率。它创建了随机分布实矩阵一个
,B
,C
的大小米
——- - - - - -米
,并度量执行矩阵乘法的时间C = *C + *A*B
在平行,α
而且β
是随机的标量。性能以每秒千万亿次的速度返回。
dgemmResult = hpccDGEMM (dataSizes.DGEMM);
启动HPCC基准测试:DGEMM,数据大小:9.27515 GB。在64个工作人员的池中运行分析文件并向工作人员传输文件…完成。用69.3654秒完成HPCC基准:DGEMM。
流
hpccSTREAM (m)
评估集群的内存带宽。它创建了随机分布向量b
而且c
的长度米
,和一个随机标量k
,计算A = b + c*k
.该基准测试不使用工作者之间的通信。性能以每秒千兆字节为单位返回。
streamResult = hpccSTREAM (dataSizes.STREAM);
启动HPCC基准测试:数据大小为10.6667 GB的STREAM。在64个工作人员的池中运行分析文件并向工作人员传输文件…完成。完成HPCC基准:STREAM在0.0796962秒。
PTRANS
hpccPTRANS (m)
衡量系统的进程间通信速度。它创建了两个随机分布矩阵一个
而且B
的大小米
——- - - - - -米
,计算一个“+ B
.返回的结果以每秒千兆字节为单位。
ptransResult = hpccPTRANS (dataSizes.PTRANS);
启动HPCC基准测试:数据大小为9.27515 GB的PTRANS。在64个工作人员的池中运行分析文件并向工作人员传输文件…完成。在6.43994秒内完成HPCC基准测试:PTRANS
RandomAccess
hpccRandomAccess (m)
度量分布式向量中每秒可随机更新的内存位置的数量。结果以GUPS(每秒千兆更新)的形式返回。在这个测试中,工作人员使用编译成MEX函数的随机数生成器。将每个操作系统体系结构的这个MEX函数的一个版本附加到并行池,以便工作人员可以访问与他们的操作系统相对应的那个版本。
addAttachedFiles(池,{“hpccRandomNumberGeneratorKernel.mexa64”,“hpccRandomNumberGeneratorKernel.mexw64”,“hpccRandomNumberGeneratorKernel.mexmaci64”});randomAccessResult = hpccRandomAccess (dataSizes.RandomAccess);
启动HPCC基准测试:随机访问,数据大小:16 GB。在64个工作人员的池中运行分析文件并向工作人员传输文件…完成。208.103秒完成HPCC基准测试:RandomAccess
FFT
hpccFFT (m)
度量并行快速傅立叶变换(FFT)计算在分布长度向量上的执行率米
.该测试测试了系统的运算能力和通信性能。性能以每秒千万亿次的速度返回。
fftResult = hpccFFT (dataSizes.FFT);
启动HPCC基准测试:FFT,数据大小:8 GB。在64个工作人员的池中运行分析文件并向工作人员传输文件…完成。完成HPCC基准:FFT 11.772秒。
显示结果
每个基准测试的结果都是包含统计信息的单个表行。将这些行连接起来以提供测试结果的摘要。
allResults = [hplResult;dgemmResult;streamResult;...ptransResult;randomAccessResult;fftResult];disp (allResults);
Benchmark DataSizeGB Time Performance PerformanceUnits ______________ __________ ________ ___________ ________________ "HPL" 27.826 196.82 773.11 "GFlops" "DGEMM" 9.2752 69.365 1266.4 "GFlops" "STREAM" 10.667 0.079696 431.13 "GBperSec" "PTRANS" 9.2752 6.4399 1.5465 "GBperSec" "RandomAccess" 16 208.1 0.010319 "GUPS" "FFT" 8 11.772 6.6129 "GFlops"
将计算与批处理
您可以使用批处理
函数将HPC Challenge中的计算卸载到您的集群,并继续在MATLAB中工作。
使用前批处理
,删除当前并行池。如果并行池已经使用了所有可用的工作者,则无法处理批处理作业。
删除(gcp);
发送函数hpccBenchmark
作为批处理作业向集群发送批处理
.此函数调用HPC Challenge中的测试,并在表中返回结果。当你使用批处理
,一个工人扮演MATLAB客户端的角色并执行函数。另外,指定这些名称-值对参数:
“池”
:为该工作创建一个并行池。在本例中,指定32
工人。hpccBenchmark
在这些工人身上进行高性能计算挑战赛。“AttachedFiles”:
将文件传输到池中的工作者。在这种情况下,附加一个版本的hpccRandomNumberGeneratorKernel
对于每个操作系统体系结构。操作时,工作人员访问与他们的操作系统相对应的hpccRandomAccess
测试。“CurrentFolder”
:设置工人的工作目录。如果不指定此参数,MATLAB将工人的当前目录更改为MATLAB客户端的当前目录。将其设置为“。”
如果您想使用工作者的当前文件夹。当工作者使用不同的文件系统时,这很有用。
gbPerWorker = 1;工作=批(@hpccBenchmark 1 {gbPerWorker},...“池”32岁的...“AttachedFiles”,{“hpccRandomNumberGeneratorKernel.mexa64”,“hpccRandomNumberGeneratorKernel.mexw64”,“hpccRandomNumberGeneratorKernel.mexmaci64”},...“CurrentFolder”,“。”);
提交作业后,您可以继续在MATLAB中工作。您可以使用作业监视器检查作业的状态。在首页选项卡,环境区域,选择平行>监控工作.
在这种情况下,等待作业完成。要从集群检索结果,请使用fetchOutputs
函数。
等待(工作);结果= fetchOutputs(工作);{1} disp(结果)
Benchmark DataSizeGB时间性能PerformanceUnits ______________ __________ ________ ___________ ________________ "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
每台机器的物理内核。注意,在这个基准测试中,数据的大小随着工作人员的数量而增加。