本發(fā)明實施例涉及計算機,更具體地,涉及用于處理超復數(shù)的方法和裝置。
背景技術(shù):
1、在工程、科學和物理等技術(shù)領域中有三類廣泛使用的數(shù):實數(shù)、復數(shù)和對偶數(shù)。復數(shù)是僅次于實數(shù)的第二類常見數(shù),近年來在神經(jīng)網(wǎng)絡中備受青睞。復數(shù)可以用實部和虛部表示,與實值神經(jīng)網(wǎng)絡(real-valued?neural?network,rvnn)相比,復值神經(jīng)網(wǎng)絡(complex-valued?neural?network,cvnn)具有更好的泛化特性、更快的學習速度和更高的魯棒性。對偶數(shù)也包括兩個部分,即實部和對偶部,與復數(shù)相比具有不同的特性,這使其特別適用于神經(jīng)網(wǎng)絡。通過對偶數(shù)能夠?qū)崿F(xiàn)自動計算函數(shù)的導數(shù),這在深度學習和神經(jīng)網(wǎng)絡訓練方面具有顯著優(yōu)勢。與cvnn和rvnn相比,對偶值神經(jīng)網(wǎng)絡(dual-valued?neuralnetwork,dvnn)已表明可以實現(xiàn)更高的平均精度(average?precision,ap)。
2、但是,到目前為止,大多數(shù)計算機只處理實數(shù),當它們需要處理復數(shù)或?qū)ε紨?shù)時,通過使用兩個實數(shù)來模擬這類數(shù)的算術(shù)運算。這種模擬降低了處理速度,并且增加了功耗。復數(shù)或?qū)ε紨?shù)的乘法或卷積在這些方面尤其昂貴。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供了一種用于處理超復數(shù)的方法,所述方法能夠提高處理速度和硬件資源的利用率,并降低功耗。
2、根據(jù)第一方面,提供了一種用于處理超復數(shù)的方法,所述方法包括:
3、接收第一指令,其中,所述第一指令用于指示運算,所述運算包括讀操作、寫操作或算術(shù)運算;
4、響應于所述第一指令,對包括至少兩個分量的運算數(shù)執(zhí)行所述運算,其中,所述至少兩個分量的組合大小小于或等于本地中央處理器(central?processing?unit,cpu)數(shù)據(jù)字的大小,并且在執(zhí)行所述運算時,所述運算數(shù)被視為包括所述至少兩個分量的一個復合數(shù)。
5、根據(jù)本技術(shù)提出的方案,當對包括至少兩個分量的數(shù)執(zhí)行運算時,包括至少兩個分量的數(shù)被視為包括至少兩個分量的一個復合數(shù)。這些數(shù)的復合表示使得能夠使用一條單指令來訪問這些數(shù),并且該指令直接對至少兩個分量執(zhí)行運算。與使用實數(shù)模擬的這些數(shù)的運算相比,所提出的方案獲得的性能比模擬的性能更高。
6、此外,由于指令更少,相比通過實數(shù)進行模擬,所提出的方案使用的可執(zhí)行代碼更小。此外,由于對相同算法執(zhí)行的指令更少,因此,相比通過實數(shù)進行模擬,實現(xiàn)了更低的功耗和更快的處理速度。
7、此外,本技術(shù)支持根據(jù)現(xiàn)有的或少量附加的硬件資源對多類數(shù)執(zhí)行運算。因此,硬件資源的利用率提高。
8、在所述第一方面的一實施例中,所述運算數(shù)包括對偶數(shù),所述對偶數(shù)由兩個分量組成,其中,所述兩個分量中的一個分量為實部,另一個分量為對偶部,所述兩個分量的大小相同,并且所述兩個分量中的每個分量為所述本地cpu數(shù)據(jù)字的所述大小的一半。
9、在本實施例中,支持對偶數(shù)的讀寫和算術(shù)運算等運算,尤其是對偶數(shù)的乘法/卷積的硬件實現(xiàn)方式,本技術(shù)可以獲取如第一方面所述的更好的性能。與使用實數(shù)模擬的乘法/卷積相比,本技術(shù)提出的對偶數(shù)的乘法/卷積速度更快,所需的能量更少。
10、在所述第一方面的一實施例中,所述方法應用于單指令單數(shù)據(jù)(single-instruction-single-data,sisd)型算術(shù)邏輯單元(arithmetic?logic?unit,alu);所述對偶數(shù)的所述兩個分量存儲在一個項中,所述項占用所述本地cpu數(shù)據(jù)字的空間。
11、在本實施例中,對偶數(shù)的實部和對偶部存儲在一個項中,使對偶數(shù)的表示更加緊湊,減小了對偶數(shù)的存儲空間。此外,復數(shù)的實部和虛部的存儲方式與對偶數(shù)相同,將實現(xiàn)相同的技術(shù)效果。
12、在所述第一方面的一實施例中,所述方法應用于單指令多數(shù)據(jù)(single-instruction-multiple-data,simd)型或多指令多數(shù)據(jù)(multiple-instruction-multiple-data,mimd)型alu;所述對偶數(shù)的所述兩個分量的存儲方式為所述兩個分量在存儲設備中彼此相鄰。
13、在本實施例中,對偶數(shù)的分量被分組在一起,使得每個對偶數(shù)的兩個分量相鄰,這對于simd型或mimd型alu中的硬件資源的資源復用非常重要。此外,復數(shù)的分量的分組方式與對偶數(shù)相同,將實現(xiàn)相同的技術(shù)效果。可替代地,simd也稱為“向量處理器”。
14、在所述第一方面的一實施例中,所述算術(shù)運算包括向量乘法;
15、所述響應于所述第一指令,對包括至少兩個分量的運算數(shù)執(zhí)行所述運算包括:
16、響應于所述第一指令,對第一向量和第二向量執(zhí)行所述向量乘法,以獲取第三向量
17、所述運算數(shù)包括所述第一向量和所述第二向量中的對偶數(shù),c[i]=a[i]*b[i],0≤i<n,i和n為正整數(shù)。
18、在本實施例中,本技術(shù)中提到的運算是指對偶值乘法運算,運算數(shù)為需要執(zhí)行對偶值乘法的向量的對偶數(shù)。對偶值乘法復用了用于實值乘法的現(xiàn)有硬件資源,提高了硬件資源的利用率。
19、在所述第一方面的一實施例中,所述運算數(shù)包括復數(shù),所述復數(shù)包括兩個分量,所述兩個分量中的一個分量為實部,另一個分量為虛部,所述兩個分量的大小相同,并且所述兩個分量中的每個分量為所述本地cpu字的所述大小的一半。
20、在本實施例中,本技術(shù)支持復數(shù)的乘法/卷積,相比通過實數(shù)進行模擬,可以實現(xiàn)更快的處理速度等更好的性能。
21、在所述第一方面的一實施例中,所述算術(shù)運算包括乘法運算,所述方法還包括:
22、接收第二指令,其中,所述第二指令用于指示乘法模式,所述乘法模式為復值乘法模式或?qū)ε贾党朔J剑?/p>
23、所述響應于所述第一指令,對包括至少兩個分量的運算數(shù)執(zhí)行所述運算還包括:
24、對運算數(shù)執(zhí)行所述乘法運算,以獲取包括至少一個復合數(shù)的第一結(jié)果,其中,所述乘法運算的模式為所述第二指令指示的所述乘法模式。
25、在本實施例中,本技術(shù)支持對偶數(shù)和復數(shù)的乘法/卷積的組合實現(xiàn)方式,所述組合實現(xiàn)方式在復值乘法中復用用于實數(shù)的硬件資源,并且不增加額外的算術(shù)函數(shù)來實現(xiàn)對對偶值乘法的支持。所提出的方案使對偶值乘法和復值乘法的性能提高到與實值乘法相同的性能。通過這種方式,dvnn和cvnn的推理時間與rvnn相當,但平均精度(averageprecision,ap)更高。由于與模擬相比,需要執(zhí)行的指令更少,因此整體功耗也會降低。
26、在所述第一方面的一實施例中,所述運算數(shù)包括k維的代數(shù)數(shù)或非代數(shù)數(shù),其中,所述k維的數(shù)包括k個分量,所述k個分量的k個大小分別與所述本地cpu數(shù)據(jù)字的k個部分的k個大小一一對應,其中,所述本地cpu數(shù)據(jù)字拆分為所述k個部分或w個部分,其中,w大于k,k和w為正整數(shù)。
27、在所述第一方面的一實施例中,所述k個部分或所述w個部分通過所述本地cpu數(shù)據(jù)字的大小的均勻或不均勻拆分獲取。
28、在所述第一方面的一實施例中,所述本地cpu數(shù)據(jù)字拆分為所述w個部分,所述w個部分中剩余的(w–k)個部分為不使用的部分。
29、根據(jù)這些實施例,本技術(shù)提出的復合表示也適用于一些其它類的數(shù),例如,高階代數(shù)和非代數(shù)系統(tǒng)的數(shù)。
30、根據(jù)第二方面,提供了一種用于處理超復數(shù)的裝置,所述裝置包括:
31、乘法器和至少一個加法器,用于:
32、獲取運算數(shù),其中,每個運算數(shù)的大小小于或等于本地cpu數(shù)據(jù)字的大小,每個運算數(shù)為對偶數(shù);
33、對所述運算數(shù)執(zhí)行乘法運算。
34、在所述第二方面的一實施例中,所述對偶數(shù)由兩個分量組成,其中,所述兩個分量中的一個分量為實部,另一個分量為對偶部,所述兩個分量的大小相同,并且所述兩個分量中的每個分量為所述本地cpu數(shù)據(jù)字的所述大小的一半。
35、在本實施例中,一個運算數(shù)為一個對偶數(shù),并且運算數(shù)的大小小于或等于本地cpu數(shù)據(jù)字的大小。換句話說,在本實施例中,n個運算數(shù)指的是n個對偶數(shù),每個運算數(shù)的大小不大于本地cpu數(shù)據(jù)字的大小。此外,每個運算數(shù)存儲在一個項中,該項占用一個本地cpu數(shù)據(jù)字的空間。
36、在所述第二方面的一實施例中,所述裝置還包括控制邏輯指令解碼器、復用器和至少一個減法器,
37、其中,所述控制邏輯指令解碼器用于:
38、向所述復用器輸出信號,其中,所述信號用于指示乘法模式,所述乘法模式為復值乘法模式或?qū)ε贾党朔J剑?/p>
39、其中,所述復用器用于:
40、選擇所述乘法運算的模式,其中,所述乘法運算的所述模式為所述信號指示的所述乘法模式;
41、其中,所述乘法器、所述至少一個加法器和所述至少一個減法器還用于:
42、根據(jù)所述乘法運算的所述選擇的模式對運算數(shù)執(zhí)行所述乘法運算,其中,如果所述選擇的模式為所述復值乘法模式,則每個運算數(shù)被視為包括兩個分量的復合數(shù),所述兩個分量為實部和虛部;或者,如果所述選擇的模式為所述對偶值乘法模式,則每個運算數(shù)被視為包括所述兩個分量的復合數(shù),所述兩個分量為所述實部和所述對偶部。
43、在所述第二方面的一實施例中,所述裝置包括sisd型alu。
44、根據(jù)第三方面,提供了一種用于處理超復數(shù)的裝置,所述裝置包括:
45、乘法器和至少一個加法器,用于:
46、對第一向量和第二向量執(zhí)行向量乘法,以獲取第三向量
47、其中,所述第一向量、所述第二向量和所述第三向量為對偶數(shù)的向量,每個對偶數(shù)由兩個分量組成,所述兩個分量為實部和對偶部,所述向量中的任一個向量中的一個對偶數(shù)的所述兩個分量的存儲方式為所述兩個分量彼此相鄰;
48、其中,c[i]=a[i]*b[i],0≤i<n,i和n為正整數(shù)。
49、在所述第三方面的一實施例中,所述裝置還包括控制邏輯指令解碼器、復用器和至少一個減法器;
50、其中,所述控制邏輯指令解碼器用于:
51、向所述復用器輸出信號,其中,所述信號用于指示乘法模式,所述乘法模式為復值乘法模式或?qū)ε贾党朔J剑?/p>
52、其中,所述復用器用于:
53、選擇所述向量乘法的模式,其中,所述向量乘法的所述模式為所述信號指示的所述乘法模式;
54、其中,所述乘法器、所述至少一個加法器和所述至少一個減法器還用于:
55、根據(jù)所述向量乘法的所述選擇的模式,對所述第一向量和所述第二向量執(zhí)行所述向量乘法,其中,如果所述選擇的模式為所述對偶值乘法模式,則所述第一向量、所述第二向量和所述第三向量為對偶數(shù)的向量;或者,如果所述選擇的模式為所述復值乘法模式,則所述第一向量、所述第二向量和所述第三向量為復數(shù)的向量,所述向量中的任一個向量中的一個復數(shù)的所述兩個分量的存儲方式為所述兩個分量彼此相鄰。
56、在所述第三方面的一實施例中,所述裝置包括simd型或mimd型alu。
57、與通過實數(shù)進行模擬相比,本技術(shù)的組合對偶值乘法和復值乘法的simd或mimd實現(xiàn)方式實現(xiàn)更高的性能和更低的功耗。此外,與實值乘法、對偶值乘法和復值乘法分別實現(xiàn)的方案相比,組合方案使用更少的硬件資源和更小的芯片面積。這最終使得芯片成本更低且整體方案的擁有成本更低。
58、第二方面或第三方面中的裝置的技術(shù)效果的描述可以參考第一方面中的相應實施例的描述,在此不再贅述。
59、根據(jù)第四方面,提供了一種芯片(或芯片系統(tǒng))。所述芯片具有實現(xiàn)第一方面及第一方面任一實施例中的方法的功能。所述功能可以通過使用硬件結(jié)構(gòu)實現(xiàn)。
60、根據(jù)第五方面,提供了一種芯片(或芯片系統(tǒng))。所述芯片包括乘法器和至少一個加法器。此外,所述芯片可以包括控制邏輯指令解碼器、復用器和至少一個減法器。所述芯片具有實現(xiàn)第一方面及第一方面任一實施例中的方法的功能。所述功能可以通過使用上述硬件結(jié)構(gòu)實現(xiàn)。