本发明涉及分布式矩阵计算,特别涉及一种面向分布式异构计算节点的矩阵相乘方法、装置及系统。
背景技术:
1、矩阵计算本质上广泛应用于数据库、机器学习等各个领域中。随着数据规模的爆炸性增长,快速且可扩展的分布式矩阵计算系统,尤其是分布式矩阵乘法变得比以往任何时候都更加重要。由于传统的并行技术依赖于分布式文件系统,当需要处理的数据规模过于庞大时,连接分布式文件系统网络的带宽,便成了制约系统性能的瓶颈。
2、由谷歌(google)公司推出的mapreduce(一种编程模型,用于大规模数据集的并行运算)框架现已发展成为大规模分布式数据处理的标准高级编程模型,在此基础上的hadoop(一种分布式数据和计算的框架)提供了一种大容量、可拓展、高可靠的分布式存储系统(hadoop distributed file system,简写为:hdfs),有效的利用数据的本地特性,很好的解决了网络带宽的瓶颈问题。但是,hadoop对于一些迭代式、交互式和复杂的数据处理任务,其效率相对较低,每次任务都需要写入和读取磁盘,导致高延迟。由“算法·机器·人类”(amp)实验室开发的分布式计算框架spark在内存中缓存数据,以便内存对象可以在mapreduce操作之间直接传递,通过使用内存缓存,可以在内存中有效地执行分布式数据的低延迟计算和共享数据的迭代计算,而无需访问磁盘。
3、对于大规模矩阵,通常按照以下三个步骤执行分布式矩阵乘法:(1)在任务之间重新划分输入矩阵;(2)在每个任务内执行局部矩阵乘法;(3)通过合并局部矩阵乘法的中间结果来聚合它们。对于矩阵重新划分和聚合步骤,现已提出或使用了以下三种方法:广播矩阵乘法(bmm),该方法向所有任务广播较小的输入矩阵;基于叉积的矩阵乘法(cpmm),该方法在两个输入矩阵之间执行多个外积,并聚合外积的结果;基于复制的矩阵乘法 (rmm),该方法将输入矩阵重新分区为更小的单元(称为块)。但是上述方法由于每个任务的高内存使用而可能导致内存不足,或者由于高通信成本而导致性能下降,此外,它们也没有利用多核加速器,例如图形处理器(graphics processing unit,简写为:gpu)的硬件加速。
4、有鉴于此,如何克服现有技术所存在的缺陷,解决现有的技术所存在的问题,是本技术领域待解决的难题。
技术实现思路
1、本发明实施例提供了一种面向分布式异构计算节点的矩阵相乘方法、装置及系统,能够解决传统方案中由于每个任务的高内存使用而可能导致内存不足,由于高通信成本而导致性能下降,没有利用多核加速器的硬件加速的技术问题。
2、本发明实施例的目的是通过如下技术方案实现的:
3、为解决上述技术问题,第一方面,本发明实施例中提供了一种面向分布式异构计算节点的矩阵相乘方法,包括:
4、将spark系统部署至异构分布式计算机集群,其中,每个计算机节点具有不同的cpu或者gpu配置;利用spark作为分布式计算执行引擎,从分布式文件系统中读取矩阵数据;
5、量化集群中的每个工作节点上的cpu或gpu计算性能;根据性能对矩阵数据进行分块,以得到矩阵块;对矩阵块执行无损浮点数压缩,并传输至各工作节点;
6、每个工作节点按照硬件的计算性能比将矩阵块分配给cpu或gpu任务,在每个任务中,对输入矩阵块相乘以生成输出矩阵块的中间块;
7、将输出矩阵块的中间块经过聚合,生成最终输出矩阵。
8、在一些实施例中,所述量化集群中的每个工作节点上的cpu或gpu计算性能具体包括:
9、根据输入矩阵a,令α和1α分别为分配给gpu和cpu的工作负载比例,其中0≤α≤1;
10、使用tg(α˙a)和tc((1α)˙a)分别表示gpu和cpu线程更新α˙a和(1α)˙a中的元素所花费的时间,并记为tg(α)和tc(1α);
11、使用fg(α)和 fc(1-α) 表示gpu和cpu线程的成本函数和的估计,记为fg(α),fc(α);
12、使用集群管理器在集群中的n个工作节点上运行矩阵乘法测试程序,获取第ni个工作节点的cpu成本模型和gpu成本模型。
13、在一些实施例中,所述根据性能对矩阵数据进行分块具体包括:
14、每个工作节点运行矩阵乘法测试程序的总时间为:
15、;
16、其中,代表cpu线程的数量,代表gpu的数量;i代表第i个工作节点;
17、根据计算的成本函数,当资源之间的负载保持平衡时,总运行时间最小化,求解下列最优化问题得到,并求得:
18、;
19、根据工作节点的不同计算性能设置权重:
20、;
21、根据各节点权重占比,调用长方体分块算法对矩阵a和b进行分块。
22、在一些实施例中,所述对矩阵块执行无损浮点数压缩,并传输至各工作节点包括:
23、使用压缩稀疏行表示形式来表示矩阵块;
24、对压缩稀疏行表示形式所产生的数组v中的矩阵非零元素执行无损浮点数压缩算法;
25、压缩矩阵块的压缩稀疏行表示形式;
26、将压缩后的各矩阵块传输至对应的工作节点,再执行解压缩算法。
27、在一些实施例中,所述对输入矩阵块相乘以生成输出矩阵块的中间块具体包括:
28、根据gpu工作负载比例,将由输入矩阵的矩阵块构成的矩阵长方体沿着k轴划分为两个子长方体和,分别用于cpu和gpu执行矩阵乘法,其中:
29、使用cpu执行矩阵乘法,直接在内存中运行;
30、使用gpu执行矩阵乘法,具体的:将从内存复制到gpu内存;在gpu内存执行矩阵乘法;将计算结果从gpu内存复制回内存;
31、将使用cpu执行矩阵乘法和使用gpu执行矩阵乘法的计算结果聚合生成输出矩阵块的中间块。
32、在一些实施例中,还包括:使用gpu监视器定期检查gpu的利用率,并由自适应调度器读取其结果;当gpu利用率低于预设值时,通过自适应调度器增加gpu容器的数量,以充分利用gpu。
33、在一些实施例中,所述将输出矩阵块的中间块经过聚合,生成最终输出矩阵包括:
34、将来自同一组工作节点的输出矩阵块的中间块执行聚合操作,以获得最终输出矩阵的最终输出块。
35、第二方面,本发明实施例提供了一种面向分布式异构计算节点的矩阵相乘系统,用于实现如第一方面所述的面向分布式异构计算节点的矩阵相乘方法,包括矩阵数据读取模块、矩阵块获取模块、中间块获取模块以及最终输出矩阵获取模块,其中:
36、所述矩阵数据读取模块用于从分布式文件系统中读取矩阵数据;
37、所述矩阵块获取模块用于量化集群中的每个工作节点上的cpu或gpu计算性能;根据性能对矩阵数据进行分块,以得到矩阵块;对矩阵块执行无损浮点数压缩,并传输至各工作节点;
38、所述中间块获取模块用于在每个工作节点按照硬件的计算性能比将矩阵块分配给cpu或gpu任务,在每个任务中,对输入矩阵块相乘以生成输出矩阵块的中间块;
39、所述最终输出矩阵获取模块用于将输出矩阵块的中间块经过聚合,生成最终输出矩阵。
40、第三方面,本发明实施例提供了一种面向分布式异构计算节点的矩阵相乘装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成如第一方面所述的面向分布式异构计算节点的矩阵相乘方法。
41、第四方面,本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成如第一方面所述的面向分布式异构计算节点的矩阵相乘方法。
42、与现有技术相比,本发明的有益效果是:区别于现有技术的情况,本发明实施例中提供了一种面向分布式异构计算节点的矩阵相乘方法、装置及系统,该方法可以合理分配矩阵计算任务和充分利用不同硬件资源,通过无损浮点数矩阵压缩降低数据通信成本,能够提高大规模分布式矩阵乘法的计算效率,解决传统方案中由于每个任务的高内存使用而可能导致内存不足,由于高通信成本而导致性能下降的技术问题。另外,该方法通过cpu和gpu相结合,不仅可以加快任务执行速度,还可以有效利用异构系统中可用的计算资源,解决传统方案中没有利用多核加速器的硬件加速的技术问题。
1.一种面向分布式异构计算节点的矩阵相乘方法,其特征在于,包括:
2.根据权利要求1所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,所述量化集群中的每个工作节点上的cpu或gpu计算性能具体包括:
3.根据权利要求2所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,所述根据性能对矩阵数据进行分块具体包括:
4.根据权利要求1所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,所述对矩阵块执行无损浮点数压缩,并传输至各工作节点包括:
5.根据权利要求3所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,所述对输入矩阵块相乘以生成输出矩阵块的中间块具体包括:
6.根据权利要求1所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,还包括:使用gpu监视器定期检查gpu的利用率,并由自适应调度器读取其结果;当gpu利用率低于预设值时,通过自适应调度器增加gpu容器的数量,以充分利用gpu。
7.根据权利要求1所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,所述将输出矩阵块的中间块经过聚合,生成最终输出矩阵包括:
8.一种面向分布式异构计算节点的矩阵相乘系统,用于实现如权利要求1-7中任一项所述的面向分布式异构计算节点的矩阵相乘方法,其特征在于,包括矩阵数据读取模块、矩阵块获取模块、中间块获取模块以及最终输出矩阵获取模块,其中:
9.一种面向分布式异构计算节点的矩阵相乘装置,其特征在于:
10.一种非易失性计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成如权利要求1-7任一项所述的面向分布式异构计算节点的矩阵相乘方法。
