[go: up one dir, main page]

TWI736001B - 用以加速資料流訊號處理之異質cpu/gpu系統和由其實施之加速的資料流訊號處理方法 - Google Patents

用以加速資料流訊號處理之異質cpu/gpu系統和由其實施之加速的資料流訊號處理方法 Download PDF

Info

Publication number
TWI736001B
TWI736001B TW108139888A TW108139888A TWI736001B TW I736001 B TWI736001 B TW I736001B TW 108139888 A TW108139888 A TW 108139888A TW 108139888 A TW108139888 A TW 108139888A TW I736001 B TWI736001 B TW I736001B
Authority
TW
Taiwan
Prior art keywords
gpu
task
tile
cpu
virtual
Prior art date
Application number
TW108139888A
Other languages
English (en)
Other versions
TW202029004A (zh
Inventor
麥可 香比尼
Original Assignee
美商雷森公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商雷森公司 filed Critical 美商雷森公司
Publication of TW202029004A publication Critical patent/TW202029004A/zh
Application granted granted Critical
Publication of TWI736001B publication Critical patent/TWI736001B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

一種方法包含:形成一具有瓷磚的虛擬瓷磚叢集,其中,一瓷磚包括來自CPU裝置或GPU裝置的處理器和記憶體,且GPU裝置中的瓷磚另包括子處理器;形成虛擬統一記憶體,虛擬統一記憶體可由CPU裝置和GPU裝置存取;依據預定規則而將任務指派給虛擬瓷磚叢集的一瓷磚。當任務被指派給GPU裝置中的一瓷磚時,該方法進一步實施:使用GPU洗牌指令而將任務廣播至一瓷磚的子處理器;以及將與任務相關聯的資料分割而且將分割資料指派給子處理器,其中,各子處理器使用分割資料的每一個來運行侯世達。該任務被虛擬瓷磚叢集的至少一個瓷磚所執行。

Description

用以加速資料流訊號處理之異質CPU/GPU系統和由其實施之加速的資料流訊號處理方法
本發明係有關加速異質CPU/GPU系統上之資料流訊號處理應用程式。
與回應時間(亦即,潛時)相反,GPU裝置針對計算通量(throughput)而被最佳化。GPU之架構和相關軟體上的習知設計選擇係導向算術運算的高持續通量。特別是,GPU具有相對小且簡單的快取記憶體和軟體管理的暫存記憶體(scratchpad memory),其使針對大量資料集之並行處理的許多算術邏輯單元(ALU)之晶片佔據面積最大化。然而,GPU之目前的整體同步編程模型(bulk-synchronous programming model)限制了它們主持(host)需要一定層級的 任務排程(task scheduling)之彈性應用程式的可應用性。已知的GPU排程政策係用硬體來予以定義而且不允許手動演算法放置於GPU多處理器上。例如,在同一個多處理器上運行需要多處理器同步化的應用程式(諸如,生產者-消費者型態(pattern))可能會導致死結現象(deadlock)。在習知的系統中,也難以提供一用來處理任務的環境(在此環境中,類似的任務可以被共同排程於同一個多處理器上),以便從本地性(locality)取得利益,諸如,利用本地GPU快取記憶體更佳。
來自NVIDIA公司(NVIDIA CORP)的統一計算設備架構(CUDA)框架提供協同線程(thread)網格(grid)於GPU上的能力,其可以經由GPU本身上的整體阻障(global barrier)來予以同步化(而不必與CPU上的阻障同步化)。此特徵讓使用者能夠將一管線的內核(a pipeline of kernels)(亦即,GPU程式)排程於GPU。然而,現成的GPU排程器(scheduler)仍然以未經定義的方式將線程區塊排程於遍及整個GPU裝置上,其避免了將線程區塊手動放置於GPU多處理器上。此限制可能未能充分利用GPU資源。
依據此等概念,本文中所述的技術和系統為用以在異質CPU/GPU系統上加速資料流訊號處理的有效方法。本文中所述的技術和系統可以提供將GPU裝置展現為虛擬計算叢集(cluster)的軟體中間件(software middleware)。
依據一個說明性的實施例,一方法可包含:形成一虛擬瓷磚(tile)叢集,其中,該虛擬瓷磚叢集包括複數個瓷磚,其中,該等瓷磚的每一個包括來自中央處理單元(CPU)裝置或圖形處理單元(GPU)裝置的主處理器和記憶體,且其中,該GPU裝置中的瓷磚另包括一或更多個子處理器;形成虛擬統一記憶體,其中,該虛擬統一記憶體可由該CPU裝置和GPU裝置存取,並且虛擬統一記憶體包括一或更多個入口環(ingress ring)和一或更多個出口環(egress ring);產生任務;依據預定規則而將該任務指派給該虛擬瓷磚叢集的至少一個瓷磚;以及將該任務插入該虛擬統一記憶體的入口環的插槽內。在本文中,當該任務被指派給該GPU裝置中的該至少一個瓷磚時,該方法可實施:使用GPU洗牌(shuffle)指令而將該任務廣播至該至少一個瓷磚的該一或更多個子處理器;以及將與該任務相關聯的資料分割而且將分割資料的每一個指派給該一或更多個子處理器的每一個,其中,該一或更多個子處理器的每一個使用該分割資料的每一個而運行對應於該任務的侯世達(codelet)。此外,該任務可以被該虛擬瓷磚叢集的該至少一個瓷磚所執行。
在一個態樣中,該方法可另包含:產生對應於該任務的線程,其中,該線程被暫停於當該任務被指派給該至少一個瓷磚時;一旦完成該任務的執行,即將用於該任務的完成令牌(token)插入該虛擬統一記憶體的出口環內;以及回應於從該出口環中拉出該完成令牌,喚醒該線 程。在本文中,該完成令牌可包括對與該線程相關聯的該CPU裝置之阻障的參考,而且一旦拉出該完成令牌,即將該阻障解除阻擋(unblocked)。
在一個態樣中,該GPU裝置中之該至少一個瓷磚的該主處理器可包括向量處理器而且該一或更多個子處理器包括一或更多個純量處理器。
在一個態樣中,數個該一或更多個入口環和一或更多個出口環可以是可配置的。
在一個態樣中,該虛擬瓷磚叢集的該至少一個瓷磚可支援(sustain)相同的資源。
在一個態樣中,該任務可基於該任務的運算碼而被發派出(dispatched)。
在一個態樣中,該任務可藉由該GPU裝置的硬體指令來予以廣播。
在一個態樣中,該對應於該任務的侯世達(codelet)可以從侯世達包(package)中選出。
在一個態樣中,該等瓷磚之每一個的線道(lane)可以被委派(delegated)而與該入口環互動並且該線道從該入口環中將該任務發派出。
在一個態樣中,指派給子處理器之該分割資料的子範圍可以和指派給另一子處理器之該分割資料的另一子範圍不同。
在一個態樣中,入口環和出口環可以專用於該虛擬瓷磚叢集的每一個瓷磚。
在一個態樣中,該預定規則可包括將該虛擬瓷磚叢集的一瓷磚映射至一或更多個侯世達。
依據另一個說明性的實施例,一系統可包含:中央處理單元(CPU)運行時間;圖形處理單元(GPU)運行時間;包括複數個瓷磚的虛擬瓷磚叢集,其中,該等瓷磚的每一個包括來自該CPU運行時間和GPU運行時間的主處理器和記憶體,且其中,該GPU運行時間的瓷磚另包括一或更多個子處理器;以及包括一或更多個入口環和一或更多個出口環的虛擬統一記憶體,其中,該虛擬統一記憶體可由該CPU運行時間和GPU運行時間存取。在本文中,該CPU運行時間可以被配置成:產生任務;依據預定規則而將該任務指派給該虛擬瓷磚叢集的至少一個瓷磚;以及藉由該虛擬瓷磚叢集的該至少一個瓷磚來執行該任務。除此之外,該GPU運行時間可以被配置成:回應於該任務被指派給該GPU運行時間中的該至少一個瓷磚,將該任務插入該虛擬統一記憶體的入口環內;使用GPU洗牌指令而將該任務廣播至該至少一個瓷磚的該一或更多個子處理器;以及將與該任務相關聯的資料分割而且將分割資料的每一個指派給該一或更多個子處理器的每一個,其中,該一或更多個子處理器的每一個使用該分割資料的每一個而運行對應於該任務的侯世達。
在一個態樣中,該CPU運行時間可以被進一步配置成:產生對應於該任務的線程,其中,該線程被暫停於當該任務被指派給該至少一個瓷磚時;以及回應於從 該虛擬統一記憶體中的出口環中拉出完成令牌,喚醒該線程,其中,一旦完成該任務的執行,該GPU運行時間即將用於該任務的完成令牌插入該虛擬統一記憶體中之該出口環的插槽內。在本文中,該完成令牌可包括對與該線程相關聯的該CPU運行時間之阻障的參考,而且一旦拉出該完成令牌,即將該阻障解除阻擋。
在一個態樣中,該GPU運行時間中之該至少一個瓷磚的該主處理器可包括向量處理器以及該一或更多個子處理器,其中,各子處理器包括純量處理器。
本揭示之一或更多個實施例的細節被概述於伴隨的圖式中和下面的說明中。本揭示之其他的特徵、目的、和優點將從該說明和圖式中以及從申請專利範圍中變得明顯。
100:系統
110:中央處理單元(CPU)裝置
112:核心
114:私用快取記憶體
116:記憶體
120:處理器
130:圖形處理單元(GPU)裝置
132:記憶體
150:虛擬統一記憶體
152:入口環
154:出口環
160:虛擬瓷磚叢集
162:瓷磚引擎
164:暫存記憶體
166:向量處理器
172:插入操作
174:發派出操作
176:拉出操作
178:插入操作
200:系統
210:中央處理單元(CPU)運行時間
212:核心組件
214:圖形組件
216:加速組件
220:輸入通道
222:GPU任務池
230:圖形處理單元(GPU)運行時間
232:圖形處理單元(GPU)排程器
234:候世達包
250:虛擬統一記憶體
252:入口環
254:出口環
260:虛擬瓷磚叢集
310:中央處理單元(CPU)運行時間
312:節點
314:輸入通道
316:線程
320:完成處理程序
322:圖形處理單元(GPU)
324:喚醒
330:圖形處理單元(GPU)運行時間
340:入口環
342:插槽
352:瓷磚
354:瓷磚
356:候世達包
360:出口環
364:完成令牌
410:最大記憶體配置
420:預設配置
430:過載配置
500:過程
510,520,530,540,550,560:處理步驟
600:過程
610,630,632,634,636,640,642,644,646,648:處理步驟
710:中央處理單元(CPU)裝置
712,714:瓷磚
716:快取記憶體
720:統一虛擬記憶體
722,724:多重生產者單一消費者環
730:圖形處理單元(GPU)裝置
732,734:瓷磚
736:快取記憶體
738:暫存記憶體
810:中央處理單元(CPU)裝置
812,814:瓷磚
816:快取記憶體
820:虛擬統一記憶體
822:入口環
824:出口環
830:圖形處理單元(GPU)裝置
832,834:GPU瓷磚
836:快取記憶體
838:暫存記憶體
910:中央處理單元(CPU)裝置
912,914:瓷磚
916:快取記憶體
920:虛擬統一記憶體
922,924,926:入口環
928:出口環
930:圖形處理單元(GPU)裝置
932,934:瓷磚
936,938,940:分隔部分
942:快取記憶體
1000:處理裝置
1002:中央處理單元(CPU)
1004:圖形處理單元(GPU)
1006:揮發性記憶體
1008:非揮發性記憶體
1010:程式指令
1012:操作系統
1014:資料
1016:介面模組
前述特徵從下面的圖式說明可以被更全面地了解,其中:圖1係依據本文中所述的概念,用以加速資料流訊號處理之異質CPU/GPU系統的說明性方塊圖;圖2係依據本文中所述的概念,顯示圖1之異質CPU/GPU系統之架構的說明性方塊圖;圖3係依據本文中所述的概念,顯示對GPU運行時間之卸載(offload)請求序列的方塊圖;圖4係依據本文中所述的概念,顯示不同 GPU瓷磚布局的方塊圖;圖5係依據本文中所述的概念,加速後之資料流訊號處理的流程圖;圖6係依據本文中所述的概念,用以將任務卸載至GPU運行時間的流程圖;圖7係依據本文中所述的概念,顯示模仿(emulate)行動者網路(actor network)之配置的圖形;圖8係依據本文中所述的概念,顯示簡單的虛擬互連及瓷磚布局的圖形;圖9係依據本文中所述的概念,顯示替換的互連及瓷磚拓樸的圖形;以及圖10係依據本文中所述的概念,顯示圖2所述之系統的說明性施行。
本文中所使用之相對性說明,諸如針對圖式的左、右、上、及下,僅僅係相對性的,而且並不意謂著有限制意義。除此之外,為了清楚起見,一般的品項和電路,諸如積體電路、電阻器、電容器、電晶體等等,並未被包含在圖式中,就像可以被習於此技藝者所知悉一樣。除非另有載明,所繪示之實施例可以被了解為提供某些實施例之不同細節的說明性特徵,且因此,除非另有載明,舉例說明之特徵、組件、模組、元件、及/或態樣可以另外被組合、互連、串列、分開、互換、定位、及/或重新 排列,而不會本質上和所揭示之概念、系統、或方法有大大的不同。除此之外,組件的形狀和尺寸打算僅只是說明性的,而且除非另有載明,可以被改變而不會本質上大大地影響或限制本文中所欲尋求保護之概念的範疇。
為了方便起見,說明書中所使用的某些介紹性概念及術語被匯集於此。
如同本文中所使用的,術語「純量處理器」被用來說明一次對一個數量或集合的資料進行計算的處理器,其中,資料為整數或浮點數。也就是說,純量處理器依序一次一個而不是並列地執行指令。各指令對原子資料(atomic data)一次操作一個。純量處理器為眾所周知的「單一指令串流單一資料串流」(SISD)處理器。在GPU裝置中,純量處理器等同於屬於向量處理器的一條線道。
如同本文中所使用的,術語「向量處理器」被用來說明同時對被稱為向量的一維或多為陣列的資料進行計算的處理器。向量處理器為眾所周知的「單一指令串流多重資料串流」(SIMD)處理器。向量處理器可以改善某一類型工作的性能,例如,數值模擬或類似的任務。現代的圖形處理單元(GPU)多條線程地操作,其可以被認為是向量處理器。
如同本文中所使用的,術語「暫存記憶體」被用來說明使用於進行中之計算、資料、或者任何工作之暫時儲存的內部記憶體。習知上,暫存記憶體包括高速記憶體以固持針對快速擷取之小的資料項目。現代的GPU裝 置被提供每一個GPU處理器的多處理器有一定量的暫存記憶體(例如,16KB)。GPU可具有任何數量的多處理器,且該等多處理器的每一個具有由子處理器(亦即,線道)所共有的專用暫存記憶體。此類型的暫存記憶體有時候被稱為共享記憶體,其與當該術語「共享記憶體」被使用於CPU裝置時具有不同的意義。
現在參照圖1,系統100可包括CPU裝置110和GPU裝置130。CPU裝置110可包括一或更多個處理器120和記憶體116。該等處理器120的每一個包括核心112和私用快取記憶體114。GPU裝置130也可包括一或更多個向量處理器166和記憶體132,164。向量處理器166可使用暫存記憶體164和共用快取記憶體132。依據本文中所述的概念,系統100可將CPU裝置110和GPU裝置130展現為異質處理器的虛擬計算叢集160,其讓資訊能夠通過其處理器之間。也就是說,系統100可以針對某些功能性透過同一個介面而與CPU裝置110和GPU裝置130中的資源互動。 CPU裝置110和GPU裝置130的處理器(以及它們的核心)和記憶體元件在虛擬計算叢集160中可以被分組為瓷磚162。 一瓷磚包括至少一個處理器112,164和記憶體元件164。在CPU裝置110中,記憶體元件可包括用於每一個核心112的私用快取記憶體114。在GPU裝置130中,記憶體元件可包括分割成且分配給每一個瓷磚162的一部分暫存記憶體164。依據本文中所述之概念的瓷磚在演算法層級以及通訊基礎設施層級可以像CPU核心一樣地起作用。除此之 外,瓷磚可以被當作是與它們自己的本地記憶體無關之可定址的向量處理器。在實施例中,GPU中的瓷磚可包括向量處理器做為其主處理器。該GPU瓷磚可另包括一或更多個子處理器,其為該GPU中的純量處理器166。
在實施例中,GPU硬體包括多個被稱為串流處理器(streaming processor(SM))的處理核心。每一個SM可含有專用的晶片上資源(on-chip resource),諸如暫存器檔案、暫存記憶體、和L1快取記憶體。有些GPU可含有2或更多個SM,其為GPU模組如何為不同的市場、形狀因素、和功率條件而縮放。每一個SM可含有純量核心的集合,其比起全CPU核心,與CPU向量線道具有更多共同點。GPU的純量核心被分隔成32個群組,例如,被稱為warp(或者有時被稱為「波前(wavefront)」)。Warp為GPU上最低可獨立排程等級的實體(lowest independently schedulable level entity),且因此類似於CPU線程。Warp之32個線程的每一個共用一指令指標,且因此可以類似於CPU之單一指令多重資料(SIMD)向量單元的方式而步調一致地(in lockstep)操作。
在實施例中,warp尺寸大小的瓷磚可以形成虛擬計算叢集160中的瓷磚引擎162。每一個瓷磚引擎162可以被視為具有32條線道之純量處理元件的向量處理器,其中,純量處理元件166被當作是子處理器。在有些實施例中,瓷磚可具有略多或略少於32條線道的純量處理元件。這些線道比CPU上習知的向量線道具有更多自主 (autonomy),因為他們的控制流程可以發散(diverge)而且瓷磚引擎可以存取GPU上的不相交(disjoint)記憶體(亦即,分散的暫存記憶體164或GPU全域記憶體(global memory))。瓷磚引擎162也可以使用有效率的晶片上暫存器(on-chip register)洗牌指令。相反於係短暫的(亦即,並不持久地持有資源)傳統CUDA線程區塊(thread block),瓷磚引擎係持久的而且並不放棄(relinquish)底層的(underlying)GPU資源。
為了將工作導引至個別的瓷磚,虛擬統一記憶體150可被形成在CPU裝置110和GPU裝置130之結合的記憶體元件之外。虛擬統一記憶體150可包括一組固定容量環(ring)152,154,其係共享於遍及CPU裝置和GPU裝置110,130之上。該等環152,154可以被分隔成兩組:多重生產者單一消費者(MPSC)入口環(CPU/GPU到GPU)152和MPSC出口環(從GPU到CPU)154。當系統被啟動時,各瓷磚引擎可以和一個入口環與一個出口環相關聯。在有些實施例中,虛擬統一記憶體150可包括一個以上的入口環與一個以上的出口環。在另一實施例中,瓷磚引擎162的每一個可具有專用的入口環及/或出口環。
虛擬統一記憶體150係可存取自CPU裝置110和GPU裝置130。也就是說,CPU裝置110和GPU裝置130兩者可經由一組操作172,174,176,178來存取入口環152與一個出口環154。在本文中,CPU裝置110可將資訊(例如,任務或令牌)插入(172)入口環152的插槽中。CPU裝置110 也可將資訊從出口環154的插槽中發派出(174)。同樣地,GPU裝置130可將資訊(例如,任務或令牌)插入(178)出口環154的插槽中。GPU裝置130也可將資訊從入口環152的插槽中拉出(176)。在實施例中,虛擬統一記憶體150可創建虛擬互連,諸如訊息頻道、任務池(task pool)、郵箱、和其他由CPU裝置和GPU裝置110,130所共享之通訊結構。作為虛擬互連之虛擬統一記憶體150可形成在實體互聯的頂部上於CPU裝置110與GPU裝置130之間的邏輯通訊層,以及對應的系統元件,諸如GPU記憶體管理單元(MMU)、分頁移轉引擎(page migration engine)、和直接記憶體存取(DMA)引擎。
「計算內核」(在下文中僅稱「內核」)為軟體常式,其係特別為高通量加速硬體而被編譯,諸如GPU或數位訊號處理器(DSP)。內核非為典型上運行於CPU上的應用程式,但是可以被該應用程式所使用。在實施例中,內核(亦即,在下文中為GPU程式)可以藉由將請求經由虛擬互連而送至GPU裝置130中的GPU排程器而被發起(launched)。藉由這樣做,可以避免遍歷GPU運行時間框架(例如,CUDA)和GPU驅動程式的堆疊。特別是,可以避免進入和離開GPU驅動程式,因為進入和離開GPU驅動程式導致切換於使用者空間與內核空間之間。因此,會有隨著請求內核之執行的縮減(較佳是「最小」)的潛時成本。在實施例中,內核被實施為「侯世達(codelet)」,其係指編譯或執行於GPU上之小且簡單的程序、程式、或應 用程式。
現在參照圖2,系統200可包括CPU運行時間210和GPU運行時間230。CPU運行時間210指的是運行於CPU裝置(例如,圖1中的110)上的軟體元件。GPU運行時間230指的是運行於GPU裝置(例如,圖1中的130)上的軟體元件。CPU運行時間210可包括核心組件212、圖形組件214、和加速組件216。核心組件212可提供由該等其他組件214,216在內部上所需要的功能。在實施例中,核心組件212可提供無鎖(lock-free)資料結構、線程同步化基元(primitives)、和緩衝區管理等級(buffer management classes)。核心組件212可以不直接被該系統200的使用者所使用。圖形組件214可提供與任務管理相關的功能。在實施例中,圖形組件214可提供資料流圖形、專用節點(specializing nodes)、和註冊資料緩衝區池(data buffer pools)。加速組件216可用作為CPU運行時間210與GPU運行時間230之間的橋接器。在實施例中,加速組件216可將到該圖形組件214用以卸載任務執行的介面提供給該GPU運行時間230中的瓷磚。該CPU裝置也可包括一或更多個輸入通道220和CPU任務池222,其將被詳細說明於下。
在實施例中,該系統200可使用資料流機制和生產者-消費者型態,用以施行該系統200的任務管理。 資料流架構可以建構靜態圖形,其代表應用程式之操控緩衝器中所含有之資料的排序計算。應用程式中的資料流按照預定順序流經圖形節點。該等緩衝器的資料流開始於源節點 (source node)並且經過處理節點中的轉變(transformation),而且終止它們的壽命於匯節點(sink node),其中,諸如緩衝器的資源被回收(recycled)。該等節點藉由稱為埠或通道的單向緩衝器通道而被鏈結在一起。處理順序隱含生產者-消費者關係,因而隱含圖形中之節點間的資料相依性(data dependency)。例如,該系統可具有兩個節點,各自包含一個輸入埠和一個輸出埠。一個節點的輸出埠可以被鏈結到另一個節點的輸入埠,在該情況中,有該兩個節點之間隱含的資料相依性,其中一個節點扮演生產者的角色,而另一個節點扮演消費者的角色。在執行期間,該運行時間將在第一個節點中執行計算於緩衝器上,並且將其傳送到輸出埠。由於此輸出埠係連接至第二個節點的輸入埠,該節點將變成主動的而且該運行時間將執行其計算。 該等緩衝器在嵌入於該等節點中的計算階段序列中被修正,其經由它們的埠而被連接來形成資料流圖形。在該資料流架構中,應該提供至少一個使新的緩衝器注入該系統中的源節點以及至少一個使到達它們壽命的終點之緩衝器回收的匯節點。在實施例中,生產系統中的源節點和匯節點常常被施行作為形成該資料流圖形之外部介面的網路端點。在本文中,節點的輸入通道220用作為圖5及圖6中所述之過程的起始點。該等過程開始於當緩衝器(例如,任務)到達輸入通道220之時。
該系統200可將CPU運行時間210和GPU運行時間230展現為虛擬電腦叢集的同質處理器。CPU運行時 間210和GPU運行時間230的處理器和記憶體元件可以被分組於虛擬瓷磚叢集260中。該虛擬瓷磚叢集260中的瓷磚可包括至少一個主處理器和記憶體。該瓷磚可以被認為是具有它們自己的本地記憶體之可獨立定址(addressable)的向量處理器。
在實施例中,GPU運行時間210可以將GPU裝置(例如,圖1中的130)不展現為操作於大批資料(bulk data)上的大量寬的向量處理器,而是展現為獨立瓷磚的集合(亦即,虛擬瓷磚叢集260),各自被映射至展硬體的實體warp。例如,對於具有5,120個核心(80個SMs×2個warps×32個純量核心)的GPU而言,GPU運行時間230並不表現為具有在資料集上以SIMD(單一指令單一資料)操作之5,120個核心的裝置,而是表現為在共享記憶體系統中以MIMD(許多指令許多資料)操作之虛擬叢集的獨立160個32線道向量處理器。也就是說,該5,120個核心GPU可以被視為是160個瓷磚引擎,其中,每一個瓷磚引擎包括一向量處理器和32個子處理器(線道或純量處理器)。因此,諸如OpenMP(開放多重處理)或MPI之以共享記憶體或訊息傳遞編程模型來施行的並行演算法更加容易被移植至GPU。為了與此架構一致,需要任何現有的CUDA內核被轉換成一組被施行為warp等級之侯世達的任務。在實施例中,GPU運行時間230之每一個SM中的私有暫存記憶體(有時被稱為由NVIDIA的共享記憶體)遍及該等瓷磚之上被分隔,使得每一個瓷磚具有該記憶體的均等部分。例如,如果每一 個SM具有64KiB的專用晶片上暫存記憶體而且由4個warp組成,則運行時間將保留每一個瓷磚有16KiB的專用晶片上暫存記憶體。
虛擬統一記憶體250,為了將工作導引至個別的瓷磚,可以被形成於該CPU運行時間210和該GPU運行時間230之結合的記憶體元件之外。該GPU運行時間230可以與該CPU運行時間210一起工作來施行該虛擬統一記憶體250中的共享固定容量環緩衝器(ring buffer),諸如入口環252及出口環254。在有些實施例中,該虛擬統一記憶體250可包括一個以上的入口環與一個以上的出口環。這些環係為高通量而設計,並且為了低潛時和可擴展性(scaliability)而在內部利用CPU和GPU兩者上的全系統(system-wide)原子操作及記憶體柵欄(memory fence)。所有的環插槽(ring slot)係對齊於快取線(cache-line)邊界上,其意謂著出於性能理由而根據快取線尺寸來決定環插槽的尺寸。該等環可以施加FIFO(先進先出)排序(ordering),而且環的各個末端可以視其期望多個或單個客戶而被最佳化。資料流框架能夠建構任意網路的方向環(directional ring)來模擬各式各樣的虛擬互連,諸如點對點(peer-to-peer)通道、單一消費者郵箱、或者完全連接的網絡(fully-connected mesh)。在實施例中,具有任何尺寸,而且具有任何插槽容量之任何數量的環可以被創建來為特定的應用而被客製化以及調諧。因為入口環252及出口環254被分配在可以由該CPU運行時間210和該GPU運行時間230存取的 虛擬統一記憶體250中,所以傳遞於CPU與GPU間之環插槽的指標(pointer)係有效的,並且可以被存取而不需明確的記憶體轉移。在有些實施例中,有些GPU可具有硬體分頁移轉(page-migration)引擎,其回應分頁錯誤而在整個物理互連(亦即,PCIe,NVLink)上以分頁粒度(page-granularity)移動資料。
輸入通道220可以從外部元件(例如,伺服器或用戶介面)接收任務。在實施例中,系統200的開發商可以使用由該圖形組件214所提供的圖形介面來註冊將要被使用於應用中之資料緩衝器的類型及數量。該緩衝器類型可以合併分級的純量類型以及向量的維度。所有的緩衝器被預先分配以避免在運行時間時的系統堆積分配。嵌入式應用之資料路徑中的堆積分配(heap allocation)可能會導入實質的潛時。反而,運行時間管理針對緩衝器的請求而且當不再需要該等請求時將他們回收。該等緩衝器係從CPU和GPU裝置兩者可以看見的虛擬統一記憶體250中被分配。這致使緩衝器指標能夠被該CPU與GPU所傳遞和透明地存取而不需要明確的DMA命令來將資料複製到資料緩衝器以及從資料緩衝器中複製資料。在實施例中,所有的緩衝器出於性能理由而被對齊於快取線邊界上。
系統200可以在由該圖形組件214所產生的各圖形節點之內產出(spawn)一個被稱為行動者(actor)(例如,圖3中的310)的I/O密集型(I/O-bound)線程。該行動者可以具有阻擋輸入通道220的任務。當在輸入通道220處接 收到任務時,該行動者線程經由加速組件216而將緩衝器上的計算卸載至由CPU裝置所管理的CPU任務池222或者至GPU裝置。然後,該行動者可以被中止,不消耗CPU週期,直到該CPU任務池或GPU結束卸載請求的執行並且通知該行動者該任務的完成為止。
在實施例中,該CPU任務池222被用來避免CPU運行時間210的超訂(oversubscription)。執行於該CPU任務池222中之線程的數目不會超過該CPU運行時間210上可供使用的硬體併發(亦即,同時執行之線程的數目)。在有些實施例中,該任務池222可以被配置而使得當閒置(idle)或停駐(park)時,線程積極地轉動直到任何資源變成可供使用為止。例如,該CPU任務池222可以被配置而使得在以功率耗損為代價的情況下線程轉動以使潛時達最小。卸載至該CPU任務池222的任務運行至完成於可用的任務池線程上。在實施例中,由於該CPU任務池222中的任務未被搶佔(preempted)(亦即,中斷),所以該任務不應該包含阻擋操作,因為那會綁住有價值的CPU資源。該CPU任務池222被設計來僅加速計算限度內的計算(compute-bound computations)。
在實施例中,該系統200的開發商可以用類似於OpenMP介面的資料並行方式來創建任務用以處理節點。 如果在計算內沒有固有的並行性(inherent parallelism),則該任務可以被施行為串行功能。因此,聚焦於測試系統行為的應用程式可以很輕易地使用此架構來加以施行。當由 該圖形組件214所產生之節點的其中一個被發現是在計算限度內的,則該節點可以藉由將該邏輯施行為細粒度的(fine-grained)任務來予以最佳化,並且被卸載至CPU任務池以減少潛時。當節點是在計算限度內的時,該節點完成任務所需的時間主要是由中央處理器的速度來決定的,因而處理器利用率高,而且由周邊設備(例如,硬碟機)所產生的中斷可以被緩慢地處理,或者實際上被延遲。在實施例中,計算上的並行性可以存在於資料流圖形中的兩個層級上。一旦所有的輸入通道220變成作用的,不同的圖形節點可以同時地執行。對並行執行的唯一限制可能來自於節點之間的資料相依性。在另一個層級上,各處理節點的內部邏輯可以暴露出資料並行性,並且當被轉變成適當的任務時可以用該CPU任務池來予以加速。
GPU運行時間230可包括GPU排程器232和侯世達包234。GPU排程器232可以實施用以執行任務於該GPU運行時間230中的功能,其將在下面被詳細地解說。 侯世達包234為針對要被該系統200所執行之應用軟體所研發之GPU程式的靜態函式庫(static library)。侯世達包234中的該等侯世達被施行為GPU裝置函數,各自分享共同的函數簽名(function signature)。在實施例中,GPU運行時間230的施行可以視由GPU供應商所提供的應用程式框架(application framework)而定,諸如CUDA和Khronous OpenCL。特別是,GPU運行時間230被鏈結至GPU供應商之應用程式框架中的運行時間函式庫(library),其使能夠 支援非GPU裝置的抽象加速介面。在實施例中,GPU運行時間230可提供API以致使使用者能夠用排程器來註冊他們的侯世達,而且也將這些侯世達打包成被分開編譯的侯世達包234。
在實施例中,該CPU運行時間210上的任何線程以及該虛擬瓷磚叢集260中的任何瓷磚引擎可以推送任何入口環252上的工作請求(亦即,任務),致能遍及該異質系統(CPU/GPU)上的全點對點通訊(full point-point communications)。因此,任務被產生而要被該虛擬瓷磚叢集260中的瓷磚引擎所實施。在有些實施例中,各任務的前8個位元組可含有運算碼(opcode),GPU排程器232使用該運算碼而在運行時間將該任務發派出給適當的GPU。在其他實施例中,該運算碼的大小可以和8個位元組不同,而且該運算碼可以位在除了該任務之第一部分以外的其他地方。該任務的剩餘位元組可含有由該任務所需的引數(argument)和資料。在有些實施例中,因為入口環252存在於共享虛擬管理記憶體中,所以該CPU運行時間210可以傳送指標作為任務引數,並且當指標存取時該GPU運行時間230就可能分頁錯誤而將該等分頁帶入GPU記憶體中。 因此,在此編程模型中不需要明確地管理記憶體轉移,雖然並沒有防止使用者預先分配不可分頁(non-pageable)的記憶體,以及使用GPU DMA功能來提取任務引數作為任務執行的部分。一旦發派出,特定任務的侯世達(task-specific codelet)被執行於該瓷磚引擎上。該任務總是接收 該瓷磚之晶片上暫存記憶體(on-chip scratchpad memory)的分配以供他們的使用。當任務被執行於瓷磚上時,該瓷磚可以使用被指派給該瓷磚之私有的暫存記憶體。
GPU排程器232可以跳過(bypass)由該GPU製造商所提供的硬體排程器(例如,NVIDIA GPU排程器)。 在實施例中,該GPU排程器232可以視需要而發起作為許多線程,以施行所選擇之瓷磚配置中的該些瓷磚。那些線程可被進一步分隔成為warp大小的瓷磚。在有些實施例中,該GPU排程器232可以放置各瓷磚的第一個線程(被稱為leader),負責和入口環252交錯。該leader可以消耗來自該入口環252的任務,而後將任務運算碼發派出給該適當的任務侯世達。各瓷磚引擎線道(包含該leader)然後可以處理該任務,並且將被給予該瓷磚可以使用來根據其在該引擎內的身分而決定要採取哪個行動的識別資訊。一般而言,各線道將指派一子範圍的資料給自己本身,該子範圍的資料被該GPU排程器232所分割來並行地處理以避免必須和其他線道同步。當該入口環上沒有任何請求時,該leader阻擋其對應瓷磚的操作。在實施例中,僅各瓷磚引擎的該leader線道可以消耗來自該入口環252的任務,但任何引擎線道可以在出口環254上產生任務(例如,完成令牌(token))。在有些實施例中,該leader線道可以在該系統中的任何入口環上產生任務。此任務的產生可包含在同一個瓷磚引擎上任務的自排程(self-scheduling)。在其他實施例中,當該GPU支援該特徵時,任何線道可以在該系統 中的任何入口環上產生任務。
當任務到達於該入口環252上時,該leader可以藉由將環插槽指標廣播至該瓷磚中的各同行(peer)線程而將該任務廣播至屬於該瓷磚的子處理器(亦即,純量處理器)。然後,包含該瓷磚之該leader的各子處理器可以並行地執行該所請求的侯世達。該等子處理器藉由稱為秩(rank)的唯一識別符而被識別於瓷磚內。如果從該入口環252所接收到的請求為使該GPU排程器232停止(halt)的特別命令,該leader將該停止狀態廣播(使用GPU洗牌指令)至各同行,並且該瓷磚終止操作。一旦與該任務相關聯的侯世達被執行,該瓷磚中所有的同行線程可以同步而且該leader可以將完成令牌送至出口環254終止操作,使得為負責於該任務請求之中止CPU線程的行動者能夠被喚醒。 GPU排程器迴圈(loop)可以重複直到該CPU運行時間送出停止命令為止,其發生為中止協定(例如,毒藥丸(poison pill))的部分。
在實施例中,該GPU運行時間230使用warp洗牌指令以將該任務廣播至該等子處理器。因此,可以避免使用有價值的暫存記憶體來分享排程器狀態。藉由利用warp層級的指令,該GPU的資源可以被保留只給侯世達使用。由於warp指令操作於暫存器層級,所以該等warp指令不消耗記憶體頻寬,而因此比使用該暫存記憶體遠遠更有效率。
在實施例中,經由該CPU任務池222和加速 組件216來卸載任務可以提供不同的介面。因此,可以要求開發商選擇他們將要使用哪個卸載引擎。在有些實施例中,該兩種機制可以被合併來提供相同的瓷磚和本地記憶體抽象化解(abstraction)。在本文中,該CPU運行時間210可以將CPU核心展現為具有1-線道向量處理器(實際上,純量處理器)的瓷磚。除此之外,該CPU運行時間210中的共享記憶體可以模仿該GPU運行時間230中之暫存記憶體的概念。例如,如果該CPU有支援的話,可以使用快取線鎖定(cache-line locking)。因此,同一個侯世達可以工作於CPU和GPU瓷磚兩者上,而且會在異質系統中遍及所有的計算元件上展現共同的編程模型。這也會致使CPU和GPU瓷磚能夠在任務的層級協同工作,以加速大資料集的計算。
當該虛擬瓷磚叢集260中的瓷磚引擎係忙於處理進來的任務時,該系統200可能需要中止該等瓷磚引擎但不會降低待處理任務或者中斷目前正在執行的任務的機制。在有些實施例中,分散式終止偵測演算法的參考施行,諸如簡單的毒藥丸協定可以被使用。在本文中,使用者可以將中止任務(該毒藥丸)放進各瓷磚引擎入口環252中。一旦接收到該中止任務,該GPU運行時間230引擎即可離開該GPU排程器232。該CPU運行時間210然後可以進入全系統阻障(system-wide barrier),以等候該等線程區塊(主持(hosting)該等瓷磚引擎)終止,而在那個時候該CPU線程被解除阻擋。
現在參照圖3,到該GPU運行時間330之卸載請求的序列被展示出。當任務被接收於節點312的輸入通道314時,對應於該任務的線程316被指派給該任務。在實施例中,線程創建被完成於該GPU運行時間的開始之時,而且可供使用的線程被指派給進來的任務。依據預先定義的規則,該任務可以被決定要被卸載至該GPU運行時間330。在GPU卸載請求322中,該CPU運行時間310可以將與該卸載請求有關的資訊轉移至統一虛擬記憶體(例如,圖2中的250)之入口環340的插槽342。在實施例中,該CPU運行時間310可以將侯世達描述符(codelet descriptor)、到資料緩衝器的指標、以及該侯世達需要的任何純量參數引領(marshal)至該入口環340的插槽342中。 對應於該任務的侯世達(未顯示出)已經被編譯成侯世達包356,其已經被載入至該GPU運行時間330中作為應用程式啟動的部分。
在實施例中,當任務被卸載至該GPU運行時間330時,該線程316可以使其自己本身暫停。該線程316可以等待直到該GPU運行時間330已經完成所請求之侯世達的執行為止。當指派給該任務的瓷磚352,354完成該任務的執行時,該瓷磚可以將完成事件或完成令牌364存放在出口環360上。完成令牌364被用來通知該線程該卸載請求已完成,而且該節點線程可以喚醒。在實施例中,該GPU運行時間330並不直接通訊至運行於該CPU運行時間310中的線程。也就是說,該GPU運行時間330不能夠將該 任務已完成的訊號或中斷送至該線程316。因此,該CPU運行時間310需要檢查該GPU運行時間330的狀態以決定該等卸載請求之完成的機制。該CPU運行時間310中的完成處理程序(handler)線程320可以實施此功能。該完成處理程序320可以代表運行於該CPU運行時間310中的所有節點來為完成令牌檢查該出口環360。該完成處理程序320可以處理該出口環360上的各完成令牌,以喚醒324該對應的節點線程316。因此,該CPU運行時間310中的一個輪詢(polling)線程(亦即,完成處理程序320)可以處理任務的完成,而不是每一個卸載請求一個。在有些實施例中,如果該GPU運行時間330支援適合的CPU發訊機制,則該CPU發訊機制可以被使用來代替該完成處理程序320。在有些實施例中,各完成令牌可包含對與該請求之CPU線程相關聯之該CPU運行時間310的阻障(barrier)的參考。當該完成令牌被發派出時,一旦接收到該令牌,相關聯的阻障就可以被解除阻擋,讓該CPU線程能夠繼續處理。
該GPU運行時間330可以提供諸如具有本地記憶體之瓷磚352,354的抽象概念,而不是諸如warp、SM、暫存記憶體、或純量核心的實體GPU裝置。在有些實施例中,被稱為‘切片部(slice)’之可供使用的總數之子集的瓷磚可以被使用。依據一配置,該切片部可以由在該GPU運行時間330上可供使用之從一至最大數目的瓷磚所組成。在本文中,該GPU運行時間330執行該切片部上的侯世達,而不是在該切片部以外之瓷磚上的。更小子集的 瓷磚可以被用來減少該GPU上的功率損耗,或者致能多租戶方案,在該多租戶方案中,供應商函式庫或其他運行時間可以利用在該保留切片部以外的GPU資源。
現在參照圖4,不同的GPU瓷磚布局被展示出。該GPU運行時間(例如,圖2中的230)係可高度配置的,並且視該等侯世達的暫存記憶體或通量要求而支援各種的瓷磚配置。圖4展示假設具有3個SM之假想GPU的代表性瓷磚配置。第一個配置410可以在以縮減通量容量為代價的情況下使每一個瓷磚的暫存記憶體達最大。在本文中,每一個SM致能一個瓷磚,而此配置可留下幾個warp值得該SM中未使用之純量核心。第二個配置420可以創建盡可能多的瓷磚,以準確地覆蓋在各SM上之數個純量核心。在本文中,暫存記憶體相應地被分隔於遍及那些瓷磚上。此配置可以使所有的SM暴露於該GPU運行時間(例如,圖2中的230),但是相較於最大記憶體配置410,暫存記憶體將會更受限。過載(overdrive)配置430可以藉由使可見於該GPU運行時間之瓷磚的數目加倍來超訂(oversubscribe)底層的純量核心。當warp在GPU DRAM存取失速時,因為GPU硬體(不像CPU線程)能夠以零成本而在該等warp之間做切換,所以此配置通常達成最高的通量。在本文中,相較於預設配置420,每一個瓷磚的暫存記憶體分配為每一個瓷磚尺寸的一半。
圖5和圖6為繪示由CPU運行時間和GPU運行時間(例如,圖2中的210和230)所實施之處理的流程圖。 矩形元件(典型上由圖3中的510代表),在本文中以「處理方塊」表示,代表電腦軟體指令或指令群組,而菱形元件(未顯示出),在本文中以「決定方塊」表示,代表影響處理方塊之流程的電腦軟體指令或指令群組。該等處理方塊可以代表由諸如數位訊號處理(DSP)電路或特殊應用積體電路(ASIC)之功能性等同電路所實施的步驟。該等流程圖並非描述任何特別編程語言的語法,而是繪示習於此技藝者製作電路或者產生電腦軟體來實施特別設備所需要之處理需要的功能性資訊。應注意到許多例行程式元件,諸如迴圈和變數的初始化以及暫時變數的使用,可以為了清楚而被省略。所述方塊的特別序列僅係舉例說明者並且可以改變而沒有違離本文中所欲尋求保護之概念、結構、和技術的精神。因此,除非另外陳述,下面所述的方塊係無順序的,其意謂若有可能,由該等方塊所代表的功能可以任何方便或者想要的順序來於以實施。
現在參照圖5,用於加速後資料流訊號處理的過程500可以由系統(例如,圖2中的200)來實施,該系統包括CPU運行時間(例如,圖2中的210)以及GPU運行時間(例如,圖2中的230)。在處理步驟510中,該系統200可以形成由CPU裝置(例如,圖1中的110)和GPU裝置(例如,圖1中的130)之核心及記憶體所形成的虛擬瓷磚叢集(例如,圖2中的260)。該虛擬瓷磚叢集中的瓷磚可以作用像是在算術層級以及通訊基礎設施層級兩者的CPU核心一樣。該等瓷磚可以被當作是具有他們自己的本地記憶體之 可獨立定址的向量處理器。在處理步驟520中,該系統可以形成係可由該CPU運行時間和該GPU運行時間兩者存取的虛擬統一記憶體(例如,圖2中的250)。在處理步驟530中,該CPU運行時間可以在輸入通道或輸入埠(例如,圖2中的220)等候任務。在該CPU運行時間中所創建的一或更多個節點處可以有一或更多個輸入通道。當任務到達輸入通道(處理步驟540)時,該CPU運行時間可以將該任務指派給該虛擬瓷磚叢集中的至少一個瓷磚。該瓷磚可以位在該CPU裝置或該GPU裝置中。如果該任務被指派給該CPU裝置中的瓷磚時,該任務被插入進CPU任務池(例如,圖2中的222)。如果該任務被指派給該GPU裝置中的瓷磚時,該任務經由加速組件(例如,圖2中的216)而被卸載至該GPU運行時間。該卸載任務的過程被詳細說明於圖6中的過程600。在處理步驟560中,該任務被該指派的瓷磚所執行。 然後,該CPU運行時間可以繼續等候更多的任務(處理步驟530),直到該系統被終止協定(諸如,毒藥丸)指示停止。
現在參照圖6,用於將任務卸載至GPU運行時間(例如,圖2中的230)的過程600可以由系統(例如,圖2中的200)來實施,該系統包括CPU運行時間(例如,圖2中的210)以及GPU運行時間。在處理步驟610中,該CPU運行時間,經由該加速組件(例如,圖2中的216),可以將任務插入進入口環(例如,圖2中的252)的插槽中。該CPU運行時間也可以將包含執行該任務之用於該任務之資料的資訊 轉移至該入口環。在有些實施例中,對應於該任務的物件可能含有相關的資訊。該CPU運行時間可以創建或指派對應於該任務的線程(例如,316)。在處理步驟630中,該CPU運行時間可以將該線程擱置。在處理步驟632中,行動者正在等候喚醒訊號。被插入進該入口環的插槽中之該任務在處理步驟640中被GPU運行時間所發派出。在處理步驟642中,該GPU運行時間,特別是該GPU排程器(例如,圖2中的232),使用GPU warp洗牌指令而將該任務廣播至子處理器。在實施例中,一個洗牌指令可以將該任務廣播至子處理器。在實施例中,該等子處理器可以是純量處理器。在處理步驟644中,該GPU排程器可以為該等子處理器的每一個分割用於該任務之該資料並且將分割資料指派給各子處理器。在處理步驟646中,該等子處理器的每一個可以使用該指派的分割資料來執行對應於該任務的侯世達。也就是說,各子處理器以該分割資料之不同分隔部分(partition)來執行同一個侯世達。在處理步驟648中,當該任務的執行完成時,該GPU運行時間將完成令牌插入進出口環(例如,圖2中的254)的插槽中。在處理步驟634中,該CPU運行時間可以注意該完成令牌並且將該完成令牌從該出口環中拉出。在實施例中,完成處理程序(例如,圖3中的320)可以檢查該出口環並且拉出該完成令牌。在處理步驟636中,該CPU運行時間可以喚醒該行動者。在有些實施例中,當該行動者被喚醒時,可以解開對該CPU運行時間的阻障。
現在參照圖7至9,該GPU運行時間(例如,圖2中的230)可以視應用的要求而被定製來施行各種不同的虛擬互連拓樸和瓷磚布局。選擇虛擬互連和瓷磚布局可以隱含特別的執行模型而且可以影響GPU侯世達的施行以及該資料流應用的組織。圖7至9說明具有對應之應用使用情況的代表性運行時間配置。在有些實施例中,使用情況的組合可能是最適當的。該等配置可以基於該等GPU侯世達所使用的處理需求和瓷磚之間所使用的通訊型態來決定。
現在參照圖7,模仿行動者-網路的配置被展示出。上下文中的行動者為具有相關郵箱的處理節點。各瓷磚712,714,732,734(作為行動者)可以在其郵箱上接受侯世達請求(亦即,任務),並且依序執行該等請求。在本文中,基於源自於相同來源的順序而維持該等進來之請求執行的順序。在實施例中,與各時間相關聯的郵箱在統一虛擬記憶體720中可以被施行為多重生產者單一消費者環722,724。該等環722,724為單向的而且可以與接受該等侯世達請求之入口環(例如,圖2中的252)類似地工作。圖7中之該等瓷磚和環的編號繪示出各瓷磚係與唯一的環相關聯。在本文中,瓷磚存在於該CPU裝置710和該GPU裝置730兩者上。該CPU裝置710中的各瓷磚712,714可以具有自己的快取記憶體716。該GPU裝置730中的瓷磚可以分享快取記憶體736而且也可以具有自己的暫存記憶體738。此外,任何瓷磚可以將侯世達請求送至任何其他的瓷磚。例 如,該CPU裝置710上的瓷磚3可以將侯世達請求送至標號瓷磚4的GPU瓷磚。在執行該侯世達請求之後,瓷磚4可以將侯世達請求送回至瓷磚3。在有些實施例中,資料流應用可以使用編程模型,其中,各行動者為資料流圖形中的級(stage)(亦即,能夠同時執行之管線中的處理元件),而且各郵箱代表相關聯的輸入埠。在此模型中,該資料流圖形可以被直接映射至此行動者網路上。該資料流圖形可以藉由將該圖形中的所有處理節點映射至GPU瓷磚來予以執行。此模型係有利的,因為這樣做能夠實質上縮減端對端潛時(end-to-end latency),其係由於該資料流圖形的整個條關鍵路徑執行於該GPU上而不涉及CPU之故。
現在參照圖8,簡單的虛擬互連和瓷磚布局被展示出。在本文中,瓷磚存在於該CPU裝置810和該GPU裝置830兩者上。該CPU裝置810中的各瓷磚812,814可以具有自己的快取記憶體816。該GPU裝置830中的瓷磚可以分享快取記憶體836而且也可以具有自己的暫存記憶體838。虛擬統一記憶體820由單一對的入口環822和出口環824組成。在本文中,該CPU裝置810中的瓷磚812可以在該入口環822上發起侯世達請求。所有的GPU瓷磚832,834,...可以將該等侯世達請求當作經由該入口環822而到達的請求並且執行該等請求。在GPU瓷磚834執行侯世達之後,該瓷磚834可以將完成令牌放置於出口環824上,而在該出口環824中,該CPU裝置810中的完成處理程序(例如,圖3中的320)取得通知。對比於圖7中的行動者-網路 配置,該等GPU瓷磚係匿名的。也就是說,侯世達請求的發送者並不關心哪一個特定的GPU瓷磚執行該請求。此配置的型態可以被稱為「任務池」或「全體工作人員(work crew)」,而且一般常見於伺服器軟體中。此配置很容易藉由升級至更強有力的GPU(或者增添更多GPU)來主管額外的瓷磚而向外擴展。
現在參照圖9,分享有圖7中之行動者-網路配置和圖8中之任務池配置的品質之替換的互連和瓷磚布局被展示出。在本文中,瓷磚存在於該CPU裝置910和該GPU裝置930兩者上。該CPU裝置910中的各瓷磚912,914可以具有自己的快取記憶體916。該GPU裝置930中的瓷磚932,934可以分享快取記憶體942而且也可以具有自己的暫存記憶體946。該GPU瓷磚932,934,…被分割成分隔部分936,938,940。該等分隔部分的每一個被指派給該分隔部分獨有的一或更多個侯世達。在本文中,各瓷磚分隔部分936,938,940係與唯一的入口環922,924,926相關聯而且所有的分隔部分分享統一虛擬記憶體920中的單一出口環928。此配置可以改善該等資源的本地性,特別是當該等分隔部分係對齊於有意義的硬體邊界(諸如,GPU多處理器)上。特別是,該配置可以改善快取記憶體利用率。除此之外,演算法執行於與其他瓷磚完全隔離的瓷磚上,其可以被利用來以許多演算法填滿一GPU,當被單獨地排程時,將無法具有足夠的露出並行性(exposed parallelism)而有效率地運行於GPU上。例如,在NVIDIA GPU的情況 中,該等分隔部分936,938,940可以對齊於SM邊界上,使得一分隔部分中的所有瓷磚分享該SM的同一個L1快取記憶體。在此情況下,當一個或一小集合的侯世達執行於一分隔部分中時,該L1快取記憶體實質上保持相同的資訊,其改善整體性能。相對於圖8中的任務池配置,此配置也可以減少競爭,因為侯世達請求被散布於遍及多個入口環922,924,926。在本文中,僅在一分隔部分之內時,GPU瓷磚係匿名的。單一出口環928係分享遍及所有的分隔部分來接受侯世達完成令牌。在有些實施例中,一個以上的出口環可以被使用。在資料流應用的另一實施例中,針對相對小的DSP計算之由單一個瓷磚組成的一個分隔部分可以被保留。幾個瓷磚的另一個分隔部分能主管所有的順和逆FFT侯世達,因為函數及資料(亦即,係數表和位元顛倒函數)被分享遍及那些演算法。第三個分隔部分可以用做為用於任何剩餘的侯世達的通用任務池,其中,區域性係沒有利益的。
現在參照圖10,可以是用來施行本文中所述之處理技術的處理裝置1000說明性施行包含CPU 1002、GPU 1004、揮發性記憶體1006、非揮發性記憶體1008(例如,硬碟機)以及介面模組1016(例如,使用者介面、USB介面等等)。非揮發性記憶體1008可以儲存電腦指令1010、操作系統1012和資料1014。在另一範例中,程式指令1010被CPU 1002而非揮發性記憶體1006所執行來實施本文中所述之過程的全部或部分(例如,過程500,600)。
本文中所述的過程(例如,過程500,600)不限於使用圖2或10的硬體及軟體;他們可以找到任何計算或處理環境方面以及與能夠運行電腦程式之任何類型的機器或機器組合的適用性。本文中所述的過程可以用硬體、軟體、或硬體和軟體兩者的組合來施行。本文中所述的過程可以用執行於編程電腦/機器上的電腦程式來施行,而編程電腦/機器各自包含處理器、非暫態性機器可讀媒體或者可以由該處理器(包含揮發性記憶體及非揮發性記憶體及/或儲存元件)讀取的另一製造物件、至少一個輸入裝置、以及一或更多個輸出裝置來施行。程式碼可以被應用於使用輸入裝置所鍵入的資料,以實施本文中所述的任何過程以及產生輸出資訊。
該系統可以至少部分經由電腦程式產品(例如,在非暫態性機器可讀儲存媒體,諸如,例如非暫態性機器可讀媒體)來施行,用以由資料處理設備(例如,編程處理器、電腦、或多個電腦)來執行,或者控制資料處理設備(例如,編程處理器、電腦、或多個電腦)的操作。各個此種程式可以用高階程序或物件導向的編程語言來施行,以和其餘之基於電腦的系統一起工作。然而,該等程式可以用組合語言、機器語言、或硬體描述語言(Hardware Description Language)來施行。該語言可以是編譯語言或解釋型語言,且其可以用任何形式來予以部署,包含作為獨立程式或者作為模組、組件、子常式、或者適合使用於計算環境中的另一單元。電腦程式可以被部署而被執行於 一個電腦或多個電腦上,在一個地點或者分散遍及多個地點,並且藉由通訊網路來互連。電腦程式可以被儲存於非暫態性機器可讀媒體上,該非暫態性機器可讀媒體可以由通用或專用編程電腦讀取,用以配置及操作該電腦於當該非暫態性機器可讀媒體被該電腦所讀取來進行本文中所述的過程。例如,本文中所述的過程也可以被施行為非暫態性機器可讀儲存媒體,係配置有電腦程式,其中,當執行時,該電腦程式中的指令致使該電腦依照該等過程而操作。非暫態性機器可讀媒體可包含但不限於硬碟機、光碟、快閃記憶體、非揮發性記憶體、揮發性記憶體、磁碟片等等,但不包含暫態性訊號本身。
本文中所述的發明性概念提供軟體中間件,其展示一GPU裝置,並非作為寬廣卻有限制性的向量處理器,而是做為有彈性的計算叢集或多核心CPU。因此,「虛擬」計算叢集或多核心CPU可以使用CPU編程者熟悉之基於任務(task-based)或基於訊息(message-based)的編程模型來予以編程。本文中所述的架構施行可擴展的使用者空間軟體運行時間(包含GPU排程器)和輕量級應用框架,用以建構及加速多核心CPU和GPU裝置兩者上的資料流圖形。
已經說明了較佳實施例,其用來例舉各種概念、結構、和技術,其係此專利的目的,結合這些概念、結構、和技術的其他實施例也可以被使用現在將變得明顯。因此,提出了此專利的範圍不應該受限於所說明的實 施例,而是應該僅被下面申請專利範圍的精神和範疇所限制。
因此,其他實施例係在下面申請專利範圍的範疇之內。
112:核心
114:私用快取記憶體
116:記憶體
132:記憶體
152:入口環
154:出口環
162:瓷磚引擎
164:暫存記憶體
166:向量處理器
172:插入操作
174:發派出操作
176:拉出操作
178:插入操作

Claims (20)

  1. 一種由異質CPU/GPU系統實施之加速的資料流訊號處理方法,包括:形成虛擬瓷磚叢集,其中,該虛擬瓷磚叢集包括複數個瓷磚,其中,該等瓷磚的每一個包括來自中央處理單元(CPU)裝置或圖形處理單元(GPU)裝置的主處理器和記憶體,且其中,該GPU裝置中的瓷磚另包括一或更多個子處理器;形成虛擬統一記憶體,其中,該虛擬統一記憶體係可由該CPU裝置和GPU裝置存取,並且該虛擬統一記憶體包括一或更多個入口環和一或更多個出口環;產生任務;依據預定規則而將該任務指派給該虛擬瓷磚叢集的至少一個瓷磚;將該任務插入該虛擬統一記憶體的入口環內;回應該任務,其正被指派給該GPU裝置中的該至少一個瓷磚:使用GPU洗牌指令而將該任務廣播至該至少一個瓷磚的該一或更多個子處理器;以及將與該任務相關聯的資料分割而且將分割資料的每一個指派給該一或更多個子處理器的每一個,其中,該一或更多個子處理器的每一個使用該分割資料的每一個而運行對應於該任務的侯世達;以及藉由該虛擬瓷磚叢集的該至少一個瓷磚來執行該任 務。
  2. 如請求項1的方法,另包括:產生或指派對應於該任務的線程,其中,該線程被暫停於當該任務被指派給該至少一個瓷磚時;一旦完成該任務的執行,即將用於該任務的完成令牌插入該虛擬統一記憶體的出口環內;以及回應於從該出口環中拉出該完成令牌,喚醒該線程。
  3. 如請求項2的方法,其中,該完成令牌包括對與該線程相關聯的該CPU裝置之阻障的參考,而且一旦拉出該完成令牌,即將該阻障解除阻擋。
  4. 如請求項1的方法,其中,該GPU裝置中之該至少一個瓷磚的該主處理器包括向量處理器而且該一或更多個子處理器包括一或更多個純量處理器。
  5. 如請求項1的方法,其中,數個該一或更多個入口環和一或更多個出口環係可配置的。
  6. 如請求項1的方法,其中,該虛擬瓷磚叢集的該至少一個瓷磚支援相同的資源。
  7. 如請求項1的方法,其中,該任務基於該任務的運算碼而被發派出。
  8. 如請求項1的方法,其中,該任務藉由該GPU裝置之包括該GPU洗牌指令的硬體指令來予以廣播。
  9. 如請求項1的方法,其中,對應於該任務的該侯世達係從侯世達包中被選出的。
  10. 如請求項1的方法,其中,該等瓷磚之 每一個的線道可以被委派而與該入口環互動並且該線道從該入口環中將該任務發派出。
  11. 如請求項1的方法,其中,指派給子處理器之該分割資料的子範圍和指派給另一子處理器之該分割資料的另一子範圍不同。
  12. 如請求項1的方法,其中,至少一個入口環和至少一個出口環係專用於該虛擬瓷磚叢集的每一個瓷磚。
  13. 如請求項1的方法,其中,該預定規則包括將該虛擬瓷磚叢集的一瓷磚映射至一或更多個侯世達。
  14. 一種用以加速資料流訊號處理之異質CPU/GPU系統,包括:中央處理單元(CPU)運行時間;圖形處理單元(GPU)運行時間;包括複數個瓷磚的虛擬瓷磚叢集,其中,該等瓷磚的每一個包括來自該CPU運行時間和GPU運行時間的主處理器和記憶體,且其中,該GPU運行時間的瓷磚另包括一或更多個子處理器;包括一或更多個入口環和一或更多個出口環的虛擬統一記憶體,其中,該虛擬統一記憶體可由該CPU運行時間和GPU運行時間存取,其中,該CPU運行時間被配置成:產生任務; 依據預定規則而將該任務指派給該虛擬瓷磚叢集的至少一個瓷磚;以及藉由該虛擬瓷磚叢集的該至少一個瓷磚來執行該任務,其中,該GPU運行時間被配置成:回應於該任務,其正被指派給該GPU運行時間中的該至少一個瓷磚,將該任務插入該虛擬統一記憶體的入口環內;使用GPU洗牌指令而將該任務廣播至該至少一個瓷磚的該一或更多個子處理器;以及將與該任務相關聯的資料分割而且將分割資料的每一個指派給該一或更多個子處理器的每一個,其中,該一或更多個子處理器的每一個使用該分割資料的每一個而運行對應於該任務的侯世達。
  15. 如請求項14的系統,其中,該CPU運行時間被進一步配置成:產生或指派對應於該任務的線程,其中,該線程被暫停於當該任務被指派給該至少一個瓷磚時;以及回應於從該虛擬統一記憶體中的出口環中拉出完成令牌,喚醒該線程,其中,一旦完成該任務的執行,該GPU運行時間即將用於該任務的完成令牌插入該虛擬統一記憶體中之該出口環內。
  16. 如請求項15的系統,其中,該完成令牌包括對與該線程相關聯的該CPU運行時間之阻障的參考, 而且一旦拉出該完成令牌,即將該阻障解除阻擋。
  17. 如請求項14的系統,其中,該GPU運行時間中之該至少一個瓷磚的該主處理器可包括向量處理器以及該一或更多個子處理器,其中,各子處理器包括純量處理器。
  18. 如請求項14的系統,其中,數個該一或更多個入口環和一或更多個出口環係可配置的。
  19. 如請求項14的系統,其中,該任務藉由該GPU運行時間之包括該GPU洗牌指令的硬體指令來予以廣播。
  20. 如請求項14的系統,其中,該預定規則包括將該虛擬瓷磚叢集的一瓷磚映射至一侯世達。
TW108139888A 2018-12-06 2019-11-04 用以加速資料流訊號處理之異質cpu/gpu系統和由其實施之加速的資料流訊號處理方法 TWI736001B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862776119P 2018-12-06 2018-12-06
US62/776,119 2018-12-06
US16/372,618 US10963300B2 (en) 2018-12-06 2019-04-02 Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems
US16/372,618 2019-04-02

Publications (2)

Publication Number Publication Date
TW202029004A TW202029004A (zh) 2020-08-01
TWI736001B true TWI736001B (zh) 2021-08-11

Family

ID=70970872

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108139888A TWI736001B (zh) 2018-12-06 2019-11-04 用以加速資料流訊號處理之異質cpu/gpu系統和由其實施之加速的資料流訊號處理方法

Country Status (7)

Country Link
US (1) US10963300B2 (zh)
EP (1) EP3891606A1 (zh)
KR (1) KR102600852B1 (zh)
AU (1) AU2019392179B2 (zh)
CA (1) CA3107337C (zh)
TW (1) TWI736001B (zh)
WO (1) WO2020117388A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853079B2 (en) * 2018-09-26 2020-12-01 Side Effects Software Inc. Dependency-based streamlined processing
US11620510B2 (en) * 2019-01-23 2023-04-04 Samsung Electronics Co., Ltd. Platform for concurrent execution of GPU operations
US11886969B2 (en) 2020-07-09 2024-01-30 International Business Machines Corporation Dynamic network bandwidth in distributed deep learning training
US11875256B2 (en) 2020-07-09 2024-01-16 International Business Machines Corporation Dynamic computation in decentralized distributed deep learning training
US11977986B2 (en) * 2020-07-09 2024-05-07 International Business Machines Corporation Dynamic computation rates for distributed deep learning
CN116134421A (zh) * 2020-07-14 2023-05-16 微软技术许可有限责任公司 向多瓦片处理系统流式传输数据
KR20220028444A (ko) * 2020-08-28 2022-03-08 삼성전자주식회사 중계기를 포함하는 그래픽 처리 장치, 및 이의 동작 방법
US12430166B2 (en) * 2020-12-11 2025-09-30 Ut-Battelle, Llc Hierarchical task scheduling for accelerators
US11126574B1 (en) 2021-02-12 2021-09-21 SambaNova Systems, Inc. Instrumentation profiling for reconfigurable processors
CN113377439B (zh) * 2021-05-20 2024-12-27 北京迈格威科技有限公司 异构计算方法、装置、电子设备及存储介质
WO2022253451A1 (en) * 2021-05-31 2022-12-08 NEC Laboratories Europe GmbH Task-centric job scheduling method and system for heterogeneous clusters
US12204912B2 (en) * 2021-07-23 2025-01-21 Intel Corporation Booting and using a single CPU socket as a multi-CPU partitioned platform
CN114035916B (zh) * 2021-11-01 2024-11-26 寒武纪行歌(南京)科技有限公司 计算图的编译、调度方法及相关产品
US11966745B2 (en) 2021-11-15 2024-04-23 Google Llc Sparse SIMD cross-lane processing unit
US12353887B2 (en) 2021-11-15 2025-07-08 Google Llc Programmable accelerator for data-dependent, irregular operations
KR20230170977A (ko) 2021-11-15 2023-12-19 구글 엘엘씨 희소 simd 크로스-레인 프로세싱 유닛
KR20230169321A (ko) * 2021-11-15 2023-12-15 구글 엘엘씨 데이터 의존적이고 불규칙한 오퍼레이션들을 위한 프로그래밍 가능 가속기
US11972263B2 (en) 2021-11-22 2024-04-30 Google Llc Cooperative instruction prefetch on multicore system
JP7640750B2 (ja) 2021-11-22 2025-03-05 グーグル エルエルシー マルチコアシステムにおける協調命令プリフェッチ
WO2023183015A1 (en) 2022-03-22 2023-09-28 Google Llc Streaming transfers and ordering model
US11977499B2 (en) 2022-03-22 2024-05-07 Google Llc Streaming transfers and ordering model
US12511173B2 (en) * 2022-06-17 2025-12-30 Luminary Cloud, Inc. Cloud-based framework for analysis using accelerators
US20240264884A1 (en) * 2023-02-02 2024-08-08 Dell Products L.P. Configuration driven monitoring
US20240272959A1 (en) * 2023-02-13 2024-08-15 Nxp Usa, Inc. Systems and methods for creating isolated partitions in a multi-core processing system
KR102571234B1 (ko) * 2023-02-21 2023-08-25 메티스엑스 주식회사 매니코어 시스템의 스레드 관리 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012082557A2 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Dynamic work partitioning on heterogeneous processing devices
US20170109213A1 (en) * 2013-03-15 2017-04-20 Intel Corporation Work stealing in heterogeneous computing systems
TW201729122A (zh) * 2015-12-24 2017-08-16 英特爾公司 促進於異質運算環境中橫跨計算機叢集的有效率通訊及資料處理之技術
CN108694151A (zh) * 2017-04-09 2018-10-23 英特尔公司 通用图形处理单元内的计算集群抢占

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120001905A1 (en) * 2010-06-30 2012-01-05 Ati Technologies, Ulc Seamless Integration of Multi-GPU Rendering
CN103299166B (zh) 2010-10-27 2015-09-23 康奈尔大学 光场图像传感器、方法和应用
US20180011792A1 (en) * 2016-07-06 2018-01-11 Intel Corporation Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System
US10592468B2 (en) * 2016-07-13 2020-03-17 Qualcomm Incorporated Shuffler circuit for lane shuffle in SIMD architecture
US10229470B2 (en) * 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
US10203988B2 (en) * 2016-10-13 2019-02-12 International Business Machines Corporation Adaptive parallelism of task execution on machines with accelerators
US10552161B2 (en) * 2017-06-21 2020-02-04 International Business Machines Corporation Cluster graphical processing unit (GPU) resource sharing efficiency by directed acyclic graph (DAG) generation
US10545793B2 (en) * 2017-09-29 2020-01-28 Intel Corporation Thread scheduling using processing engine information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012082557A2 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Dynamic work partitioning on heterogeneous processing devices
US20170109213A1 (en) * 2013-03-15 2017-04-20 Intel Corporation Work stealing in heterogeneous computing systems
TW201729122A (zh) * 2015-12-24 2017-08-16 英特爾公司 促進於異質運算環境中橫跨計算機叢集的有效率通訊及資料處理之技術
CN108694151A (zh) * 2017-04-09 2018-10-23 英特尔公司 通用图形处理单元内的计算集群抢占

Also Published As

Publication number Publication date
AU2019392179B2 (en) 2024-03-21
AU2019392179A1 (en) 2021-02-11
WO2020117388A1 (en) 2020-06-11
KR102600852B1 (ko) 2023-11-10
CA3107337A1 (en) 2020-06-11
US20200183738A1 (en) 2020-06-11
EP3891606A1 (en) 2021-10-13
KR20210057184A (ko) 2021-05-20
TW202029004A (zh) 2020-08-01
US10963300B2 (en) 2021-03-30
CA3107337C (en) 2024-05-14

Similar Documents

Publication Publication Date Title
TWI736001B (zh) 用以加速資料流訊號處理之異質cpu/gpu系統和由其實施之加速的資料流訊號處理方法
US12229865B2 (en) Graphics processor with non-blocking concurrent architecture
US9934010B1 (en) Programming in a multiprocessor environment
Willhalm et al. Putting intel® threading building blocks to work
Ernsting et al. Algorithmic skeletons for multi-core, multi-GPU systems and clusters
Orr et al. Fine-grain task aggregation and coordination on GPUs
US20220207643A1 (en) Implementing heterogenous wavefronts on a graphics processing unit (gpu)
Hu et al. GPGPU cloud: A paradigm for general purpose computing
Maitre Understanding nvidia gpgpu hardware
Ino et al. GPU-Chariot: A programming framework for stream applications running on multi-GPU systems
Lucas On the use of hierarchical tasks for heterogeneous architectures
Chadwick Communication centric, multi-core, fine-grained processor architecture
US12518340B2 (en) Geometry kick distribution in graphics processor
US20240272961A1 (en) Logical Slot to Distributed Hardware Slot Scheduling for Graphics Work
Garg Adding Preemptive Scheduling Capabilities to Accelerators
Dinavahi et al. Many-Core Processors
Wan et al. Core-Based Parallelism
Lima A runtime system for data-flow task programming on multicore architectures with accelerators
Labarta et al. Hybrid Parallel Programming with MPI/StarSs
Tarakji Design and investigation of scheduling mechanisms on accelerator-based heterogeneous computing systems
MENELAOS WEIGHTED SCHEDULING IN HETEROGENEOUS ARCHITECTURES FOR OFFLOADING VARIABLE-LENGTH KERNELS
Olaya et al. Runtime Pipeline Scheduling System for Heterogeneous Architectures
Sterling et al. The “MIND” scalable PIM architecture
Abell Parallel acceleration of deadlock detection and avoidance algorithms on GPUs