CN109408148B - 一种国产化计算平台及其应用加速方法 - Google Patents
一种国产化计算平台及其应用加速方法 Download PDFInfo
- Publication number
- CN109408148B CN109408148B CN201811246260.1A CN201811246260A CN109408148B CN 109408148 B CN109408148 B CN 109408148B CN 201811246260 A CN201811246260 A CN 201811246260A CN 109408148 B CN109408148 B CN 109408148B
- Authority
- CN
- China
- Prior art keywords
- heterogeneous accelerator
- accelerator card
- matrix
- memory
- sub
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种国产化计算平台及其应用加速方法,涉及计算机技术领域。本发明带FPGA异构加速卡的国产化计算平台,把应用所需要的运算分成两个部分,主机(CPU)部分和异构加速卡部分,主机部分主要负责执行流程的控制管理,异构加速卡则负责擅长的大规模并行计算,从而大大提高了整机系统的性能和能效比。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种国产化计算平台及其应用加速方法。
背景技术
传统的通用国产化计算平台所有的运算都由主机(CPU)来完成,因此在面对CPU并不擅长的复杂运算时就显得非常吃力,严重影响了用户的使用体验,导致其难以应用在需要高性能和高能效比的应用场合。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何设计一种国产化计算平台及其应用加速方法,大大提高其性能和能效比。
(二)技术方案
为了解决上述技术问题,本发明提供了一种国产化计算平台,包括主机端和利用FPGA实现的异构加速卡;
所述主机端用于首先查询异构加速卡的类型和数量,根据查询到的异构加速卡信息创建执行环境;然后把可执行的矩阵乘法AOCX格式算法文件写入异构加速卡,完成异构加速卡的配置;接着分配异构加速卡内存,把要计算的数据写入异构加速卡内存;还用于读取异构加速卡内存的运算结果;
所述异构加速卡用于对内部的计算资源进行组织,多线程并发执行计算过程。
本发明还提供了一种利用所述的国产化计算平台实现应用加速的方法,包括以下步骤:
所述主机端首先查询异构加速卡的类型和数量,根据查询到的异构加速卡信息创建执行环境;然后把可执行的矩阵乘法AOCX格式算法文件写入异构加速卡,完成异构加速卡的配置;接着分配异构加速卡内存,把要计算的数据写入异构加速卡内存;
所述异构加速卡对内部的计算资源进行组织,多线程并发执行计算过程;
所述主机端读取异构加速卡内存的运算结果。
优选地,若所述主机端写入异构加速卡内存的数据为矩阵A、矩阵B的数据;则异构加速卡把内部的计算资源组织成工作组与工作项阵列,每一个工作项计算矩阵C的一个元素,多线程并发执行;每个工作项都计算完成后,完成计算矩阵A、矩阵B乘积的任务;然后主机读取异构加速卡内存的运算结果。
优选地,所述异构加速卡把内部的计算资源组织成工作组与工作项阵列,每一个工作项计算矩阵C的一个元素,多线程并发执行的步骤具体为:
每个工作组计算一个方阵sub,sub是C的一部分,而工作组内的每个工作项计算sub的一个元素,sub等于两个长方形矩阵的乘积:设矩阵A的长方形的子矩阵尺寸是(X,K),X行K列,矩阵B的长方形的子矩阵的尺寸是(K,X),K行X列,将两个长方形的子矩阵分割成尺寸为(X,X)的方阵,sub是对这些方阵积求和,将工作组大小设置为X*X,工作组中的每个工作项只保存sub的一个元素;
设代码by、bx分别表示当前工作组的行、列索引,也表示当前工作组要计算的矩阵分块索引,代码ty、tx分别表示当前工作组内的工作项的行、列索引,也表示当前工作组要计算的矩阵的元素索引;
每个sub的具体计算流程为:
以一个工作项载入一个数据的方式从全局存储器中将两个对应的sub载入局部存储器中,同步以保证计算结果已写入局部存储器;
一个工作项计算乘积的一个元素,并将结果保存在寄存器中,循环这一步直到计算完两个尺寸为(X,X)的方阵中的对应数据;
同步保证工作组内所有工作项都已使用完加载进局部存储器的数据,循环直到计算完当前sub;
将每个工作项的寄存器中的结果写入全局存储器。
(三)有益效果
本发明带FPGA异构加速卡的国产化计算平台,把应用所需要的运算分成两个部分,主机(CPU)部分和异构加速卡部分,主机部分主要负责执行流程的控制管理,异构加速卡则负责擅长的大规模并行计算,从而大大提高了整机系统的性能和能效比。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
本发明提供了一种国产化计算平台,包括主机端和利用FPGA实现的异构加速卡;
所述主机端用于首先查询异构加速卡的类型和数量,根据查询到的异构加速卡信息创建执行环境;然后把可执行的矩阵乘法AOCX格式算法文件写入异构加速卡,完成异构加速卡的配置;接着分配异构加速卡内存,把要计算的数据写入异构加速卡内存;还用于读取异构加速卡内存的运算结果;
所述异构加速卡用于对内部的计算资源进行组织,多线程并发执行计算过程。
本发明还提供了一种利用所述的国产化计算平台实现应用加速的方法,包括以下步骤:
所述主机端首先查询异构加速卡的类型和数量,根据查询到的异构加速卡信息创建执行环境;然后把可执行的矩阵乘法AOCX格式算法文件写入异构加速卡,完成异构加速卡的配置;接着分配异构加速卡内存,把要计算的数据写入异构加速卡内存;
所述异构加速卡对内部的计算资源进行组织,多线程并发执行计算过程;
所述主机端读取异构加速卡内存的运算结果。
若所述主机端写入异构加速卡内存的数据为矩阵A、矩阵B的数据;则异构加速卡把内部的计算资源组织成工作组与工作项阵列,每一个工作项计算矩阵C的一个元素,多线程并发执行,这样相当于把矩阵乘法这个大任务分配给多个运算单元来并行执行,大大缩短了运算时间;每个工作项都计算完成后,完成计算矩阵A、矩阵B乘积的任务;然后主机读取异构加速卡内存的运算结果。
所述异构加速卡把内部的计算资源组织成工作组与工作项阵列,每一个工作项计算矩阵C的一个元素,多线程并发执行的步骤具体为:
每个工作组计算一个小方阵sub,sub是C的一部分,而工作组内的每个工作项计算sub的一个元素,sub等于两个长方形矩阵的乘积:设矩阵A的长方形的子矩阵尺寸是(X,K),X行K列,矩阵B的长方形的子矩阵的尺寸是(K,X),K行X列,为了解决局部存储器量不足的问题,满足设备的资源,再次使用分块处理的思想,将两个长方形的子矩阵分割成尺寸为(X,X)的方阵,sub是对这些方阵积求和,为了方便计算,将工作组大小设置为X*X,这样就无须显式地保存sub,工作组中的每个工作项只保存sub的一个元素即可;
设代码by、bx分别表示当前工作组的行、列索引,也表示当前工作组要计算的小矩阵分块索引,代码ty、tx分别表示当前工作组内的工作项的行、列索引,也表示当前工作组要计算的小矩阵的元素索引;
每个sub的具体计算流程为:
以一个工作项载入一个数据的方式从全局存储器中将两个对应的sub载入局部存储器中,同步以保证计算结果已写入局部存储器(如以下代码中的code1、code2);
一个工作项计算乘积的一个元素,并将结果保存在寄存器中,循环这一步直到计算完两个尺寸为(X,X)的方阵中的对应数据(如以下代码中的code3);
同步保证工作组内所有工作项都已使用完加载进局部存储器的数据,循环(在如下代码中为循环外层for)直到计算完当前sub;
将每个工作项的寄存器中的结果写入全局存储器(如以下代码中的code4)。
经过测试,当A、B矩阵大小均为4096X 4096时,使用异构加速卡计算两矩阵相乘的时间比单独的国产化计算平台小两个数量级。
根据上述运算法则编写矩阵乘法OpenCL内核程序如下:
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (1)
1.一种利用国产化计算平台实现应用加速的方法,其特征在于,
该国产化计算平台包括主机端和利用FPGA实现的异构加速卡;
所述主机端用于首先查询异构加速卡的类型和数量,根据查询到的异构加速卡信息创建执行环境;然后把可执行的矩阵乘法AOCX格式算法文件写入异构加速卡,完成异构加速卡的配置;接着分配异构加速卡内存,把要计算的数据写入异构加速卡内存;还用于读取异构加速卡内存的运算结果;
所述异构加速卡用于对内部的计算资源进行组织,多线程并发执行计算过程;
该方法包括以下步骤:
所述主机端首先查询异构加速卡的类型和数量,根据查询到的异构加速卡信息创建执行环境;然后把可执行的矩阵乘法AOCX格式算法文件写入异构加速卡,完成异构加速卡的配置;接着分配异构加速卡内存,把要计算的数据写入异构加速卡内存;
所述异构加速卡对内部的计算资源进行组织,多线程并发执行计算过程;
所述主机端读取异构加速卡内存的运算结果;
若所述主机端写入异构加速卡内存的数据为矩阵A、矩阵B的数据;则异构加速卡把内部的计算资源组织成工作组与工作项阵列,每一个工作项计算矩阵C的一个元素,多线程并发执行;每个工作项都计算完成后,完成计算矩阵A、矩阵B乘积的任务;然后主机读取异构加速卡内存的运算结果;
所述异构加速卡把内部的计算资源组织成工作组与工作项阵列,每一个工作项计算矩阵C的一个元素,多线程并发执行的步骤具体为:
每个工作组计算一个方阵sub,sub是C的一部分,而工作组内的每个工作项计算sub的一个元素,sub等于两个长方形矩阵的乘积:设矩阵A的长方形的子矩阵尺寸是(X,K),X行K列,矩阵B的长方形的子矩阵的尺寸是(K,X),K行X列,将两个长方形的子矩阵分割成尺寸为(X,X)的方阵,sub是对这些方阵积求和,将工作组大小设置为X*X,工作组中的每个工作项只保存sub的一个元素;
设代码by、bx分别表示当前工作组的行、列索引,也表示当前工作组要计算的矩阵分块索引,代码ty、tx分别表示当前工作组内的工作项的行、列索引,也表示当前工作组要计算的矩阵的元素索引;
每个sub的具体计算流程为:
以一个工作项载入一个数据的方式从全局存储器中将两个对应的sub载入局部存储器中,同步以保证计算结果已写入局部存储器;
一个工作项计算乘积的一个元素,并将结果保存在寄存器中,循环这一步直到计算完两个尺寸为(X,X)的方阵中的对应数据;
同步保证工作组内所有工作项都已使用完加载进局部存储器的数据,循环直到计算完当前sub;
将每个工作项的寄存器中的结果写入全局存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811246260.1A CN109408148B (zh) | 2018-10-25 | 2018-10-25 | 一种国产化计算平台及其应用加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811246260.1A CN109408148B (zh) | 2018-10-25 | 2018-10-25 | 一种国产化计算平台及其应用加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408148A CN109408148A (zh) | 2019-03-01 |
CN109408148B true CN109408148B (zh) | 2021-06-08 |
Family
ID=65469576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811246260.1A Active CN109408148B (zh) | 2018-10-25 | 2018-10-25 | 一种国产化计算平台及其应用加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408148B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262887B (zh) * | 2019-06-26 | 2022-04-01 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
CN113076217B (zh) * | 2021-04-21 | 2024-04-12 | 扬州万方科技股份有限公司 | 基于国产平台的磁盘故障预测方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890642A (zh) * | 2011-12-23 | 2013-01-23 | 同济大学 | 基于匹配矩阵的异构重构计算的性能分析方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140289445A1 (en) * | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
CN104731729B (zh) * | 2015-03-23 | 2018-07-13 | 华为技术有限公司 | 一种基于异构系统的表连接优化方法、cpu和加速器 |
CN104866286B (zh) * | 2015-06-02 | 2018-05-01 | 电子科技大学 | 一种基于OpenCL与SoC-FPGA的K近邻分类加速方法 |
CN105956666B (zh) * | 2016-04-29 | 2018-09-07 | 浪潮(北京)电子信息产业有限公司 | 一种机器学习方法及系统 |
CN106020425A (zh) * | 2016-05-27 | 2016-10-12 | 浪潮(北京)电子信息产业有限公司 | 一种fpga异构加速计算系统 |
CN107402902A (zh) * | 2017-07-31 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种异构计算平台与基于异构计算平台的加速方法 |
-
2018
- 2018-10-25 CN CN201811246260.1A patent/CN109408148B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890642A (zh) * | 2011-12-23 | 2013-01-23 | 同济大学 | 基于匹配矩阵的异构重构计算的性能分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109408148A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140258689A1 (en) | Processor for large graph algorithm computations and matrix operations | |
US11586577B2 (en) | Autonomous memory architecture | |
US9886418B2 (en) | Matrix operands for linear algebra operations | |
US20200159810A1 (en) | Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
US9946539B1 (en) | Accessing data in multi-dimensional tensors using adders | |
CN109145255B (zh) | 一种稀疏矩阵lu分解行更新的异构并行计算方法 | |
CN109408148B (zh) | 一种国产化计算平台及其应用加速方法 | |
US10120717B2 (en) | Method for optimizing the size of a data subset of a processing space for improved execution performance | |
CN101980182A (zh) | 基于矩阵运算的并行计算方法 | |
CN114138231B (zh) | 执行矩阵乘法运算的方法、电路及soc | |
US20140196043A1 (en) | System and method for re-factorizing a square matrix into lower and upper triangular matrices on a parallel processor | |
WO2021036729A1 (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
EP4095719A1 (en) | Sparse matrix multiplication in hardware | |
CN113435569A (zh) | 使用每通道卷积运算的流水线逐点卷积 | |
US10013393B2 (en) | Parallel computer system, parallel computing method, and program storage medium | |
US8938484B2 (en) | Maintaining dependencies among supernodes during repeated matrix factorizations | |
US9600446B2 (en) | Parallel multicolor incomplete LU factorization preconditioning processor and method of use thereof | |
CN111712811A (zh) | Hd地图的可扩展图形slam | |
CN115424114A (zh) | 图像处理方法及装置、图像处理模型的训练方法及装置 | |
CN114968182A (zh) | 用于存算一体芯片的算子拆分方法、控制方法和装置 | |
CN114466012A (zh) | 内容初始化方法、装置、电子设备和存储介质 | |
CN105045565A (zh) | 适合分布式并行计算的PBiCOR方法 | |
CN103049487B (zh) | 用于连续化矩阵数据元素标识的方法和系统 | |
CN105068971A (zh) | 一种向量点积的OpenCL自动化实现方法 |
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 |