TWI831729B - 處理多個任務的方法、處理設備以及異構計算系統 - Google Patents
處理多個任務的方法、處理設備以及異構計算系統 Download PDFInfo
- Publication number
- TWI831729B TWI831729B TW112136353A TW112136353A TWI831729B TW I831729 B TWI831729 B TW I831729B TW 112136353 A TW112136353 A TW 112136353A TW 112136353 A TW112136353 A TW 112136353A TW I831729 B TWI831729 B TW I831729B
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- executed
- information
- tasks
- priority
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 140
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000001419 dependent effect Effects 0.000 claims abstract description 92
- 230000004044 response Effects 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 claims description 10
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 101100167212 Chondromyces crocatus cmdD gene Proteins 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 101100326662 Aspergillus oryzae (strain ATCC 42149 / RIB 40) cmdA gene Proteins 0.000 description 2
- 101100233116 Escherichia coli insC gene Proteins 0.000 description 2
- 101100126122 Escherichia coli insD gene Proteins 0.000 description 2
- 101150039072 INSA gene Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 101150006655 INS gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- -1 cmdC Proteins 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一種處理多個任務的方法、處理設備和異構計算系統。此方法包括:獲取任務的任務描述資訊,任務描述資訊包括依賴資訊標識和被依賴資訊標識,依賴資訊標識指示與任務關聯的第一類任務的數量,被依賴資訊標識至少指示多個任務中是否存在與任務關聯的第二類任務;回應於任務的執行結束而更新與任務關聯的第二類任務的依賴資訊標識,以從與任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務;將待執行任務加入待執行任務佇列以執行待執行任務佇列中的待執行任務。
Description
本申請涉及電腦技術領域,涉及一種處理多個任務的方法、以及用於處理多個任務的處理設備和異構計算系統。
隨著半導體技術和資訊技術的快速發展,目前已經湧現了各種形式的處理器以滿足日益豐富的計算需求。除了傳統通用計算能力較強的中央處理器(Central Processing Unit,CPU)之外,包括數位訊號處理器(Digital Signal Processor,DSP)、圖形處理器(Graphics Processing Unit,GPU)、現場可程式設計閘陣列(Field Programmable Gate Array,FPGA),以及神經網路處理器(Neural Processing Unit,NPU)在內的各種具有加強的專門計算能力的處理器也得到廣泛的應用。相應地,電腦的計算性能得以不斷的提升,並由同構計算發展到異構計算。這些處理器與中央處理器配合實現異構計算。通常的異構計算採用的硬體系統的模型為“主機-設備”,可採用中央處理器作為主機,設備可包括前述的數位訊號處理器、圖形處理器、現場可程式設計閘陣列以及神經網路處理器等。由主機向設備分發任務和任務相關的資料,由設備完成具體的計算任務,並將執行任務獲得的結果返回給主機。
本申請的一個實施例提供了一種處理多個任務的方法,包括:獲取所述多個任務中的每個任務的任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務;回應於所述任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務;將所述待執行任務加入待執行任務佇列;以及執行所述待執行任務佇列中的待執行任務。
根據本申請的一些實施例,所述方法還包括:回應於所獲取到的所述多個任務包括其依賴資訊標識指示與其關聯的第一類任務的數量為零的無依賴任務,將所述無依賴任務加入所述待執行任務佇列。
根據本申請的一些實施例,回應於所述任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務包括:回應於所述任務的執行結束對與所述任務關聯的各第二類任務的依賴資訊標識的值作出相同量的改變,獲得與該任務關聯的各第二類任務的更新依賴資訊標識;以及 將所述更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務確定為所述待執行任務。
根據本申請的一些實施例,將所述待執行任務加入待執行任務佇列包括:將所述待執行任務的任務描述資訊的起始位址資訊儲存至先進先出記憶體。
根據本申請的一些實施例,將所述待執行任務加入待執行任務佇列包括:將所述待執行任務的任務描述資訊的起始位址資訊和所述待執行任務的任務優先順序標識儲存至第一記憶體。
根據本申請的一些實施例,多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件,所述執行所述待執行任務佇列中的待執行任務,包括:根據所述待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊;以及將所述待執行任務的命令參數資訊儲存至第二記憶體,以對所述待執行任務的命令參數資訊進行解析。
根據本申請的一些實施例,根據所述待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊包括:回應於所述第一記憶體內儲存有至少一個待執行任務的任務描述資訊的起始位址資訊、且所述第二記憶體存在可用空間,根據所述至少一個待執行任務的任務描述資訊的起始位址資訊獲取所述至少一個待執行任務的任務描述資訊中的命令參數資訊,將所述待執行任務的命令參數資訊儲存至第二記憶體,以對所述待執行任務的命令參數資訊進行解析包括:將所述至少一個待執行任務的命令參數資訊儲存至第二記憶體,以對所述至少一個待執行任務的命令參數資訊進行解析。
根據本申請的一些實施例,所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件;所述執行所述待執行任務佇列中的待執行任務,包括:基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務;基於所述高優先順序待執行任務的任務描述資訊的起始位址資訊獲取所述高優先順序待執行任務的任務描述資訊中的命令參數資訊;以及將所述高優先順序待執行任務的任務描述資訊中的命令參數資訊儲存至第二記憶體,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
根據本申請的一些實施例,所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件;所述執行所述待執行任務佇列中的待執行任務,包括:基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務;比較所述高優先順序待執行任務的任務優先順序標識和所述待執行任務佇列之外的另外任務的任務優先順序標識;回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序,將所述高優先順序待執行任務的任務描述資訊中的命令參數資訊儲存至所述第二記憶體,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
根據本申請的一些實施例,所述執行所述待執行任務佇列中的待執行任務還包括:回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,將所述另外任務的任務描述資訊的起始位址資訊儲存至所述第一記憶體。
根據本申請的一些實施例,所述執行所述待執行任務佇列中的待執行任務還包括:回應于所述高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,將所述另外任務的任務描述資訊的命令參數資訊儲存至所述第二記憶體,以對所述另外任務的任務描述資訊的命令參數資訊進行解析。
根據本申請的一些實施例,執行所述待執行任務佇列中的待執行任務包括:回應於用於運行所述方法的處理設備存在用於執行任務的可用計算資源,從所述待執行任務佇列中獲取至少一個待執行任務,並將該至少一個待執行任務分配給所述可用計算資源。
根據本申請的一些實施例,所述多個任務包括兩個任務集合,所述兩個任務集合中的一個任務集合中的各個任務存在依賴關係形成第一任務圖,所述兩個任務集合中的另一任務集合中的各個任務存在依賴關係形成第二任務圖,所述第一任務圖獨立於所述第二任務圖。
根據本申請的一些實施例,所述被依賴資訊標識包括第一標識和第二標識,所述第一標識指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述第二標識指示與所述任務關聯的所述第二類任務的任務描述資訊的起始位址資訊。
本申請的另一實施例提供了一種用於處理多個任務的處理設備,所述多個任務中的每個任務包括任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務,所述處理設備包括:待執行任務確定單元,其被配置成回應於所述多個任務中的每個任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務;待執行任務佇列儲存單元,其被配置成儲存待執行任務佇列;以及
任務執行單元,其被配置成執行所述待執行任務佇列中的待執行任務。
根據本申請的一些實施例,所述待執行任務確定單元包括加法器或減法器,所述加法器或減法器被配置成回應於所述任務的執行結束對與所述任務關聯的各第二類任務的依賴資訊標識的值作出相同量的改變,獲得與該任務關聯的各第二類任務的更新依賴資訊標識,所述待執行任務確定單元被配置成將所述更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務確定為所述待執行任務。
根據本申請的一些實施例,所述待執行任務佇列儲存單元包括先進先出記憶體,所述待執行任務確定單元被配置成在確定所述待執行任務時將所述待執行任務的任務描述資訊的起始位址資訊發送至所述先進先出記憶體。
根據本申請的一些實施例,所述任務描述資訊還包括任務優先順序標識,所述待執行任務佇列儲存單元包括第一儲存單元,所述待執行任務確定單元被配置成在確定所述待執行任務時將所述待執行任務的任務描述資訊的起始位址資訊和所述待執行任務的任務優先順序標識發送至所述第一儲存單元。
根據本申請的一些實施例,所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,每個任務的所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件,所述待執行任務佇列儲存單元還包括第二儲存單元,所述第二儲存單元被配置成儲存所述待執行任務的命令參數資訊,以對所述待執行任務的命令參數資訊進行解析。
根據本申請的一些實施例,所述待執行任務佇列儲存單元還包括第一優先順序判斷單元,所述第一優先順序判斷單元被配置成基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務,所述第二儲存單元被配置成回應於所述第一優先順序判斷單元確定出所述高優先順序待執行任務而儲存所述高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
根據本申請的一些實施例,所述處理設備包括第二優先順序判斷單元,所述第二優先順序判斷單元被配置成比較所述高優先順序待執行任務的任務優先順序標識和所述待執行任務佇列之外的另外任務的任務優先順序標識,所述第二儲存單元被配置成回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序,而儲存所述高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
根據本申請的一些實施例,所述第一儲存單元還被配置成回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,而儲存所述另外任務的任務描述資訊的起始位址資訊。
根據本申請的一些實施例,所述第二儲存單元還被配置成回應于所述高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,而儲存所述另外任務的任務描述資訊的命令參數資訊,以對所述另外任務的任務描述資訊的命令參數資訊進行解析。
根據本申請的一些實施例,所述處理設備還包括第三儲存單元,其被配置成儲存與所述任務關聯的所述第二類任務的任務描述資訊。
本申請的又一實施例提供了一種電腦儲存介質,其中儲存有電腦可執行指令,所述電腦可執行指令用於被處理器執行時實現上述處理多個任務的方法。
本申請的又一實施例提供了一種電腦程式,包括電腦可讀代碼,當所述電腦可讀代碼在電子設備中運行時,所述電子設備中的處理器執行用於實現上述處理多個任務的方法。
本申請的又一實施例提供了一種異構計算系統,包括第一處理設備和第二處理設備,所述第一處理設備和第二處理設備彼此配合以處理多個任務,所述多個任務中的每個任務包括任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務,其中所述第一處理設備被配置成向所述第二處理設備發送所述多個任務以使得所述第二處理設備執行所述多個任務,其中所述第二處理設備包括:待執行任務確定單元,其被配置成回應於所述多個任務中的每個任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務;待執行任務佇列儲存單元,其被配置成儲存待執行任務佇列;以及任務執行單元,其被配置成執行所述待執行任務佇列中的待執行任務。
根據本申請的一些實施例,其中所述第一處理設備包括中央處理器,所述第二處理設備包括數位訊號處理器、圖形處理器、現場可程式設計閘陣列,以及神經網路等處理器中的至少一個。
以上概述了本申請的一些實施例,基於一些實施例的組合以及不同實施例中特徵的組合可以獲得另外的不同實施例,這些不同實施例同樣屬於本申請的保護範圍。
以下揭示提供許多不同實施例或例證用以實施本發明的不同特徵。特殊例證中的元件及配置在以下討論中被用來簡化本揭示。所討論的任何例證只用來作解說的用途,並不會以任何方式限制本發明或其例證之範圍和意義。此外,本揭示在不同例證中可能重複引用數字符號且/或字母,這些重複皆為了簡化及闡述,其本身並未指定以下討論中不同實施例且/或配置之間的關係。
在全篇說明書與申請專利範圍所使用之用詞(terms),除有特別註明外,通常具有每個用詞使用在此領域中、在此揭露之內容中與特殊內容中的平常意義。某些用以描述本揭露之用詞將於下或在此說明書的別處討論,以提供本領域技術人員在有關本揭露之描述上額外的引導。
關於本文中所使用之『耦接』或『連接』,均可指二或多個元件相互直接作實體或電性接觸,或是相互間接作實體或電性接觸,而『耦接』或『連接』還可指二或多個元件相互操作或動作。
在本文中,使用第一、第二與第三等等之詞彙,是用於描述各種元件、組件、區域、層與/或區塊是可以被理解的。但是這些元件、組件、區域、層與/或區塊不應該被這些術語所限制。這些詞彙只限於用來辨別單一元件、組件、區域、層與/或區塊。因此,在下文中的一第一元件、組件、區域、層與/或區塊也可被稱為第二元件、組件、區域、層與/或區塊,而不脫離本發明的本意。如本文所用,詞彙『與/或』包含了列出的關聯項目中的一個或多個的任何組合。本案文件中提到的「及/或」是指表列元件的任一者、全部或至少一者的任意組合。
第1圖示意性地示出了異構計算系統中主機和設備之間的交互。第1圖以主機為中央處理器CPU、設備為圖形處理器GPU為例進行說明。主機CPU可以將任務資訊儲存在主機記憶體M1中,隨後將任務資訊複製到設備GPU的設備記憶體M2中。當設備GPU從主機CPU收到任務的啟動命令時,設備GPU中具體的任務執行單元從設備記憶體M2中獲取任務相關的指令資訊和資料,並將執行任務而獲得的結果儲存在設備記憶體M2中,設備GPU可將存放裝置記憶體M2中的結果傳送給主機CPU。
本文提到的“任務”指的是在包括主機和設備的異構計算系統中由主機指派給設備完成的操作,這裡並不限制任務的具體形式或種類,任務的示例包括但不限於任何形式的資料計算、圖像渲染等。第2圖示意性地示出了單個任務的任務資訊的一般內容。如第2圖所示,任務的任務資訊可包括任務描述資訊cmd和任務指令資訊ins。如本領域技術人員所知曉的,任務描述資訊cmd通常包括設備執行任務所需要的命令參數資訊,該命令參數資訊表徵啟動和執行任務的任務指令資訊所需的條件。在設備執行從主機發送的任務的過程中,設備對命令參數資訊進行解析,為執行任務的任務指令資訊ins而作好必要的準備,例如,基於對命令參數資訊的解析,可以獲知執行指令資訊ins所需要的計算資源,隨後設備中相應的計算資源(硬體資源)可以執行任務指令資訊ins所表示的具體操作內容。命令參數資訊可包括設備執行該任務所需要的計算資源(例如,算數邏輯單位ALU)的位址。任務指令資訊ins表示任務的具體操作內容,例如,任務指令資訊ins包括針對相關資料的具體運算指令。
參照第1圖和第2圖,為了完成一個任務,主機CPU需要將任務資訊儲存在主機的主機記憶體M1中。任務資訊從主機記憶體M1被複製或轉移至設備GPU的設備記憶體M2中。在任務被啟動時,設備GPU對設備記憶體M2中儲存的任務資訊中的任務描述資訊cmd中的命令參數資訊進行解析,並根據儲存在設備記憶體M2中的任務指令資訊ins進行具體的操作。因此,主機CPU和設備GPU完成一個任務的時間包括將任務資訊從主機的主機記憶體M1傳輸至設備的設備記憶體M2的時間和設備GPU執行任務指令資訊ins的時間。如果將任務資訊傳輸至設備記憶體M2的時間標記為T0,設備GPU完成任務指令資訊ins表示的操作的時間標記為T1,則完成一個任務所需要的時間至少包括上述時間T0與時間T1之和。在需要完成多個任務的情形中,完成每個任務所需要的時間都至少包括類似於前述的時間T0和時間T1這樣的兩段時間。也就是說,在一個任務結束時,開始後一任務的任務描述資訊cmd和任務指令資訊ins的傳輸,在完成對後一任務的任務描述資訊cmd中的命令參數資訊的解析後,接著執行後一任務的任務指令資訊ins表示的操作。
本申請的發明人意識到,這種處理任務的方式會導致較低的任務完成效率,也降低異構計算系統中設備的資源的利用率,該問題在完成彼此之間存在相互依賴關係的多個任務的情形中顯得更為突出。
如果多個任務中的至少一部分任務彼此之間存在依賴關係,可以認為上述至少一部分任務構成一個任務圖。第3圖示意性地示出了包括7個任務A至G的任務圖。在該任務圖中,任務A不依賴於其它任務,任務A可以首先被執行。而任務B、C、D和E的執行均需要任務A的執行結果,即,任務B、C、D和E直接依賴於任務A,而且任務B和任務E還分別需要任務C和任務D的執行結果,即,任務B直接依賴於任務A和任務C,任務E直接依賴於任務A和任務D。同樣地,任務F直接依賴於任務C和任務E,任務G直接依賴於任務B、任務E和任務F。完成任務G之後,包括7個任務A至G的任務圖對應的總體任務才執行結束,任務G的執行結果被傳輸至主機。本文提到的“直接依賴”用於描述兩個任務在任務圖中的關聯,即,兩個任務中的一個任務的執行需要等待另一任務的執行結果。在本文中,對於多個任務的某一任務,將該任務的執行需要直接依賴的任務稱為與該任務關聯的第一類任務,即,該任務的執行需要第一類任務的執行結果,而將需要該任務的執行結果才能執行的任務稱為與該任務關聯的第二類任務,即,第二類任務直接依賴於該任務。例如,對於第3圖中所示的任務B,任務B直接依賴於任務A和任務C,同時,只有獲得了任務B的執行結果,才能執行任務G。因此,與任務B關聯的第一類任務包括任務A和任務C,與任務B關聯的第二類任務包括任務G。
根據第3圖所示的任務圖,與任務A至G關聯的第一類任務和第二類任務可如下面的表1所示。
表1
任務 | 第一類任務 | 第二類任務 |
A | 無 | B、C、D、E |
B | A、C | G |
C | A | F |
D | A | E |
E | A、D | F、G |
F | C、E | G |
G | B、E、F | 無 |
如果採用常規的方法來處理如第3圖所示的多個任務,主機需要在不同的時間分別向設備傳輸與7個任務A至G相關的任務資訊,而且,傳輸某個任務的任務資訊還需要等待與該任務相關的第一類任務的執行結束。因此,總體的任務完成效率較低,而且設備中的大量硬體資源沒有得到充分的利用。
本申請的實施例提供了一種處理多個任務的方法,以提高任務完成的總體效率和提升設備的資源利用率。第4圖示出了根據本申請實施例提供的處理多個任務的方法,如第4圖所示,該方法包括如下步驟:S410、獲取所述多個任務中的每個任務的任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務;S420、回應於所述任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務;S430、將所述待執行任務加入待執行任務佇列;以及S440、執行所述待執行任務佇列中的待執行任務。
在步驟S410中,諸如GPU之類的設備可以獲取或接收多個任務中的每個任務的任務描述資訊。與常規的任務描述資訊類似,任務描述資訊可包括設備執行任務所需要的命令參數資訊,該命令參數資訊表徵啟動和執行任務的任務指令資訊所需的條件。處理設備可以對命令參數資訊進行解析,為執行任務的任務指令資訊而作好必要的準備。可以在任務描述資訊中設置命令參數資訊解析開始標識、命令參數資訊解析結束標識和命令參數資訊載入標識。如前所述,通過解析命令參數資訊,可以為執行任務的任務指令資訊而作好必要的準備,例如,為完成任務指令資訊所表示的操作所需要的計算資源(例如,GPU的算數邏輯單位ALU),還可以是為完成任務指令資訊所表示的操作準備一些初始資料。但是,根據本申請的實施例,任務描述資訊還包括依賴資訊標識和被依賴資訊標識。下面,通過示例的方式來說明本申請的實施例中提到的任務描述資訊。對一個任務kernel,任務描述資訊kernelcmd可包括如下所示的結構:
structure kernelcmd
{
int32_t lockcounter;
uint32_t startcmd;
uint32_t launchcmd
uint64_t haspendingkernel;
uint64_t pendingkernelCmdAddr;
uint32_t endcmd
}
上述的依賴資訊標識被表示為lockcounter,其表示與當前任務關聯的第一類任務的數量,依賴資訊標識lockcounter可以為一個帶符號的數值。例如,在一個示例中,lockcounter為負數表明存在與當前任務關聯的第一類任務,而且,lockcounter的絕對值對應於與當前任務關聯的第一類任務的數量,相應地,lockcounter越小,表明與當前任務關聯的第一類任務的數量越多。當lockcounter為0時,表明不存在與當前任務關聯的第一類任務,即,當前任務的執行不直接依賴於其它任務,可以啟動與該任務相關的參數解析。在本申請的實施例中,依賴資訊標識lockcounter不是一個恒定的值,而是隨著其它任務的執行可變化的值。在其它示例中,可以將依賴資訊標識lockcounter為正數值時理解為存在與當前任務關聯的第一類任務,此時,lockcounter越大,表明與當前任務關聯的第一類任務的數量越多,同樣地,當lockcounter為0時,表明當前任務的執行不直接依賴於其它任務。任務描述資訊中的被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,例如,被依賴資訊標識可包含是否存在與當前任務關聯的第二類任務的資訊。在一個實施例中,在存在與當前任務關聯的第二類任務的情況下,被依賴資訊標識還可包括與當前任務關聯的第二類任務的相關資訊。例如,在上面的示例中,被依賴資訊標識包括第一標識haspendingkernel和第二標識pendingkernelCmdAddr,所述第一標識haspendingkernel指示多個任務中是否存在與當前任務關聯的第二類任務,第二標識pendingkernelCmdAddr指示與當前任務關聯的第二類任務的任務描述資訊的起始位址資訊。與當前任務關聯的第二類任務直接依賴於當前任務,只有當前任務執行結束的時候,才能開始執行與當前任務關聯的第二類任務。在以上的示例中,任務描述資訊kernelcmd的結構也包括命令參數資訊解析開始標識startcmd、命令參數資訊解析結束標識endcmd和命令參數資訊載入標識launchcmd。運行命令參數資訊載入標識launchcmd也就意味著為任務指令資訊的執行作出具體的準備工作,例如,為任務指令資訊的執行分配命令參數資訊所指明的計算資源(例如ALU)、初始資料等。相應地,命令參數資訊可包含為完成當前任務所需要的總的計算資源方面的資訊。在一些實施例中,單個任務可以被拆分成多個任務包,每個任務包可以進一步被分解為多個執行緒任務,每個執行緒任務由設備中相應的單個的計算資源(例如,算數邏輯單位ALU)來執行,這樣,可以實現多個執行緒任務的並行處理。在設備的計算資源充足的情況下,多個任務包也可以被並行處理。此時,命令參數資訊可包括執行當前任務所需要的總的計算資源、以及執行各個任務包所需要的計算資源方面的資訊。
在一些實施例中,上述的第二標識pendingkernelCmdAddr包括與當前任務關聯的第二類任務(pendingkernel)的任務描述資訊的起始位址資訊。下面描述第二標識pendingkernelCmdAddr的結構的一個示例。
Structure PendingKernelsCmdAddr
{
uint32_t startpending;
uint64_t pendingkernels cmdaddr
uint32_t endpending
}
其中startpending和endpending分別表示識別第二類任務(pendingkernel)的任務描述資訊的開始和結束,pendingkernels cmdaddr表示各個第二類任務的任務描述資訊的起始位址。
在步驟S420中,回應於所述任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務。也就是說,在當前任務執行結束時,根據任務圖體現的不同任務之間的關聯而對依賴資訊標識的值作出更新,以便從與當前任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務。即,從與當前任務關聯的第二類任務中篩選出已經解除對其它任務的直接依賴的一些任務,並將這些任務確定為待執行任務。例如,對於第3圖中所示的任務A而言,與任務A關聯的第二類任務包括任務B、任務C、任務D和任務E。任務B直接依賴於任務A和任務C,任務B的任務描述資訊中的依賴資訊標識的值為-2,任務C直接依賴於任務A,任務C的任務描述資訊中的依賴資訊標識的值為-1,任務D直接依賴於任務A,任務D的任務描述資訊中的依賴資訊標識的值為-1,任務E直接依賴於任務A和任務D,任務E的任務描述資訊中的依賴資訊標識的值為-2。當任務A執行結束時,對任務B、任務C、任務D和任務E的任務描述資訊中的依賴資訊標識的值進行更新,以即時反映任務B、C、D和E對其它任務的依賴關係的動態變化。例如,在任務A執行結束時,任務B和任務E的任務描述資訊中的依賴資訊標識的值均由-2變為-1,而任務C和任務D的任務描述資訊中的依賴資訊標識的值均由-1變為0。在該示例中,任務C和任務D的依賴資訊標識的值為0意味著任務C和任務D在任務A執行結束時已不依賴於任何任務,因此,將任務C和任務D確定為待執行任務。
相應地,在步驟S430中,將待執行任務(例如,任務C和任務D)加入待執行任務佇列。在步驟S440中,執行所述待執行任務佇列中的待執行任務。例如,可以將待執行任務的任務描述資訊的位址資訊集中儲存在第一記憶體內,然後基於待執行任務的任務描述資訊的位址資訊獲取待執行任務的命令參數資訊。
如前所述,對於常規的處理任務的方法,設備完成一個任務的時間至少包括從主機記憶體接收任務的任務資訊的時間和執行任務指令資訊表示的操作的時間。特別地,在設備要完成多個任務的情形中,任何一個任務的開始執行都需要等待另一任務的執行結束,即各個任務是以逐個的連續處理方式被完成的。例如,對於第3圖所示的任務圖中的任務A、任務C和任務D,由於任務C和任務D依賴於任務A,所以在任務A執行結束時,可以執行任務C和D。任務C和任務D二者中的一個必須等待這二者中的另一任務的執行結束才能開始執行,即使任務C和任務D彼此之間無相互依賴關係。第5圖圖示了應用常規的任務處理方法執行第3圖中的任務A、任務C和任務D的時序的示例。如第5圖所示,任務A包括任務描述資訊cmdA和任務指令資訊insA,任務C包括任務描述資訊cmdC和任務指令資訊insC,任務D包括任務描述資訊cmdD和任務指令資訊insD。在任務A執行結束時,任務C和任務D先後被執行,任務D需要等待任務C執行結束,即使執行任務C的結果不需要提供給任務D。異構計算系統中的設備通常包括可進行並行運算的大量計算資源(例如,ALU),設備以逐個任務的連續處理方式來處理多個任務會造成設備的許多計算資源處於閒置狀態,同時也導致任務的總體執行效率較低。
第6圖圖示了應用本申請實施例提供的處理多個任務的方法來處理第3圖中的任務A、任務C和任務D的時序的示例。因為與任務C或任務D關聯的第一類任務只包括任務A,所以,在任務A執行結束時,任務C和任務D被確定為待執行任務,任務C和任務D的任務描述資訊的起始位址被添加至待執行任務佇列。根據任務C和任務D的任務描述資訊的起始位址,可以從設備記憶體中獲取任務C和任務D的任務描述資訊,由此可以對任務C和任務D的任務描述資訊中的命令參數資訊進行解析。當任務A執行結束時,設備的計算資源執行任務C和任務D中的一個任務的任務指令資訊所指明的具體操作。但是,設備的其它處於閒置狀態的計算資源可以隨即開始執行任務C和任務D中的另一個任務的任務指令資訊所指明的具體操作。例如,在第6圖的示例中,當任務A執行結束時,設備的某一或某些計算資源隨即執行任務C的任務指令資訊所指明的具體操作,在設備中存在其它可用的計算資源的情況下,該其它可用的計算資源也開始執行任務D的任務指令資訊所指明的具體操作,而不必等待任務C的執行結束。這樣,可以實現任務C和任務D的並行處理,使得設備的計算資源得以高效地利用,並提升處理多個任務的速度和效率。
在利用本申請實施例提供的處理多個任務的方法處理多個任務的情形中,主機可以將其已經準備就緒的那些任務的任務資訊及時發送至設備,一旦設備確定出待執行任務,就對待執行任務的任務描述資訊中的命令參數資訊進行解析,緊接著執行待執行任務的任務指令資訊所指示的操作。對待執行任務的任務描述資訊中的命令參數資訊解析也可以在更早的時間進行,例如,在執行任務A的過程期間完成對待執行任務C和D的任務描述資訊中的命令參數資訊解析。也就是說,對待執行任務的任務描述資訊中的命令參數資訊的解析和該待執行任務的任務指令資訊表示的具體操作的執行在時間上可以連續,或者,對待執行任務的任務描述資訊中的命令參數資訊的解析可以比執行該待執行任務的任務指令資訊表示的具體操作更早地完成。因此,在第6圖的示例中,同時以虛線和實線示出了任務C和任務D的任務描述資訊cmdC和cmdD的時序。
能夠理解到的是,應用本申請實施例提供的處理多個任務的方法,在將任務C和任務D確定為待執行任務時,任務B和任務E沒有被確定為待執行任務,因為此時任務B和任務E仍分別直接依賴於任務C和任務D,即,此時任務B的任務描述資訊中的依賴資訊標識還指示存在與任務B關聯的第一類任務—任務C,任務E的任務描述資訊中的依賴資訊標識還指示存在與任務E關聯的第一類任務—任務D。任務B和任務E的任務描述資訊的起始位址可以分別在任務C和任務D結束時被添加至待執行任務佇列。因此,可以節約設備中用於儲存待執行任務佇列的第一記憶體的儲存空間。
在一些實施例中,上述的步驟S420可包括:S420a、回應於所述任務的執行結束對與所述任務關聯的各第二類任務的依賴資訊標識的值作出相同量的改變,獲得與該任務關聯的各第二類任務的更新依賴資訊標識;以及S420b、將所述更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務確定為所述待執行任務。例如,對於第3圖所示的任務圖,與任務A關聯的第二類任務包括任務B、C、D和E。任務B、C、D和E的任務描述資訊中的依賴資訊標識的初始值分別為-2、-1、-1和-2。當任務A執行結束時,針對任務B、C、D和E的依賴資訊標識的初始值分別執行加1操作,相應地,任務B、C、D和E的更新依賴資訊標識的值分別為-1、0、0和-1。接著,可以將更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務(即,任務C和任務D)確定為待執行任務。以上所述的任務B、C、D和E的任務描述資訊中的依賴資訊標識的初始值以及“加1操作”僅僅是示例性說明,可以根據任務B、C、D和E關聯的第一類任務的具體情況設置任務B、C、D和E的依賴資訊標識的其它初始值、並在任務A執行結束時針對任務B、C、D和E的依賴資訊標識的初始值分別執行其他的操作,只要任務B、C、D和E的依賴資訊標識的初始值和更新依賴資訊標識的值能夠正確反映任務B、C、D和E所關聯的第一類任務的數量的變化即可。例如,任務B、C、D和E的任務描述資訊中的依賴資訊標識的初始值可以分別為正值,當任務A執行結束時,針對任務B、C、D和E的依賴資訊標識的初始值分別進行減法操作。
根據本申請的一些實施例,上述的處理多個任務的方法還包括:回應於所獲取到的所述多個任務包括其依賴資訊標識指示與其關聯的第一類任務的數量為零的無依賴任務,將所述無依賴任務加入所述待執行任務佇列。這裡提到的無依賴任務和前述的待執行任務的共同之處在於其依賴資訊標識指示與其關聯的第一類任務的數量為零,即,無依賴任務和待執行任務均不依賴於任何其他任務。但是,無依賴任務的任務描述資訊中的依賴資訊標識並沒有經歷過更新,而是在其被處理設備獲取時即處於不依賴於其它任何任務的狀態,此時,可以將該無依賴任務加入待執行任務佇列。
在一些實施例中,上述的步驟S430—將所述待執行任務加入待執行任務佇列包括:將所述待執行任務的任務描述資訊的起始位址資訊儲存至先進先出記憶體FIFO以形成所述待執行任務佇列。在該情形中,可以根據待執行任務佇列中各個待執行任務解除對其它任務的直接依賴的先後次序,從先進先出記憶體輸出待執行任務的任務描述資訊的起始位址資訊(即,先被添加至待執行任務佇列的待執行任務將先從先進先出記憶體輸出),基於該起始位址資訊,可以從設備記憶體獲取各個待執行任務的任務描述資訊中的命令參數資訊,之後完成對命令參數資訊的解析和任務指令資訊指明的具體操作。再次以第6圖為例,對於第6圖所示的時序的示例,也可以認為任務C先於任務D解除對其它任務的直接依賴。
根據本申請的另一實施例,各個任務的任務描述資訊還包括任務優先順序標識,上述的步驟S430—將所述待執行任務加入待執行任務佇列包括:將所述待執行任務的任務描述資訊的起始位址資訊和所述待執行任務的任務優先順序標識儲存至第一記憶體。在該情形中,第一記憶體可以不是先進先出記憶體的形式,而是常規的暫存器。此時,任務描述資訊kernelcmd的示例性結構可如下所示。
structure kernelcmd
{
int32_t lockcounter;
uint32_t priority;
uint32_t startcmd;
uint32_t launchcmd
uint64_t haspendingkernel;
uint64_t pendingkernelCmdAddr;
uint32_t endcmd
}
任務優先順序標識priority是一個無符號數值,表示當前任務在任務圖的總體任務中的優先順序。因此,不同數值的任務優先順序標識priority意味著不同任務的不同優先順序,對於均不涉及關聯的第一類任務的兩個任務,這兩個任務中優先順序高的任務將優先被執行。
基於上述示例性的任務描述資訊,第3圖所示的任務圖中的各個任務A至G的任務描述資訊可以被示意性地表示為第7圖。例如,與任務A關聯的第二類任務包括任務B、任務C、任務D和任務E,任務A的任務描述資訊中的被依賴資訊標識包括第一標識和第二標識,而第二標識包括任務B、任務C、任務D和任務E的任務描述資訊的起始位址。在第3圖所示的任務圖中,不存在與任務G關聯的第二類任務,因此,第7圖中示出的任務G的任務描述資訊不包含被依賴資訊標識。相應地,基於第7圖所示的各個任務的任務描述資訊的定義,如第3圖所示的包括任務A至G的任務圖可以被圖示為第8圖。在第7圖和第8圖中,各個任務的任務描述資訊中的標識或資訊包含了相應的任務的代碼A至G以區分不同任務的任務描述資訊。
如前所述,每個任務可包括用於指示所述任務的具體操作內容的任務指令資訊;其中,具體操作內容的示例包括但不限於計算公式、函數等;每個任務的任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件。
在一些實施例中,上述的步驟S440-執行所述待執行任務佇列中的待執行任務包括:S440a、根據所述待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊;以及S440b、將所述待執行任務的命令參數資訊儲存至第二記憶體,以對所述待執行任務的命令參數資訊進行解析。第二記憶體可以基於待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊並儲存待執行任務的命令參數資訊。第二記憶體內的命令參數資訊可以由設備中的命令參數資訊解析裝置讀取以進行命令參數資訊的解析。
根據本申請的另外實施例,上述的步驟S440a-根據待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊包括:回應於所述第一記憶體內儲存有至少一個待執行任務的任務描述資訊的起始位址資訊、且所述第二記憶體存在可用空間,根據所述至少一個待執行任務的任務描述資訊的起始位址資訊獲取所述至少一個待執行任務的任務描述資訊中的命令參數資訊;上述的步驟S440b-將所述待執行任務的命令參數資訊儲存至第二記憶體,以對所述待執行任務的命令參數資訊進行解析包括:將所述至少一個待執行任務的命令參數資訊儲存至第二記憶體,以對所述至少一個待執行任務的命令參數資訊進行解析。在該實施例中,只要第一記憶體內儲存有待執行任務的任務描述資訊的起始位址資訊,第二記憶體有可用空間,第二記憶體就儲存待執行任務的任務描述資訊中的命令參數資訊。因此,第二記憶體可以儲存多個待執行任務的任務描述資訊中的命令參數資訊。例如,再次參照第3圖和第6圖,在任務C和任務D被確定為待執行任務時,第二記憶體可以同時儲存任務C和任務D的任務描述資訊中的命令參數資訊,此時,設備的命令參數資訊解析裝置可以對這兩個任務的任務描述資訊中的命令參數資訊進行解析,只要設備具有可用的計算資源,就可以並行地執行任務C和任務D的任務指令資訊。而且,在各個任務的任務描述資訊還包括任務優先順序標識的情形中,當設備執行待執行任務佇列中優先順序較高的任務的任務指令資訊表示的具體操作時,命令參數資訊解析裝置可以對待執行任務佇列中優先順序較低的任務的命令參數資訊進行解析。因此,在該實施例中,可以更充分地利用設備的硬體資源,使得處理多個任務的速度和效率得以進一步提升。
根據本申請的另外的實施例,在任務的任務描述資訊包括優先順序標識的情形中,上述的步驟S440-執行所述待執行任務佇列中的待執行任務包括:S440a、基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務;S440b、基於所述高優先順序待執行任務的任務描述資訊的起始位址資訊獲取所述高優先順序待執行任務的任務描述資訊的命令參數資訊;以及S440c、將所述高優先順序待執行任務的任務描述資訊中的命令參數資訊儲存至第二記憶體,以對所述高優先順序待執行任務的任務描述資訊的命令參數資訊進行解析。如此,可以基於待執行任務佇列中各待執行任務的優先順序的高低來執行待執行任務佇列中各待執行任務。
在另外的實施例中,上述的步驟S440-執行所述待執行任務佇列中的待執行任務包括:S4401、基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務;S4402、比較所述高優先順序待執行任務的任務優先順序標識和所述待執行任務佇列之外的另外任務的任務優先順序標識;S4403、回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序,將所述高優先順序待執行任務的任務描述資訊中的命令參數資訊儲存至所述第二記憶體,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。在一些情形中,設備可能不是同時接收到多個任務中的各個任務的任務描述資訊,而是主機將所述多個任務分批發送給設備。上述的另外任務可以是主機分批發送的多個任務中較晚發送的任務,而且,上述的另外任務可以是某一任務圖中的某一任務,也可以是獨立於任務圖的其它任務。在待執行任務佇列中具有最高優先順序的高優先順序待執行任務的優先順序高於上述的另外任務的情況下,先執行所述高優先順序待執行任務。在一些實施例中,上述的步驟S440-執行所述待執行任務佇列中的待執行任務還包括:回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,將所述另外任務的任務描述資訊的起始位址資訊儲存至所述第一記憶體。也就是說,如果該另外任務已經不依賴於其它任務但是優先順序較低,可將該另外任務加入待執行任務佇列,由此可基於該另外任務和待執行任務佇列中的已有待執行任務的優先順序高低來執行該另外任務。
在一些實施例中,上述的步驟S440-執行所述待執行任務佇列中的待執行任務還可包括:S4404、回應于所述高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,將所述另外任務的任務描述資訊的命令參數資訊儲存至所述第二記憶體,以對所述另外任務的任務描述資訊的命令參數資訊進行解析。也就是說,在所述另外任務的優先順序高於上述的待執行任務佇列中的高優先順序待執行任務、且所述另外任務沒有對其它任務的直接依賴的情況下,先執行所述另外任務。能夠理解到的是,在上述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量不為零的情況下,需要等待與所述另外任務關聯的第一類任務的執行,並且隨著與所述另外任務關聯的第一類任務的執行結束而更新上述另外任務的任務描述資訊中的依賴資訊標識的值。
綜上所述,在本申請另一實施例提供的處理多個任務的方法中,每個任務的任務描述資訊包括依賴資訊標識(指示與該任務關聯的第一類任務的數量)、被依賴資訊標識(指示與該任務關聯的第二類任務)和任務優先順序標識,而且,與當前任務關聯的第二類任務的依賴資訊標識會隨著當前任務的執行結束而被更新,從而可以動態地從與當前任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務。換言之,對於多個任務中的任何一個任務而言,在該任務執行結束時,可以判斷與該任務關聯的第二類任務中是否存在已完全脫離了對其它任務的直接依賴的那些任務,並將這些任務確定為待執行任務。對於這些待執行任務,可以基於各待執行任務的任務優先順序標識執行,但不必像常規的處理任務的方法中那樣要求其中一個任務的開始執行必須等待另一任務的執行結束。
因此,根據本申請的一個實施例,執行所述待執行任務佇列中的待執行任務可包括:回應於用於運行所述方法的處理設備存在用於執行任務的可用計算資源,從所述待執行任務佇列中獲取至少一個待執行任務,並將該至少一個待執行任務分配至所述可用計算資源。
能夠理解到的是,以上提到的多個任務可以屬於同一任務圖,即,多個任務中的各個任務存在直接或間接的依賴關係,例如,如第3圖所示的那樣,多個任務中的最後任務需要依賴於先前任務的執行結果。替代性地,多個任務可以形成兩個以上彼此獨立的多個任務圖。因此,在一些實施例中,所述多個任務包括兩個任務集合,所述兩個任務集合中的一個任務集合中的各個任務存在依賴關係形成第一任務圖,所述兩個任務集合中的另一任務集合中的各個任務存在依賴關係形成第二任務圖,所述第一任務圖獨立於所述第二任務圖,即,第一任務圖中的任務和第二任務圖中的任務之間沒有關聯。採用本申請的上述實施例提供的方法來處理該多個任務,可以實現對彼此無關聯的多個任務圖中的任務的並行處理,大大提高處理任務的效率。
本申請的另外實施例提供了一種用於處理多個任務的處理設備,該處理設備可以是以下任何之一:數位訊號處理器、圖形處理器、現場可程式設計閘陣列,以及神經網路處理器。與前述的實施例類似,多個任務中的每個任務包括任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務。處理設備包括待執行任務確定單元和待執行任務佇列儲存單元,待執行任務確定單元被配置成回應於所述多個任務中的每個任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務。待執行任務佇列儲存單元被配置成儲存待執行任務佇列。與常規的處理設備不同,本申請實施例提供的處理設備包括上述的待執行任務確定單元和待執行任務佇列儲存單元,待執行任務確定單元可以從與當前任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務,將所確定的各個待執行任務的相關資訊儲存在待執行任務佇列儲存單元內,因此,取決於設備的計算資源的實際狀況,設備可以對那些已經不直接依賴於任何任務的待執行任務佇列中至少一部分甚至全部的待執行任務並行處理,減少設備中處於閒置狀態的計算資源的量,使得設備的計算資源得以高效地利用,提升處理多個任務的速度和效率。
待執行任務確定單元可包括加法器或減法器,該加法器或減法器被配置成回應於所述任務的執行結束對與所述任務關聯的各第二類任務的依賴資訊標識的值作出相同量的改變,獲得與該任務關聯的各第二類任務的更新依賴資訊標識,待執行任務確定單元被配置成將所述更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務確定為所述待執行任務。
在一些實施例中,待執行任務佇列儲存單元包括先進先出記憶體,所述待執行任務確定單元被配置成在確定所述待執行任務時將所述待執行任務的任務描述資訊的起始位址資訊發送至所述先進先出記憶體。在另外的實施例中,任務的任務描述資訊還包括任務優先順序標識,待執行任務佇列儲存單元包括第一儲存單元,所述待執行任務確定單元被配置成在確定所述待執行任務時將所述待執行任務的任務描述資訊的起始位址資訊和所述待執行任務的任務優先順序標識發送至所述第一儲存單元。第一儲存單元可以是任何類型的暫存器。
如前所述,多個任務中的每個任務還可包括用於指示所述任務的具體操作內容的任務指令資訊,每個任務的所述任務描述資訊還包括命令參數資訊,命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件,此時待執行任務佇列儲存單元還包括第二儲存單元,所述第二儲存單元被配置成儲存所述待執行任務的命令參數資訊,以對所述待執行任務的命令參數資訊進行解析。
在任務的任務描述資訊包括任務優先順序標識的情況下,待執行任務佇列儲存單元還包括第一優先順序判斷單元,所述第一優先順序判斷單元被配置成基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務,此時第二儲存單元被配置成回應於所述第一優先順序判斷單元確定出所述高優先順序待執行任務而儲存所述高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。在一些實施例中,處理設備包括第二優先順序判斷單元,第二優先順序判斷單元被配置成比較所述高優先順序待執行任務的任務優先順序標識和所述待執行任務佇列之外的另外任務的任務優先順序標識,所述第二儲存單元被配置成回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序,而儲存所述高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
在一些實施例中,第一儲存單元還被配置成回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,而儲存所述另外任務的任務描述資訊的起始位址資訊。第二儲存單元還被配置成回應于所述高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與所述另外任務關聯的第一類任務的數量為零,而儲存所述另外任務的任務描述資訊的命令參數資訊,以對所述另外任務的任務描述資訊的命令參數資訊進行解析。在一些實施例中,處理設備還包括第三儲存單元,其被配置成儲存與所述任務關聯的所述第二類任務的任務描述資訊。
第9圖圖示了根據本申請一個實施例的處理設備的結構框圖,如第9圖所示,處理設備包括待執行任務確定單元9130、任務執行單元930、設備記憶體940、第一儲存單元9210、第二儲存單元9220、命令參數資訊解析單元950、第一優先順序判斷單元920a、第二優先順序判斷單元960。設備記憶體940包括第三儲存單元9420、任務描述資訊儲存單元9410和任務指令資訊儲存單元9430。第9圖中還示出了定址單元9110和命令參數資訊載入單元9120。處理設備執行各個任務的任務指令資訊、以及解析命令參數資訊是本領域技術人員所已知的,且不是本申請技術方案的重點,在此不再詳述。
設備記憶體940可以儲存從主機獲取或接收到的各個任務的任務描述資訊、任務指令資訊、完成任務指令資訊所指示的操作所需要的資料、以及完成任務指令資訊所指示的操作後獲得的結果等。例如,那些在處理任務之前已經不依賴於任何其它任務的任務(例如,第3圖或第8圖中所示的任務A)的任務描述資訊可以儲存在任務描述資訊儲存單元9410中,任務指令資訊和完成任務指令資訊所指示的操作所需要的資料可以儲存在任務指令資訊儲存單元9430中,那些依賴於其它任務的執行結果才能執行的任務的任務描述資訊可以儲存在第三儲存單元9420中。下面以第9圖所示的處理設備執行如第8圖或第3圖所示的任務圖來示例說明處理設備的工作過程。
在處理設備獲取或接收到任務A時,由於任務A是任務圖的起始任務且不依賴於任何其它的任務,第二優先順序判斷單元960判斷任務A優先執行,命令參數資訊解析單元950指令定址單元9110和命令參數資訊載入單元9120從任務描述資訊儲存單元9410獲取任務A的命令參數資訊,命令參數資訊載入單元9120將任務A的命令參數資訊發送至第二儲存單元9220,命令參數資訊解析單元950對儲存在第二儲存單元9220中的任務A的命令參數資訊進行解析,基於命令參數資訊解析單元950的解析結果,任務執行單元930利用處理設備的相應的計算資源(例如,ALU)完成任務指令資訊儲存單元9430中儲存的任務A 的任務指令資訊所指示的操作。在任務A被執行結束時,待執行任務確定單元9130可以從定址單元9110獲取與任務A關聯的第二類任務B、C、D和E的位址資訊,並更新儲存在第三儲存單元9420中的任務B、C、D和E依賴資訊標識,例如,如之前針對第3圖的實施例所討論的,任務B、C、D和E的任務描述資訊中的依賴資訊標識的初始值分別為-2、-1、-1、和-2,當任務A執行結束時,針對任務B、C、D和E的依賴資訊標識的初始值分別進行加1操作,從而將任務C和任務D確定為已不直接依賴於任何任務的待執行任務。待執行任務確定單元9130可以從第三儲存單元9420中獲取待執行任務確定單元確定的待執行任務C和D的相關資訊(例如,任務描述資訊的起始位址和優先順序標識)並將其儲存至第一儲存單元9210,此時,待執行任務佇列包括待執行任務C和待執行任務D。第一優先順序判斷單元920基於任務C和任務D的優先順序標識而從任務C和任務D中確定具有最高優先順序的高優先順序待執行任務(例如,任務 C)。在處理設備沒有獲取或接收到另外任務的情況下,高優先順序待執行任務C的任務描述資訊中的命令參數資訊將由命令參數資訊載入單元9120被載入至第二儲存單元9220,以由命令參數資訊解析單元950解析,進而由任務執行單元930完成高優先順序待執行任務C任務指令資訊所指示的操作。與常規的處理設備不同,在任務執行單元930完成高優先順序待執行任務C的任務指令資訊所指示的操作的過程中,只要任務執行單元930仍有可用的計算資源,命令參數資訊解析單元950就可以完成對待執行任務C和待執行任務D中的另一任務D的命令參數的解析,為任務D分配另外的計算資源,從而可以並存執行任務C和任務D,而不必等待任務C的執行結束才執行任務D。因此,本申請實施例提供的處理設備可以對那些已經不直接依賴於任何任務的待執行任務佇列中至少一部分甚至全部的待執行任務並行處理,減少設備中處於閒置狀態的計算資源的量,使得設備的計算資源得以高效地利用,提升處理多個任務的速度和效率。
如第9圖所示,在一些情形中,如果處理設備在處理任務的過程中從主機獲取到另外任務ncmd,那麼第二優先順序判斷單元960將該另外任務ncmd的優先順序與第一優先順序判斷單元920a輸出的高優先順序待執行任務進行比較。在高優先順序待執行任務的優先順序高於所述另外任務的優先順序的情況下,處理設備優先執行第一優先順序判斷單元920a輸出的高優先順序待執行任務,即,第二儲存單元9220儲存高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。在高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且另外任務的任務描述資訊中的依賴資訊標識指示與該另外任務關聯的第一類任務的數量為零的情況下,可以將該另外任務加入待執行任務佇列,第一儲存單元9210例如可儲存該另外任務的任務描述資訊的起始位址資訊和優先權標識。在高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與該另外任務關聯的第一類任務的數量為零的情況下,處理設備執行該另外任務ncmd,即第二儲存單元9220儲存該另外任務ncmd的任務描述資訊的命令參數資訊,以對所述另外任務ncmd的任務描述資訊的命令參數資訊進行解析。
如前所述,待執行任務確定單元910可包括加法器或減法器。這裡提到的加法器或減法器包括能夠實現加法或減法功能的運算電路。當然,能夠理解到的是,在一些實施例中,也可以基於加法電路實現減法功能。例如,加法電路可以接收負數進行加法運算,而實際上實現減法功能。例如,如之前針對第3圖的實施例所討論的,任務B、C、D和E的任務描述資訊中的依賴資訊標識的初始值可以均為正值,當任務A執行結束時,針對任務B、C、D和E的依賴資訊標識的初始值分別進行與負數相加的加法操作,從而實現減法器的功能。
第9圖中所示的第一優先順序判斷單元920a和第二優先順序判斷單元960可分別包括比較電路,該比較電路基於不同任務的任務描述資訊中的優先順序標識的值而判斷不同任務的優先順序的高低。在第9圖中,第一優先順序判斷單元920a被示出為實施在第一儲存單元9210內部,替代性地,第一優先順序判斷單元920a也可以被實施為在第一儲存單元9210外部。在各個任務的任務描述資訊不包括優先權標識的情況下,處理設備可不包括第一優先順序判斷單元920a和第二優先順序判斷單元960,此時,第一儲存單元9210可被實施為先進先出記憶體FIFO。
根據本申請的實施例,只要第二儲存單元9220存在可用空間,就可以經由命令參數資訊載入單元9210從設備記憶體940獲得由第一儲存單元9210所指明的待執行任務佇列中的待執行任務的命令參數資訊,即,第二儲存單元9220可以儲存多個待執行任務的命令參數資訊,命令參數資訊解析單元950可以對多個待執行任務的命令參數資訊進行解析,只要任務執行單元930具有可用的計算資源,就可以並行地執行多個待執行任務的任務指令資訊。因此,處理設備的硬體資源得以高效地利用,使得處理多個任務的速度和效率得以進一步提升。
如之前所討論的,以上提到的多個任務可以屬於同一任務圖,或者,多個任務可以形成兩個以上彼此獨立的多個任務圖。因此,本申請實施例提供的處理設備也可以實現對彼此無關聯的多個任務圖中的任務的並行處理,大大提高處理任務的效率。
本申請的另外的實施例提供了一種電腦儲存介質,其中儲存有電腦可執行指令,所述電腦可執行指令用於被處理器執行時實現上述處理多個任務的方法。
本申請的另外的實施例提供了一種電腦程式,包括電腦可讀代碼,當所述電腦可讀代碼在電子設備中運行時,所述電子設備中的處理器執行用於實現上述處理多個任務的方法。
本申請的另外的實施例提供了一種異構計算系統,該異構計算系統包括第一處理設備和第二處理設備,第一處理設備和第二處理設備彼此配合以處理多個任務,所述多個任務中的每個任務包括任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務。第一處理設備被配置成向所述第二處理設備發送所述多個任務以使得所述第二處理設備執行所述多個任務。第二處理設備包括待執行任務確定單元、待執行任務佇列儲存單元和任務執行單元,待執行任務確定單元被配置成回應於所述多個任務中的每個任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務,待執行任務佇列儲存單元被配置成儲存待執行任務佇列,任務執行單元被配置成執行所述待執行任務佇列中的待執行任務。也就是說,該異構計算系統中的第一處理設備可以向第二處理設備傳輸或發送多個任務的任務資訊,而異構計算系統中的第二處理設備執行如第4圖所示的處理多個任務的方法中的步驟S410、步驟S420、步驟S430和步驟S440。
第10示意性地示出了異構計算系統的示例,異構計算系統中的第一處理設備1010包括中央處理器CPU,第二處理設備1020可以是如第9圖所示的處理設備。第二處理設備可包括數位訊號處理器、圖形處理器、現場可程式設計閘陣列,以及神經網路等處理器中的至少一個。
雖然本案已以實施方式揭示如上,然其並非用以限定本案,任何熟習此技藝者,在不脫離本案之精神和範圍內,當可作各種之更動與潤飾,因此本案之保護範圍當視後附之申請專利範圍所界定者為準。
910:待執行任務確定單元
930:任務執行單元
940:設備記憶體
950:命令參數資訊解析單元
960:第二優先順序判斷單元
920a:第一優先順序判斷單元
1010:第一處理設備
1020:第二處理設備
9110:定址單元
9120:命令參數資訊載入單元
9130:待執行任務確定單元
9210:第一儲存單元
9220:第二儲存單元
9410:任務描述資訊儲存單元
9420:第三儲存單元
9430:任務指令資訊儲存單元
S410、S420、S430、S440:步驟
CPU:中央處理器
GPU:圖形處理器
M1:主機記憶體
M2:設備記憶體
cmd、cmdA、cmdC、cmdD:任務描述資訊
ins、insA、insC、insD:任務指令資訊
A、B、C、D、E、F和G:任務
Ncmd:另外任務
此處的附圖被併入說明書中並構成本說明書的一部分,這些附圖示出了符合本發明的實施例,並與說明書一起用於說明本發明實施例的技術方案。
第1圖示意性地圖示了異構計算系統中的主機和設備之間的資訊交互;
第2圖示意性地圖示了根據本申請的一個實施例的單個任務的任務資訊的一般內容;
第3圖示意性地圖示了包括多個任務的任務圖的示例;
第4圖圖示了根據本申請的一個實施例提供的處理多個任務的方法的步驟;
第5圖圖示了應用常規的任務處理方法執行第3圖中的任務A、任務C和任務D的時序的示例;
第6圖圖示了應用本申請實施例提供的處理多個任務的方法執行第3圖中的任務A、任務C和任務D的時序的示例;
第7圖圖示了採用本申請一個實施例提供的處理多個任務的方法中定義任務描述資訊的方式來定義第3圖所示的任務後獲得的任務描述資訊圖;
第8圖圖示了基於第7圖所示的各個任務的任務描述資訊來描述第3圖所示的任務圖;
第9圖圖示了根據本申請的一個實施例提供的處理設備的結構框圖;
第10圖示了根據本申請的一個實施例提供的異構計算系統的示例。
S410、S420、S430、S440:步驟
Claims (26)
- 一種處理多個任務的方法,其特徵在於,應用於處理設備,所述方法包括: 獲取所述多個任務中的每個任務的任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務; 回應於所述任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務; 將所述待執行任務加入待執行任務佇列;以及 執行所述待執行任務佇列中的待執行任務。
- 如請求項1所述的方法,其中所述方法還包括:回應於獲取到的所述多個任務包括其依賴資訊標識指示與其關聯的第一類任務的數量為零的無依賴任務,將所述無依賴任務加入所述待執行任務佇列。
- 如請求項1所述的方法,其中所述回應於所述任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務包括: 回應於所述任務的執行結束對與所述任務關聯的各第二類任務的依賴資訊標識的值作出相同量的改變,從而獲得與該任務關聯的各第二類任務的更新依賴資訊標識;以及 將所述更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務確定為所述待執行任務。
- 如請求項1所述的方法,其中將所述待執行任務加入待執行任務佇列包括: 將所述待執行任務的任務描述資訊的起始位址資訊儲存至先進先出記憶體以形成所述待執行任務佇列。
- 如請求項1所述的方法,其中所述任務描述資訊還包括任務優先順序標識,其中將所述待執行任務加入待執行任務佇列包括: 將所述待執行任務的任務描述資訊的起始位址資訊和所述待執行任務的任務優先順序標識儲存至第一記憶體以形成所述待執行任務佇列。
- 如請求項5所述的方法,其中所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件,其中執行所述待執行任務佇列中的待執行任務包括: 根據所述待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊;以及 將所述待執行任務的命令參數資訊儲存至第二記憶體,以對所述待執行任務的命令參數資訊進行解析。
- 如請求項6所述的方法,其中根據所述待執行任務的任務描述資訊的起始位址資訊獲取所述待執行任務的任務描述資訊中的命令參數資訊包括: 回應於所述第一記憶體內儲存有至少一個待執行任務的任務描述資訊的起始位址資訊、且所述第二記憶體存在可用空間,根據所述至少一個待執行任務的任務描述資訊的起始位址資訊獲取所述至少一個待執行任務的任務描述資訊中的命令參數資訊, 其中,將所述待執行任務的命令參數資訊儲存至第二記憶體,以對所述待執行任務的命令參數資訊進行解析包括: 將所述至少一個待執行任務的命令參數資訊儲存至第二記憶體,以對所述至少一個待執行任務的命令參數資訊進行解析。
- 如請求項5所述的方法,其中所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件,其中執行所述待執行任務佇列中的待執行任務包括: 基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務; 基於所述高優先順序待執行任務的任務描述資訊的起始位址資訊獲取所述高優先順序待執行任務的任務描述資訊中的命令參數資訊;以及 將所述高優先順序待執行任務的任務描述資訊中的命令參數資訊儲存至第二記憶體,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
- 如請求項5所述的方法,其中所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件,其中執行所述待執行任務佇列中的待執行任務包括: 基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務; 比較所述高優先順序待執行任務的任務優先順序標識和所述待執行任務佇列之外的另外任務的任務優先順序標識;以及 回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序,將所述高優先順序待執行任務的任務描述資訊中的命令參數資訊儲存至第二記憶體,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
- 如請求項9所述的方法,其中執行所述待執行任務佇列中的待執行任務還包括: 回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與該另外任務關聯的第一類任務的數量為零,將該另外任務的任務描述資訊的起始位址資訊儲存至所述第一記憶體。
- 如請求項9所述的方法,其中執行所述待執行任務佇列中的待執行任務還包括: 回應于所述高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與該另外任務關聯的第一類任務的數量為零,將該另外任務的任務描述資訊的命令參數資訊儲存至所述第二記憶體,以對所述另外任務的任務描述資訊的命令參數資訊進行解析。
- 如請求項1所述的方法,其中執行所述待執行任務佇列中的待執行任務包括: 回應於所述處理設備存在用於執行任務的可用計算資源,從所述待執行任務佇列中獲取至少一個待執行任務,並將該至少一個待執行任務分配至所述可用計算資源。
- 如請求項1所述的方法,其中所述多個任務包括兩個任務集合,所述兩個任務集合中的一個任務集合中的各個任務存在依賴關係形成第一任務圖,所述兩個任務集合中的另一任務集合中的各個任務存在依賴關係形成第二任務圖,所述第一任務圖獨立於所述第二任務圖。
- 如請求項1所述的方法,其中所述被依賴資訊標識包括第一標識和第二標識,所述第一標識指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述第二標識指示與所述任務關聯的所述第二類任務的任務描述資訊的起始位址資訊。
- 一種用於處理多個任務的處理設備,其特徵在於,所述多個任務中的每個任務包括任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務,其中所述處理設備包括: 待執行任務確定單元,其被配置成回應於所述多個任務中的每個任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務; 待執行任務佇列儲存單元,其被配置成儲存待執行任務佇列;以及 任務執行單元,其被配置成執行所述待執行任務佇列中的待執行任務。
- 如請求項15所述的處理設備,其中所述待執行任務確定單元包括加法器或減法器,所述加法器或減法器被配置成回應於所述任務的執行結束對與所述任務關聯的各第二類任務的依賴資訊標識的值作出相同量的改變,從而獲得與該任務關聯的各第二類任務的更新依賴資訊標識, 其中所述待執行任務確定單元將所述更新依賴資訊標識指示與其關聯的第一類任務的數量為零的第二類任務確定為所述待執行任務。
- 如請求項15所述的處理設備,其中所述待執行任務佇列儲存單元包括先進先出記憶體,所述待執行任務確定單元被配置成在確定所述待執行任務時將所述待執行任務的任務描述資訊的起始位址資訊發送至所述先進先出記憶體。
- 如請求項15所述的處理設備,其中所述任務描述資訊還包括任務優先順序標識,其中所述待執行任務佇列儲存單元包括第一儲存單元,所述待執行任務確定單元被配置成在確定所述待執行任務時將所述待執行任務的任務描述資訊的起始位址資訊和所述待執行任務的任務優先順序標識發送至所述第一儲存單元。
- 如請求項18所述的處理設備,其中所述多個任務中的每個任務還包括用於指示所述任務的具體操作內容的任務指令資訊,每個任務的所述任務描述資訊還包括命令參數資訊,所述命令參數資訊表徵啟動和執行所述任務的任務指令資訊所需的條件, 其中所述待執行任務佇列儲存單元還包括第二儲存單元,所述第二儲存單元被配置成儲存所述待執行任務的命令參數資訊,以對所述待執行任務的命令參數資訊進行解析。
- 如請求項19所述的處理設備,其中所述待執行任務佇列儲存單元還包括第一優先順序判斷單元,所述第一優先順序判斷單元基於所述待執行任務的優先順序標識從所述待執行任務佇列中確定具有最高優先順序的高優先順序待執行任務, 其中所述第二儲存單元被配置成回應於所述第一優先順序判斷單元確定出所述高優先順序待執行任務而儲存所述高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
- 如請求項20所述的處理設備,其中所述處理設備包括第二優先順序判斷單元,所述第二優先順序判斷單元被配置成比較所述高優先順序待執行任務的任務優先順序標識和所述待執行任務佇列之外的另外任務的任務優先順序標識, 其中所述第二儲存單元被配置成回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序,而儲存所述高優先順序待執行任務的任務描述資訊中的命令參數資訊,以對所述高優先順序待執行任務的任務描述資訊中的命令參數資訊進行解析。
- 如請求項21所述的處理設備,其中所述第一儲存單元還被配置成回應于所述高優先順序待執行任務的優先順序高於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與該另外任務關聯的第一類任務的數量為零,而儲存所述另外任務的任務描述資訊的起始位址資訊。
- 如請求項21所述的處理設備,其中所述第二儲存單元還被配置成回應于所述高優先順序待執行任務的優先順序低於所述另外任務的優先順序、且所述另外任務的任務描述資訊中的依賴資訊標識指示與該另外任務關聯的第一類任務的數量為零,而儲存該另外任務的任務描述資訊的命令參數資訊,以對所述另外任務的任務描述資訊的命令參數資訊進行解析。
- 如請求項15所述的處理設備,其中所述處理設備還包括第三儲存單元,其用於儲存與所述任務關聯的所述第二類任務的任務描述資訊。
- 一種異構計算系統,包括第一處理設備和第二處理設備,所述第一處理設備和第二處理設備彼此配合以處理多個任務, 其特徵在於,所述多個任務中的每個任務包括任務描述資訊,所述任務描述資訊包括依賴資訊標識和被依賴資訊標識,所述依賴資訊標識指示所述多個任務中與所述任務關聯的第一類任務的數量,所述被依賴資訊標識至少指示所述多個任務中是否存在與所述任務關聯的第二類任務,所述任務的執行直接依賴於所述第一類任務,所述第二類任務的執行直接依賴於所述任務, 其中所述第一處理設備被配置成向所述第二處理設備發送所述多個任務以使得所述第二處理設備執行所述多個任務,其中所述第二處理設備包括: 待執行任務確定單元,其被配置成回應於所述多個任務中的每個任務的執行結束,基於所述任務的被依賴資訊標識更新與所述任務關聯的所述第二類任務的依賴資訊標識,以基於更新的依賴資訊標識從與所述任務關聯的第二類任務中確定出已不直接依賴於任何任務的待執行任務; 待執行任務佇列儲存單元,其被配置成儲存待執行任務佇列;以及 任務執行單元,其被配置成執行所述待執行任務佇列中的待執行任務。
- 如請求項25所述的異構計算系統,其中所述第一處理設備包括中央處理器,所述第二處理設備包括數位訊號處理器、圖形處理器、現場可程式設計閘陣列,以及神經網路處理器中的至少一個。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211156377.7A CN115237582B (zh) | 2022-09-22 | 2022-09-22 | 处理多个任务的方法、处理设备以及异构计算系统 |
CN2022111563777 | 2022-09-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI831729B true TWI831729B (zh) | 2024-02-01 |
TW202414198A TW202414198A (zh) | 2024-04-01 |
Family
ID=83667049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112136353A TWI831729B (zh) | 2022-09-22 | 2023-09-22 | 處理多個任務的方法、處理設備以及異構計算系統 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN115237582B (zh) |
TW (1) | TWI831729B (zh) |
WO (1) | WO2024061135A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115237582B (zh) * | 2022-09-22 | 2022-12-09 | 摩尔线程智能科技(北京)有限责任公司 | 处理多个任务的方法、处理设备以及异构计算系统 |
CN118672742A (zh) * | 2023-03-16 | 2024-09-20 | 华为技术有限公司 | 任务处理方法及芯片 |
CN116225669B (zh) * | 2023-05-08 | 2024-01-09 | 之江实验室 | 一种任务执行方法、装置、存储介质及电子设备 |
CN116450324A (zh) * | 2023-06-20 | 2023-07-18 | 北京超星未来科技有限公司 | 任务处理方法、装置、设备及存储介质 |
CN116841739B (zh) * | 2023-06-30 | 2024-04-19 | 沐曦集成电路(杭州)有限公司 | 用于异构计算平台的数据包重用系统 |
CN117519799A (zh) * | 2023-11-06 | 2024-02-06 | 摩尔线程智能科技(北京)有限责任公司 | 指令调度方法及装置、和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283358A1 (en) * | 2006-06-06 | 2007-12-06 | Hironori Kasahara | Method for controlling heterogeneous multiprocessor and multigrain parallelizing compiler |
TW201732545A (zh) * | 2016-03-09 | 2017-09-16 | 聯發科技股份有限公司 | 異構計算系統和方法 |
TWI614669B (zh) * | 2013-03-14 | 2018-02-11 | 輝達公司 | 遷移異構處理器之間不同大小的分頁 |
TWI675289B (zh) * | 2013-10-31 | 2019-10-21 | 三星電子股份有限公司 | 包含異質多核心處理器的電子系統及其操作方法 |
CN111026540A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务处理方法、任务调度器和任务处理装置 |
CN112291293A (zh) * | 2019-07-27 | 2021-01-29 | 华为技术有限公司 | 任务处理方法、相关设备及计算机存储介质 |
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
TW202236141A (zh) * | 2020-10-22 | 2022-09-16 | 美國亞利桑那州立大學亞利桑那州評議委員會 | 使用用於異質多核心系統之模仿學習之運行時間任務排程 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836324B2 (en) * | 2014-02-07 | 2017-12-05 | International Business Machines Corporation | Interleave-scheduling of correlated tasks and backfill-scheduling of depender tasks into a slot of dependee tasks |
CN206489563U (zh) * | 2017-02-08 | 2017-09-12 | 无锡十月中宸科技有限公司 | 异构计算系统 |
CN112711478B (zh) * | 2019-10-24 | 2024-05-28 | 珠海零边界集成电路有限公司 | 基于神经网络的任务处理方法、装置、服务器和存储介质 |
CN112328380B (zh) * | 2020-11-10 | 2024-06-25 | 武汉理工大学 | 一种基于异构计算的任务调度方法及装置 |
CN112527474B (zh) * | 2020-12-10 | 2023-07-25 | 北京百度网讯科技有限公司 | 任务处理方法及装置、设备、可读介质、计算机程序产品 |
CN112764911A (zh) * | 2021-01-29 | 2021-05-07 | 建信金融科技有限责任公司 | 一种任务调度方法、装置、电子设备及可读存储介质 |
CN114153584A (zh) * | 2021-12-03 | 2022-03-08 | 完美世界互动(北京)科技有限公司 | 游戏帧循环的任务处理方法、设备及存储介质 |
CN114911589A (zh) * | 2022-03-31 | 2022-08-16 | 苏州浪潮智能科技有限公司 | 跨数据平台的融合计算方法、系统、终端及存储介质 |
CN115237582B (zh) * | 2022-09-22 | 2022-12-09 | 摩尔线程智能科技(北京)有限责任公司 | 处理多个任务的方法、处理设备以及异构计算系统 |
-
2022
- 2022-09-22 CN CN202211156377.7A patent/CN115237582B/zh active Active
-
2023
- 2023-09-15 WO PCT/CN2023/119199 patent/WO2024061135A1/zh unknown
- 2023-09-22 TW TW112136353A patent/TWI831729B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283358A1 (en) * | 2006-06-06 | 2007-12-06 | Hironori Kasahara | Method for controlling heterogeneous multiprocessor and multigrain parallelizing compiler |
TWI614669B (zh) * | 2013-03-14 | 2018-02-11 | 輝達公司 | 遷移異構處理器之間不同大小的分頁 |
TWI675289B (zh) * | 2013-10-31 | 2019-10-21 | 三星電子股份有限公司 | 包含異質多核心處理器的電子系統及其操作方法 |
TW201732545A (zh) * | 2016-03-09 | 2017-09-16 | 聯發科技股份有限公司 | 異構計算系統和方法 |
CN111026540A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务处理方法、任务调度器和任务处理装置 |
CN112291293A (zh) * | 2019-07-27 | 2021-01-29 | 华为技术有限公司 | 任务处理方法、相关设备及计算机存储介质 |
CN112463709A (zh) * | 2019-09-09 | 2021-03-09 | 上海登临科技有限公司 | 可配置的异构人工智能处理器 |
TW202236141A (zh) * | 2020-10-22 | 2022-09-16 | 美國亞利桑那州立大學亞利桑那州評議委員會 | 使用用於異質多核心系統之模仿學習之運行時間任務排程 |
Also Published As
Publication number | Publication date |
---|---|
CN115237582B (zh) | 2022-12-09 |
CN115237582A (zh) | 2022-10-25 |
WO2024061135A1 (zh) | 2024-03-28 |
TW202414198A (zh) | 2024-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI831729B (zh) | 處理多個任務的方法、處理設備以及異構計算系統 | |
US7231638B2 (en) | Memory sharing in a distributed data processing system using modified address space to create extended address space for copying data | |
JP7506472B2 (ja) | アプリケーション関数を装置にオフロードするためのシステム及び方法 | |
EP3667496A1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
US7827024B2 (en) | Low latency, high bandwidth data communications between compute nodes in a parallel computer | |
US10402223B1 (en) | Scheduling hardware resources for offloading functions in a heterogeneous computing system | |
US9063805B2 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
US7681196B2 (en) | Providing optimal number of threads to applications performing multi-tasking using threads | |
WO2021022964A1 (zh) | 一种基于多核系统的任务处理方法、装置及计算机可读存储介质 | |
US20240205170A1 (en) | Communication method based on user-mode protocol stack, and corresponding apparatus | |
US20220365822A1 (en) | Data Processing Method and Computer Device | |
CN116049085A (zh) | 一种数据处理系统及方法 | |
CN117519908B (zh) | 一种虚拟机热迁移方法、计算机设备及介质 | |
CN114253694A (zh) | 一种基于神经网络加速器的异步处理方法与装置 | |
CN110245027B (zh) | 一种进程间通信的方法和设备 | |
WO2023165484A1 (zh) | 一种分布式任务的处理方法、分布式系统及第一设备 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
EP3791274B1 (en) | Method and node for managing a request for hardware acceleration by means of an accelerator device | |
JP2008276322A (ja) | 情報処理装置、情報処理システムおよび情報処理方法 | |
WO2020236360A1 (en) | Remote operations application programming interface | |
CN111476663B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN112559054B (zh) | 用于同步指令的方法和计算系统 | |
WO2024188112A1 (zh) | 任务处理方法及芯片 | |
CN118012796B (zh) | 中断资源管理方法、计算机设备及介质 | |
JP4833911B2 (ja) | プロセッサユニットおよび情報処理方法 |