本技術(shù)涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種數(shù)論變換加速方法、裝置、介質(zhì)及芯片。
背景技術(shù):
1、隨著人工智能和大數(shù)據(jù)算法的不斷發(fā)展,保護數(shù)據(jù)安全與隱私愈發(fā)重要,使用加密算法對數(shù)據(jù)進行加密是保護數(shù)據(jù)安全的重要方式。目前,主流的隱私計算技術(shù)如全同態(tài)加密(fully?homomorphic?encryption,?fhe)、零知識證明(zero?knowledge?proof,?zkp)等均涉及大量的多項式乘法計算,若直接計算則復(fù)雜度較高,比如兩個長度為n的多項式相乘,其時間復(fù)雜度為o(n2),而數(shù)論變換?(number?theoretic?transform,?ntt)則可以對多項式乘法的計算進行優(yōu)化,使其時間復(fù)雜度降低到o(nlog2n)。其中,ntt是快速傅立葉變換(fast?fourier?transform,?fft)在數(shù)論領(lǐng)域的一個等價形式,其在有限域下進行變換。
2、無論是正向數(shù)論變換(ntt)還是逆向數(shù)論變換(intt),其計算速度均是影響隱私計算效率的重要因素。然而,現(xiàn)有技術(shù)中,無論是正向數(shù)論變換(ntt)還是逆向數(shù)論變換(intt),其在各個運算階段中,均是等待上一運算階段的各個計算結(jié)果全部寫回后,再進行下一運算階段的運算,此種數(shù)論變換的方法速度較慢。
技術(shù)實現(xiàn)思路
1、本技術(shù)的主要目的是提出一種數(shù)論變換加速方法、裝置、介質(zhì)及芯片,旨在解決目前正向及逆向數(shù)論變換中,需要等待上一運算階段的各個計算結(jié)果全部寫回后,才能進行下一運算階段的運算所導(dǎo)致的運算速度較慢的問題。
2、為實現(xiàn)上述目的,本技術(shù)提出一種數(shù)論變換加速方法,包括:
3、確定待處理數(shù)據(jù)在數(shù)論變換中的當前運算階段的各個操作數(shù)是否全部讀?。?/p>
4、若是,則確定延遲時間;所述延遲時間基于目標寫回時間和目標讀取時間確定;所述目標寫回時間為在目標運算階段中各存儲器的目標地址的寫回結(jié)果寫回所需的時間,所述各存儲器用于儲存所述待處理數(shù)據(jù)在各個運算階段中的各個操作數(shù);所述目標讀取時間為任一運算階段中的各個操作數(shù)全部讀取所需的時間;在所述目標運算階段中,所述待處理數(shù)據(jù)在蝶形計算時所劃分的組數(shù)與并行度相同;在所述目標運算階段時,所述各存儲器的目標地址的寫回結(jié)果,為目標運算階段的下一運算階段進行第一次并行蝶形計算時的所需操作數(shù);
5、等待所述延遲時間后開始下一運算階段的數(shù)論變換。
6、在本技術(shù)實施例中,所述目標運算階段基于如下公式得到:;
7、其中,代表目標運算階段,,k代表并行度,所述待處理數(shù)據(jù)在數(shù)論變換時的運算階段序數(shù)從零開始。
8、在本技術(shù)實施例中,述各存儲器的目標地址基于如下公式得到:;
9、其中,代表各存儲器的目標地址,,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
10、在本技術(shù)實施例中,所述各存儲器均具有如下深度的存儲空間:s=;
11、其中,s代表所述各存儲器的存儲深度,,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
12、在本技術(shù)實施例中,基于如下公式確定在目標運算階段中所述各存儲器的目標地址寫回結(jié)果的寫回所需的時間:=+delay;
13、其中,代表在目標運算階段中各存儲器的目標地址寫回結(jié)果寫回所需的時鐘周期數(shù),delay代表所述待處理數(shù)據(jù)在一個蝶形計算中從讀取操作數(shù)至寫回計算結(jié)果所需的時鐘周期數(shù),,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
14、在本技術(shù)實施例中,基于如下公式確定任一運算階段中的各個操作數(shù)全部讀取所需的讀取時間:=;
15、其中,代表各個運算階段中的各個操作數(shù)全部讀取所需的讀取時鐘周期數(shù),,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
16、在本技術(shù)實施例中,基于如下方法確定所述延遲時間,包括:
17、當delay≤時,=0;
18、當delay>時,=delay-;
19、其中,代表延遲時間,delay代表所述待處理數(shù)據(jù)一個蝶形從讀取操作數(shù)至寫回計算結(jié)果所需的時鐘周期數(shù),,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
20、本技術(shù)還提出一種數(shù)論變換加速裝置,包括:
21、判斷模塊,用于確定待處理數(shù)據(jù)在數(shù)論變換中的當前運算階段的各個操作數(shù)是否全部讀??;
22、處理模塊,用于確定延遲時間;所述延遲時間基于目標寫回時間和目標讀取時間確定;所述目標寫回時間為在目標運算階段中各存儲器的目標地址的寫回結(jié)果寫回所需的時間,所述各存儲器用于儲存所述待處理數(shù)據(jù)在各個運算階段中的各個操作數(shù);所述目標讀取時間為任一運算階段中的各個操作數(shù)全部讀取所需的時間;在所述目標運算階段中,所述待處理數(shù)據(jù)在蝶形計算時所劃分的組數(shù)與并行度相同;在所述目標運算階段時,所述各存儲器的目標地址的寫回結(jié)果,為目標運算階段的下一運算階段進行第一次并行蝶形計算時的所需操作數(shù);
23、在當前運算階段的各個操作數(shù)是否全部讀取后,等待所述延遲時間后開始下一運算階段的數(shù)論變換。
24、在本技術(shù)實施例中,所述處理模塊被配置為基于如下公式得到所述目標運算階段:;
25、其中,代表目標運算階段,,k代表并行度,所述待處理數(shù)據(jù)在數(shù)論變換時的運算階段序數(shù)從零開始。
26、在本技術(shù)實施例中,所述處理模塊被配置為基于如下公式得到所述各存儲器的目標地址:;
27、其中,代表各存儲器的目標地址,,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
28、在本技術(shù)實施例中,所述處理模塊被配置按照如下方式為所述各存儲器配置存儲空間:s=;
29、其中,s代表所述各存儲器的存儲深度,,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
30、在本技術(shù)實施例中,所述處理模塊被配置為基于如下公式確定在目標運算階段中所述各存儲器的目標地址寫回結(jié)果的寫回所需的時間:=+delay;
31、其中,代表在目標運算階段中各存儲器的目標地址寫回結(jié)果寫回所需的時鐘周期數(shù),delay代表所述待處理數(shù)據(jù)在一個蝶形計算中從讀取操作數(shù)至寫回計算結(jié)果所需的時鐘周期數(shù),,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
32、在本技術(shù)實施例中,所述處理模塊被配置為基于如下公式確定任一運算階段中的各個操作數(shù)全部讀取所需的讀取時間:=;
33、其中,代表各個運算階段中的各個操作數(shù)全部讀取所需的讀取時鐘周期數(shù),,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
34、在本技術(shù)實施例中,所述處理模塊被配置為基于如下方法確定所述延遲時間:
35、當delay≤時,=0;
36、當delay>時,=delay-;
37、其中,代表延遲時間,delay代表所述待處理數(shù)據(jù)一個蝶形從讀取操作數(shù)至寫回計算結(jié)果所需的時鐘周期數(shù),,n為待處理數(shù)據(jù)的序列長度,,k代表并行度。
38、本技術(shù)實施例還提出一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述任一項所述的方法。
39、本技術(shù)實施例還提出一種芯片,所述芯片包括上述任一實施例所述的數(shù)論變換加速裝置。
40、本技術(shù)實施例中,根據(jù)不同運算階段之間的操作數(shù)和計算結(jié)果的依賴關(guān)系,確定目標運算階段中各存儲器的目標地址對應(yīng)的計算結(jié)果的寫回時間,即目標寫回時間,其中,目標寫回時間為相鄰兩個運算階段中,在保證運算正確的前提下,上一運算階段開始運算后可以開始下一運算階段所需要等待最長的時間,因此根據(jù)該目標寫回時間和目標讀取時間所確定的延遲時間,能夠保證各個運算階段均運算正確;另外,確定延遲時間后,在每個運算階段中各個操作數(shù)全部讀取完畢后,經(jīng)過該延遲時間即可以開始下一運算階段的運算,而無需等到當前運算階段的計算結(jié)果全部寫回,故而能夠提高運算速度。