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

文档序号:11133867阅读:来源:国知局

技术特征:

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

2.根据权利要求1所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述基于邻域模型的协同过滤的协同过滤推荐算法训练阶段包括:User-based CF算法训练阶段计算所有用户向量之间相似度、Item-based CF算法训练阶段计算所有物品向量之间相似度、SlopeOne算法训练阶段计算所有物品之间平均差异度;

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

3.根据权利要求1所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述控制单元,用于在宿主CPU的控制下,读入训练加速器指令程序,依次执行程序中的每条指令,控制执行单元执行指令对应的功能操作;内置有用于存储用户编写的训练加速器指令程序的指令缓存、程序计数器、用于记录向量长度的寄存器、用于记录每重循环指令对应剩余循环次数的寄存器组。

4.根据权利要求1所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述第一执行单元,包括控制总线互连结构、缓存模块、输入模块、输出模块、累加模块和运算模块,控制单元通过控制总线互联结构与其他模块通过控制总线相连;所述输入模块将DMA中的向量数据读入至缓存模块;所述累加模块对缓存模块中的两个向量进行计算,得到计算相似度或平均差异度时所需的若干标量信息,并将这些标量信息写回至缓存模块;所述运算模块利用缓存模块中的标量信息计算相似度或平均差异度,并将计算结果写入至缓存模块;所述输出模块将缓存模块任意标量或向量数据写回至DMA内部缓存。

5.根据权利要求3所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述训练加速器指令程序由专用指令集组成,所述指令集包括:

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

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

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

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

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

6.根据权利要求1所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,邻域模型的协同过滤推荐算法训练阶段的加速处理包括以下步骤:

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

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

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

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

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

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

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

7.根据权利要求6所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,当DMA内部缓存容量无法存放主存中所有控制信息、向量数据或执行单元写回的所有相似度或平均差异度计算结果时,宿主CPU多次通知DMA发起数据传输,DMA进行多次传输部分数据,直至完成所有数据的传输。

8.根据权利要求6所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述步骤S06中,当向量长度超过执行单元缓存模块的向量缓存存储容量上限时,首先对向量进行分片处理,将每条向量按照该上限大小划分为若干个片段,然后执行单元逐个的对从DMA内部缓存读入的每对向量片段进行处理。

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

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

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

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

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

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

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

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

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

11.根据权利要求1所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述第二执行单元,包括控制模块、缓存模块、输入模块和输出模块,控制模块内置有用于存储用户编写的预测加速器指令程序的指令缓存、程序计数器、用于记录向量长度的寄存器、用于记录每重循环指令对应剩余循环次数的寄存器组;用于在宿主CPU的控制下,读入预测加速器指令程序,依次执行程序中的每条指令,控制其他模块执行指令对应的功能操作:输入模块从DMA内部缓存中读取控制信息、标量数据或向量数据,将控制信息写入至控制模块相应寄存器,将标量数据写入至缓存模块相应缓存,对标量和向量数据进行计算,并将计算结果累加至缓存模块相应缓存;输出模块利用缓存模块中的累加结果计算物品的预测值,并将计算结果写回至DMA内部缓存。

12.根据权利要求11所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述预测加速器指令程序由指令集组成,所述指令集包括:

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

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

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

13.根据权利要求1所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,邻域模型的协同过滤推荐算法预测阶段的加速处理包括以下步骤:

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

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

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

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

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

14.根据权利要求13所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,当DMA内部缓存容量无法存放主存中所有控制信息、向量数据或执行单元写回的所有相似度或平均差异度计算结果时,宿主CPU多次通知DMA发起数据传输,DMA进行多次传输部分数据,直至完成所有数据的传输。

15.根据权利要求13所述的基于邻域模型的协同过滤推荐算法的硬件加速器,其特征在于,所述步骤S34中,当向量长度超过执行单元缓存模块的向量缓存存储容量上限时,首先对向量进行分片处理,将每条向量按照该上限大小划分为若干个片段,然后执行单元逐个的对从DMA内部缓存读入的每对向量片段进行处理。

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

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

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

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

17.一种基于邻域模型的协同过滤推荐算法的硬件加速方法,其特征在于,包括训练阶段加速和预测阶段加速,所述训练阶段通过训练加速器结构加速,包括以下步骤:

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内部缓存中的物品预测值结果写回至主存。

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