CN109726357A - 矩阵乘法计算方法和计算设备 - Google Patents
矩阵乘法计算方法和计算设备 Download PDFInfo
- Publication number
- CN109726357A CN109726357A CN201711030226.6A CN201711030226A CN109726357A CN 109726357 A CN109726357 A CN 109726357A CN 201711030226 A CN201711030226 A CN 201711030226A CN 109726357 A CN109726357 A CN 109726357A
- Authority
- CN
- China
- Prior art keywords
- matrix
- parameter
- implementation
- column
- multiplication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本申请公开了一种矩阵乘法计算方法和计算装置,该方法包括:提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。本发明公开的方案可以让程序在运行过程中总是选取最优kernel。在相乘矩阵的行参数和列参数相对比较固定的情况下,能够自动选择最优实现方案,减少执行主体例如GPU的工作负担,保证执行主体的处理性能,提高执行主体的处理速度。
Description
技术领域
本申请涉及计算机领域,特别涉及一种矩阵乘法计算方法和计算设备。
背景技术
图形处理器(GPU)作为单指令多数据流(SIMD)处理设备,在计算矩阵乘法方面,有着天然的优势。近些年随着GPU性能的大幅提升,以及通用计算图形处理器(GPGPU)技术的不断发展,越来越多的应用开始采用在GPU上进行矩阵乘法计算。深度学习应用的主要计算时间都消耗在矩阵乘法相关的操作上,所以,若能够提高矩阵乘法的计算性能,可以在大范围内提高多种应用的性能,对生产和研究效率都产生显著影响。
在使用GPU进行矩阵乘法时,通常会选择多个线程块,每个线程块负责计算结果矩阵的一部分;具体来说,对于1024x1024和1024x1024大小的两个矩阵相乘,其结果矩阵大小也为1024x1024;在计算中,可以用4x4个线程块来计算1024x1024大小的结果矩阵,因此每个线程块负责计算该结果矩阵中256x256大小;也可以用8x8的线程块,每个线程块负责计算结果矩阵中128x128大小。负责计算256x256大小矩阵,128x128大小矩阵的部分称之为kernel(即矩阵计算的实现方案);选择用8x8大小线程块还是4x4大小的线程块的方式,就是本专利需要解决的问题。在实际调用过程中,通常根据不同矩阵大小,选择特定kernel进行计算。已有的kernel选择方法往往是根据矩阵大小进行简单地判断选取对应kernel。而这种方法在实际计算中,因为每个矩阵的行参数和列参数的可能情况过多,通常难以选择最优kernel,造成GPU计算时间延长,整个计算设备性能下降。
发明内容
鉴于现有技术存在的问题,本发明的目的是提出一种矩阵乘法计算方法,以解决现有技术存在的不能正确选择kernel导致GPU计算时间延长,整个程序性能下降的问题。
为了解决上述问题,本申请一实施例公开一种矩阵乘法计算方法,包括:
提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
在本发明矩阵乘法计算方法的一实施方式中,在根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案的步骤之前,所述方法还包括:
为所述矩阵乘法实现方案分配识别ID;
将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表。
在本发明矩阵乘法计算方法的一实施方式中,将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表的步骤包括:
将所述矩阵乘法实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
将所述矩阵乘法实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
在本发明矩阵乘法计算方法的一实施方式中,所述根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案的步骤包括:
在所述查找表中查找是否存在与所述第一矩阵的行参数、列参数和第二矩阵的列参数相同的参数的矩阵乘法实现方案。
在本发明矩阵乘法计算方法的一实施方式中,所述方法还包括:
当未查找到对应的矩阵乘法实现方案时,对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案。
在本发明矩阵乘法计算方法的一实施方式中,所述对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案的步骤包括:
生成第一测试矩阵和第二测试矩阵,所述第一测试矩阵和所述第二测试矩阵具有与所述第一目标矩阵和所述第二目标矩阵相同的行列参数;
分别利用多个可选实现方案计算所述第一测试矩阵和第二测试矩阵的乘积,获得每一个可选实现方案的计算时间;
根据计算时间,从所述可选实现方案中选择优选实现方案。
在本发明矩阵乘法计算方法的一实施方式中,在根据计算时间,从所述可选实现方案中选择优选实现方案的步骤之后,所述方法还包括:
将所述优选实现方案上传至GPU;
将该优选实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
将该优选实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
为实现上述目的,本发明一实施例还提出一种矩阵乘法计算装置,包括:
提供模块,用于提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
参数确定模块,用于确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
方案确定模块,用于根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
计算模块,用于利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
在本发明矩阵乘法计算装置的一实施方式中,所述装置还包括:
分配模块,用于为所述矩阵乘法实现方案分配识别ID;
存储模块,用于将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表。
在本发明矩阵乘法计算装置的一实施方式中,所述存储模块还包括:
键值生成子模块,用于将所述矩阵乘法实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
存储子模块,用于将所述矩阵乘法实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
在本发明矩阵乘法计算装置的一实施方式中,所述方案确定模块用于:
在所述查找表中查找是否存在与所述第一矩阵的行参数、列参数和第二矩阵的列参数相同的参数的矩阵乘法实现方案。
在本发明矩阵乘法计算装置的一实施方式中,所述装置还包括:
优选方案获取模块,用于当未查找到对应的矩阵乘法实现方案时,对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案。
在本发明矩阵乘法计算装置的一实施方式中,所述优选方案获取模块包括:
测试矩阵产生子模块,用于生成第一测试矩阵和第二测试矩阵,所述第一测试矩阵和所述第二测试矩阵具有与所述第一目标矩阵和所述第二目标矩阵相同的行列参数;
计算时间获取子模块,用于分别利用多个可选实现方案计算所述第一测试矩阵和第二测试矩阵的乘积,获得每一个可选实现方案的计算时间;
选择子模块,用于根据计算时间,从所述可选实现方案中选择优选实现方案。
在本发明矩阵乘法计算装置的一实施方式中,所述装置还包括:
上传模块,用于将所述优选实现方案上传至GPU;
键值生成模块,用于所述将该优选实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
键值对存储模块,用于将该优选实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
本申请实施例还提出一种电子装置,包括:
存储器,其中存储有计算机可读程序代码;以及
处理器,其当所述处理器执行所述存储的计算机可读程序代码时,所述电子装置执行如下操作:
提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
由上述可知,本申请实施例提出的矩阵乘法计算方法和矩阵乘法计算装置至少具有以下优点:
本发明实施例提出一种矩阵乘法计算方法和矩阵乘法计算装置,通过预置矩阵乘法的实现方案,在相乘矩阵的行参数和列参数相对固定的情况下,可以通过行参数和列参数自动选择最佳的实现方案,减少计算设备的工作负担,保证执行主体例如GPU的处理性能,提高执行主体的处理速度。本发明尤其适用于多次进行固定矩阵参数的乘法计算的场合,例如在深度学习预测和训练场景中,能够显著提高深度学习训练和预测的性能,降低计算设备的计算工作量,提高计算设备的处理速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请第一实施例的矩阵乘法计算方法的流程图。
图2是本申请第二实施例的矩阵乘法计算方法的流程图。
图3是图2中步骤S206所包含的子步骤的流程图。
图4是本申请第三实施例的矩阵乘法计算装置的方框图。
图5是本申请第四实施例的矩阵乘法计算装置的方框图。
图6是本申请一实施例的方法步骤的执行示意图。
图7是本申请第四实施例的优选方案获取模块的方框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本申请的核心思想之一在于,提出一种矩阵乘法计算方法和矩阵乘法计算装置,利用相乘矩阵的行参数和列参数查找预存的最佳的实现方案,避免了现有技术中需要重复寻找实现方案的问题。
参照图6,其为本申请一实施例的方法步骤的执行示意图。如图6所示,本发明的目标是查找预存的实现特定矩阵乘法的最佳实现方案。在本发明实施例中,首先可以输入相乘矩阵中的第一矩阵的行参数m、列参数n和第二矩阵的列参数k,在所存储的查找表中查找这些参数对应的实现方案的ID,该实现方案是经过历史计算验证过的计算该参数矩阵相乘的最佳实现方案。当查找表中存在上述实现方案时,可以利用该实现方案的ID找到对应的实现方案(Kernel),在执行主体例中利用这一实现方案计算对应参数的矩阵之间的乘法。在这一方案中,查找表可以存储在内存、硬盘等存储区,或者不设置查找表而直接通过参数查找实现方案。
第一实施例
本发明第一实施例提出一种矩阵乘法计算方法,例如可以应用在GPU中。图1所示为本发明第一实施例的矩阵乘法计算方法的步骤流程图。如图1所示,本发明实施例的矩阵乘法计算方法包括如下步骤:
S101,提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
本发明实施例提出的矩阵乘法计算方法,可以在包含GPU和CPU的计算设备上实现,例如服务器或是个人电脑、移动终端等。
在这一步骤中,当需要在GPU中计算两个相乘矩阵的乘积时,执行主体,例如上述的服务器,其GPU中可以存储有多个矩阵乘法实现方案。GPU中预存了多种实现方案(kernel),所述矩阵乘法实现方案分别是用于计算特定行列参数的矩阵的最优方案。这一最优方案可以是经过多次验证和比较后确定的计算时间最短的方案等。
这些实现方案分别对应有第一矩阵的行参数、列参数和第二矩阵的列参数。例如,一个实现方案(Kernel)对应的第一矩阵的行参数、列参数和第二矩阵的列参数分别为(m,n,k),则可以把这三个参数和对应的实现方案生成映射并进行存储,例如可以存储在内存空间中。这些实现方案可以预先存储在对应的存储空间内,也可以是从其他的存储空间——例如云端即时调用的,在此并不限制。
S102,确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
在这一步骤中,可以获得可两个目标相乘矩阵的行列数。由于能够相乘的两个矩阵必然满足第一个目标矩阵(例如左矩阵)的列数和第二个目标矩阵(例如右矩阵)的行数相同,因此只需要获得第一目标矩阵的行参数、列参数和第二目标矩阵的列参数。
这里的目标矩阵的行参数和列参数可以是使用者事先输入的,例如使用者可以在提供的交互界面中输入要计算的目标矩阵的参数,也可以是根据输入的矩阵自动获得的参数,在此并不限制。
S103,根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
在这一步骤中,可以根据第一目标矩阵的行参数、列参数和第二目标矩阵的列参数根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案。例如,第一目标矩阵的行参数为m、列参数为n,第二目标矩阵的列参数为k,可以根据m、n、k三个参数查找对应的实现方案(kernel),这一实现方案通常是经过性能评估的实现该参数的矩阵相乘的最优实现方案。该实现方案例如为一段计算代码,利用该计算代码,执行主体可以以最优的方式对所述矩阵相乘进行计算。
例如,两个相乘矩阵的第一矩阵为m×n的矩阵,第二矩阵为n×k的矩阵,上述两个相乘矩阵的参数用(m,n,k)表示。GPU中预存了多种实现不同矩阵相乘的实现方案,即多个kernel。例如,kernel-1是用于实现(m1,n1,k1)参数的相乘矩阵的优选方案;kernel-2是用于实现(m2,n2,k2)参数的相乘矩阵的优选方案;kernel-3是用于实现(m,n,k)参数的相乘矩阵的优选方案;在步骤S102中,根据相乘矩阵的参数(m,n,k),可以选择kernel-3作为该相乘矩阵的实现方案。
举例来说,当相乘矩阵为1024×1024的两个矩阵(即m、n、k均为1024),kernel-1例如为计算两个64×64矩阵乘积的方案,kernel-2例如为计算两个128×128矩阵乘积的方案;kernel-3例如为计算两个256×256矩阵乘积的方案。
在使用GPU或者CPU进行矩阵乘法时,可以选择多个线程块,每个线程块负责计算结果矩阵的一部分;具体来说,对于1024x1024和1024x1024大小的两个矩阵相乘,其结果矩阵大小也为1024x1024;在计算中,可以用4x4个线程块来计算1024x1024大小的结果矩阵,因此每个线程块负责计算该结果矩阵中256x256大小;也可以用8x8的线程块,每个线程块负责计算结果矩阵中128x128大小。即,kernel为负责计算256x256大小矩阵,128x128大小矩阵的部分。
在计算矩阵乘法时,会将一个大矩阵(例如上述1024×1024的矩阵)划分成多个小矩阵(例如上述的64×64的矩阵),而GPU中的上述实现方案即是用来计算划分后的这些小矩阵的,GPU上每个线程块负责计算一个小矩阵;输入的相乘矩阵可以很大,也可以很小,但是最终划分成的小矩阵一般只有有限的可能。如果在历史的处理过程中获知:将上述1024×1024的两个矩阵划分为多个256×256的矩阵,并利用kernel-3即计算两个256×256矩阵乘积的方案来计算其乘积,能够更快地获得该1024×1024的两个矩阵的乘积,则可以将kernel-3与其对应的第一矩阵的行参数、列参数和第二矩阵的列参数(1024,1024,1024)在查找表中进行关联。在本次计算1024×1024的两个目标矩阵时,直接通过参数(1024,1024,1024)查找到对应的kernel-3。
S104,利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
在这一步骤中,如果预存的实现方案中存在参数与上述三个参数m、n、k相符合的矩阵乘法的实现方案,则认为存在对应于当前需要进行乘法计算的实现方案,因此,便可以利用该实现方案,计算出第一目标矩阵和第二目标矩阵的乘积。计算的步骤可以在GPU中执行,通过调用GPU中对应的实现方案,即可以最优的方式执行该乘法运算。
通过上述可知,在本发明第一实施例中,提出一种矩阵乘法计算方法,通过在设置矩阵乘法的实现方案,在相乘矩阵的行参数和列参数相对固定的情况下,可以通过行参数和列参数自动选择最佳的实现方案,减少计算设备的工作负担,保证执行主体例如GPU的处理性能,提高执行主体的处理速度。本发明尤其适用于多次进行固定矩阵参数的乘法计算的场合,例如在深度学习预测和训练场景中,能够显著提高深度学习训练和预测的性能,降低计算设备的计算工作量,提高计算设备的处理速。
第二实施例
本发明第二实施例提出一种矩阵乘法计算方法。图2所示为本发明第二实施例的矩阵乘法计算方法的步骤流程图。如图2所示,本发明实施例的矩阵乘法计算方法包括如下步骤:
S202,提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
S203,确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
S204,根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
S205,利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
上述步骤S202至S205与上一实施例的步骤S101至S104相同或相似,在此不再赘述。相关内容可以参考上一实施例的步骤S101至S104。本实施例着重说明与上一实施例的不同之处。
在这一实施例中,可选地,内存中或者硬盘中可以存储有查找表,在步骤S203中接收到第一目标矩阵的行参数m、列参数n和第二目标矩阵的列参数k之后,可以利用这三个参数,在查找表中查找对应的方案。
查找表中除了存储上述参数之外,还可以存储有每一个实现方案对应的编号,例如该实现方案的标识ID。因此,在步骤S204,即根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案的步骤之前,该方法还可以包括如下步骤:
S200,为所述矩阵乘法实现方案分配识别ID;
在这一步骤中,可以为所述矩阵乘法实现方案赋予一个编号,例如该实现方案唯一对应的识别ID。
S201,将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入所述查找表。
在这一步骤中,可以将每一个矩阵乘法实现方案对应的识别ID写入内存或者硬盘中的查找表中,并且同时将该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数也存入所述查找表中。
这一步骤S201,即将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表的步骤可以具体包括如下子步骤:
S2011,将所述矩阵乘法实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
S2012,将所述矩阵乘法实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
可选地,在完成计算之后,该方法还可以包括如下步骤:
将所述查找表回收。
在这一步骤中,当查找表存储在内存中时,在计算完成之后可以回收查找表,将该查找表从内存中清除。由于查找表回收能够释放内存,但是并未在磁盘中清除,因此下次使用时只需要从磁盘加载到内存即可。如此便可以释放内存,维持计算设备的运行速度;当查找表存储在硬盘中时,在计算完成之后回收查找表可以释放硬盘的空间,提高存储能力。
可选地,在本实施例中,还可以包括未查找到对应的实现方案后的处理步骤,具体可以包括:
S206:当未查找到对应的矩阵乘法实现方案时,对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案。
图3是图2中步骤S206所包含的子步骤的流程图。如图3所示,可选地步骤S206可以包括如下子步骤:
S2061,生成第一测试矩阵和第二测试矩阵,所述第一测试矩阵和所述第二测试矩阵具有与所述第一目标矩阵和所述第二目标矩阵相同的行列参数;
S2062,分别利用多个可选实现方案计算所述第一测试矩阵和第二测试矩阵的乘积,获得每一个可选实现方案的计算时间;
S2063,根据计算时间,从所述可选实现方案中选择优选实现方案。
在上述步骤中,当未查找到对应的实现方案时,需要评估多个可选的实现方案,从而获取优选的实现方案。具体来说,作为一种实现方案,可以首先产生两个和输入矩阵大小相同但是内容随机的矩阵,利用该矩阵验证可选的实现方案的效果。例如,两个相乘矩阵为m×n和n×k的矩阵时,可以根据输入的第一矩阵行参数m,列参数n和第二矩阵的列参数k生成两个形状为m×n和n×k的矩阵,矩阵的内容随机。之后,获取这两个矩阵相乘可能划分成的多个不同小矩阵的情况,由GPU上各线程分别负责不同的小矩阵的计算。由于最终产生的可能划分成小矩阵的情形并不多,即可选的实现方案种类并不多,因此通过遍历所有实现方案的方法,计算其每种方案使用的时间,选择时间最短的实现方案,即可作为最佳的实现方案。
可选地,在步骤S2063,即根据计算时间,从所述可选实现方案中选择优选实现方案的步骤之后,所述方法还包括:
S2064,将所述优选实现方案上传至GPU;
S2065,将该优选实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
S2066,将该优选实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
在上述步骤中,可以为获得的优选实现方案赋予一个编号,例如该优选实现方案唯一对应的识别ID。之后可以将获得的优选实现方案上传至GPU,在将该优选实现方案上传至GPU之后,通过这些识别ID可以获得对应的实现方案,供后续调用。之后可以将每一个上传至GPU的优选实现方案对应的识别ID写入内存或者硬盘中的查找表中,并且同时将该优选实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数也存入所述查找表中。
通过上述可知,在本发明第二实施例中,提出一种矩阵乘法计算方法,通过设置矩阵乘法的实现方案,在相乘矩阵的行参数和列参数相对固定的情况下,可以通过行参数和列参数自动选择最佳的实现方案,减少计算设备的工作负担,保证执行主体的处理性能,提高执行主体的处理速度。本发明尤其适用于多次进行固定矩阵参数的乘法计算的场合,例如在深度学习预测和训练场景中,能够显著提高深度学习训练和预测的性能,降低计算设备的计算工作量,提高计算设备的处理速。
此外,在本实施例的矩阵乘法计算方法中,当执行主体为GPU时,可以预先在GPU中存储多种矩阵乘法的实现方案,并预先设置查找表,以方便快捷地查找最优的矩阵乘法实现方案。当在查找表中不存在对应的实现方案时,可以在所述矩阵规模下对所有可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案,并将该优选实现方案上传至GPU,同时将所述优选实现方案对应的识别的ID和所述第一矩阵的行参数、列参数和第二矩阵的列参数存储至查找表中。如此一来,可以通过学习和优化,使GPU中预存的实现方案得以随着处理次数的增加而增加,使得每次计算中能够有更大的可能获得最优的处理方法。此外,在计算结束之后可以回收查找表,避免占用内存或者硬盘的存储空间。
第三实施例
本发明第三实施例提出一种矩阵乘法计算装置,例如可以应用在GPU中,图4所示为本发明第三实施例的矩阵乘法计算装置的方框图。如图4所示,该GPU的矩阵乘法计算装置包括:
提供模块301,用于提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
在本实施例中,当需要在GPU中计算两个相乘矩阵的乘积时,提供模块301可以提供多个矩阵乘法实现方案。例如,电子装置的GPU中预存了多种实现方案(kernel),所述矩阵乘法实现方案分别是用于计算特定行列参数的矩阵的最优方案。这一最优方案可以是经过多次验证和比较后确定的计算时间最短的方案等。提供模块301可以从GPU中获取对应的实现方案,提供给后续模块使用。
这些实现方案分别对应有第一矩阵的行参数、列参数和第二矩阵的列参数。例如,一个实现方案(Kernel)对应的第一矩阵的行参数、列参数和第二矩阵的列参数分别为(m,n,k),则可以把这三个参数和对应的实现方案生成映射并进行存储,例如可以存储在内存空间中。这些实现方案可以预先存储在对应的存储空间内,也可以是从其他的存储空间——例如云端即时调用的,在此并不限制。
参数确定模块302,用于确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
参数确定模块302可以获得可两个目标相乘矩阵的行列数。由于能够相乘的两个矩阵必然满足第一个目标矩阵(例如左矩阵)的列数和第二个目标矩阵(例如右矩阵)的行数相同,因此只需要获得第一目标矩阵的行参数、列参数和第二目标矩阵的列参数。
这里的目标矩阵的行参数和列参数可以是使用者事先输入的,例如使用者可以在提供的交互界面中输入要计算的目标矩阵的参数,也可以是根据输入的矩阵自动获得的参数,在此并不限制。
方案确定模块303,用于根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
在本实施例中,方案确定模块303可以根据第一矩阵的行参数、列参数和第二矩阵的列参数根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案。例如,第一矩阵的行参数为m、列参数为n,第二矩阵的列参数为k,可以根据m、n、k三个参数查找对应的实现方案,这一方案例如是经过性能评估的实现该矩阵相乘的最优方案。该实现方案例如为一段计算代码,利用该计算代码,执行主体可以以最优的方式对所述矩阵相乘进行计算。
计算模块304,用于利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
在本实施例中,如果预存的实现方案中存在参数与上述三个参数m、n、k相符合的矩阵乘法的实现方案,则认为存在对应于当前需要进行乘法计算的实现方案,因此,计算模块304便可以利用该实现方案,计算出第一目标矩阵和第二目标矩阵的乘积。计算可以在GPU中执行,通过调用GPU中对应的实现方案,即可以最优的方式执行该乘法运算。
通过上述可知,在本发明第三实施例中,提出一种矩阵乘法计算装置,通过设置矩阵乘法的实现方案,在相乘矩阵的行参数和列参数相对固定的情况下,可以通过行参数和列参数自动选择最佳的实现方案,减少计算设备的工作负担,保证GPU的处理性能,提高GPU的处理速度。本发明尤其适用于多次进行固定矩阵参数的乘法计算的场合,例如在深度学习预测和训练场景中,能够显著提高深度学习训练和预测的性能,降低计算设备的计算工作量,提高计算设备的处理速度。
第四实施例
本发明第四实施例提出一种矩阵乘法计算装置,图5所示为本发明第四实施例的GPU的矩阵乘法计算装置的方框图。如图5所示,该矩阵乘法计算装置包括:
提供模块402,用于提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
在这一步骤中,当需要在GPU中计算两个相乘矩阵的乘积时,提供模块402可以提供多个矩阵乘法实现方案。GPU中预存了多种实现方案(kernel),所述矩阵乘法实现方案分别是用于计算特定行列参数的矩阵的最优方案。这一最优方案可以是经过多次验证和比较后确定的计算时间最短的方案等。
这些实现方案分别对应有第一矩阵的行参数、列参数和第二矩阵的列参数。例如,一个实现方案(Kernel)对应的第一矩阵的行参数、列参数和第二矩阵的列参数分别为(m,n,k),则可以把这三个参数和对应的实现方案生成映射并进行存储,例如可以存储在内存空间中。这些实现方案可以预先存储在对应的存储空间内,也可以是从其他的存储空间——例如云端即时调用的,在此并不限制。
参数确定模块403,用于确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
在本实施例中,参数确定模块403可以获得可两个目标相乘矩阵的行列数。由于能够相乘的两个矩阵必然满足第一个目标矩阵(例如左矩阵)的列数和第二个目标矩阵(例如右矩阵)的行数相同,因此只需要获得第一目标矩阵的行参数、列参数和第二目标矩阵的列参数。
这里的目标矩阵的行参数和列参数可以是使用者事先输入的,例如使用者可以在提供的交互界面中输入要计算的目标矩阵的参数,也可以是根据输入的矩阵自动获得的参数,在此并不限制。
方案确定模块404,用于根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
在本实施例中,方案确定模块404可以根据第一矩阵的行参数、列参数和第二矩阵的列参数根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案。例如,第一矩阵的行参数为m、列参数为n,第二矩阵的列参数为k,可以根据m、n、k三个参数查找对应的实现方案,这一方案例如可以是经过性能评估的实现该矩阵相乘的最优方案。
计算模块405,用于利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
在本实施例中,如果预存的实现方案中存在参数与上述三个参数m、n、k相符合的矩阵乘法的实现方案,则认为存在对应于当前需要进行乘法计算的实现方案,因此,便可以利用该实现方案,计算出第一目标矩阵和第二目标矩阵的乘积。计算可以在GPU中执行,通过调用GPU中对应的实现方案,即可以最优的方式执行该乘法运算。
上述模块402至405与上一实施例的模块301至304相同或相似,在此不再赘述。相关内容可以参考上一实施例的模块301至304。本实施例着重说明与上一实施例的不同之处。
在一实施例中,所述方案确定模块404可以利用查找表查找对应的实现方案。查找表例如是存储在内存中的表格。
在一实施例中,该装置例如还可以包括分配模块400和存储模块401,分配模块400用于为所述矩阵乘法实现方案分配识别ID;存储模块401用于将每个实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入所述查找表。
在一实施例中,所述存储模块401可以包括键值生成子模块和存储子模块,键值生成子模块用于将所述矩阵乘法实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;存储子模块用于将所述矩阵乘法实现方案中的识别ID和键值组成键值对,存储于所述查找表中。上述查找表例如可以存储在硬盘或者内存中。
在一实施例中,所述装置还可以包括回收模块,用于将所述查找表回收。
在一实施例中,所述装置还可以包括优选方案获取模块406,该优选方案获取模块406用于当未查找到对应的实现方案时,在所述矩阵规模下对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案。
在一实施例中,如图7所示,所述优选方案获取模块406可以包括如下子模块:
测试矩阵产生子模块4061,用于生成第一测试矩阵和第二测试矩阵,所述第一测试矩阵和所述第二测试矩阵具有与所述第一目标矩阵和所述第二目标矩阵相同的行列参数;
计算时间获取子模块4062,用于分别利用多个可选实现方案计算所述第一测试矩阵和第二测试矩阵的乘积,获得每一个可选实现方案的计算时间;
选择子模块4063,用于根据计算时间,从所述可选实现方案中选择优选实现方案。
在本实施例中,当未查找到对应的实现方案时,需要评估多个可选的实现方案,从而获取优选的实现方案。具体来说,作为一种实现方案,可以首先产生两个和输入矩阵大小相同但是内容随机的矩阵,利用该矩阵验证可选的实现方案的效果。例如,两个相乘矩阵为m×n和n×k的矩阵时,可以根据输入的第一矩阵行参数m,列参数n和第二矩阵的列参数k生成两个形状为m×n和n×k的矩阵,矩阵的内容随机。之后,获取这两个矩阵相乘可能划分成的多个不同小矩阵的情况,由GPU上各线程分别负责不同的小矩阵的计算。由于最终产生的可能划分成小矩阵的情形并不多,即可选的实现方案种类并不多,因此通过遍历所有实现方案的方法,计算其每种方案使用的时间,选择时间最短的实现方案,即可作为最佳的实现方案。
可选地,该优选方案获取模块406还可以包括:
上传子模块4064,用于将所述优选实现方案上传至GPU;
键值生成子模块4065,用于将该优选实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
键值对存储子模块4066,用于将该优选实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
通过上述可知,在本发明第四实施例中,提出一种矩阵乘法计算装置,通过设置矩阵乘法的实现方案,在相乘矩阵的行参数和列参数相对固定的情况下,可以通过行参数和列参数自动选择最佳的实现方案,减少计算设备的工作负担,保证GPU的处理性能,提高GPU的处理速度。本发明尤其适用于多次进行固定矩阵参数的乘法计算的场合,例如在深度学习预测和训练场景中,能够显著提高深度学习训练和预测的性能,降低计算设备的计算工作量,提高计算设备的处理速度。
此外,在本实施例的矩阵乘法计算装置中,可以预先存储多种矩阵乘法的实现方案,并预先设置查找表,以方便快捷地查找最优的矩阵乘法实现方案。当在查找表中不存在对应的实现方案时,可以在所述矩阵规模下对所有实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案,并将该优选实现方案上传至GPU,同时将所述优选实现方案对应的识别的ID和所述第一矩阵的行参数、列参数和第二矩阵的列参数存储至查找表中。如此一来,可以通过学习和优化,使GPU中预存的实现方案得以随着处理次数的增加而增加,使得每次计算中能够有更大的可能获得最优的处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种矩阵乘法计算方法和矩阵乘法计算装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种矩阵乘法计算方法,其特征在于,包括:
提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
2.如权利要求1所述的方法,其特征在于,在根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案的步骤之前,所述方法还包括:
为所述矩阵乘法实现方案分配识别ID;
将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表。
3.如权利要求2所述的方法,其特征在于,将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表的步骤包括:
将所述矩阵乘法实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
将所述矩阵乘法实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
4.如权利要求2所述的方法,其特征在于,所述根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案的步骤包括:
在所述查找表中查找是否存在与所述第一矩阵的行参数、列参数和第二矩阵的列参数相同的参数的矩阵乘法实现方案。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当未查找到对应的矩阵乘法实现方案时,对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案。
6.如权利要求5所述的方法,其特征在于,所述对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案的步骤包括:
生成第一测试矩阵和第二测试矩阵,所述第一测试矩阵和所述第二测试矩阵具有与所述第一目标矩阵和所述第二目标矩阵相同的行列参数;
分别利用多个可选实现方案计算所述第一测试矩阵和第二测试矩阵的乘积,获得每一个可选实现方案的计算时间;
根据计算时间,从所述可选实现方案中选择优选实现方案。
7.如权利要求6所述的方法,其特征在于,在根据计算时间,从所述可选实现方案中选择优选实现方案的步骤之后,所述方法还包括:
将所述优选实现方案上传至GPU;
将该优选实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
将该优选实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
8.一种矩阵乘法计算装置,其特征在于,包括:
提供模块,用于提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
参数确定模块,用于确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
方案确定模块,用于根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
计算模块,用于利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
分配模块,用于为所述矩阵乘法实现方案分配识别ID;
存储模块,用于将所述矩阵乘法实现方案的识别ID和该实现方案对应的第一矩阵的行参数、列参数和第二矩阵的列参数存入查找表。
10.如权利要求9所述的装置,其特征在于,所述存储模块还包括:
键值生成子模块,用于将所述矩阵乘法实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
存储子模块,用于将所述矩阵乘法实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
11.如权利要求9所述的装置,其特征在于,所述方案确定模块用于:
在所述查找表中查找是否存在与所述第一矩阵的行参数、列参数和第二矩阵的列参数相同的参数的矩阵乘法实现方案。
12.如权利要求8所述的装置,其特征在于,所述装置还包括:
优选方案获取模块,用于当未查找到对应的矩阵乘法实现方案时,对多个可选实现方案进行评估,根据计算时间,从所述可选实现方案中选择优选实现方案。
13.如权利要求12所述的装置,其特征在于,所述优选方案获取模块包括:
测试矩阵产生子模块,用于生成第一测试矩阵和第二测试矩阵,所述第一测试矩阵和所述第二测试矩阵具有与所述第一目标矩阵和所述第二目标矩阵相同的行列参数;
计算时间获取子模块,用于分别利用多个可选实现方案计算所述第一测试矩阵和第二测试矩阵的乘积,获得每一个可选实现方案的计算时间;
选择子模块,用于根据计算时间,从所述可选实现方案中选择优选实现方案。
14.如权利要求13所述的装置,其特征在于,所述装置还包括:
上传模块,用于将所述优选实现方案上传至GPU;
键值生成模块,用于所述将该优选实现方案的第一矩阵的行参数、列参数和第二矩阵的列参数生成键值;
键值对存储模块,用于将该优选实现方案中的识别ID和键值组成键值对,存储于所述查找表中。
15.一种电子装置,包括:
存储器,其中存储有计算机可读程序代码;以及
处理器,其当所述处理器执行所述存储的计算机可读程序代码时,所述电子装置执行如下操作:
提供多个矩阵乘法实现方案,所述矩阵乘法实现方案对应第一矩阵的行参数、列参数和第二矩阵的列参数;
确定第一目标矩阵的行参数、列参数和第二目标矩阵的列参数;
根据所述第一目标矩阵的行参数、列参数和第二目标矩阵的列参数,确定对应的目标矩阵乘法实现方案;
利用确定出的目标矩阵乘法实现方案计算所述第一目标矩阵和第二目标矩阵的乘积。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711030226.6A CN109726357B (zh) | 2017-10-27 | 2017-10-27 | 矩阵乘法计算方法和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711030226.6A CN109726357B (zh) | 2017-10-27 | 2017-10-27 | 矩阵乘法计算方法和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109726357A true CN109726357A (zh) | 2019-05-07 |
CN109726357B CN109726357B (zh) | 2023-04-07 |
Family
ID=66291156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711030226.6A Active CN109726357B (zh) | 2017-10-27 | 2017-10-27 | 矩阵乘法计算方法和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109726357B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158874A (zh) * | 2019-12-20 | 2020-05-15 | 深圳市商汤科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
WO2022241725A1 (zh) * | 2021-05-20 | 2022-11-24 | 中国科学院深圳先进技术研究院 | 卷积运算的处理方法、电子设备、移动终端及存储介质 |
CN117762588A (zh) * | 2023-12-20 | 2024-03-26 | 上海寒武纪信息科技有限公司 | 一种在神经网络中调度Kernel的方法和相关产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071411A1 (en) * | 2003-09-29 | 2005-03-31 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using a selectable one of six possible level 3 L1 kernel routines |
US20110078226A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Sparse Matrix-Vector Multiplication on Graphics Processor Units |
US20170046307A1 (en) * | 2015-08-11 | 2017-02-16 | International Business Machines Corporation | Runtime of cublas matrix multiplication on gpu |
CN107256203A (zh) * | 2017-06-28 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种矩阵向量乘法的实现方法和装置 |
-
2017
- 2017-10-27 CN CN201711030226.6A patent/CN109726357B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071411A1 (en) * | 2003-09-29 | 2005-03-31 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using a selectable one of six possible level 3 L1 kernel routines |
US20110078226A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Sparse Matrix-Vector Multiplication on Graphics Processor Units |
US20170046307A1 (en) * | 2015-08-11 | 2017-02-16 | International Business Machines Corporation | Runtime of cublas matrix multiplication on gpu |
CN107256203A (zh) * | 2017-06-28 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种矩阵向量乘法的实现方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158874A (zh) * | 2019-12-20 | 2020-05-15 | 深圳市商汤科技有限公司 | 数据处理方法和装置、电子设备及存储介质 |
WO2022241725A1 (zh) * | 2021-05-20 | 2022-11-24 | 中国科学院深圳先进技术研究院 | 卷积运算的处理方法、电子设备、移动终端及存储介质 |
CN117762588A (zh) * | 2023-12-20 | 2024-03-26 | 上海寒武纪信息科技有限公司 | 一种在神经网络中调度Kernel的方法和相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN109726357B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726357A (zh) | 矩阵乘法计算方法和计算设备 | |
CN105550746B (zh) | 机器学习模型的训练方法和训练装置 | |
CN104915817A (zh) | 一种集装箱的装箱方法和装置 | |
CN107832839A (zh) | 执行卷积神经网络中的运算的方法和装置 | |
TW201824096A (zh) | 執行卷積計算的系統及方法 | |
CN108205702A (zh) | 一种多输入多输出矩阵卷积的并行处理方法 | |
CN106056529A (zh) | 一种对用于图片识别的卷积神经网络训练的方法与设备 | |
CN109002883A (zh) | 卷积神经网络模型计算装置及计算方法 | |
JP2013517561A5 (zh) | ||
CN108057245B (zh) | 地图的生成方法和装置、存储介质及终端 | |
CN106415526B (zh) | Fft处理器及运算方法 | |
CN104050536B (zh) | 一种跨电压等级配电网的拓扑分析方法 | |
CN105550274A (zh) | 双副本并行数据库的查询方法和装置 | |
US9965343B2 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
CN108320019B (zh) | 用于深度卷积神经网络的卷积计算方法及装置 | |
CN110276096A (zh) | 提高深度学习模型预测能力的方法、电子设备和存储介质 | |
CN109343793A (zh) | 数据迁移方法及装置 | |
CN106326388A (zh) | 一种信息处理方法和装置 | |
CN104951442B (zh) | 一种确定结果向量的方法和装置 | |
CN110245978A (zh) | 策略组中的策略评估、策略选择方法及装置 | |
CN106549827A (zh) | 网络状态的探测方法及装置 | |
CN106202522B (zh) | 一种流场积分曲线的复用方法及*** | |
CN104572588A (zh) | 矩阵求逆处理方法和装置 | |
CN109412149B (zh) | 基于区域划分的电网子图构建方法、拓扑分析方法及装置 | |
CN110109913B (zh) | 一种zerocash挖矿算法的硬件实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |