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

一种多项式处理方法、FPGA端、PC端及存储介质与流程

2022-11-23 18:28:57 来源:中国专利 TAG:

一种多项式处理方法、fpga端、pc端及存储介质
技术领域
1.本发明涉及多项式计算技术领域,具体涉及一种多项式处理方法、fpga端、pc端及存储介质。


背景技术:

2.对于运行于多项式环上的格密码系统而言,在多种密码结构中(如哈希计算,数字签名及同态加密等),大部分的计算量都在多项式乘法上,同时对于多项式乘法的计算中,由于计算密集、数据密集,cpu的计算速度已很难满足各种应用及设计的需求。因此亟待提出一种可以提高多项式计算瓶颈和计算速度的多项式处理方法。


技术实现要素:

3.因此,本发明要解决的技术问题在于克服现有多项式计算方案,cpu的计算速度难以满足实际需求的缺陷,从而提供一种多项式处理方法、fpga端、pc端及存储介质。
4.根据第一方面,本发明实施例公开了一种方法,由fpga端执行,方法包括:
5.获取pc端通过预构建的数据传输通道,发送的用户操作指令,其中,数据传输通道为在fpga端与pc端之间建立的传输通道;
6.对用户操作指令进行解析,得到用户操作指令中的待处理数据,以及与待处理数据对应的处理方式;
7.根据处理方式,确定处理待处理数据的计算单元;
8.利用计算单元对待处理数据进行处理,获取处理结果;
9.将处理结果通过数据传输通道发送至pc端。
10.可选地,数据传输通道为位于pc端的第一数据传输接口,和位于fpga端的第二数据传输接口构建的数据传输通道。
11.可选地,当计算单元包括多个时,利用计算单元对待处理数据进行处理,获取处理结果之前,方法还包括:
12.根据处理方式和每一个计算单元的计算性能,对待处理数据进行分组,得到与每一个计算单元分别对应的待处理子数据,以用于后续每一个计算单元对与自身对应的待处理子数据进行计算。可选地,
13.可选地,当每一个计算单元对与自身对应的待处理子数据进行计算,获取与自身对应的处理子结果后,方法还包括:
14.对所有的处理子结果进行整合,得到处理结果。
15.可选地,当每一个计算单元对与自身对应的待处理子数据进行计算,获取与自身对应的处理子结果后,方法还包括:
16.对所有的处理子结果进行整合,得到处理结果。
17.根据第二方面,本发明实施例还公开了一种多项式处理方法,由pc端执行,方法包括:
18.获取待处理数据和处理方式;
19.基于待处理数据和处理方式,生成用户操作指令,将用户操作指令通过预构建的数据传输通道发送至fpga端,其中,数据传输通道为在fpga端与pc端之间建立的传输通道;
20.获取fpga端通过数据传输通道发送的处理结果。
21.可选地,将用户操作指令发送至fpga端,具体包括:确定待处理数据的内存;
22.若待处理数据的内存小于预设缓冲的内存,则将待处理数据存储到预设缓冲中,以便后续将预设缓冲中存储的待处理数据发送至fpga端。
23.可选地,方法还包括:若待处理数据的内存大于预设缓冲的内存,则将待处理数据分多次存储到预设缓冲中,并在每一次存储后将已存储的数据发送至fpga端。
24.根据第三方面,本发明实施例还公开了一种fpga端,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行如第一方面或第一方面任一可选实施方式的多项式处理方法。
25.根据第四方面,本发明实施例还公开了一种pc端包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行如第二方面或第二方面任一可选实施方式的多项式方法。
26.根据第五方面,本发明实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面或第一方面任一可选实施方式的多项式处理方法。
27.根据第六方面,本发明实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第二方面或第二方面任一可选实施方式的多项式处理方法。
28.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
29.本发明实施例提供的一种多项式处理方法,对pc端通过预构建的数据传输通道发送的用户操作指令进行解析,从而得到用户操作指令中的待处理数据和相应的处理方式。进一步地,根据待处理方式,确定待处理数据的计算单元,利用计算单元对待处理数据进行处理,将得到的待处理结果通过数据传输通道发送至pc端。
30.通过此方式,根据预构建的数据传输通道发送用户操作指令,且用户操作指令中包括了计算方式和待处理数据,通过预构建的数据传输通道,可以将待处理数据快速的发送至fpga端,实现pc端与fpga端的高速传输。进一步地,根据获取到的计算方式和待传输数据,确定待处理数据的计算单元,进而,利用计算单元,对待处理数据进行处理,得到的处理结果。再次通过数据传输通道将处理结果发送至pc端。以此来实现pc端和fpga端的双方的高速计算协同。
附图说明
31.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前
提下,还可以根据这些附图获得其他的附图。
32.图1为本发明实施例中多项式处理方法的一个具体示例的流程图;
33.图2为本发明实施例中多项式处理系统的一个具体示例的示意图;
34.图3为本发明实施例中多项式处理系统的一个具体示例的示意图;
35.图4为本发明实施例中多项式处理系统的一个具体示例的示意图;
36.图5为本发明实施例中多项式处理系统的一个具体示例的示意图;
37.图6为本发明实施例中多项式处理方法的一个具体示例的流程图;
38.图7为本发明实施例中多项式处理方法的一个具体示例的示意图;
39.图8为本发明实施例中多项式处理方法的一个具体示例的流程图;
40.图9为本发明实施例中多项式处理装置的一个具体示例的原理框图;
41.图10为本发明实施例中多项式处理装置的一个具体示例的原理框图;
42.图11为本发明实施例中fpga端的一个具体示例图;
43.图12为本发明实施例中pc端的一个具体示例图。
具体实施方式
44.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
46.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
47.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
48.针对背景技术中所提及的技术问题,本技术实施例提供了一种多项式处理方法,具体参见图1所示,图1为本发明实施例提供的一种多项式处理方法流程示意图。在介绍该方法实施步骤之前,首先说明该方法适用的其中一种多项式处理方法系统。如图2所示,该系统包括fpga端和pc端,其中fpga端与pc端之间由数据传输通道连接,数据传输通道用以完成fpga端与pc端的数据传输,数据传输通道通过位于pc端的第一数据传输接口和位于fpga端的第二数据传输接口进行通道构建。
49.如图3所示,其中pc端包括软件库和驱动,其中软件库可以根据pc端的获取的待处理数据和处理方式,生成相应的用户操作指令。驱动可以根据用户操作指令,将计算数据通过数据传输通道发送至fpga端。如图4所示,fpga端包括至少一个计算处理单元,计算处理
单元用以完成对待处理数据的计算。
50.在一个具体的实施例中,如图5所示,高速接口(第一数据传输接口)位于pc端,pc端包括软件库和驱动;逻辑接口(第二数据传输接口)位于fpga端,其中位于fpga端的数据接收通道和数据发送通道位于fpga端,用于fpga端的待处理数据的接收和处理结果的发送,其中n个计算单元计算用以完成对待处理数据的计算,每一个计算单元支持不同的参数,不同的参数可以是,多项式系数的度数n,每一个系数的宽度k(32位),以及对应的系数模数q等。
51.以上,为多项式处理系统所包括的功能组件,以及各功能组件所执行的功能介绍,具体执行过程可以参见下文。
52.具体的,参见图1所示,多项式处理方法包括如下步骤:
53.步骤101:获取pc端通过预构建的数据传输通道,发送的用户操作指令。
54.其中,数据传输通道为在fpga端与pc端之间建立的传输通道。
55.在一个可选的例子中,数据传输通道为位于pc端的第一数据传输接口,和位于fpga端的第二数据传输接口构建的数据传输通道。
56.步骤102:对用户操作指令进行解析,得到用户操作指令中的待处理数据,以及与待处理数据对应的处理方式。
57.示例性地,用户操作指令为pc端根据待处理数据和对待处理数据相应的处理方式生成的指令。在获取到用户操作指令之后,需要对用户操作指令进行解析,从而得到用户操作指令中的待处理数据和处理方式,用以完成后续对待处理数据的处理操作。本发明实施例对待处理数据和处理方式不作限定,本领域技术人员可以根据实际需要确定。
58.步骤103:根据处理方式,确定处理待处理数据的计算单元。
59.步骤104:利用计算单元对待处理数据进行处理,获取处理结果。
60.示例性地,在得到待处理数据和处理方式后,根据处理方式,在fpga端的计算单元中,选择与处理方式相对应的计算单元,利用该计算单元对待处理数据进行处理。
61.在一个具体的实施例中,待处理数据包括第一系数、第二系数和旋转因子,在一个可选的实施例中,具体参见图6所示,步骤104的执行过程可以但不限于如下实施方式:
62.步骤1041:利用计算单元对第一系数和第二系数进行处理,得到第一结果系数;
63.步骤1042:利用计算单元对第一系数、第二系数和旋转因子进行处理,得到第二结果系数;
64.步骤1043:根据第一结果系数和第二结果系数得到处理结果。
65.示例性地,利用计算单元进行待处理数据进行处理时,如图7所示,每一个计算单元的运算过程都可以看作是一个蝶形运算,其中第一系数、第二系数和旋转因子为蝶形运算的输入数据,寄存输出为蝶形运算的输出数据,每一个计算单元包括可以一个模加法器、模减法器以及模乘法器,用以支持计算单元的计算过程。每一个计算单元还采用了三个双端口bram,用于保存输入数据及旋转因子。
66.其中,计算单元可以是ntt核,也可以是其他计算组件,如多项式乘法,加密,解密或者多项式编码,甚至整个bfv()算法及ckks算法。本发明实施例对计算单元的具体形式和种类不作限定,本领域技术人员可以根据实际需要确定。
67.步骤105:将处理结果通过数据传输通道发送至pc端。
68.示例性地,将计算单元的处理结果再次通过数据传输通道发送至pc端,数据的接收和发送都是通过数据传输通道完成的,数据传输通道可以实现数据的高速传输,因此,可以大大减少数据传输过程中的时间消耗,从而提高的计算效率。
69.可选的,在上述实施例的基础上,当需要的计算单元包括多个时,在上述方法步骤的基础上,利用计算单元对待处理数据进行处理,获取处理结果之前,方法还包括:
70.根据处理方式和每一个计算单元的计算性能,对待处理数据进行分组,得到与每一个计算单元分别对应的待处理子数据,以用于后续每一个计算单元对与自身对应的待处理子数据进行计算。
71.当每一个计算单元对与自身对应的待处理子数据进行计算,获取与自身对应的处理子结果后,对所有的处理子结果进行整合,得到处理结果。
72.示例性地,根据计算单元的性能,对待处理数据进行划分后,得到多个计算单元时,待处理子数据分别在这多个计算单元中计算得到相应的处理子结果,将处理子结果进行整合后发送至pc端,其中计算单元的数量可以根据待处理数据需求及fpga资源数目增减。
73.例如,当待处理数据分别为1024个系数时,需要的计算单元为512个计算单元,其中每个计算单元分别得到两个处理结果,最后整合后同样为1024个系数作为处理结果,当计算单元数量不够的情况下,可以是适应性的增加。
74.与上述方法实施例相对应的,本发明实施例还提供了一种多项式处理方法,具体参见图8所示,该方法由pc端执行,包括:
75.步骤201:获取待处理数据和处理方式。
76.步骤202:基于待处理数据和处理方式,生成用户操作指令,将用户操作指令通过预构建的数据传输通道发送至fpga端。
77.其中,数据传输通道为在fpga端与pc端之间建立的传输通道。
78.在一个具体的实施例中,根据待处理数据的内存大小,将通过预设在pc端的缓冲,将待处理数据经数据传输通道发送至fpga端,具体执行过程可以但不限于如下实施方式:
79.若待处理数据的内存小于预设缓冲的内存,则将待处理数据存储到预设缓冲中,以便后续将预设缓冲中存储的待处理数据发送至fpga端。
80.若待处理数据的内存大于预设缓冲的内存,则将待处理数据分多次存储到预设缓冲中,并在每一次存储后将已存储的数据发送至fpga端。
81.示例性地,在pc端向fpga端发送待处理数据时,会根据待处理数据的内存大小来传输,pc端的预设的内存大小是固定的,当待处理数据的内存不大于预设内存时,pc端可以在待处理数据缓冲到预设内存之后,一次将待处理数据发送完成。但是当待处理数据大于预设内存时,一次是不可以将所有的待处理数据缓冲到预设内存的,只能缓冲一部分发送一部分,直至最后将所有的待处理数据发送至fpga端。
82.步骤203:获取fpga端通过数据传输通道发送的处理结果。
83.示例性地,在将待处理数据传输至fpga端前,根据待处理数据的内存大小,通过预设缓冲将待处理数据依次发送至fpga端,其中待处理数据和处理方式共同构成用户操作指令,用户操作指令的头部数据决定了处理方式。通过上诉方法进一步保证了数据能够在pc端和fpga端相互传输。
84.通过此方式,根据预构建的数据传输通道发送用户操作指令,且用户操作指令中包括了处理方式和待处理数据,通过预构建的数据传输通道,可以将待处理数据快速的发送至fpga端,实现pc端与fpga端的高速传输。进一步地,根据获取到的处理方式和待传输数据,确定待处理数据的计算单元,进而,利用计算单元,对待处理数据进行处理,得到的处理结果。再次通过数据传输通道将处理结果发送至pc端。以此来实现pc端和fpga端的双方的高速计算协同。
85.以上,为本技术所提供的多项式计算方法的具体实施例,下文中则介绍说明本技术所提供的其他实施例,具体参见如下。
86.本发明实施例还公开了一种多项式处理装置,如图9所示,该装置包括:
87.第一获取模块301,用于获取pc端通过预构建的数据传输通道,发送的用户操作指令。其中,数据传输通道为在fpga端与pc端之间建立的传输通道;
88.解析模块302,用于对用户操作指令进行解析,得到用户操作指令中的待处理数据,以及与待处理数据对应的处理方式。
89.确定模块303,用于根据处理方式,确定处理待处理数据的计算单元。
90.处理模块304,用于利用计算单元对待处理数据进行处理,获取处理结果。
91.第一发送模块305,用于将处理结果通过数据传输通道发送至pc端。
92.作为本发明一个可选实施方式,当计算单元包括多个时,利用计算单元对待处理数据进行处理,获取处理结果之前,装置还包括:分组模块,用于根据处理方式和每一个计算单元的计算性能,对待处理数据进行分组,得到与每一个计算单元分别对应的待处理子数据,以用于后续每一个计算单元对与自身对应的待处理子数据进行计算。
93.作为本发明一个可选实施方式,当每一个计算单元对与自身对应的待处理子数据进行计算,获取与自身对应的处理子结果后,装置还包括:整合模块,用于对所有的处理子结果进行整合,得到处理结果
94.作为本发明一个可选实施方式,待处理数据包括第一系数、第二系数和旋转因子,利用计算单元对待处理数据进行处理,获取处理结果,具体包括:第一计算子模块,用于利用计算单元对第一系数和第二系数进行处理,得到第一结果系数;第二计算子模块,用于利用计算单元对第一系数、第二系数和旋转因子进行处理,得到第二结果系数;处理子模块,用于根据第一结果系数和第二结果系数得到处理结果。
95.本发明实施例提供的多项式处理装置中各部件所执行的功能均已在上述任一方法实施例中做了详细的描述,因此这里不再赘述。
96.通过执行此装置,根据预构建的数据传输通道发送用户操作指令,且用户操作指令中包括了处理方式和待处理数据,通过预构建的数据传输通道,可以将待处理数据快速的发送至fpga端,实现pc端与fpga端的高速传输。进一步地,根据获取到的处理方式和待传输数据,确定待处理数据的计算单元,进而,利用计算单元,对待处理数据进行处理,得到的处理结果。再次通过数据传输通道将处理结果发送至pc端。以此来实现pc端和fpga端的双方的高速计算协同。
97.本发明实施例还公开了一种多项式处理装置,由pc端执行,如图10所示,该装置包括:
98.第二获取模块401,用于获取待处理数据和处理方式;
99.第二发送模块402,用于基于待处理数据和处理方式,生成用户操作指令,将用户操作指令通过预构建的数据传输通道发送至fpga端,其中,数据传输通道为在fpga端与pc端之间建立的传输通道;
100.第三获取模块403,用于获取fpga端通过数据传输通道发送的处理结果。
101.作为本发明一个可选实施方式,将用户操作指令发送至fpga端,具体包括:确定待处理数据的内存;第一发送子模块,用于若待处理数据的内存小于预设缓冲的内存,则将待处理数据存储到预设缓冲中,以便后续将预设缓冲中存储的待处理数据发送至fpga端。
102.作为本发明一个可选实施方式,方法还包括:第二发送子模块,用于若待处理数据的内存大于预设缓冲的内存,则将待处理数据分多次存储到预设缓冲中,并在每一次存储后将已存储的数据发送至fpga端。
103.本发明实施例提供的多项式处理装置中各部件所执行的功能均已在上述任一方法实施例中做了详细的描述,因此这里不再赘述。
104.通过执行此装置,pc端根据预构建的数据传输通道发送用户操作指令,且用户操作指令中包括了计算方式和待处理数据,通过预构建的数据传输通道,可以将待处理数据快速的发送至fpga端,实现pc端与fpga端的高速传输。进一步地,获取fpga端根据待处理数据和处理方式反馈的处理结果,大大提高了单一pc端计算的效率,同时通过数据传输通道进行数据的发送和接收,极大的提高了pc端和fpga端的协同。
105.本发明实施例还提供了一种fpga端,如图11所示,该计算机设备可以包括处理器501和存储器502,其中处理器501和存储器502可以通过总线或者其他方式连接,图11中以通过总线连接为例。
106.处理器501可以为中央处理器(central processing unit,cpu)。处理器501还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
107.存储器502作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的多项式处理方法对应的程序指令/模块。处理器501通过运行存储在存储器502中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的多项式处理方法。
108.存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器501所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至处理器501。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
109.一个或者多个模块存储在存储器502中,当被处理器501执行时,执行如图1所示实施例中的多项式处理方法。
110.上述计算机设备具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
111.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
112.本发明实施例还提供了一种pc端,如图12所示,该计算机设备可以包括处理器601和存储器602,其中处理器601和存储器602可以通过总线或者其他方式连接,图12中以通过总线连接为例。
113.处理器601可以为中央处理器(central processing unit,cpu)。处理器601还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
114.存储器602作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的多项式处理方法对应的程序指令/模块。处理器601通过运行存储在存储器602中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的多项式处理方法。
115.存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器601所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至处理器601。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
116.一个或者多个模块存储在存储器602中,当被处理器601执行时,执行如图8所示实施例中的多项式处理方法。
117.上述计算机设备具体细节可以对应参阅图8所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
118.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
119.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
再多了解一些

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

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

相关文献