一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种矩阵计算的方法、系统及编译器与流程

2022-11-30 07:08:17 来源:中国专利 TAG:


1.本技术涉及计算机领域,尤其涉及一种矩阵计算的方法、系统及编译器。


背景技术:

2.目前在高性能计算领域中,大量应用均涉及矩阵相乘等计算过程,为了进一步提高芯片的矩阵计算能力,各大芯片厂家提供了各种矩阵计算加速卡,从而提高芯片的浮点能力(即实数运算能力)。
3.虽然各种芯片厂家研发了配套使用的加速卡以提高芯片的矩阵计算能力,但在使用时,仍需要编程人员手动编程以实现调用加速卡的应用程序接口(application programming interface,api)。此外,不同厂家的加速卡所采用的编译类型也有所不同,进一步增加了编程人员编程的复杂度;而且,不同厂家的加速卡对矩阵计算的算法逻辑也不相同,为了使得各种加速卡能够配合使用,可能还需要编程人员对加速卡中原有的矩阵计算的算法代码进行替换。
4.目前,上述工作由编程人员人工编程以实现对各种加速卡进行调度的过程,工作繁琐、耗时长,且容易出错,不利于大规模生产。


技术实现要素:

5.本技术实施例提供一种矩阵计算的方法、系统及编译器,用于实现对矩阵加速硬件的自动编程,以简化矩阵计算中用户的操作。
6.第一方面,本技术实施例提供一种矩阵计算的方法,该方法可以应用于矩阵计算的系统,该矩阵计算的系统包括编译器和至少一个用于矩阵计算的硬件;具体的,该方法包括:所述编译器获取矩阵计算的源代码,所述源代码包括导语以及矩阵计算任务,所述导语用于指示生成所述矩阵计算任务的文件;所述编译器获取所述矩阵计算任务的编译类型;所述编译器根据所述编译类型从所述至少一个用于矩阵计算的硬件中确定执行所述矩阵计算任务的目标硬件;所述编译器根据所述导语生成所述矩阵计算任务的文件,并将所述文件发送至所述目标硬件;所述目标硬件根据所述文件执行所述矩阵计算任务。
7.在本技术上述实施例中,编译器能够根据编译类型确定用于执行矩阵计算任务的硬件,从而自动根据该编译类型生成能够使得该硬件执行矩阵计算任务的文件。上述方案,为用户提供了便捷、普适的应用,因为用户只需要通过导语指示编译器生成目标硬件执行矩阵计算任务的文件,以及通过编译选项选择硬件的编译类型,例如选择a厂商提供的编译类型或b厂商提供编译类型。矩阵计算任务的编译类型确定之后,编译器即可自动根据用户的设置自动生成所需的文件,不必再由用户进行手动编程,简化了用户操作,降低了人工学习成本、时间成本,有助于大规模的产品性能提升。
8.在一种可能的实现方式中,所述编译器根据所述编译类型从所述至少一个矩阵计算的硬件中确定执行所述矩阵计算任务的目标硬件,包括:所述编译器根据预设的策略从满足所述编译类型的硬件中选择用于执行所述矩阵计算任务的目标硬件;或者,所述导语
包括用于指示执行所述矩阵计算任务的硬件的指示信息,所述编译器根据所述指示信息和所述编译类型确定用于执行所述矩阵计算任务的目标硬件。在上述实现方式中,用户可以通过导语指定用于执行矩阵计算任务的目标硬件,以满足用户特定需求;在用户没有特定需要的情况下,用户也可以不指定,由编译器根据预设的策略自动选择执行矩阵计算任务的目标硬件,从而简化用户操作,实现矩阵计算。
9.在一种可能的实现方式中,所述编译器根据预设的策略从满足所述编译类型的硬件中选择用于执行所述矩阵计算任务的目标硬件,包括:所述编译器根据每个满足所述编译类型的硬件的计算能力和/或当前负载,从满足所述编译类型的硬件中选择用于执行所述矩阵计算任务的硬件。在上述实现方式中,编译器可以根据各个硬件的计算能力以及当前的负载选择目标硬件,从而使得选择出的目标硬件既有足够的计算能力以执行矩阵计算任务,又避免负载不均衡导致系统计算效率不高的问题。
10.在一种可能的实现方式中,所述执行所述矩阵计算任务的硬件,包括主机或与所述主机连接的硬件。在本技术实施例中,用户可以通过导语指定由主机执行矩阵计算任务,也可以指定与主机连接的其他硬件执行矩阵计算任务;或者,编译器也可以根据预设的测量选择由主机或与主机连接的硬件执行矩阵计算任务。
11.在一种可能的实现方式中,所述硬件包括以下一种或多种:加速卡,图形处理器(graphics processing unit,gpu),神经网络处理器(neural-network processing unit,npu),张量处理单元(tensor processing unit,tpu)。
12.在一种可能的实现方式中,所述导语基于共享存储并行编程(open multi-processing,openmp)或并行编程模型openacc实现。openmp提供了对并行算法的高层的抽象描述,编程人员通过在源代码中加入导语来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。openacc是一种用户驱动的、基于指令的、性能可移植的并行编程模型,与openmp类似,也可以通过添加导语指示编译器。
13.第二方面,本技术实施例提供一种矩阵计算系统,包括编译器和至少一个用于矩阵计算的硬件;所述编译器,用于获取矩阵计算的源代码,所述源代码包括导语以及矩阵计算任务,所述导语用于指示生成所述矩阵计算任务的文件;获取所述矩阵计算任务的编译类型;根据所述编译类型从所述至少一个用于矩阵计算的硬件中确定执行所述矩阵计算任务的目标硬件;根据所述导语生成所述矩阵计算任务的文件,并将所述文件发送至所述目标硬件;所述目标硬件根据所述文件执行所述矩阵计算任务。
14.在一种可能的实现方式中,所述编译器,在根据所述编译类型从所述至少一个矩阵计算的硬件中确定执行所述矩阵计算任务的目标硬件时,具体用于:根据预设的策略从满足所述编译类型的硬件中选择用于执行所述矩阵计算任务的目标硬件;或者,所述导语包括用于指示执行所述矩阵计算任务的硬件的指示信息,根据所述指示信息和所述编译类型确定用于执行所述矩阵计算任务的目标硬件。
15.在一种可能的实现方式中,所述编译器,在根据预设的策略从满足所述编译类型的硬件中选择用于执行所述矩阵计算任务的目标硬件时,具体用于:根据每个满足所述编译类型的硬件的计算能力和/或当前负载,从满足所述编译类型的硬件中选择用于执行所述矩阵计算任务的硬件。
16.在一种可能的实现方式中,所述执行所述矩阵计算任务的硬件,包括主机或与所
述主机连接的硬件。
17.在一种可能的实现方式中,所述硬件包括以下一种或多种:加速卡,图形处理器gpu,神经网络处理器npu,张量处理单元tpu。
18.在一种可能的实现方式中,所述导语基于openmp或openacc实现。
19.在一种可能的实现方式中,所述系统还包括代码库,或者,所述编译器包括代码库;所述代码库,存储有至少两种编译类型对应的程序代码;所述编译器,在根据所述导语生成用于所述硬件执行所述矩阵计算任务的文件时,具体用于:从所述代码库获取所述编译类型对应的程序代码,根据获取的程序代码生成所述硬件执行所述矩阵计算任务的文件。
20.第三方面,本技术实施例提供一种编译器,所述编译器用于执行如第一方面及第一方面任一实现方式所述矩阵计算的方法中编译器所执行的步骤。
21.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可读指令,当所述计算机可读指令在计算机上运行时,使得如第一方面任一种可能的实现方式所述方法中编译器所执行的步骤被执行。
22.第五方面,本技术实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得如第一方面任一种可能的实现方式所述方法中编译器所执行的步骤被执行。
附图说明
23.图1为本技术实施例提供的一种矩阵计算系统示意图;
24.图2为本技术实施例提供的另一种矩阵计算系统示意图;
25.图3为本技术实施例提供的一种矩阵计算的方法的流程示意图;
26.图4为本技术实施例提供的另一种矩阵计算的方法的流程示意图;
27.图5为本技术实施例提供的一种编译器的结构示意图。
具体实施方式
28.在使用外部硬件进行矩阵计算加速时,通常需要编程人员人工编程以实现对外部硬件的调用。而不同厂家的加速卡所采用的编译类型也有所不同,进一步增加了编程人员的学习成本、时间成本。尤其是使用多个外部硬件时,编程人员进行手动编译的过程非常繁琐,不利于大规模应用,且容易出错。
29.基于上述问题,本技术实施例提供一种矩阵计算的方法、系统及编译器,用于实现对矩阵加速硬件的自动编程,以简化矩阵计算中用户的操作,提供矩阵计算的效率。
30.本技术实施例提供一种矩阵计算的方法,可以应用于如图1所示的矩阵计算系统中。如图1所示,该矩阵计算系统可以包括编译器和至少一个能够用于矩阵计算的硬件。在一个具体应用场景中,如图2所示,可以在主机上安装有本技术实施例提供的编译器,且该主机上连接有至少一个能够用于矩阵计算的硬件。在该场景下,主机也可以作为特殊的硬件进行矩阵计算,即,主机也可以作为本技术实施例中的目标硬件执行矩阵计算的任务。主机是能够独立运行的计算机系统,可以包括中央处理器(central processing unit,cpu)、内存以及与其他硬件进行通信的接口等。与主机连接的硬件,可以包括但不限于矩阵加速卡、加速卡,cpu、gpu,npu,tpu等其他处理器或处理单元;与主机连接的硬件,可以是通过硬
件连接方式与主机连接,例如可以通过外设部件互连标准(peripheral component interconnect,pci)总线接口连接,或者,也可以通过网络与所述主机连接。此外,编译器也可以被安装在与主机连接的外部设备中,从而实现主机能够通过该编译器,控制与该主机连接的硬件实现矩阵计算。进一步的,矩阵计算系统还可以包括多个图2所示的主机,该多个主机可以通过硬件或网络相连。
31.参见图3,为本技术实施例提供的矩阵计算的方法的流程示意图,该方法可应用在图1或图2所示的系统中。如图3所示,该方法可以包括以下步骤:
32.步骤301、编译器获取矩阵计算的源代码,上述源代码包括导语以及矩阵计算任务。
33.其中,上述导语用于指示编译器根据源代码生成矩阵计算任务的文件。导语可以由用户输入,编译器在对导语进行解析后,进而根据用户的需求生成目标硬件执行矩阵计算任务时的所需的文件。
34.源代码中的矩阵计算任务,可以包括矩阵计算所使用的算法等。编译器获取到的源代码中,可以包括一个矩阵计算任务,也可以包括多个计算任务,该多个计算任务可以是由不同的硬件执行的计算任务。
35.步骤302、编译器获取矩阵计算任务的编译类型。
36.不同厂商提供的硬件,其编译类型可能有所不同;同一厂商提供的cpu或gpu,其编译方式也可能有所不同。例如,对于相同的矩阵采用相同的算法进行计算,但不同编译类型使得相应的运算指令有所不同,因此,编译器在生成目标硬件执行矩阵计算任务的文件时,还需要获取相应的编译类型。
37.在一些实施例中,编译器可以向用户提供编译选项,由用户选择所需的编译类型。例如,编译器可以预先获取每个可用硬件的编译类型,将获取到的编译类型提供给用户进行选择,并获取用户所选择的编译类型。
38.在另外一些实施例或者,用户也可以通过导语选择编译类型,即,编译器根据步骤301中获取到的源代码中的导语,即可确定出用户选择的编译类型。
39.此外,不同的硬件,即使属于相同的编译类型,其支持的版本也可能有所不同。进一步的,编译器在获取编译类型时,还可以进一步获取编译类型的版本,以方便后续操作。
40.步骤303、编译器根据编译类型从至少一个用于矩阵计算的硬件中确定执行上述矩阵计算任务的目标硬件。
41.编译器在获取到用户选择的编译类型后,可以从属于该编译类型的硬件中确定目标硬件。例如,矩阵计算系统中包含有2个编译类型为a的硬件和3个编译类型为b的硬件,若用户选择的编译类型为b,则编译从3个编译类型为b的硬件中确定出用于执行上述矩阵计算任务的目标硬件。
42.在一种可能的实现方式中,用户可以通过导语指定目标硬件,即,编译器获取到的导语中包含用于指示执行上述矩阵计算任务的硬件的指示信息,则编译器可以根据该指示信息确定出目标硬件。例如,用户通过编译选项选择了编译类型a,通过导语指定了编号为1的硬件,则编译器从编译类型为a的硬件中选择编号为1的硬件作为目标硬件。又例如,用户通过导语指定了编译类型b、硬件2,则编译器通过对导语的解析,确定出编译类型为b的硬件中编号为2的硬件为目标硬件。在该实现方式中,用户可以根据其计算需求选择执行矩阵
计算任务的目标硬件,以满足用户的特定需求。
43.在另一种可能的实现方式中,用户也可以不通过导语指定目标硬件,由编译器根据预设的策略,从满足用户选择的编译类型的硬件中选择用于执行上述矩阵计算任务的目标硬件。在该实现方式中,用户也可以不指定,由编译器根据预设的策略自动选择执行矩阵计算任务的目标硬件,从而简化用户操作并实现矩阵计算。
44.可选的,预设的策略,可以包括根据各硬件的计算能力选择目标硬件的策略。不同的矩阵计算任务对硬件计算能力的需求有所不同,对于较为复杂的矩阵计算任务,可以选择计算能力较高的硬件,而对于较为简单的矩阵计算任务,对硬件计算能力的要求也较低。因此,可以根据硬件的计算能力选择有能力执行上述矩阵计算任务的硬件。此外,上述预设的策略,也可以包括根据各硬件的当前负载选择目标硬件的策略。为了保证矩阵计算系统的计算效率,避免某个硬件超负荷运行影响计算效率,在选择目标硬件时,可以根据各硬件的当前负载进行选择,以实现矩阵计算系统的负载均衡。进一步的,预设的策略也可以兼顾硬件的计算能力和当前负载,从而使得编译器选择出的目标硬件既有足够的计算能力以执行矩阵计算任务,又避免负载不均衡导致系统计算效率不高的问题。
45.在一些实施例中,若编译器获取的导语中包含有用于指示执行矩阵计算任务的硬件的指示信息,但编译器根据各个硬件的当前负载情况,确定该指示信息所指示的硬件当前负载超过预设限值,编译器也可以根据预设的策略重新选择用于执行矩阵计算任务的目标硬件。编译器在重新选择后,还可以提示用户,用户所选择的硬件负载过重,已重新选择目标硬件;或者,也可以提示用户,用户所选择的硬件负载过重,是否采用编译器选择的目标硬件进行矩阵计算。
46.如前所述,主机也可以作为目标硬件。因此,在用户通过导语指定目标硬件的情况下,用户可以指定主机执行矩阵计算的任务;在用户未指定目标硬件的情况下,编译器可以根据预设的策略选择主机作为目标硬件执行矩阵计算的任务。
47.步骤304、编译器根据所述导语生成用于目标硬件执行上述矩阵计算任务的文件,并将该文件发送至目标硬件。
48.在上述步骤中,编译器可以根据源代码中的矩阵计算任务,以及目标硬件的编译类型,生成目标硬件执行上述矩阵计算任务时的运行文件。目标硬件执行矩阵计算任务,需要运行相应的文件,该文件中包括使得目标硬件实现矩阵计算的指令等;即使是相同的矩阵计算任务,由不同编译类型的硬件执行,其能够识别并运行的指令也有所不同,因此,编译器需要根据目标硬件的编译类型生成相应的文件。该文件可以为二进制文件。
49.此外,不同编译类型的硬件,其应用程序接口可能有所不同;即使是相同编译类型的硬件,由于其版本不同,其应用程序接口也可以不同。因此,编译器在生成目标硬件执行矩阵计算任务的文件时,还可以进一步根据目标硬件的应用程序接口生成相应的文件。
50.编译器在生成目标硬件执行矩阵计算任务的文件后,将该文件发送至目标硬件,以使目标运行该文件从而执行矩阵计算任务。
51.步骤305、目标硬件根据文件执行矩阵计算任务。
52.目标硬件在接收到编译器生成的文件后,运行该文件,以执行上述矩阵计算任务。目标硬件在完成矩阵计算后,可以将计算结果,即输出矩阵发送至编译器,或者发送至主机。
53.在一种可能的实现方式中,上述导语可以是基于openmp实现的,或者,也可以是基于openacc实现的。openmp是用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案,它提供了对并行算法的高层的抽象描述,编程人员通过在源代码中加入专用的导语(pragma)来指明自己的意图,以使编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。降低了并行编程的难度和复杂度,在高性能计算(high performance computing,hpc)机群领域得到广泛的应用。openacc与openmp类似,也可以通过添加导语指示编译器。
54.以openmp为例,编译器获取到的导语可以如下所示:
55.#pragma omp target type(a)device(n)
56.#pragma omp matrix_mul
57.在上述导语之后,可以是矩阵计算的算法代码。
58.其中,matrix_mul为本技术实施例提供的导语子语,用于编程人员告知编译器后续的代码段为矩阵计算的算法。type(a)为本技术实施例提供的子语,用于编程人员告知编译器采用哪种编译类型的硬件进行矩阵计算;例如,用户可以通过type(a)指示目标硬件为某一厂商提供的gpu,则编译器后续根据某一厂商gpu的编译方式生成相应的文件。如前所述,编译类型也可以不同通过导语指定,而通过如编译选项等其他方式告知编译器;或者,用户也可以通过导语指示目标硬件的编译类型,通过编译选项指示该编译类型的具体版本。device(n)为导语子语,表示采用编译类型为a的n号硬件为执行矩阵计算的目标硬件。
59.此外,还可以在导语“#pragma omp matrix_mul”后面添加导语子语,例如“#pragma omp matrix_mul in(输入矩阵1,输入矩阵2

)out(输出矩阵1)”。
60.当缺少“#pragma omp target type(a)device(n)”导语时,编译器可以编程人员通过编译选项选择的编译类型,根据预设的策略自行选择进行矩阵计算的目标硬件。
61.为了更加清楚理解本技术上述实施例,下面结合图4进行举例说明。
62.在一个具体的实施例中,编程人员输入的源代码可以如下所示:
63.#pragma omp target device(0)
64.#pragma omp matrix_mul
65.矩阵计算算法1
66.#pragma omp target device(1)
67.#pragma omp matrix_mul
68.矩阵计算算法2
69.上述源代码包括两个矩阵计算任务,其中,第一个矩阵计算任务为设备0按照矩阵计算算法1进行矩阵计算,第二矩阵计算任务为设备1按照矩阵计算算法2进行矩阵计算。此外,编程人员还可以通过编译选项选择编译类型为a,结合子语device(0),即可确定第一个矩阵计算任务的目标硬件是编译类型为a的硬件中编号为0的硬件,第二个矩阵计算任务的目标硬件是编译类型为a的硬件中编号为1的硬件。
70.编译器在获取到上述源代码和编译类型后,根据编译类型a的编译规则生成应用矩阵计算算法1进行矩阵运算的二进制文件(以下简称二进制文件1),该二进制文件1用于编译类型a中编号为0的硬件执行第一个矩阵计算任务;根据编译类型a的编译规则生成应用矩阵计算算法2进行矩阵运算的二进制文件(以下简称二进制文件2),该二进制文件2用
于编译类型a中编号为1的硬件执行第二个矩阵计算任务。
71.在生成相应的二进制文件后,编译器(安装在主机中,附图中仅标注主机)、编译类型a中编号为0的硬件(以下简称硬件0)以及编译类型a中编号为1的硬件(以下简称硬件1)的运行示意图可以如图4所示:
72.编译器在生成二进制文件后,开始执行矩阵计算逻辑。首先,编译器为硬件0进行加速环境准备,加速环境准备步骤可以包括内存分配、输入矩阵拷贝以及二进制文件1拷贝等。
73.内存分配,即编译器根据硬件0内存的使用情况,为硬件0分配用于执行第一个矩阵计算任务的内存,如输入矩阵的内存、输出矩阵的内存等;在另一种可能的实现方式中,硬件0的内存分配,也可以由硬件0自行决定,即编译器无需为硬件0进行内存分配。
74.输入矩阵拷贝,即编译器将第一个矩阵计算任务的输入矩阵拷贝至编译器为硬件0分配的输入矩阵内存中,或者,将输入矩阵拷贝至硬件0自行分配的输入矩阵内存中。
75.二进制文件1拷贝,即编译器将生成的二进制文件1拷贝至硬件0中,从而使得硬件0能够根据二进制文件1以及输入矩阵执行上述第一个矩阵计算任务。
76.编译器在完成第一个矩阵计算任务的加速环境准备后,运行矩阵计算加速逻辑,即,控制硬件0执行第一个矩阵计算任务。硬件0运行二进制文件1,进行矩阵计算,得到计算结果,即输出矩阵。编译器获取计算结果,即,从硬件0的输出矩阵内存中获取输出矩阵。至此,第一个矩阵计算任务完成。
77.编译器开始执行第二个矩阵计算任务的矩阵计算逻辑,为硬件1进行加速环境准备。编译器为硬件1进行加速环境装备的步骤也可以包括内存分配、输入矩阵拷贝以及二进制文件2拷贝等,具体操作与第一个矩阵计算任务类似,此处不再赘述。
78.编译器在完成第二个矩阵计算任务的加速环境准备后,运行矩阵计算加速逻辑,即,控制硬件1执行第二个矩阵计算任务。硬件1运行二进制文件2,进行矩阵计算,得到计算结果,即输出矩阵。编译器获取计算结果,即,从硬件1的输出矩阵内存中获取输出矩阵。至此,第二个矩阵计算任务完成。
79.应当理解,虽然图4中按照串行运行的方式(即先执行第一个矩阵计算任务再执行第二个矩阵计算任务)进行示意,但在实际应用中,编译器也可以并行控制硬件0和硬件1进行矩阵计算。
80.在本技术上述实施例中,编译器能够根据编译类型确定用于执行矩阵计算任务的硬件,从而自动根据该编译类型生成能够使得该硬件执行矩阵计算任务的文件。上述方案,为用户提供了便捷、普适的应用,因为用户只需要通过导语指示编译器生成目标硬件执行矩阵计算任务的文件,以及通过编译选项选择硬件的编译类型,例如选择a厂商提供的编译类型或b厂商提供编译类型。矩阵计算任务的编译类型确定之后,编译器即可自动根据用户的设置自动生成所需的文件,不必再由用户进行手动编程,简化了用户操作,降低了人工学习成本、时间成本,有助于大规模的产品性能提升。
81.基于相同的技术构思,本技术实施例还提供一种编译器,所述编译器用于执行上述方法实施例中编译器所执行的步骤。
82.为了实现上述功能,该编译器可以包含有执行各个功能相应的软件模块和/或硬件结构。在一个具体实施例中,图1或图2中的编译器的具体结构可以如图5所示,它包括前
端模块501、适配模块502、加速执行模块503。
83.其中,前端模块501用于实现与用户的交互。具体的,前端模块501可以获取用户输入的源代码,可以为用户提供编译选项并获取用户选择的编译类型。前端模块501的功能的具体实现可参考图3中步骤301和步骤302,这里不再赘述。
84.适配模块502,用于确定执行矩阵计算任务的目标硬件。适配模块502的具体功能可以参考图3中步骤303及其具体实现方式。为了实现上述功能,进一步的,适配模块502可以包括导语解析子模块5021和硬件选择子模块5022。
85.其中,导语解析子模块5021,用于对前端模块501获取的导语进行解析,生成编译中间代码,做好生成相应二进制文件的准备。
86.硬件选择子模块5022,用于在导语解析子模块5021获取的导语包含有目标硬件的信息时,根据该信息确定出用于执行矩阵计算任务的目标硬件;当导语中不包含目标硬件的信息时,则根据预设的策略,从满足用户选择的编译类型的硬件中,选择用于执行矩阵计算任务的目标硬件。
87.加速执行模块503,用于在适配模块502选择出执行矩阵计算任务的目标硬件后,生成目标硬件执行矩阵计算任务所需的文件,并将文件发送给目标硬件。进一步的,加速执行模块503还可以为目标硬件分配输入、输出矩阵的内存,将输入矩阵发送至目标硬件,从目标硬件获取接收结果等。此外,为了实现编译器能够更智能的决定目标硬件,加速执行模块还可以提供监控功能,监控各个硬件的性能及负载等。具体的,加速执行模块503具体功能可以参考图3中步骤304及其具体实现方式。
88.进一步的,该编译器还可以包括代码库504。具体的,代码库504存储有至少两种编译类型对应的程序代码。加速执行模块503,在根据导语生成矩阵计算任务的文件时,具体用于:从代码库504获取所述编译类型对应的程序代码,根据导语以及获取的程序代码生成所述硬件执行所述矩阵计算任务的文件。
89.需要说明的是,以上各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元通过软件通过处理元件调用的形式实现,部分单元通过硬件的形式实现。
90.基于相同的技术构思,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可读指令,当所述计算机可读指令在计算机上运行时,使得上述方法实施例中编译器所执行的步骤被执行。
91.基于相同的技术构思,本技术实施例提供还一种包含指令的计算机程序产品,当其在计算机上运行时,使得上述方法实施例中编译器所执行的步骤被执行。
92.需要理解的是,在本技术的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限
于”,除非是以其他方式另外特别强调。
93.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
94.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
95.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
96.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
97.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
98.显然,本领域的技术人员可以对本技术实施例进行各种改动和变型而不脱离本技术实施例的精神和范围。这样,倘若本技术实施例的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献