新四季網

一種用於張量處理器的數據處理方法和相關設備與流程

2024-04-15 02:00:05



1.本技術涉及數據處理技術領域,尤其涉及一種用於張量處理器的數據處理方法、裝置、計算機設備、張量處理器及存儲介質。


背景技術:

2.隨著深度學習的不斷進展,其在圖像處理、模式識別以及語音識別等領域都取得了較多的成果,矩陣轉置是深度學習過重中常見的一種數據數據處理方法。
3.相關技術中,在進行矩陣轉置時,通常是按行依次讀取每個數據元素,並將讀取的數據元素存入矩陣轉置寄存器中,之後,再以列的順序從矩陣轉置寄存器中依次讀取每個數據元素來實現矩陣的轉置。
4.在採用上述方式進行矩陣轉置時,不僅需要較長的轉置時長,而且在數據處理裝置中設置矩陣轉置寄存器也會增加數據處理裝置的生成成本。


技術實現要素:

5.本技術提供一種用於張量處理器的數據處理方法、裝置、計算機設備、張量處理器及存儲介質,能夠提高數據的處理效率。
6.本技術實施例第一方面提供一種用於張量處理器的數據處理方法,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和m個執行模塊連接,所述方法由所述控制模塊執行,所述方法包括:
7.獲取待處理的多個數據元素的第一存儲地址,以生成包括所述第一存儲地址的讀取指令;
8.向所述執行模塊發送所述讀取指令,其中,所述讀取指令用於供所述執行模塊返回按照第一排列順序排列的所述多個數據元素;
9.接收由所述執行模塊返回的所述多個數據元素;
10.確定存儲所述多個數據元素的第二存儲地址;
11.向所述執行模塊發送寫入指令,其中,所述寫入指令包括第二存儲地址,以及按照第一排列順序排列的所述多個數據元素,以供所述執行模塊寫入所述多個數據元素;
12.其中,若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
13.或者,
14.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址;
15.其中,m和n為不小於2的整數,且n小於或等於m。
16.可選地,所述向執行模塊發送讀取指令,包括:
17.若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送所述讀取指令;
18.其中,所述讀取指令,還用於供第n個執行模塊在執行所述讀取指令時或執行所述讀取指令之後,傳輸給第n+1個執行模塊;其中,所述n為小於所述n的正整數;其中,接收到所述讀取命令的n個執行模塊的排列順序為所述第一排列順序。
19.可選地,所述向所述執行模塊發送寫入指令,包括:
20.若所述第二存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊發送所述寫入指令,其中,所述寫入指令包括:所述n個存儲單元所在的所述執行模塊的存儲地址以及按照所述第一排列順序排列的所述多個數據元素。
21.可選地,所述向所述執行模塊發送讀取指令,包括:
22.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊,發送所述讀取指令。
23.可選地,所述向所述執行模塊發送寫入指令,包括:
24.若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送寫入指令;
25.其中,所述寫入指令,還用於供第n個執行模塊執行所述寫入指令時或在執行所述寫入指令之後,傳輸給第n+1個所述執行模塊。
26.本技術實施例第二方面提供一種數據處理方法,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和所述m個執行模塊連接,所述方法由所述執行模塊執行,所述方法包括:
27.接收讀取指令,其中,所述讀取指令包括:第一存儲地址;
28.根據所述第一存儲地址,讀取對應的數據元素;
29.將所述數據元素返回所述控制模塊;其中,讀取的所述數據元素按照第一排列順序返回給所述控制模塊後,用於供所述控制模塊存儲到第二存儲地址;
30.其中,若所述第一存儲地址,指向n個所述執行模塊中各一個存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
31.或者,
32.若所述第一存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址。
33.可選地,所述方法還包括:
34.若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n,在執行所述讀取指令時或執行所述讀取指令之後,將所述讀取指令傳輸給第n+1個執行模塊,其中,所述n為小於或等於所述m的正整數;所述m為所述控制模塊連接的所述執行模塊的總個數。
35.可選地,所述方法還包括:
36.若所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則將所述多個數據元素按照第一排列順序寫入n個存儲單元內。
37.可選地,所述根據所述第一存儲地址,讀取數據元素,包括:
38.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,按照第一排列順序從所述n個存儲單元讀取所述多個數據元素。
39.可選地,所述方法還包括:
40.若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n時,在執行所述寫入指令時或執行所述寫入指令之後,將所述寫入指令傳輸給第n+1個執行模塊。
41.本技術實施例第三方面提供一種用於張量處理器的數據處理裝置,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和m個執行模塊連接,所述裝置包括:
42.生成單元,用於獲取待處理的多個數據元素的第一存儲地址,以生成包括所述第一存儲地址的讀取指令;
43.第一發送單元,用於向所述執行模塊發送所述讀取指令,其中,所述讀取指令用於供所述執行模塊返回按照第一排列順序排列的所述多個數據元素;
44.第一接收單元,用於接收由所述執行模塊返回的所述多個數據元素;
45.確定單元,用於確定存儲所述多個數據元素的第二存儲地址;
46.第二發送單元,向所述執行模塊發送寫入指令,其中,所述寫入指令包括第二存儲地址,以及按照第一排列順序排列的所述多個數據元素,以使得所述執行模塊寫入所述多個數據元素;
47.其中,若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
48.或者,
49.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址;
50.其中,m和n為不小於2的整數,且n小於或等於m。
51.可選地,所述第一發送單元用於:
52.若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送所述讀取指令;
53.其中,所述讀取指令,還用於供第n個執行模塊在執行所述讀取指令時或執行所述讀取指令之後,傳輸給第n+1個執行模塊;其中,所述n為小於所述n的正整數;其中,接收到所述讀取命令的n個執行模塊的排列順序為所述第一排列順序。
54.可選地,所述第二發送單元用於:
55.若所述第二存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊發送寫入指令,其中,所述寫入指令包括:所述n個存儲單元所在的所述執行模塊的存儲地址以及按照所述第一排列順序排列的所述多個數據元素。
56.可選地,所述第一發送單元用於:
57.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊,發送所述讀取指令。
58.可選地,所述第二發送單元用於:
59.若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送寫入指令;
60.其中,所述寫入指令,還用於供第n個執行模塊執行所述寫入指令時或在執行所述寫入指令之後,傳輸給第n+1個所述執行模塊。
61.本技術實施例第四方面提供一種用於張量處理器的數據處理裝置,所述張量處理
器包括控制模塊和m個執行模塊,並且所述控制模塊和m個執行模塊連接,所述裝置包括:
62.第二接收單元,用於接收讀取指令,其中,所述讀取指令包括:第一存儲地址;
63.讀取單元,用於根據所述第一存儲地址,讀取對應的數據元素;
64.返回單元,將所述數據元素返回所述控制模塊;其中,讀取的所述數據元素按照第一排列順序返回給所述控制模塊後,用於供所述控制模塊存儲到第二存儲地址;
65.其中,若所述第一存儲地址,指向n個所述執行模塊中各一個存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
66.或者,
67.若所述第一存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址。
68.可選地,所述裝置還包括:
69.第一傳輸單元,用於若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n,在執行所述讀取指令時或執行所述讀取指令之後,將所述讀取指令傳輸給第n+1個執行模塊,其中,所述n為小於或等於所述m的正整數;所述m為所述控制模塊連接的所述執行模塊的總個數。
70.可選地,所述裝置還包括:
71.寫入單元,用於若所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則將所述多個數據元素按照第一排列順序寫入n個存儲單元內。
72.可選地,所述讀取單元用於:
73.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,按照第一排列順序從所述n個存儲單元讀取多個所述數據元素。
74.可選地,所述裝置還包括:
75.第二傳輸單元,用於若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n時,在執行所述寫入指令時或執行所述寫入指令之後,將所述寫入指令傳輸給第n+1個執行模塊。
76.本技術實施例第五方面提供一種計算機設備,包括:
77.至少一個處理器;以及
78.至少一個存儲器,其上存儲有電腦程式,
79.其中,所述電腦程式在被所述至少一個處理器執行時,使所述至少一個處理器執行上述所述的方法。
80.本技術實施例第六方面提供一種張量處理器,包括計算機設備,所述計算機設備包括至少一個處理器和至少一個存儲器,所述至少一個存儲器存儲有電腦程式,其中,所述電腦程式在被所述至少一個處理器執行時,使所述至少一個處理器執行上述所述的方法。
81.本技術實施例第七方面提供一種非臨時性計算機可讀存儲介質,當所述存儲介質中的指令由計算機的處理器執行時,使得計算機能夠執行上述任一項提供的數據處理方法。
82.本技術實施例提供的技術方案可以包括以下有益效果:
83.在本技術實施例中,通過對張量處理的執行模塊中存儲的數據元素的讀取和寫入
操作,以使存儲在一個執行模塊中的多個數據元素能夠存儲至多個執行模塊的各一個存儲單元中,或將多個執行模塊中各一個存儲單元的數據元素存儲至一個執行模塊的多個存儲單元中,來改變數據元素在執行模塊中的排列方式,也即,實現存儲在執行模塊中的數據元素的轉置,這樣可以在不引入專用的矩陣轉置寄存器的情況下,就能夠實現數據元素的轉置,不僅降低了數據的轉置成本,還提高了數據的轉置效率。
附圖說明
84.此處的附圖被併入說明書中並構成本說明書的一部分,示出了符合本技術的實施例,並與說明書一起用於解釋本技術的原理。
85.圖1是根據一示例性實施例示出的一種用於張量處理器的數據處理方法的流程圖;
86.圖2是根據一示例性實施例示出的一種神經網絡處理方法的結構示意圖;
87.圖3是根據一示例性實施例示出的一種數據處理過程的示意圖;
88.圖4是根據另一示例性實施例示出的一種數據處理過程的示意圖;
89.圖5是根據另一示例性實施例示出的一種用於張量處理器的數據處理方法的流程圖;
90.圖6是根據一示例性實施例示出的一種用於張量處理器的數據處理裝置的結構圖;
91.圖7是根據另一示例性實施例示出的一種用於張量處理器的數據處理裝置的結構圖。
具體實施方式
92.這裡將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本技術相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本技術的一些方面相一致的裝置的例子。
93.參考圖1,圖1為本技術實施例提供的一種用於張量處理器的數據處理方法的流程示意圖,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和m個執行模塊連接,該方法由控制模塊執行。如圖1所示,該方法包括:
94.s101:獲取待處理的多個數據元素的第一存儲地址,以生成包括所述第一存儲地址的讀取指令;
95.s102:向所述執行模塊發送所述讀取指令,其中,所述讀取指令用於供所述執行模塊返回按照第一排列順序排列的所述多個數據元素;
96.s103:接收由所述執行模塊返回的所述多個數據元素;
97.s104:確定存儲所述多個數據元素的第二存儲地址;
98.s105:向所述執行模塊發送寫入指令,其中,所述寫入指令包括第二存儲地址,以及按照第一排列順序排列的所述多個數據元素,以供所述執行模塊寫入所述多個數據元素;
99.其中,若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,
則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
100.或者,
101.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址;
102.其中,m和n為不小於2的整數,且n小於或等於m。
103.本技術實施例中的控制模塊與m個執行模塊通過總線連接,且連接控制模塊與m個執行模塊的總線的類型可以根據實際需要進行選取。
104.示例性地,參考圖2,圖2提供了一種張量處理器(tensor processing unit,tpu)的結構示意圖,該張量處理器包括:控制模塊tiu與m個執行模塊(neural-network process units,npu)。
105.如圖2所示,m個執行模塊通過串行總線串聯在控制模塊的輸入端與輸出端之間。
106.其中,張量處理器中包括的執行模塊的數量可以根據需要進行設定,也即,m的具體數值可以根據實際需要進行設定。
107.例如,與控制模塊連接的執行模塊的數量為32或64。
108.控制模塊可以通過讀取指令從m個執行模塊中的任一執行模塊中讀取數據元素,也可以通過寫入指令向m個執行模塊中的任一執行模塊寫入數據元素。
109.所述多個數據元素可為數組和/或矩陣中的數據元素。示例性地,所述多個數據元素可為張量的數據元素。
110.上述的數據元素可以為存儲在執行模塊中的圖像的像素值、語音數據等,也可以為存儲在執行模塊中的其他數據元素,本技術實施例對此不作限定。
111.當上述的數據元素為圖像的像素值時,可以將一個像素值存儲在執行模塊的一個存儲單元中。
112.示例性地,m個執行模塊中的每個執行模塊還包括:第一指令獲取單元(圖2中的dp_r0)、第一指令執行單元(圖2中的xbar)、第二指令獲取單元(圖2中的dp_w0)、第二指令執行單元(圖2中的dis_w)以及存儲模塊(圖2中的lmem)。
113.其中,第一指令獲取單元,用於接收控制模塊或相鄰的前一個執行模塊發送的讀取指令,或,接收第一執行單元讀取的數據元素,並將讀取的數據元素通過總線傳輸至相鄰的下一個執行模塊。
114.第一指令執行單元,用於接收第一指令獲取單元傳輸的讀取指令,並根據讀取指令中包括的存儲地址,從存儲模塊指示的存儲單元中讀取相應的數據元素,之後,將讀取的數據元素髮送至第一指令獲取單元。
115.第二指令獲取單元,用於接收控制模塊或相鄰的前一個執行模塊發送的寫入指令,並根據寫入指令傳輸至第二指令執行單元。
116.第二指令執行單元,用於接收第二指令獲取單元發送的寫入指令,並根據寫入指令中的存儲地址,將寫入指令中包括的數據元素寫入存儲地址對應的存儲單元內。
117.存儲模塊,包括多個存儲單元,用於存儲數據元素,其中,同一個執行模塊包括的多個存儲單元中的每個存儲單元具有唯一的存儲地址。
118.示例性地,上述的存儲地址可以為物理存儲地址。
119.下述執行模塊讀取數據元素或寫入數據元素的過程由上述的執行模塊中相應的
單元完成,在下述實施例中將不再贅述。
120.基於上述控制模塊與m個執行模塊之間的連接關係,待處理的多個數據元素中的每個數據元素可能存儲在一個執行模塊的n個存儲單元內,還可能存儲在n個執行模塊中的每個執行模塊的一個存儲單元內。
121.因此,控制模塊獲取的第一存儲地址可能為指向一個執行模塊的n個存儲單元的存儲地址,也可能為指向n個執行模塊中各一個存儲單元的存儲地址。
122.當控制模塊獲取的第一存儲地址為指向n個執行模塊的各一個存儲單元的存儲地址時,控制模塊可以從n個執行模塊的各一個存儲單元中讀取數據元素,並將讀取的數據元素存儲至第二存儲地址中,此時的第二存儲地址可以指向一個執行模塊的n個存儲單元的存儲地址。
123.示例性地,參考圖3,控制模塊從第1個執行模塊至第10個執行模塊的第1個存儲單元中讀取數據元素00、10、20、30至90,之後,將讀取的數據元素00、10、20、30至90存儲至第1個執行模塊的第1個存儲單元至第10個存儲單元中。
124.當控制模塊獲取的第一存儲地址為指向一個執行模塊的n個存儲單元的存儲地址時,控制模塊可以從一個執行模塊的n個存儲單元中讀取數據元素,並將讀取的數據元素存儲至第二存儲地址中,此時的第二存儲地址可以指向n個執行模塊中各一個存儲單元的存儲地址。
125.示例性地,參考圖4,控制模塊從第1個執行模塊的10個存儲單元中讀取了數據元素00、10、20、30至90之後,可以將數據元素00存儲至第1個執行模塊的第1個存儲單元中,將數據元素10存儲至第2個執行模塊的第1個存儲單元,以此類推,將數據元素90存儲至第10個執行模塊的第1個存儲單元中。
126.在本技術實施例中,通過對張量處理的執行模塊中存儲的數據元素的讀取和寫入操作,以使存儲在一個執行模塊中的多個數據元素能夠存儲至多個執行模塊的各一個存儲單元中,或將多個執行模塊中各一個存儲單元中的數據元素存儲至一個執行模塊的多個存儲單元中,來改變數據元素在執行模塊中的排列方式,也即,實現存儲在執行模塊中的數據元素的轉置,這樣可以在不引入專用的矩陣轉置寄存器的情況下,就能夠實現數據元素的轉置,不僅降低了數據的轉置成本,還提高了數據的轉置效率。
127.在一種實施例中,所述向執行模塊發送讀取指令,包括:
128.若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送所述讀取指令;
129.其中,所述讀取指令,還用於供第n個執行模塊在執行所述讀取指令時或執行所述讀取指令之後,傳輸給第n+1個執行模塊;其中,所述n為小於所述n的正整數;其中,接收到所述讀取命令的n個執行模塊的排列順序為所述第一排列順序。
130.示例性地,如果m個執行模塊通過一個總線串聯在控制模塊的輸入端與輸出端之間,且第一存儲地址指向n個執行模塊中各一個存儲單元的存儲地址時,控制模塊發送的讀取指令會被與控制模塊的輸出端直接連接的第1個執行模塊接收到。
131.從上述介紹可知,m個執行模塊可以通過總線串聯在控制模塊的輸入端與輸出端之間。因此,在本技術實施例中,將與控制模塊的輸出端直接連接的執行模塊稱為第1個執行模塊,將串聯在第1個執行模塊之後的相鄰執行模塊稱為第2個執行模塊,依次類推,第n+
1個執行模塊,為與第n個執行模塊相鄰且串聯在第n個執行模塊之後的執行模塊。
132.由於第1個執行模塊可能為n個執行模塊中的第一個執行模塊,也可能並非n個執行模塊中的任一執行模塊。
133.當第1個執行模塊為n個執行模塊中的第一執行模塊時,控制模塊發送的讀取指令可供第1個執行模塊從第一存儲地址指向的存儲單元中讀取一個數據元素,並將讀取的數據元素以及讀取指令傳輸至第2個執行模塊。
134.當第1個執行模塊並非n個執行模塊中的任一執行模塊時,控制模塊發送的讀取指令可供第1個執行模塊在接收到該讀取指令之後,將該讀取指令傳輸給第2個執行模塊。
135.需要說明的是,第1個執行模塊可以在接收到讀取指令之後,直接將讀取指令傳輸至第2個執行模塊,也可以在讀取數據元素之後,將讀取的數據元素與讀取指令一次發送至第2個執行模塊。
136.示例性地,在連接控制模塊和m個執行模塊的總線包括命令總線和數據總線時,控制模塊發送至第1個執行模塊的讀取指令可供第1個執行模塊直接傳輸至第2個執行模塊。也即,無論第1個執行模塊是否進行數據元素的讀取,均會在接收到讀取指令之後,通過命令總線直接進行讀取指令的傳輸。
137.如果第1個執行模塊還進行了數據元素的讀取,則可以在讀取數據元素之後,通過數據總線將讀取的數據元素傳輸至第2個執行模塊。
138.基於此,第1個執行模塊向第2個執行模塊傳輸讀取指令的時間,早於向第2個執行模塊傳輸讀取的數據元素的時間,這樣,第2個執行模塊在接收到第1個執行模塊傳輸的數據元素之前,就可以進行數據元素的讀取,這樣可以縮短n個執行模塊讀取數據元素的總時長,提高讀取效率。
139.在另一種實施例中,控制模塊也可以直接向第一存儲地址指向的n個執行模塊發送讀取指令,以供n個執行模塊中的每個執行模塊從第一存儲地址指向的存儲單元中讀取一個數據元素,並將讀取的數據元素以及自身的標識信息發送至控制模塊。
140.基於此,控制模塊可以根據返回數據元素的執行模塊的標識信息,對接收到的多個數據元素進行排序,以使排序後的多個數據元素具有第一排列順序。
141.其中,上述的執行模塊的標識信息可以為執行模塊的編號,也可以為其他的唯一性標識信息。
142.示例性地,當控制模塊確定第一存儲地址指向的執行模塊為第1個執行模塊至第5個執行模塊時,可以向第1個執行模塊至第5個執行模塊發送讀取指令,並接收第1個執行模塊至第5個執行模塊返回的數據元素以及每個執行模塊的編號。
143.基於此,控制模塊可以將接收到的第1個執行模塊發送的數據元素排在第1位,將接收到的第2個執行模塊發送的數據元素排在第2位,以此類推。這樣可以得到具有第一排列順序的5個數據元素。
144.在一種實施例中,所述向所述執行模塊發送寫入指令,包括:
145.若所述第二存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊發送寫入指令,其中,所述寫入指令包括:所述n個存儲單元所在的所述執行模塊的存儲地址以及按照所述第一排列順序排列的多個所述數據元素。
146.示例性地,若控制模塊發送的第一存儲地址指向n個執行模塊中各一個存儲單元
的存儲地址,則控制模塊接收到的具有按照第一排列順序排列的多個數據元素來自n個執行模塊。
147.此時,控制模塊可以為接收到的按照第一排列順序排列的n個數據元素分配一個執行模塊來存儲接收到的n個數據元素,也即,確定的第二存儲地址指向一個執行模塊中的n個存儲單元的存儲地址。
148.控制模塊在確定出第二存儲地址之後,在一種可能的情況下,可以將寫入指令發送至第1個執行模塊。
149.由於第二存儲地址指向的執行模塊的存儲地址可能為第1個執行模塊的存儲地址,也可能不是第1個執行模塊的存儲地址。
150.當第二存儲地址指向的執行模塊的存儲地址為第1個執行模塊的存儲地址時,控制模塊發送的寫入指令可供第1個執行模塊在接收到寫入指令後,將寫入指令攜帶的,按照第一排列順序排列的多個數據元素依次寫入n個存儲單元內。
151.當第二存儲地址指向的執行模塊的存儲地址不是第1個執行模塊的存儲地址時,控制模塊發送的寫入指令可供第1個執行模塊在接收到寫入指令之後,將寫入指令傳輸至第2個執行模塊。
152.第2個執行模塊至第m個執行模塊均重複上述過程,至將寫入指令包括的多個數據元素寫入第m個執行模塊的n個存儲單元中為止。
153.其中,m為小於m的整數。
154.在另一種實施例中,控制模塊在確定出待寫入的多個數據元素的第二存儲地址之後,也可以直接向第二存儲地址指向的執行模塊發送寫入指令,以供接收到該寫入指令的執行模塊將多個數據元素依次寫入n個存儲單元內。
155.下文中以一個具體示例對上述數據的處理過程進行說明:
156.例如,參考圖3,假設控制模塊確定的第一存儲地址指向第1個執行模塊至第10個執行模塊的第1個存儲單元的存儲地址,則向第1個執行模塊至第10個執行模塊發送讀取指令,以供第1個執行模塊從自身的第1個存儲單元中讀取數據元素00,第2個執行模塊從自身的第1個存儲單元中讀取數據元素10,依次類推,第10個執行模塊從自身的第1個存儲單元中讀取一個數據元素90,並將讀取的數據元素00、10、20、30至90返回至控制模塊。
157.基於此,控制模塊可以接收到執行模塊返回的數據元素00、10、20、30至90,之後,可以為該10個數據元素分配一個執行模塊,也即,確定第二存儲地址為指向一個執行模塊的10個存儲單元的存儲地址。
158.假設控制模塊確定的第二存儲地址指向第1個執行模塊的10個存儲單元,則向第1個執行模塊發送寫入指令,以供第1個執行模塊將寫入指令中攜帶的10個數據元素依次寫入10個存儲單元內。
159.其中,讀取指令在第1個執行模塊至第10個執行模塊之間的傳遞方式、第1個執行模塊至第10個執行模塊根據讀取指令讀取數據元素的實現方式,以及向第1個執行模塊的10個存儲單元中寫入10個數據元素的實現方式均可以參考上述實現方式,本技術實施例在此不再贅述。
160.在一種實施例中,所述向所述執行模塊發送讀取指令,包括:
161.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一
個執行模塊,發送所述讀取指令。
162.示例性地,當控制模塊確定待處理的數據元素存儲在一個執行模塊的n個存儲單元中時,則可以確定第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址。
163.基於此,在一種情況下,控制模塊可以向與控制模塊的輸出端直接連接的第1個執行模塊發送讀取指令,由於第1個執行模塊可能為第一存儲地址指向的執行模塊,也可能不是第一存儲地址指向的執行模塊。
164.當第1個執行模塊為第一存儲地址指向的執行模塊時,該讀取指令可供第1個執行模塊從第一存儲地址指向的n個存儲單元中讀取數據元素。
165.當第1個執行模塊不是第一存儲地址指向的執行模塊時,該讀取指令可供第1個執行模塊將接收到的讀取指令傳輸至第2個執行模塊。
166.在另一種情況下,控制模塊可以直接向第一存儲地址指向的執行模塊發送讀取指令,以供該執行模塊能夠從第一存儲地址指向的n個存儲單元中讀取數據元素。
167.在一種實施例中,所述向所述執行模塊發送寫入指令,包括:
168.若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送寫入指令;
169.其中,所述寫入指令,還用於供第n個執行模塊執行所述寫入指令時或在執行所述寫入指令之後,傳輸給第n+1個所述執行模塊。
170.示例性地,當控制模塊確定的第一存儲地址指向一個執行模塊的n個存儲單元的存儲地址時,控制模塊接收到的多個數據元素來自一個執行模塊的n個存儲單元。此時,控制模塊為接收到的多個數據元素確定的第二存儲地址為n個執行模塊中的各一個存儲單元的存儲地址。
171.在一種情況下,控制模塊在確定出第二存儲地址之後,可以將寫入指令發送至與控制模的輸出端直接連接的第1個執行模塊。
172.由於第二存儲地址指向的執行模塊的存儲地址中可能包括第1個執行模塊的存儲地址,也可能不包括第1個執行模塊的存儲地址。
173.當第二存儲地址指向的執行模塊的存儲地址中包括第1個執行模塊的存儲地址時,控制模塊發送至第1個執行模塊的寫入指令,可供第1個執行模塊將寫入指令包括的多個數據元素中的第1個數據元素寫入第二存儲地址指向的存儲單元內,並將寫入指令傳輸至第2個執行模塊。
174.當第二存儲地址執行的執行模塊的存儲地址中不包括第1個執行模塊的存儲地址時,控制模塊發送至第1個執行模塊的寫入指令,可供第1個執行模塊將該寫入指令傳輸至第2個執行模塊。
175.需要說明的是,對於n個執行模塊中的第n個執行模塊,在接收到第n-1個執行模塊傳輸的寫入指令之後,可以直接將寫入指令傳輸至第n+1個執行模塊,也可以在將寫入指令包括的多個數據元素中的第n個數據元素寫入第二存儲地址指向的存儲單元之後,將寫入指令傳輸至第n+1個執行模塊。
176.在另一種情況下,控制模塊在確定出第二存儲地址之後,可以將寫入指令發送至第二存儲地址指向的n個執行模塊,以供n個執行模塊中的每個執行模塊根據自身的編號從多個數據元素中獲取一個對應的數據元素,並將獲取的對應的數據元素寫入第二存儲地址
指向的存儲單元內。
177.下文中以一個具體示例對上述數據的處理過程進行說明:
178.例如,參考圖4,假設控制模塊確定的第一存儲地址指向第1個執行模塊中的10個存儲單元的存儲地址時,控制模塊向第1個執行模塊發送讀取指令,以供第1個執行模塊根據接收到的讀取指令,從第一存儲地址指向的存儲單元中讀取數據元素00、10、20、30至90,並將讀取的10個數據元素返回至控制模塊。
179.基於此,控制模塊在接收到10個數據元素之後,可以確定第二存儲地址指向第1個執行模塊至第10個執行模塊的存儲地址,並向第1個執行模塊發送寫入指令,以供第1個執行模塊將第1個數據元素00寫入第1個執行模塊的第1個存儲單元中,將第2個數據元素10寫入第2個執行模塊的第1個存儲單元中,以此類推,將第10個數據元素90寫入第10個執行模塊的第1個存儲單元中。
180.其中,寫入指令在第1個執行模塊至第10個執行模塊之間的傳遞過程,以及數據元素的寫入過程可以參考上述實現過程,本技術實施例在此不再贅述。
181.參考圖5,本技術實施例還提供了另一種用於張量處理器的數據處理方法,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和所述m個執行模塊連接,所述方法由所述執行模塊執行,所述方法包括:
182.s501:接收讀取指令,其中,所述讀取指令包括:第一存儲地址;
183.s502:根據所述第一存儲地址,讀取對應的數據元素;
184.s503:將所述數據元素返回所述控制模塊;其中,讀取的所述數據元素按照第一排列順序返回給所述控制模塊後,用於供所述控制模塊存儲到第二存儲地址;
185.其中,若所述第一存儲地址,指向n個所述執行模塊中的存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
186.或者,
187.若所述第一存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中的存儲單元的存儲地址。
188.在一種實施例中,所述方法還包括:
189.若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n,在執行所述讀取指令時或執行所述讀取指令之後,將所述讀取指令傳輸給第n+1個執行模塊,其中,所述n為小於或等於所述m的正整數;所述m為所述控制模塊連接的執行模塊的總個數。
190.示例性地,若控制模塊確定的第一存儲地址指向n個執行模塊中各一個存儲單元的存儲地址,對於m個執行模塊中的第i個執行模塊,其接收到的讀取指令可能為控制模塊發送的讀取指令,也可能為第i-1個執行模塊傳輸的讀取指令。
191.第i個執行模塊在接收到讀取指令之後,可以先確定第一存儲地址指向的執行模塊的存儲地址中是否包括第i個執行模塊的存儲地址。
192.如果包括,則從第一存儲地址指向的存儲單元中讀取數據元素,並將讀取的數據元素以及讀取指令傳輸至第i+1個執行模塊。
193.其中,i為小於m的整數。
194.需要說明的是,第i個執行模塊在接收到讀取指令之後,可以直接讀取指令傳輸至
第i+1個執行模塊,也可以在讀取數據元素之後,將讀取的數據元素和讀取指令一次傳輸至第i+1個執行模塊。
195.示例性地,對於n個執行模塊中的第n個執行模塊,在接收到第n-1個執行模塊傳輸的讀取指令之後,可以直接將讀取指令傳輸至第n+1個執行模塊,也可以在讀取數據元素之後,將讀取的數據元素和讀取指令一次傳輸至第n+1個執行模塊。
196.在一種實施例中,若所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則將所述多個數據元素按照第一排列順序寫入n個存儲單元內。
197.示例性地,對於m個執行模塊中的第i個執行模塊,在接收到第i-1個執行模塊傳輸的寫入指令之後,確定第二存儲地址指向的執行模塊的存儲地址是否為第i個執行模塊的存儲地址。
198.如果是,則將寫入指令攜帶的多個數據元素按照第一排列順序寫入第i個執行模塊的n個存儲單元內。
199.如果不是,則將寫入執行傳輸至第i+1個執行模塊。
200.在一種實施例中,所述根據所述第一存儲地址,讀取數據元素,包括:
201.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,按照第一排列順序從所述n個存儲單元讀取多個所述數據元素。
202.示例性地,對於m個執行模塊中的第i個執行模塊,在接收到讀取指令之後,先確定該讀取指令包括的第一存儲地址指向的執行模塊的存儲地址是否為第i個執行模塊的存儲地址。
203.如果是,則從第一存儲地址指向的n個存儲單元中依次讀取數據元素,得到具有第一排列順序的n個數據元素,並將讀取的數據元素傳輸至第i+1個執行模塊。
204.如果不是,則將接收到的讀取指令傳輸至第i+1個執行模塊。
205.在一種實施例中,所述方法還包括:
206.若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n時,在執行所述寫入指令時或執行所述寫入指令之後,將所述寫入指令傳輸給第n+1個執行模塊。
207.示例性地,若控制模塊確定的第二存儲地址指向n個執行模塊中各一個存儲單元的存儲地址,則對於n個執行模塊中的第n個執行模塊。在接收到寫入指令之後,可以直接將接收到的寫入指令傳輸至第n+1個執行模塊,也可以在將寫入指令包括的多個數據元素中的第n個數據元素寫入第二存儲地址指向存儲單元之後,將寫入指令傳輸至第n+1個執行模塊。
208.例如,第二存儲地址指向的執行模塊的存儲地址為第1個執行模塊至第10個執行模塊的存儲地址。第8個執行模塊在接收到寫入指令之後,可以直接將接收到的寫入指令傳輸至第9個執行模塊,也可以在將寫入指令包括的10個數據元素中的第8個數據元素寫入第二存儲地址指向的存儲單元內之後,將寫入指令傳輸至第9個執行模塊。
209.需要說明的是,對於m個執行模塊中,不需要存儲數據元素的執行模塊,在接收到寫入指令之後,可以直接將該寫入指令傳輸至下一個執行模塊。
210.參考圖6,本技術實施例還提供了一種用於張量處理器的數據處理裝置,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和m個執行模塊連接,所述裝置包
括:
211.生成單元601,用於獲取待處理的多個數據元素的第一存儲地址,以生成包括所述第一存儲地址的讀取指令;
212.第一發送單元602,用於向所述執行模塊發送所述讀取指令,其中,所述讀取指令用於供所述執行模塊返回按照第一排列順序排列的所述多個數據元素;
213.第一接收單元603,用於接收由所述執行模塊返回的所述多個數據元素;
214.確定單元604,用於確定存儲所述多個數據元素的第二存儲地址;
215.第二發送單元605,向所述執行模塊發送寫入指令,其中,所述寫入指令包括第二存儲地址,以及按照第一排列順序排列的所述多個數據元素,以使得所述執行模塊寫入所述多個數據元素;
216.其中,若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
217.或者,
218.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址;
219.其中,m和n為不小於2的整數,且n小於或等於m。
220.可選地,所述第一發送單元用於:
221.若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送所述讀取指令;
222.其中,所述讀取指令,還用於供第n個執行模塊在執行所述讀取指令時或執行所述讀取指令之後,傳輸給第n+1個執行模塊;其中,所述n為小於所述n的正整數;其中,接收到所述讀取命令的n個執行模塊的排列順序為所述第一排列順序。
223.可選地,所述第二發送單元用於:
224.若所述第二存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊發送寫入指令,其中,所述寫入指令包括:所述n個存儲單元所在的所述執行模塊的存儲地址以及按照所述第一排列順序排列的多個數據元素。
225.可選地,所述第一發送單元用於:
226.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,向所述一個執行模塊,發送所述讀取指令。
227.可選地,所述第二發送單元用於:
228.若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,向第1個所述執行模塊發送寫入指令;
229.其中,所述寫入指令,還用於供第n個執行模塊執行所述寫入指令時或在執行所述寫入指令之後,傳輸給第n+1個所述執行模塊。
230.參考圖7,本技術實施例第四方面提供一種用於張量處理器的數據處理裝置,所述張量處理器包括控制模塊和m個執行模塊,並且所述控制模塊和m個執行模塊連接,所述裝置包括:
231.第二接收單元701,用於接收讀取指令,其中,所述讀取指令包括:第一存儲地址;
232.讀取單元702,用於根據所述第一存儲地址,讀取對應的數據元素;
233.返回單元703,將所述數據元素返回所述控制模塊;其中,讀取的所述數據元素按照第一排列順序返回給所述控制模塊後,用於供所述控制模塊存儲到第二存儲地址;
234.其中,若所述第一存儲地址,指向n個所述執行模塊中各一個存儲單元的存儲地址,則所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址;
235.或者,
236.若所述第一存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址。
237.可選地,所述裝置還包括:
238.第一傳輸單元,用於若所述第一存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n,在執行所述讀取指令時或執行所述讀取指令之後,將所述讀取指令傳輸給第n+1個執行模塊,其中,所述n為小於或等於所述m的正整數;所述m為所述控制模塊連接的執行模塊的總個數。
239.可選地,所述裝置還包括:
240.寫入單元,用於若所述第二存儲地址,指向一個執行模塊中的n個存儲單元的存儲地址,則將所述多個數據元素按照第一排列順序寫入n個存儲單元內。
241.可選地,所述讀取單元用於:
242.若所述第一存儲地址指向一個執行模塊中的n個存儲單元的存儲地址,按照第一排列順序從所述n個存儲單元讀取多個所述數據元素。
243.可選地,所述裝置還包括:
244.第二傳輸單元,用於若所述第二存儲地址指向n個所述執行模塊中各一個存儲單元的存儲地址,且當前執行模塊的序號n小於n時,在執行所述寫入指令時或執行所述寫入指令之後,將所述寫入指令傳輸給第n+1個執行模塊。
245.本技術實施例還提供了一種計算機設備,包括:
246.至少一個處理器;以及
247.至少一個存儲器,其上存儲有電腦程式,
248.其中,所述電腦程式在被所述至少一個處理器執行時,使所述至少一個處理器執行上述所述的方法。
249.本技術實施例還提供了一種張量處理器,包括計算機設備,所述計算機設備包括至少一個處理器和至少一個存儲器,所述至少一個存儲器存儲有電腦程式,其中,所述電腦程式在被所述至少一個處理器執行時,使所述至少一個處理器執行上述所述的方法。
250.本技術實施例提供一種非臨時性計算機可讀存儲介質,當存儲介質中的指令由計算機的處理器執行時,使得計算機能夠執行前述一個或多個技術方案所述的數據處理方法。
251.本領域技術人員在考慮說明書及實踐這裡公開的發明後,將容易想到本技術的其它實施方案。本技術旨在涵蓋本技術的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本技術的一般性原理並包括本技術未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本技術的真正範圍和精神由下面的權利要求指出。
252.應當理解的是,本技術並不局限於上面已經描述並在附圖中示出的精確結構,並
且可以在不脫離其範圍進行各種修改和改變。本技術的範圍僅由所附的權利要求來限制。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀