预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)国家知识产权局(12)发明专利申请(10)申请公布号CN115827251A(43)申请公布日2023.03.21(21)申请号202211725671.5(22)申请日2022.12.30(71)申请人华南理工大学地址510640广东省广州市天河区五山路381号(72)发明人陆璐周彬彬冼允廷(74)专利代理机构广州市华学知识产权代理有限公司44245专利代理师杨望仙(51)Int.Cl.G06F9/50(2006.01)G06F17/16(2006.01)G06F9/54(2006.01)G06F12/0877(2016.01)权利要求书2页说明书6页附图1页(54)发明名称基于异构平台的高性能Linpack基准测试程序优化方法和设备(57)摘要本发明面向高性能计算领域,为基于异构平台的高性能Linpack基准测试程序优化方法和设备。该方法包括:根据配置文件初始化HPL的运行参数,使用随机数生成算法生成设定规模的矩阵;以OpenMP多线程并行化的方式在CPU上执行面板分解过程;使用基于GPU‑Aware的Ring广播算法将分解完成的面板数据以及矩阵行交换信息广播至位于同一行的其余列进程;调用自定义内核对存放在显存中的矩阵完成行交换操作;GPU使用接收到的面板矩阵数据更新剩余的矩阵数据,更新上三角矩阵和尾随矩阵;调用定时函数计算矩阵完成分解的总时间,同时对结果进行验算。本发明可以充分发挥了CPU端的多核性能,保证CPU以及GPU在程序运行过程中都处于满载的状态,减少CPU和GPU的空闲时间,加快计算效率。CN115827251ACN115827251A权利要求书1/2页1.基于异构平台的高性能Linpack基准测试程序优化方法,其特征在于,包括以下步骤:S1、根据配置文件初始化HPL的运行参数,使用随机数生成算法生成设定规模的矩阵,矩阵所占用的内存空间完全覆盖参与计算的GPU显存大小;S2、以OpenMP多线程并行化的方式在CPU上执行面板分解过程,使CPU所有核心的使用率达到100%;S3、使用基于GPU‑Aware的Ring广播算法将分解完成的面板数据以及矩阵行交换信息广播至位于同一行的其余列进程;S4、GPU接收到矩阵的行交换信息后,根据GPU的合并访存原理以及高速缓存的特点,调用自定义内核对存放在显存中的矩阵完成行交换操作;S5、在GPU里完成行交换操作后,GPU使用接收到的面板矩阵数据更新剩余的矩阵数据,调用DTRSM()函数更新上三角矩阵和优化过的GEMM函数更新尾随矩阵;S6、递归执行步骤S2至S5,直至整个矩阵分解完成,调用定时函数计算矩阵完成分解的总时间,同时对结果进行验算,得到异构平台的浮点运算性能。2.根据权利要求1所述基于异构平台的高性能Linpack基准测试程序优化方法,其特征在于,所述步骤S1包括:在运行HPL前将HPL的运行参数写入配置文件中,所述运行参数包括生成矩阵的大小N、分块后的矩阵大小NB、总的行进程数量P、总的列进程数量Q、广播算法;根据矩阵的大小N分配N*(N+1)大小的矩阵分布到各个节点中的GPU显存中,再调用GPU的随机数生成算法对矩阵的数据进行初始化。3.根据权利要求1所述基于异构平台的高性能Linpack基准测试程序优化方法,其特征在于,所述步骤S2包括:调用OpenMP多线程库将该面板的分解并行化计算,令OpenMP的线程数等于core/P0,其中core等于单个节点中CPU的核心数,P0为当前节点的行进程数量。4.根据权利要求1所述基于异构平台的高性能Linpack基准测试程序优化方法,其特征在于,所述所述步骤S3包括:在一端的GPU使用MPI_Send()发送数据,另一端的GPU使用MPI_Recv()和MPI_Iprobe()接收数据,MPI_Send()以及MPI_Recv()中的数据缓冲区均使用GPU中的显存地址。5.根据权利要求1所述基于异构平台的高性能Linpack基准测试程序优化方法,其特征在于,所述步骤S4具体包括:当GPU收到广播的行交换信息,将行数据存入可编程高速缓存LDS中,当矩阵的一行数据全部读入LDS后,对所有GPU线程进行同步,将相邻存储空间的数据写入GPU的显存里,完成行交换操作。6.根据权利要求1所述基于异构平台的高性能Linpack基准测试程序优化方法,其特征在于,所述步骤S5具体包括:在HPL中使用深度为1的lookahead算法,在CPU上对矩阵的一个面板panel0进行预分解,对面板之外的矩阵数据进行二次切分,切分成面板panel1和矩阵M1;面板panel1根据已经分解完成的panel0进行上三角矩阵以及尾随矩阵的更新;通过GPU编程模型中的流(Stream)对矩阵M1的更新以及面板panel1在CPU上的分解并行化计算。7