基于邻域模型的协同过滤推荐算法的硬件加速器和方法与流程

文档序号:11133867阅读:457来源:国知局
基于邻域模型的协同过滤推荐算法的硬件加速器和方法与制造工艺

本发明涉及计算机硬件加速领域,具体地涉及一种基于邻域模型的协同过滤推荐算法的硬件加速器和方法。



背景技术:

基于邻域模型的协同过滤推荐算法是推荐算法领域经典成熟的一类算法,并广泛的应用于各式各类的推荐系统中,主要包含User-based CF算法、Item-based CF算法、SlopeOne算法等。随着大数据时代的来临,数据规模在飞速的增长,该类推荐算法在处理不断扩大的数据时所要花费的时间变的越来越长。为了降低推荐系统的响应时间并及时的为用户生成推荐信息,需要加快该类推荐算法的执行。

主流的加速平台有三种:多核处理器机群、云计算平台、通用计算图形处理器(General Purpose Graphic Process Unit,简称为“GPGPU”)。多核处理器机群由多个基于通用处理器(General Purpose Processor,简称为“GPP”)的计算节点构成,通过利用MPI、OpenMP等编程模型,以多进程、多线程方式对算法进行任务级、数据级并行;云计算平台同样由众多基于GPP的计算节点构成,通过利用Hadoop、Spark等计算框架,以MapReduce、Stream等方式对算法进行任务级、数据级并行;GPGPU内部由大量流处理器构成,通过利用CUDA、OpenCL、OpenACC等编程模型,以多线程的方式对算法进行数据级并行。

利用上述三种平台对该类推荐算法进行加速的相关研究工作的确能够取得不错的效果,但同时也存在着一些问题:多核处理器机群与云计算平台虽然在整体上拥有良好的加速效果,但是单个基于GPP架构的计算节点的计算效率相对偏低,并有着较高的能耗开销;GPGPU虽然有着很高的计算效率,但其同样存在运行功率过高、能耗开销过大的问题。

为了在提升加速性能的同时降低功率能耗方面的开销,近些年来,人们开始寻求利用特定用途集成电路芯片(Application Specific Integrated Circuit,简称为“ASIC”)与现场可编程门阵列(Field Programmable Gate Array,简称为“FPGA”)来对特定算法研究设计专用的硬件加速器。对于基于邻域模型的协同过滤推荐算法,其硬件加速器的相关研究工作非常稀少。



技术实现要素:

有鉴于此,本发明目的是:提供了一种基于邻域模型的协同过滤推荐算法的硬件加速器和方法,包含训练加速器部分和预测加速器部分,分别能够加速User-based CF算法、Item-based CF算法、SlopeOne算法的训练阶段和预测阶段,具备良好加速效果,并拥有较低的功率和能耗开销。

本发明的技术方案是:

一种基于邻域模型的协同过滤推荐算法的硬件加速器,包括训练加速器结构和预测加速器结构,所述训练加速器结构,用于邻域模型的协同过滤推荐算法训练阶段的加速,所述预测加速器结构,用于邻域模型的协同过滤推荐算法预测阶段的加速;所述训练加速器结构内部由一个控制单元、多个DMA、多个第一执行单元构成,DMA与第一执行单元数量相同、一一对应,控制单元与DMA和第一执行单元通过控制总线相连,第一执行单元与DMA通过数据总线相连;所述预测加速器结构内部由一个控制总线互联结构、多个DMA、多个第二执行单元构成,DMA与第二执行单元数量相同、一一对应,控制总线互联结构与DMA和第二执行单元通过控制总线相连,第二执行单元与DMA通过数据总线相连;宿主CPU与控制单元和控制总线互连结构通过控制总线相连,主存与每个DMA通过数据总线相连。

优选的技术方案中,所述基于邻域模型的协同过滤的协同过滤推荐算法训练阶段包括:User-based CF算法训练阶段计算所有用户向量之间相似度、Item-based CF算法训练阶段计算所有物品向量之间相似度、SlopeOne算法训练阶段计算所有物品之间平均差异度;

所述基于邻域模型的协同过滤的协同过滤推荐算法预测阶段包括:User-based CF算法预测阶段计算物品预测值、Item-based CF算法预测阶段计算物品预测值、SlopeOne算法预测阶段计算物品预测值。

优选的技术方案中,所述控制单元,用于在宿主CPU的控制下,读入训练加速器指令程序,依次执行程序中的每条指令,控制执行单元执行指令对应的功能操作;内置有用于存储用户编写的训练加速器指令程序的指令缓存、程序计数器、用于记录向量长度的寄存器、用于记录每重循环指令对应剩余循环次数的寄存器组。

优选的技术方案中,所述第一执行单元,包括控制总线互连结构、缓存模块、输入模块、输出模块、累加模块和运算模块,控制单元通过控制总线互联结构与其他模块通过控制总线相连;所述输入模块将DMA中的向量数据读入至缓存模块;所述累加模块对缓存模块中的两个向量进行计算,得到计算相似度或平均差异度时所需的若干标量信息,并将这些标量信息写回至缓存模块;所述运算模块利用缓存模块中的标量信息计算相似度或平均差异度,并将计算结果写入至缓存模块;所述输出模块将缓存模块任意标量或向量数据写回至DMA内部缓存。

优选的技术方案中,所述训练加速器指令程序由专用指令集组成,所述指令集包括:

输入指令,用于控制输入模块读取DMA内部缓存中的数据,并将其写入至指令操作数对应的控制单元寄存器或缓存模块中的向量缓存;共有三条,分别用于读取向量长度或某重循环指令的循环次数,读取一条向量数据,边读取一条向量数据边进行计算,均为一操作数指令;

输出指令,用于控制输出模块将指令操作数对应的缓存模块中的标量或向量数据写回至DMA内部缓存;共有两条,分别用于写回标量数据,写回向量数据,均为一操作数指令;

累加指令,用于控制累加模块对存放在缓存模块中的两条向量进行计算,得到指令对应的相似度或平均差异度在计算时所需的若干标量信息,并将这些标量信息写入至缓存模块;共有四条,分别用于欧几里德距离、余弦相似度、皮尔逊相关系数、平均差异度,均为无操作数指令;

运算指令,用于控制运算模块利用存放在缓存模块中的若干标量信息计算指令对应的相似度或平均差异度,并将计算结果写入至缓存模块,共有六条,分别用于杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度,均为无操作数指令;

循环指令,用于控制单元对循环指令标记范围内的其他指令执行循环操作,包含循环开始标记与循环结束标记;共有三对,分别用于一重循环、二重循环、三重循环,对应的循环次数记录在控制单元的相关寄存器中,由输入指令负责写入。

优选的技术方案中,邻域模型的协同过滤推荐算法训练阶段的加速处理包括以下步骤:

S01:根据选用推荐算法,确定向量类型与长度;

S02:根据向量类型与长度、选用数据集,确定向量数量;

S03:根据向量数量、执行单元数量,按照执行单元数量将所有向量分块,并将每块分配给每个执行单元处理;

S04:根据选用的推荐算法、向量类型与长度、向量数量、分配给每个执行单元的向量数量、相似度标准或平均差异度,编写训练加速器指令程序,并将指令程序传入至控制单元指令缓存;

S05:宿主CPU通过控制单元控制所有DMA设备同时发起数据传输,DMA将所有控制信息与向量数据从主存读入至DMA内部缓存;

S06:控制单元以单指令流多数据流的方式依次执行每条指令,控制所有执行单元并行同步的执行指令对应的操作:依次处理所分配的每条向量,从DMA内部缓存中读入该向量并写入至缓存模块,依次从DMA中读入每条其他向量并写入至缓存模块,根据指令对应的相似度或平均差异度对两条向量进行计算,得到所有相关的标量信息并写入至缓存模块,利用标量信息计算两条向量之间的相似度或平均差异度,将计算结果写入至缓存模块,将缓存模块中的相似度或平均差异度计算结果写回至DMA内部缓存;

S07:处理完分配的所有向量后,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的所有向量相似度或平局差异度计算结果写回至主存。

优选的技术方案中,当DMA内部缓存容量无法存放主存中所有控制信息、向量数据或执行单元写回的所有相似度或平均差异度计算结果时,宿主CPU多次通知DMA发起数据传输,DMA进行多次传输部分数据,直至完成所有数据的传输。

优选的技术方案中,所述步骤S06中,当向量长度超过执行单元缓存模块的向量缓存存储容量上限时,首先对向量进行分片处理,将每条向量按照该上限大小划分为若干个片段,然后执行单元逐个的对从DMA内部缓存读入的每对向量片段进行处理。

优选的技术方案中,所述执行单元对向量片段处理步骤包括:

S11:执行单元依次对分配的每条向量与其他向量之间的执行相似度或平均差异度计算;

S12:在依次对该向量与某条其他向量执行计算时,输入模块依次读入两条向量对应的每对向量片段,累加模块对该对向量片段计算指令对应的相似度或平均差异度涉及的若干标量信息并累加至缓存模块中,处理完两个向量的所有向量片段后,运算模块利用缓存模块中的标量信息计算相应的相似度或平均差异度并写入至缓存模块,输出模块将相似度或平均差异度结果写回至DMA内部缓存;

S13:在完成该向量与其他向量之间的所有计算后,执行单元对下一条向量计算。

10.根据权利要求8所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述执行单元对向量片段处理步骤包括:

S21:执行单元依次对分配的每条向量与其他向量之间的执行相似度或平均差异度计算;

S22:在依次对向量片段进行处理时,输入模块首先读入该向量的相应向量片段,然后依次读入每条其他向量相应的向量片段,累加模块对该对向量片段计算指令对应的相似度或平均差异度涉及的若干标量信息并累加至缓存模块中,处理完该向量与所有其他向量对应的向量片段后,输出模块将缓存模块中的相应标量信息写回至DMA内部缓存,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的所有标量信息写回并累加至主存;

S23:执行单元处理完所有向量片段后,宿主CPU利用主存中的所有标量信息计算该向量与其他所有相量之间的相似度或平均差异度;

S24:在完成该向量与其他向量之间的所有计算后,执行单元对下一条向量计算。

优选的技术方案中,所述第二执行单元,包括控制模块、缓存模块、输入模块和输出模块,控制模块内置有用于存储用户编写的预测加速器指令程序的指令缓存、程序计数器、用于记录向量长度的寄存器、用于记录每重循环指令对应剩余循环次数的寄存器组;用于在宿主CPU的控制下,读入预测加速器指令程序,依次执行程序中的每条指令,控制其他模块执行指令对应的功能操作:输入模块从DMA内部缓存中读取控制信息、标量数据或向量数据,将控制信息写入至控制模块相应寄存器,将标量数据写入至缓存模块相应缓存,对标量和向量数据进行计算,并将计算结果累加至缓存模块相应缓存;输出模块利用缓存模块中的累加结果计算物品的预测值,并将计算结果写回至DMA内部缓存。

优选的技术方案中,所述预测加速器指令程序由指令集组成,所述指令集包括:

输入指令,用于控制输入模块读取DMA内部缓存中的控制信息、标量数据或向量数据,将控制信息写入至控制模块相应寄存器,将标量数据写入至缓存模块相应缓存,对标量和向量数据进行计算,并将计算结果累加至缓存模块相应缓存;共有六条,分别用于读取向量长度、某重循环指令的循环次数控制信息以及某对用户的相似度、某用户对某物品的评分标量数据,读取用户向量并进行物品累加计算,读取用户向量并进行物品加权累加计算,读取物品相似度向量并进行物品累加计算,读取物品相似度向量并进行物品加权累加计算,读取物品平均差异度向量并进行物品求和累加计算,读取控制信息、标量信息的指令为一操作数指令,其余均为无操作数指令;

输出指令,用于输出模块对缓存模块中的累加结果计算物品的预测值,并将计算结果写回至DMA内部缓存;共有两条,分别用于直接写回缓存模块向量数据,计算并写回缓存模块向量数据,均为无操作数指令;

循环指令,用于控制模块对循环指令标记范围内的其他指令执行循环操作,包含循环开始标记与循环结束标记;共有三对,分别用于一重循环、二重循环、三重循环,对应的循环次数记录在控制模块的相关寄存器中,由输入指令负责写入。

优选的技术方案中,邻域模型的协同过滤推荐算法预测阶段的加速处理包括以下步骤:

S31:根据选用推荐算法,确定向量类型与长度以及物品预测值计算方式;

S32:根据选用数据集,确定需要执行推荐任务的用户数量;

S33:根据用户数量、执行单元数量,按照执行单元数量将所有用户均分为多块,并将每块中的用户分配给每个执行单元处理;根据选用的推荐算法、计算方式、数据集、向量类型与长度、分配给每个执行单元的用户数量,编写预测加速器指令程序,并将指令程序传入至每个执行单元缓存模块中的指令缓存;宿主CPU通过控制总线互连结构控制所有DMA设备同时发起数据传输,DMA将所有控制信息、标量数据、向量数据从主存读入至DMA内部缓存;

S34:所有执行单元控制模块以多指令流多数据流的方式依次执行每条指令,每个控制模块控制该执行单元内的其他模块执行指令对应的操作:依次处理所分配的每个用户,从DMA内部缓存中读入该用户的相关标量数据和向量数据,对向量数据涉及到的每个物品进行计算,并将计算结果累加至缓存模块对应缓存,在处理完该用户的所有标量数据和向量数据后,选择性的对缓存模块中的数据进行除法运算,并将所有运算结果写回DMA内部缓存;

S35:处理完所有分配的所有用户后,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的物品预测值结果写回至主存。

优选的技术方案中,当DMA内部缓存容量无法存放主存中所有控制信息、向量数据或执行单元写回的所有相似度或平均差异度计算结果时,宿主CPU多次通知DMA发起数据传输,DMA进行多次传输部分数据,直至完成所有数据的传输。

优选的技术方案中,所述步骤S34中,当向量长度超过执行单元缓存模块的向量缓存存储容量上限时,首先对向量进行分片处理,将每条向量按照该上限大小划分为若干个片段,然后执行单元逐个的对从DMA内部缓存读入的每对向量片段进行处理。

优选的技术方案中,所述执行单元对向量片段处理步骤包括:

S41:执行单元依次对分配的每个用户执行物品预测值计算;

S42:在依次对每个分片内的物品进行计算时,输入模块从DMA内部缓存中读入该用户的相关标量数据和向量数据,对向量数据涉及到并处于该分片内的每个物品进行计算,并将计算结果累加至缓存模块对应缓存,在处理完该用户的所有标量数据和向量数据后,选择性的对缓存模块中的数据进行除法运算,并将所有运算结果写回DMA内部缓存;

S43:处理完所有物品片段后,处理下个用户。

本发明又公开了一种基于邻域模型的协同过滤推荐算法的硬件加速方法,包括训练阶段加速和预测阶段加速,所述训练阶段通过训练加速器结构加速,包括以下步骤:

S51:根据选用推荐算法,确定向量类型与长度;

S52:根据向量类型与长度、选用数据集,确定向量数量;

S53:根据向量数量、训练加速器结构的执行单元数量,按照执行单元数量将所有向量分块,并将每块分配给每个执行单元处理;

S54:根据选用的推荐算法、向量类型与长度、向量数量、分配给每个执行单元的向量数量、相似度标准或平均差异度,编写训练加速器指令程序,并将指令程序传入至控制单元指令缓存;

S55:宿主CPU通过控制单元控制所有DMA设备同时发起数据传输,DMA将所有控制信息与向量数据从主存读入至DMA内部缓存;

S56:控制单元以单指令流多数据流的方式依次执行每条指令,控制所有执行单元并行同步的执行指令对应的操作:依次处理所分配的每条向量,从DMA内部缓存中读入该向量并写入至缓存模块,依次从DMA中读入每条其他向量并写入至缓存模块,根据指令对应的相似度或平均差异度对两条向量进行计算,得到所有相关的标量信息并写入至缓存模块,利用标量信息计算两条向量之间的相似度或平均差异度,将计算结果写入至缓存模块,将缓存模块中的相似度或平均差异度计算结果写回至DMA内部缓存;

S57:处理完分配的所有向量后,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的所有向量相似度或平局差异度计算结果写回至主存;

所述训练阶段通过预测加速器结构加速,包括以下步骤:

S58:根据选用推荐算法,确定向量类型与长度以及物品预测值计算方式;

S59:根据选用数据集,确定需要执行推荐任务的用户数量;

S510:根据用户数量、预测加速器结构的执行单元数量,按照执行单元数量将所有用户均分为多块,并将每块中的用户分配给每个执行单元处理;根据选用的推荐算法、计算方式、数据集、向量类型与长度、分配给每个执行单元的用户数量,编写预测加速器指令程序,并将指令程序传入至每个执行单元缓存模块中的指令缓存;宿主CPU通过控制总线互连结构控制所有DMA设备同时发起数据传输,DMA将所有控制信息、标量数据、向量数据从主存读入至DMA内部缓存;

S511:所有执行单元控制模块以多指令流多数据流的方式依次执行每条指令,每个控制模块控制该执行单元内的其他模块执行指令对应的操作:依次处理所分配的每个用户,从DMA内部缓存中读入该用户的相关标量数据和向量数据,对向量数据涉及到的每个物品进行计算,并将计算结果累加至缓存模块对应缓存,在处理完该用户的所有标量数据和向量数据后,选择性的对缓存模块中的数据进行除法运算,并将所有运算结果写回DMA内部缓存;

S512:处理完所有分配的所有用户后,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的物品预测值结果写回至主存。

与现有技术相比,本发明的优点是:

本发明可以用来加速三种基于邻域模型的协同过滤Collaborative Filtering(CF)推荐算法:基于用户的协同过滤User-based CF算法、基于物品的协同过滤Item-based CF算法以及SlopeOne算法。主要包含训练加速器部分和预测加速器部分:训练加速器部分能够加速三种算法在训练阶段涉及的杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数以及平均差异度计算;预测加速器部分能够加速三种算法在预测阶段涉及的累加求和、加权累加平均以及求和累加平均计算。能够具备良好的加速效果,并拥有较低的功率以及能耗开销。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1是一个“用户-物品-评分”矩阵样例示意图;

图2是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器的整体结构以及与宿主CPU、主存之间连接的示意图;

图3是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器部分执行单元的结构示意图;

图4是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器部分执行单元累加模块的结构示意图;

图5是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器部分执行单元累加模块多功能运算单元PE的结构示意图;

图6是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器部分运算模块的结构示意图;

图7是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器运作方式的整体流程示意图;

图8是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器计算向量之间杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度的方法的无需分片处理情况下的指令实现对应的训练加速器执行流程示意图;

图9是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器计算向量之间杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度的方法的一种分片处理方式的示意图;

图10是根据图9描述分片处理方式的指令实现对应的训练加速器执行流程示意图;

图11是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器计算向量之间杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度的方法的另一种分片处理方式的示意图;

图12是根据图11描述分片处理方式的指令实现对应的训练加速器执行流程示意图;

图13是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器部分执行单元的结构示意图;

图14是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器运作方式的整体流程示意图;

图15根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器采用累加方式、加权累加平均方式、求和累加平均方式计算物品预测值的无需分片处理情况下指令实现对应的预测加速器执行流程示意图;

图16根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器部分采用累加方式、加权累加平均方式、求和累加平均方式对物品计算预测值的方法的一种分片处理方式的指令实现对应的预测加速器执行流程示意程图。

具体实施方式

以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。

实施例:

图1是一个“用户-物品-评分”矩阵样例示意图:在该矩阵中,每一行代表某一用户向量,每一列代表某一物品向量,行与列相交的位置则代表了某一用户对某一物品具体的行为记录或评分值,如果某一用户尚未接触或评价过某一物品,则相交位置处的值为空,在图中用“-”表示;该矩阵往往极其稀疏,并且相交位置处的值往往处于较小的实数范围之间。

公式1用于计算两个向量之间杰卡德相似系数,涉及到向量x、y自身非空评分的数目Nx、Ny以及向量x、y共有评分的数目Nxy,其中Nx、Ny往往在原始数据中可以直接获得,因此只需要计算Nxy

公式2用于计算两个向量之间一种余弦相似度,同样涉及到Nx、Ny、Nxy

公式3用于计算两个向量之间欧几里德距离,涉及到向量x、y所有共有偏移位置处的评分差的平方累加和S(x-y)2,M为两个向量都有过行为或评价记录的用户或物品集合,m为集合M中的一员。

公式4用于计算两个向量之间另一种余弦相似度,涉及到两个向量共有偏移位置处的自身评分的平方和Sx2、Sy2以及相乘后的和Sxy

公式5

,用于计算两个向量之间皮尔逊相关系数,除了Sx2、Sy2、Sxy以外,还涉及到向量x、y共有评分数目Nxy,以及自身在共有偏移位置处的评分和Sx、Sy

公式6用于计算两个向量之间平均差异度,涉及到所有共有偏移位置处的评分差的和S(x-y)和Nxy

上述用于User-based CF、Item-based CF、SlopeOne训练阶段的六种相似度或平均差异度计算标准,在进行计算时,共涉及到Nx、Ny、Nxy、Sx、Sy、Sx2、Sy2、Sxy、Sx-y、S(x-y)2这十种标量值,在计算出了这些标量信息之后,只需要进行若干加法、减法、乘法、开方以及最后的一步除法操作既可以求得相似度或平均差异值;其中Nx、Ny往往在原始数据中可以直接获得,剩下的标量值则需要获取向量x、y计算后才能获得:在计算标量Nxy、Sx、Sy、Sx2、Sy2、Sxy、Sx-y、S(x-y)2时,需要对向量每个共有位置处的两个分量进行相应的运算,然后对所有分量的运算结果进行累加求和。

公式7用于User-based CF以累加方式计算物品预测值;

公式8用于User-based CF以加权累加平均方式计算物品预测值;

User-based CF在利用公式对指定用户u进行预测值计算时,会逐个的遍历该用户邻域集合中的每个其他用户v,对于v评价过的每个物品i,算法会计算wuv*rvi、|wuv|,然后将其分别累加至物品i上次运算的结果中;在遍历完所有其他用户后,可以逐个的对每个物品对应的两个累加结果∑w*r、Σ|w|进行除法运算,从而得到该物品的预测值。

公式9用于Item-based CF以累加方式计算物品预测值;

公式10用于Item-based CF以加权累加平均方式计算物品预测值;

Item-based CF在利用公式10对指定用户u进行预测值计算时,会逐个的遍历该用户评价过的每个物品i,对于物品i邻域集合中的每个其他物品j,算法会计算wij*rui、|wij|,然后将其分别累加至物品j上次运算的结果中;在遍历完所有评价过的物品后,可以将每个其他物品对应的两个累加结果∑w*r、∑|w|进行除法运算,从而得到该物品的预测值。

公式11用于SlopeOne以求和累加平均方式计算物品预测值;

SlopeOne在利用公式11对指定用户u进行预测值计算时,会逐个的遍历该用户评价过的每个物品i,对于每个与物品i存在共有分量(交集)的其他物品j,算法会计算wij+rui、1(wij代表物品i、j之间的平均差异度),然后将其分别累加至物品j上次运算的结果中;在遍历完所有评价过的物品后,可以将每个其他物品对应的两个累加结果∑w+r、∑1进行除法运算,从而得到该物品的预测值。

图2是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器的整体结构30000以及与宿主CPU 10000、主存20000之间连接的示意图:基于邻域模型协同过滤推荐算法的硬件加速器,主要包括训练加速器31000和预测加速器32000。

结构31000为硬件加速器的训练加速器部分,主要包括一个控制单元31100,多个执行单元31200,多个DMA 33000,其中,DMA与执行单元数量相同,并一一对应。

结构31100为训练加速器的控制单元,内置有用于存储用户编写的训练加速器指令程序的指令缓存、程序计数器(Program Counter,简称为“PC”)、用于记录向量长度的寄存器、用于记录每重循环指令对应剩余循环次数的寄存器组,用于在宿主CPU的控制下,读入训练加速器指令程序,依次执行程序中的每条指令,控制所有执行单元执行指令对应的功能操作。

图3是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器部分执行单元31200的结构示意图,其中黑色细线代表了控制总线,白色粗线代表了数据总线;执行单元31200内部包含控制总线互连结构31260、缓存模块31250、输入模块31210、输出模块31220、累加模块31230、运算模块31240,控制单元31000通过控制总线互联结构31260与其他模块通过控制总线相连;在控制单元31000的控制下:输入模块31210将DMA 33000中的向量数据读入至缓存模块;累加模块31230对缓存模块中的两个向量进行计算,得到计算某种相似度或平均差异度时所需的若干标量信息,并将这些标量信息写回至缓存模块;运算模块31240利用缓存模块中的标量信息计算某种相似度或平均差异度,并将计算结果写入至缓存模块;输出模块31220将缓存模块任意标量或向量数据写回至DMA内部缓存。

训练加速器执行单元缓存模块31250,包含向量缓存VectorX、VectorY,标量缓存Nxy、Sx、Sy、Sx2、Sy2、Sxy、Sx-y、S(x-y)2、result;对于大多公开数据集,如MovieLens、Netflix,其评分值往往都是介于0~5之间的整数,或是再多出0.5的小数部分,如2.5、4.5等,为了节省存储资源的使用,向量缓存采用定点数来保存输入的评分向量,能够满足绝大部分数据集的需要;对于标量缓存,为了保证累加运算后的精度,其采用32位IEEE 754标准的float型浮点数。

训练加速器执行单元输入模块31210,用来以流的形式依次从DMA33000中获取两个向量信息,并分别写至缓存模块31250的VectorX、VectorY;对于大多数的公开数据集和推荐系统,对应的用户-评分矩阵往往极其稀疏,每条向量仅含有较少的有效数据,因此输入模块按照{有效评分数目、(用户/物品编号,评分)、(用户/物品编号,评分)…(用户/物品编号,评分)}的格式接受输入向量,输入评分填写至向量缓存对应的编号位置上,对于未传送评分的编号,其评分值为零,类似于压缩的输入向量在向量缓存中展开的过程;值得注意的是,接收完第一个向量x或第二个向量y后,它们对应Nx与Ny就已经填写至标量缓存的对应位置。此外,在传输完向量x,传输向量y时,可以借助流水线技术,一边传输一边判断向量y传入的分量是否在向量x中存在(非零),从而既得到Nxy又避免了传输性能的损失。

训练加速器执行单元输出模块31220,用来将缓存模块中的数据传送至DMA 33000,然后DMA 33000再将这些数据写回至DDR内存的对应位置;输出模块往往写回相似度/平均差异度计算结果result,但它也具备多种的功能,能够输出特定向量、特定标量或者所有标量,这些功能可以通过具体的指令来进行调用。

图4是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器部分执行单元累加模块31230的结构示意图,主要由三部分构成,既多功能运算单元31231、临时缓存31232、硬件累加树31233,用来对缓存模块31250中的两个输入向量进行运算累加,并将累加后的结果写回至缓存模块相应标量缓存;某些相似度标准只需计算一个标量既可完成运算,累加模块仅需调用一次,对于如皮尔逊等的相似度标准,需要得到多个标量结果才能进行运算,因此要反复多次调用累加模块。

多功能运算单元31231内部含有多个计算部件PE,每个PE的结构如图5所示,PE根据指令执行对应计算,使能相应的运算器件,并通过多路复用器将结果写至临时缓存31232对应位置;PE每次对两个输入向量共同存在评分的分量按照指令执行相应运算,只要两个分量有一个评分内容为空,则PE不会进行计算,直接生成结果0,这一点在图中没有反映;对于有N个PE的多功能运算单元,若向量的长度为4N,那么第i个PE,其负责对第i、i+N、i+2N、i+3N分量进行运算;某个分量计算完成后,PE会将计算结果写至临时缓存的对应位置,然后开始对下一个分量进行计算,当下个分量计算完成后,临时缓存中的分量结果已经被硬件累加树31233取走,PE可将新的结果直接覆盖,即流水的计算方式。

临时缓存31232介于多功能计算单元和累加树之间,其大小与多功能计算单元中PE的数目相同,呈一一对应关系;临时缓存每个单元存放定点数类型,由于经过了PE的计算,为了保证精度,该定点数相比缓存模块31250中向量的定点数有着更宽的整数位数和小数位数。

硬件累加树31233含有多层,每层有多个加法器,其中第一层加法器的数目是临时缓存31232大小的1/2,能够并行的对临时缓存中的计算结果累加求和,并将得到的结果根据指令写回至缓存模块31250相应标量缓存;硬件累加树自身采用了流水线技术,每层加法器之间存在内部缓存,这点在图中没有表现出来;为了在保证累加精度的同时降低硬件资源开销,硬件累加树采用了“分层定点数”的设计,每层加法器支持的定点数精度各不相同,定点数位宽与精度随着层数的提高而提升,和胖树的结构较为相似。

图6是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器运算模块31240的结构示意图,用于利用缓存模块31250中存放的标量信息执行最终的相似度计算过程;内部主要有六个计算单元和一个多路复用器结构,六个计算单元分别对应杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数以及SlopeOne算法训练阶段对应公式的最后计算过程,为保证结果精度,所有计算单元均采用浮点数计算模式;能够根据指令来使能相应的计算单元,然后通过多路复用器将选择出计算结果,并将该结果写回至缓冲模块的标量缓存result。

训练加速器提供了一套类似汇编指令的指令集合,用户通过对不同的指令进行组合,形成指令程序,并将其传入训练加速器内,从而让加速器完成指定的功能操作;可以分为输入指令、输出指令、累加指令、运算指令、循环指令五类。

表1

表1是训练加速器输入指令,用于控制输入模块读取DMA内部缓存中的数据,将其写入至指令操作数对应的控制单元寄存器或缓存模块中的向量缓存;共三条,均为都为一操作数指令,分别用于读取向量长度或某重循环指令的循环次数,读取一条向量数据,边读取一条向量数据边进行计算;操作数标明了写入的寄存器或缓存,例如,LOAD_VECTOR VectorX表示将向量写至缓存模块向量缓存VectorX。

表2

表2是训练加速器输出指令,用于控制输出模块将指令操作数对应的缓存模块中的标量或向量数据写回至DMA内部缓存,共有两条,分别用于写回标量数据,写回向量数据,均为一操作数指令;操作数标明了具体的缓存。

表3

表3是训练加速器累加指令,用于控制累加模块对存放在缓存模块中的两条向量进行计算,得到指令对应的相似度或平均差异度在计算时所需的若干标量信息,并将这些标量信息写入至缓存模块,共有四条,分别用于欧几里德距离、余弦相似度、皮尔逊相关系数、平均差异度,均为无操作数指令,有着固定的写入位置;由于在输入时已经获取了Nx、Ny、Nxy信息,因此无需对杰卡德相似系数与公式2对应余弦相似度标准设计累加指令。

表4

表4是训练加速器运算指令,用于控制运算模块利用存放在缓存模块中的若干标量信息计算指令对应的相似度或平均差异度,并将计算结果写入至缓存模块标量缓存result,共有六条,分别用于杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度,均为无操作数指令。

表5

表5是训练加速器循环指令,用于控制单元对循环指令标记范围内的其他指令执行循环操作,包含循环开始标记与循环结束标记,共有三对,分别用于一重循环、二重循环、三重循环,对应的循环次数记录在控制单元的相关寄存器中,由输入指令负责写入。

图7是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器运作方式的整体流程10000示意图,该流程包括:

S11000,根据选用推荐算法,确定向量类型与长度:User-based CF算法需要计算用户向量之间的相似度,Item-based CF算法需要计算物品向量之间的相似度,SlopeOne算法需要计算物品向量之间的平均差异度,用户向量长度等于物品数量,记录了某用户对所有物品的评价或行为,物品向量长度等于用户数量,记录了所有用户对某物品的评价或行为;

S12000,根据向量类型与长度、选用数据集,确定向量数量;

S13000,根据向量数量、执行单元数量,按照执行单元数量将所有向量均分为多块,并将每块分配给每个执行单元处理;

S14000,根据选用的推荐算法、向量类型与长度、向量数量、分配给每个执行单元的向量数量、相似度标准或平均差异度,编写训练加速器指令程序,并将指令程序传入至控制单元指令缓存;

S15000,宿主CPU将指令程序传入至控制单元指令缓存,组织分配给每个执行单元的向量数据,使能所有DMA发起数据传输,每个DM A将相应的控制信息与向量数据从主存写入至DMA内部缓存;

S16000,控制单元以单指令流多数据流的方式开始执行每条指令;

S17000,控制单元控制所有执行单元并行同步的执行指令对应的操作:依次处理所分配的每条向量,从DMA内部缓存中读入该向量并写入至缓存模块,依次从DMA中读入每条其他向量并写入至缓存模块,根据指令对应的相似度或平均差异度对两条向量进行计算,得到所有相关的标量信息并写入至缓存模块,利用标量信息计算两条向量之间的相似度或平均差异度,将计算结果写入至缓存模块,将缓存模块中的相似度或平均差异度计算结果写回至DMA内部缓存;

S18000,训练加速器处理完分配的所有向量后,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的所有向量相似度或平局差异度计算结果写回至主存。

图8是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器计算向量之间杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度的方法的无需分片处理情况下的指令实现对应的训练加速器执行流程的示意图,该流程对应图7中的S17000,是流程S17000在无需分片处理情况下的一种执行方式。

由于训练加速器执行单元缓存模块的向量缓存存储容量有限,在向量长度超过了该上限时,无法将一条向量全部存储在向量缓存当中,因此,需要首先对向量进行分片处理,将每条向量按照该上限大小划分为若干个片段,然后执行单元逐个的对从DMA内部缓存读入的每对向量片段进行处理;训练加速器支持两种分片模式,既简单分片模式和数据本地化分片模式。

如果某一指定向量要与N个其他向量之间进行相似度计算工作,对于长度为L的向量,如果训练加速器长度上限为S,则向量共有片:

图9是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器计算向量之间杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度的方法的一种分片处理方式的示意图;该种方式对应简单分片模式,在该模式下,两个输入向量的两个对应分片依次传入硬件进行运算累加,然后将该结果累加至标量集合中。当所有分片都被处理,标量集合中的值就是最终的运算累加结果,输出模块就可以进行最后的计算,其总共需要传输分片2FN次。

图10是根据图9描述分片处理方式的指令实现对应的训练加速器执行流程示意图,该流程对应图7中的S17000,是流程S17000在简单分片模式处理情况下的一种执行方式。

图11是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器训练加速器计算向量之间杰卡德相似系数、欧几里德距离、两种余弦相似度、皮尔逊相关系数、平均差异度的方法的另一种分片处理方式的示意图;该种方式对应数据本地化分片模式,在该模式下,指定输入向量的每个分片分别与其他N个向量的对应分片执行运算累加,接着将标量集合中的对应结果传送回宿主CPU,宿主CPU负责暂存这些累加结果,然后加速器再对下一个分片执行同样的计算过程;其中,宿主CPU存储了指定向量与其他向量之间运算累加后的结果,最后相似度计算的过程由宿主CPU完成,相当于将相似度计算的前半段运算累加过程迁移至加速器,后半段最终计算仍由宿主CPU负责;整个过程需要传输分片F(N+1)次,相比简单分片模式,能够降低将近一半的传输开销次数。

图12是根据图11描述分片处理方式的指令实现对应的训练加速器执行流程的示意图,该流程对应图7中的S17000,是流程S17000在数据本地化分片模式处理情况下的一种执行方式。

结构32000为基于邻域模型协同过滤推荐算法的硬件加速器预测加速器部分,主要包括一个控制总线互连结构32100,多个执行单元32200,多个DMA33000,DMA与执行单元数量相同,并呈现一一对应关系。

控制总线互联结构32100通过控制总线将宿主CPU与每个DMA和每个执行单元相连,仅起到连接作用。

图13是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器部分执行单元32200的结构示意图,内部包含控制模块、缓存模块、输入模块、输出模块;控制模块32210内置有用于存储用户编写的预测加速器指令程序的指令缓存、PC、用于记录向量长度的寄存器、用于记录每重循环指令对应剩余循环次数的寄存器组,用于在宿主CPU的控制下,读入预测加速器指令程序,依次执行程序中的每条指令,控制其他模块执行指令对应的功能操作:输入模块32220从DMA 33000内部缓存中读取控制信息、标量数据或向量数据,将控制信息写入至控制模块32210相应寄存器,将标量数据写入至缓存模块32240相应缓存,对标量和向量数据进行计算,并将计算结果累加至缓存模块32240相应缓存;输出模块32230利用缓存模块32240中的累加结果计算物品的预测值,并将计算结果写回至DMA33000内部缓存。

缓存模块32240包含了两个向量缓存VectorX、VectorY,一个标量缓存Scalar,无论是向量还是标量都采用32为IEEE 754标准的float型浮点数存储;若采用公式8、10、11计算物品预测值,VectorX与VectorY向量缓存中每一个偏移量为i的两个分量分别存储了编号为i的物品在相应公式分子对应的运算累加和以及分母对应的绝对值累加和,若采用公式7、9计算物品预测值,VectorX的每个分量i存储了物品i的相似度累加和,VectorY的每个分量i则恒为常量1;标量Scalar在User-based CF存储了某个传入用户向量与指定用户之间的相似度值,在Item-based CF和SlopeOne中则存储了指定用户的某个曾经评价过的物品的具体评分值。

User-based CF在利用公式8进行预测值计算时,对于指定用户u,执行单元32200在会逐个处理该用户邻域中的每个其他用户v;对于每个邻域用户,执行单元32200首先读取指定用户u、v之间的相似度值wuv并将其保存至Scalar中,然后再读取用户v的评分向量;输入模块32220在读取用户评分向量时采用了边读边计算的流水线的技术,既在获取物品i的评分后,对应的wuv*rvi、|wuv|会被分别累加到VectorX、VectorY的相应位置上;在所有邻域用户对应的相似度值以及评分向量读取并累加完成之后,执行单元32200既可以通知输出模块32230进行最后预测值的计算和写回过程;需要注意的是,用户的评分向量不会保存在执行单元32200中,其每个评分在完成计算后既可丢弃。

Item-based CF与SlopeOne在利用公式10、11进行预测值计算时,执行单元32200会逐个处理指定用户u评价过的每个物品;对于每个评价的物品j,执行单元32200首先读取用户u对该物品j的评分值ruj并将其保存至Scalar中,然后再读取物品j的对应物品邻域的相似度/平均差异度向量;相似度/平均差异度向量保存了该物品邻域中的每个其他物品与物品j之间的相似度/平均差异度值;输入模块32220按照{邻域物品数目、(物品编号,相似度值/平均差异值)、(物品编号,相似度值/平均差异值)…(用户/物品编号,相似度值/平均差异值)}的格式将其读入;此外,输入模块32220在相似度/平均差异度向量时同样采用了边读边计算的流水线的技术,既在获取物品i的相似度值/平均差异值后,对应的wji*ruj、|wji|(公式10)或wji+ruj、1(公式11)会被分别累加到VectorX、VectorY的相应位置上;在用户u所有评价过的物品的评分值及相似度/平均差异度向量读取并累加完成后,执行单元32200既可以通知输出模块32230进行最后预测值的计算和写回过程;值得注意的是,相似度值/平均差异值向量同样不会保存在执行单元32200中,其每个分量值在完成计算后既可丢弃。

预测加速器也同样提供了一套类似汇编指令的指令集合,用户通过对不同的指令进行组合,形成指令程序,并将其传入硬件加速器内,从而让预测加速器完成指定的功能操作;相比训练加速器,预测加速器结构较为简单,对应指令集合中的指令分为输入指令、输出指令、循环指令三类。

表6

表6是预测加速器输入指令,用于控制输入模块32220读取DMA 33000内部缓存中的控制信息、标量数据或向量数据,将控制信息写入至控制模块32210相应寄存器,将标量数据写入至缓存模块32240相应缓存,对标量和向量数据进行计算,并将计算结果累加至缓存模块32240相应缓存;共有六条,分别用于读取向量长度、某重循环指令的循环次数控制信息以及某对用户的相似度、某用户对某物品的评分标量数据,读取用户向量并进行物品累加计算,读取用户向量并进行物品加权累加计算,读取物品相似度向量并进行物品累加计算,读取物品相似度向量并进行物品加权累加计算,读取物品平均差异度向量并进行物品求和累加计算;其中读取控制信息、标量信息的指令为一操作数指令,其余均为无操作数指令。

表7

表7是预测加速器输出指令,用于输出模块32230对缓存模块32240中的累加结果计算物品的预测值,并将计算结果写回至DMA 33000内部缓存;共有两条,分别用于直接写回缓存模块32230中的向量数据,计算并写回缓存模块32230中的向量数据,均为无操作数指令。

表8

表8是预测加速器循环指令,用于控制模块32210对循环指令标记范围内的其他指令执行循环操作,包含循环开始标记与循环结束标记,共有三对,分别用于一重循环、二重循环、三重循环,对应的循环次数记录在控制模块32210的相关寄存器中,由输入指令负责写入。

图14是根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器运作方式的整体流程20000示意图,该流程包括:

S21000,根据选用推荐算法,确定向量类型与长度:User-based CF算法利用用户向量,Item-based CF算法利用物品相似度向量,SlopeOne算法利用物品平局差异度向量,物品相似度向量长度等于物品数量,记录了某物品与其他所有物品之间的相似度,物品平均差异度向量长度等于物品数量,记录了某物品与其他所有物品之间的平均差异度;

S22000,根据选用推荐算法,确定物品预测值计算方式:User-based CF算法、Item-based CF算法可采用累加、加权累加平均,SlopeOne算法可采用求和累加平均;

S23000,根据选用数据集,确定需要执行推荐任务的用户数量;

S24000,根据用户数量、执行单元数量,按照执行单元数量将所有用户均分为多块,并将每块中的用户分配给每个执行单元处理;

S25000,根据选用的推荐算法、计算方式、数据集、向量类型与长度、分配给每个执行单元的用户数量,编写预测加速器指令程序,并将指令程序传入至每个执行单元缓存模块中的指令缓存;

S26000,宿主CPU通过控制总线互连结构控制所有DMA设备同时发起数据传输,DMA将所有控制信息、标量数据、向量数据从主存读入至DMA内部缓存;

S27000,所有执行单元控制模块开始以多指令流多数据流的方式依次执行每条指令;

S28000,每个控制模块控制该执行单元内的其他模块执行指令对应的操作:依次处理所分配的每个用户,从DMA内部缓存中读入该用户的相关标量数据和向量数据,对向量数据涉及到的每个物品进行计算,并将计算结果累加至缓存模块对应缓存,在处理完该用户的所有标量数据和向量数据后,选择性的对缓存模块中的数据进行除法运算,并将所有运算结果写回DMA内部缓存;

S29000,处理完所有分配的所有用户后,宿主CPU通过控制单元控制所有DMA设备发起数据传输,将DMA内部缓存中的物品预测值结果写回至主存。

图15根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器采用累加方式、加权累加平均方式、求和累加平均方式计算物品预测值的无需分片处理情况下指令实现对应的预测加速器执行单元执行流程示意图;该流程对应图14中的S28000,是流程S28000在无需分片处理情况下的一种执行方式。

由于预测加速器执行单元缓存模块中的向量缓存的分量与物品呈一一对应的关系,因此如果物品的总数超过了向量缓存的上限,那么预测加速器同样需要以分片的方式处理。

如果物品数目为Ni,预测加速器支持的上限为S,则需要分为片。预测加速器仅支持一种分片模式,既简单分片处理模式;在运行时,预测加速器执行单元逐一的对每一分片中的涉及到的物品进行预测,既按照物品标号为0~S-1,S~2S-1,……,(F-1)*S-1~L-1的顺序进行。

对于User-based CF,预测加速器执行单元在对某一指定用户u执行预测时,会逐一的对每个分片对应的物品进行预测;对于每个分片f,执行单元利用到了用户u的邻域集合中每个其他用户v的信息,既执行单元输入模块需要读取用户u、v之间相似度wuv,以及用户v评价过的并且处在分片f对应编号范围内的物品评分向量;当所有用户邻域信息读取并计算完成后,执行单元输出模块将分片f对应的物品区间的预测值写回DMA中,然后开始对下个分片执行预测计算。

对于Item-based CF以及SlopeOne,预测加速器执行单元在对某一指定用户u执行预测时,同样会逐一的对每个分片对应的物品进行预测;对于每个分片f,执行单元输入模块需要读取用户u的每个评价过的物品i的评分rui、物品i的处于分片f对应编号范围内的邻域物品的相似度/平均差异度向量;当所有评价过的物品读取并计算完成后,执行单元输出模块将分片f对应的物品区间的预测值写回DMA中,然后开始对下个分片执行预测计算。

图16根据本发明实施例的基于邻域模型的协同过滤推荐算法硬件加速器预测加速器部分采用累加方式、加权累加平均方式、求和累加平均方式对物品计算预测值的方法的一种分片处理方式的指令实现对应的预测加速器执行流程示意程图,该流程对应图14中的S28000,是流程S28000在简单分片模式处理情况下的一种执行方式。

结构33000为DMA设备,用于训练加速器部分及预测加速器部分,在宿主CPU的控制下,执行数据传输工作:读取主存中的数据并写入至DMA内部缓存;读取DMA内部缓存中的数据并写回至主存。

结构34100为宿主CPU与训练加速器部分、预测加速器部分相连的控制总线;结构34200为训练加速器部分、预测加速器部分内部单元相连所用的控制总线;

结构35100为宿主CPU与主存储器之间相连的数据总线;结构35200为DMA与主存储器之间相连的数据总线;结构35300为DMA与训练加速器部分或预测加速器部分执行单元相连的数据总线;

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等,例如,具体可以是前述设备中的处理器)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1