主要内容

基准与HPC集群的挑战

这个例子展示了如何评估计算集群的性能与基准HPC的挑战。基准由几种测试,测量不同的内存访问模式。有关更多信息,请参见HPC挑战基准

HPC的挑战做好准备

开始在您的集群并行的工人使用parpool函数。默认情况下,parpool使用默认创建一个平行池集群配置文件。检查你的默认集群配置文件的选项卡,在平行>选择一个默认的集群。在该基准测试中,工人们相互通信。以确保交织在一起交流是优化,集“SpmdEnabled”真正的

池= parpool (“SpmdEnabled”,真正的);
开始平行池(parpool)使用“MyCluster”概要文件…连接到64名工人。

使用hpccDataSizes函数计算一个问题大小为每个单独的基准,实现高性能计算的需求的挑战。这大小取决于工人的数量和可用内存的数量每个工人。例如,允许使用人均1 GB。

gbPerWorker = 1;dataSizes = hpccDataSizes (pool.NumWorkers gbPerWorker);

运行HPC的挑战

基准的HPC挑战包括几个部分,分别探讨了系统的不同方面的性能。在以下代码中,每个函数运行一个基准,并返回一个表,其中包含性能结果行。这些功能对分布式阵列测试各种各样的操作。MATLAB分区分布式阵列跨多个并行的工人,所以他们可以使用的内存和计算资源集群。分布式阵列的更多信息,请参阅分布式阵列

HPL

hpccHPL (m)被称为Linpack基准,措施执行速度求解一个线性方程组。它创建一个随机分布矩阵一个的大小——- - - - - -和一个真正的随机分布的向量b的长度系统,和措施来解决x = A \ b并行执行。返回的性能是在吉拍(每秒数十亿浮点操作)。

hplResult = hpccHPL (dataSizes.HPL);
开始HPCC基准:HPL数据大小:27.8255 GB。上运行的64名工人工人……做了分析和传输文件。在196.816秒内完成HPCC基准:HPL。

DGEMM

hpccDGEMM (m)措施的执行利率真正的矩阵与矩阵的乘法。它创造了随机分布的矩阵一个,B,C的大小——- - - - - -,和措施执行矩阵乘法C +α=β* * A * B在平行,αβ是随机的标量。在吉拍返回的性能。

dgemmResult = hpccDGEMM (dataSizes.DGEMM);
开始HPCC基准:DGEMM数据大小:9.27515 GB。上运行的64名工人工人……做了分析和传输文件。在69.3654秒内完成HPCC基准:DGEMM。

hpccSTREAM (m)评估集群的内存带宽。它创造了随机分布的向量bc的长度和一个随机的标量k,计算a = b + c * k。这个基准测试不使用交织在一起交流。返回的性能是在字节每秒。

streamResult = hpccSTREAM (dataSizes.STREAM);
开始HPCC基准:用数据流大小:10.6667 GB。上运行的64名工人工人……做了分析和传输文件。在0.0796962秒内完成HPCC基准:流。

PTRANS

hpccPTRANS (m)测量系统的进程间通信速度。它创建了两个随机分布矩阵一个B的大小——- - - - - -,计算一个“+ B。返回的结果是在字节每秒。

ptransResult = hpccPTRANS (dataSizes.PTRANS);
开始HPCC基准:PTRANS数据大小:9.27515 GB。上运行的64名工人工人……做了分析和传输文件。在6.43994秒内完成HPCC基准:PTRANS。

RandomAccess

hpccRandomAccess (m)措施的数量在一个分布式的内存位置向量,可以随机更新每秒。结果是在GUPS哑音,千兆每秒更新。在该测试中,工人们使用一个随机数发生器编译成一个墨西哥人函数。附加的一个版本这个墨西哥人函数为每个操作系统体系结构并行池,所以工人们可以访问一个对应于他们的操作系统。

addAttachedFiles(池,{“hpccRandomNumberGeneratorKernel.mexa64”,“hpccRandomNumberGeneratorKernel.mexw64”,“hpccRandomNumberGeneratorKernel.mexmaci64”});randomAccessResult = hpccRandomAccess (dataSizes.RandomAccess);
开始HPCC基准:RandomAccess数据大小:16 GB。上运行的64名工人工人……做了分析和传输文件。在208.103秒内完成HPCC基准:RandomAccess。

FFT

hpccFFT (m)措施的执行速度并行快速傅里叶变换(FFT)计算的分布式矢量长度。这个测试测量系统的运算能力和通信性能。在吉拍返回的性能。

fftResult = hpccFFT (dataSizes.FFT);
开始HPCC基准:FFT与数据大小:8 GB。上运行的64名工人工人……做了分析和传输文件。在11.772秒内完成HPCC基准:FFT。

显示结果

每个基准测试结果与统计一个表行。连接这些行提供的总结测试结果。

allResults = [hplResult;dgemmResult;streamResult;ptransResult;randomAccessResult;fftResult];disp (allResults);
基准DataSizeGB时间性能__________ ________ PerformanceUnits * * * ___________ ___________ HPL“27.826 196.82 773.11“GFlops”“DGEMM”9.2752 69.365 1266.4“GFlops”“流”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的计算挑战您的集群并在MATLAB环境下继续工作。

使用前批处理删除当前并行池。批处理作业不能处理如果平行池已经使用所有可用的工人。

删除(gcp);

发送函数hpccBenchmark作为一个集群通过使用批处理作业批处理。这个函数调用测试HPC的挑战并返回一个表中的结果。当你使用批处理,一个工人需要MATLAB客户机的角色和执行功能。此外,指定这些名称-值对参数:

  • “池”:创建一个平行池和工人的工作。在这种情况下,指定32工人。hpccBenchmark这些工人运行HPC的挑战。

  • “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(结果)
基准DataSizeGB时间性能__________ ________ PerformanceUnits * * * ___________ ___________ HPL“13.913 113.34 474.69“GFlops”“DGEMM”4.6376 41.915 740.99“GFlops”“流”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每台机器的物理核心。注意,在这个基准测试中,数据的大小随工人的数量。

另请参阅

|

相关的话题