TWI792773B - 用於可重配置處理器即服務(RPaaS)的節點內基於緩衝器的串流 - Google Patents
用於可重配置處理器即服務(RPaaS)的節點內基於緩衝器的串流 Download PDFInfo
- Publication number
- TWI792773B TWI792773B TW110147197A TW110147197A TWI792773B TW I792773 B TWI792773 B TW I792773B TW 110147197 A TW110147197 A TW 110147197A TW 110147197 A TW110147197 A TW 110147197A TW I792773 B TWI792773 B TW I792773B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- reconfigurable
- processor
- buffers
- host
- Prior art date
Links
Images
Abstract
一種資料處理系統,包括複數個可重配置處理器,其包括第一可重配置處理器和附加的可重配置處理器,共享記憶體中的複數個緩衝器,其可由第一可重配置處理器和附加的可重配置處理器存取,以及運行時邏輯,其被配置成使用第一可重配置處理器和附加的可重配置處理器來執行用於應用程式的一或多個配置檔。配置檔的執行包括從第一可重配置處理器接收資料並將該資料提供給附加的可重配置處理器中的至少一者,以及從附加的可重配置處理器中的至少一者接收資料並將該資料提供給第一可重配置處理器。
Description
所公開的技術係關於節點內(intra-node)和節點間(inter-node)處理的延遲最佳化,該處理使用中央處理單元(CPU)、圖形處理單元(GPU)、現場可編程閘陣列(FPGA)、粗粒度可重配置架構(CGRA)、特殊應用積體電路(ASIC)、特殊應用指令集處理器(ASIP)及數位信號處理器(DSP)等的處理器。特別是,所公開的技術係關於使用緩衝器在同一處理節點及不同處理節點上的處理器之間有效地串流傳輸資料。
合併案
出於所有目的,透過引用將下面內容併入,如在本文中完整闡述一般:
美國非臨時專利申請案號17/127,818,現為US 11,182,264 B1,於2020年12月18日申請,名稱為“INTRA-NODE BUFFER-BASED STREAMING FOR
RECONFIGURABLE PROCESSOR-AS-A-SERVICE (RPaaS) ”,(代理人案號為SBNV 1029-1)。
美國非臨時專利申請案號17/127,929,現為US 11,182,221 B1,於2020年12月18日申請,名稱為“INTER-NODE BUFFER-BASED STREAMING FOR
RECONFIGURABLE PROCESSOR-AS-A-SERVICE (RPaaS) ”,(代理人案號為SBNV 1029-2)。
Prabhakar等人,“Plasticine: A
Reconfigurable Architecture for Parallel Patterns”,ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多;
Koeplinger等人,“Spatial: A Language And Compiler For Application Accelerators”,第39屆
ACM SIGPLAN會議程式語言設計與實現會議(
Conference On Programming Language Design And Implementation(PLDI))論文集,2018年第43屆國際計算機架構會議論文集;
美國非臨時專利申請案號16/239,252,於2019年1月3日申請,名稱為“VIRTUALIZATION OF A RECONFIGURABLE DATA PROCESSOR”,(代理人案號為SBNV 1000-1);
美國非臨時專利申請案號16/197,826,於2018年11月21日申請,名稱為“CONFIGURATION LOAD OF A RECONFIGURABLE DATA PROCESSOR”,(代理人案號為SBNV 1001-1A);
美國非臨時專利申請案號16/198,086,於2018年11月21日申請,名稱為“CONFIGURATION
UNLOAD OF A RECONFIGURABLE DATA PROCESSOR”,(代理人案號為SBNV 1001-1B);
美國非臨時專利申請案號16/260,548,於2019年1月29日申請,名稱為“MATRIX NORMAL/ TRANSPOSE READ AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME”,(代理人案號為SBNV 1005-1);
美國非臨時專利申請案號16/536,192,於2019年8月8日申請,名稱為“COMPILER FLOW LOGIC FOR RECONFIGURABLE ARCHITECTURES”,(代理人案號為SBNV 1006-1);
美國非臨時專利申請案號16/407,675,於2019年5月9日申請,名稱為“CONTROL FLOW BARRIER AND RECONFIGURABLE DATA PROCESSOR”,(代理人案號為SBNV 1007-1);
美國非臨時專利申請案號16/504,627,於2019年7月8日申請,名稱為“QUIESCE RECONFIGURABLE DATA PROCESSOR”,(代理人案號為SBNV 1008-1);
美國非臨時專利申請案號16/572,516,於2019年9月16日申請,名稱為“EFFICIENT EXECUTION OF OPERATION UNIT GRAPHS ON RECONFIGURABLE ARCHITECTURES BASED ON USER SPECIFICATION”,(代理人案號為SBNV 1009-2);
美國非臨時專利申請案號16/744,077,於2020年1月15日申請,名稱為“COMPUTATIONALLY EFFICIENT SOFTMAX LOSS GRADIENT
BACKPROPAGATION”,(代理人案號為SBNV 1010-1);
美國非臨時專利申請案號16/590,058,於2019年10月1日申請,名稱為“COMPUTATION UNITS FOR FUNCTIONS BASED ON LOOKUP TABLES”,(代理人案號為SBNV 1011-1);
美國非臨時專利申請案號16/695,138,於2019年11月25日申請,名稱為“COMPUTATION UNITS FOR BATCH NORMALIZATION”,(代理人案號為SBNV 1012-1);
美國非臨時專利申請案號16/688,069,於2019年11月19日申請,名稱為“LOOK-UP TABLE WITH INPUT OFFSETTING”,(代理人案號為SBNV 1013-1);
美國非臨時專利申請案號16/718,094,於2019年12月17日申請,名稱為“COMPUTATION UNITS FOR ELEMENT APPROXIMATION”,(代理人案號為SBNV 1014-1);
美國非臨時專利申請案號16/560,057,於2019年9月4日申請,名稱為“SIGMOID FUNCTION IN HARDWARE AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME”,(代理人案號為SBNV 1015-1);
美國非臨時專利申請案號16/572,527,於2019年9月16日申請,名稱為“PERFORMANCE ESTIMATION-BASED RESOURCE ALLOCATION FOR
RECONFIGURABLE ARCHITECTURES”,(代理人案號為SBNV 1016-2);
美國非臨時專利申請案號15/930,381,於2020年5月12日申請,名稱為“COMPUTATIONALLY EFFICIENT GENERAL MATRIX-MATRIX MULTIPLICATION (GeMM)”,(代理人案號為SBNV 1019-1);
美國非臨時專利申請案號16/890,841,於2020年6月2日申請,名稱為“ANTI-CONGESTION FLOW CONTROL FOR RECONFIGURABLE PROCESSORS”,(代理人案號為SBNV 1021-1);
美國非臨時專利申請案號16/922,975,於2020年7月7日申請,名稱為“RUNTIME VIRTUALIZATION OF RECONFIGURABLE DATAFLOW RESOURCES”,(代理人案號為SBNV 1026-1);
美國非臨時專利申請案號16/996,66,於2020年8月18日申請,名稱為“RUNTIME PATCHING OF CONFIGURATION FILES”,(代理人案號為SBNV 1027-1);
美國非臨時專利申請案號17/023,015,於2020年9月16日申請,“COMPILE TIME LOGIC FOR DETECTING STREAMING COMPATIBLE AND BROADCAST
COMPATIBLE DATA ACCESS PATTERNS”(代理人案號為SBNV 1022-1);及
美國非臨時專利申請案號17/031,679,於2020年9月24日申請,“SYSTEMS AND METHODS FOR MEMORY LAYOUT DETERMINATION AND CONFLICT RESOLUTION”(代理人案號為SBNV 1023-1)。
本節中所討論的主題不應僅由於在本節中被提及而被認為是現有技術。相似的,本節中所提及的或與作為背景技術而提供的主題相關聯的問題不應被認為是現有技術中先前已公認的。本節中的主題僅表示不同的方法,其中以及其本身亦可對應於申請專利範圍技術的實現。
可重配置處理器,包括現場可編程閘陣列(FPGA),可被配置成比使用執行電腦程式的通用處理器所能達到的更有效率或更快地實現各種功能。正在開發所謂的粗粒度可重配置架構(CGRA),其中陣列中的可配置單元比傳統的更細粒度的FPGA中使用的還要複雜,並且能夠更快或更有效地執行各種類別的功能。例如,已提出CGRA可以實現用於機器學習和人工智慧工作負荷的節能加速器。參見Prabhakar等人,“Plasticine: A Reconfigurable Architecture for Parallel Patterns”,ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多。
可重配置處理器的配置涉及編譯配置描述以產生配置檔,有時稱為位元流或位元檔,以及將配置檔分發到處理器上的可配置單元。要啟動一過程,必須為該過程加載配置檔。要改變一過程,必須將該配置檔替換為新的配置檔。
分發和加載配置檔的程序和支持結構可能很複雜,並且程序的執行可能很耗時。
為了最大化操作效率並且能夠在同一處理節點或不同處理節點上的多個可重配置處理器上運行程式,需要一種在可重配置處理器之間有效串流傳輸配置資料的手段。
及
以下討論旨在使本領域的任何技術人士能夠製造和使用所公開的技術,並在特定應用及其要求的上下文中提供。對所公開之實施方式的各種修改對於本領域的技術人士而言將是顯而易見的,並且在不脫離所公開之技術的精神和範圍的情況下,本文中定義的一般原理可以應用於其他實施方式和應用。因此,所公開的技術並不旨在限於所示的實施方式,而是旨在符合與本文所公開的原理和特徵一致的最寬範圍。
資料中心
描述了用於提供可重配置處理器即服務(Reconfigurable Processor-as-a-Service,RPaaS)的系統和過程。這些系統和過程將參考圖1進行描述,圖1示出依據一種實現的資料中心100的架構級示意圖。因為圖1是一架構圖,所以有意地省略資料中心100的某些細節以提高描述的清晰度。可以注意到,資料中心100可以包括以與其他實現中相同或不同方式配置的相同、更多或更少的元件。圖1的討論將安排如下。首先,將描述圖式的元件,然後是它們的相互連接。接著,將更詳細地描述系統中元件的使用。
圖1示出資料中心100中的第一和第二處理節點。在圖1中,第一處理節點被標識為“處理節點1”,以及第二處理節點被標識為“處理節點n”。第一和第二處理節點被配置成以分散式方式協同執行應用程式的配置檔。本領域之技術人士將理解資料中心100可以具有任意數量的處理節點,其可操作地耦接用於透過網路136(本文中亦稱為“網路組構136”)進行資料傳輸。網路136的範例包括儲存區域網路(SAN)和區域網路(LAN)。SAN可以透過各種資料通訊組構、裝置和協定來實現。例如,SAN的組構可以包括光纖通道、乙太網路、InfiniBand、串列小型電腦系統介面(‘SAS’)等。與SAN一起使用的資料通訊協定可以包括先進技術附件(‘ATA’)、光纖通道協定、小型電腦系統介面(‘SCSI’)、網際網路小型電腦系統介面(‘iSCSI’)、HyperSCSI、組構上非揮發性記憶體Express(‘NVMe’)等。
LAN也可以使用各種組構、裝置和協定來實現。例如,LAN的組構可以包括乙太網路(802.3)、無線(802.11)等。LAN中使用的資料通訊協定可以包括傳輸控制協定(‘TCP’)、用戶資料報協定(‘UDP’)、網際網路協定(IP)、超文件傳輸協定(‘HTTP’)、無線存取協定(‘WAP’)、手持裝置傳送協定(‘HDTP’)、對話啟動協定(‘SIP’)、即時傳輸協定(‘RTP’)等。
網路136還連接資料中心100中的其他網路元件。其他網路元件的範例包括匯流排、交換器(switch)、路由器、負載平衡器、超管理器和應用程式設計介面(API)。沿著網路136,交換器例如可以透過複數個輸入埠接收封包並且可以透過複數個輸出埠發送封包。資料中心100中的處理節點可以使用由交換器建立的各種連網路徑透過網路136相互通訊。網路136的另一範例是廣域網路(WAN)。
處理節點(或節點)是在硬體裝置或連接到網路的虛擬裝置上運行的可定址應用程式,並且能夠透過通訊通道發送、接收或轉傳資訊至或自其他處理節點。可被部署為硬體處理節點的電子裝置的範例包括所有種類的電腦、工作站、膝上型電腦、手持電腦和智慧型手機。處理節點可以在基於雲端的伺服器系統中實現。可以使用單一物理裝置來實現多個配置為處理節點的虛擬裝置。
資料中心100包括可重配置資料流資源池。可重配置資料流資源池可以有多種計算規模和階層。可重配置資料流資源池可以是可操作地耦接到複數個可重配置處理器的單一處理節點,其又受到不同匯流排和記憶體資源支持。處理節點可以具有例如透過如快捷週邊組件互連(PCIe)介面的本地匯流排與可重配置處理器交換資料的主機處理器(例如,CPU)。主機處理器可以具有運行時處理器(或運行時邏輯),其為請求從主機處理器執行的應用程式管理資源分配、記憶體映射和配置檔的執行。
可重配置資料流資源池可以是透過網路136連接的處理節點的框架(rack)(或叢集)。框架中的每個節點可以運行個別複數個可重配置處理器並且包括配置有個別運行時處理器的個別主機處理器。分散在節點間的運行時處理器彼此通訊以提供對連接到它們自己的處理節點的可重配置處理器的統一存取,以及對連接到資料中心100中的每個其他處理節點的可重配置處理器的統一存取。
可重配置資料流資源池可以是包含透過網路136連接的複數個框架的群(pod)。可重配置資料流資源池可以是包含透過網路136連接的複數群的超級群(superpod)。可重配置資料流資源池可以是包含透過網路136連接的複數個超級群的區(zone)。可重配置資料流資源池可以是包含透過網路136連接的複數個區的資料中心100。
可重配置資料流資源池可以包括匯流排(或傳輸)資源。匯流排資源的範例包括PCIe通道、直接記憶體存取(DMA)通道和雙倍資料速率(DDR)通道。可重配置資料流資源池可以包括記憶體(或儲存)資源。記憶體資源的範例包括主記憶體(例如,晶片外/外部動態隨機存取記憶體(DRAM)、NAND快閃)、本地輔助儲存器(例如,本地磁碟(例如,HDD、SSD))和遠端輔助儲存器(例如,分散式檔案系統、網站伺服器)。記憶體資源的其他範例包括鎖存器、暫存器、觸發器(flop)、旁路網路和快取(例如,由RAM/DRAM/SRAM明確定址的那些)。可重配置資料流資源池可動態擴展以滿足請求執行的應用程式的性能要求。應用程式透過一或多個網路(例如,網際網路)存取可重配置資料流資源池。
現在討論回到資料中心100的第一和第二處理節點。第一處理節點包括第一主機處理器102a。第一主機處理器102a的範例包括x86和x64處理器。第一主機處理器102a與主機記憶體134a(例如,RAM)介接。第一主機處理器102a具有編譯應用程式的編譯器112a和在複數個可重配置處理器142a上執行經編譯的應用程式的運行時邏輯122a。運行時邏輯122a被配置成提供對可重配置資料流資源池的按需求存取,其可以以最少的管理工作量或服務提供者互動來快速地配置和發布。
可重配置處理器142a的範例包括現場可編程閘陣列(FPGA)、粗粒度可重配置架構(CGRA)、特殊應用積體電路(ASIC)及特殊應用指令集處理器(ASIP)。可重配置處理器142a與可重配置處理器記憶體162a(例如,DRAM)介接。可重配置處理器142a之各者包括可編程互連結構中的可配置單元陣列(例如,計算單元和記憶體單元)。可重配置處理器中的可配置單元陣列可被劃分成複數個可配置單元的子陣列(或磚片)。關於可重配置處理器之架構的一種實現的額外細節稍後將在本申請中討論。在其他實現中,資料中心100中的處理節點包括替代/除了可重配置處理器142a之外的處理器。此類處理器的範例包括圖形處理單元(GPU)和數位信號處理器(DSP)。
網路介面控制器132a(例如,NIC、SmartNIC)將第一主機處理器102a和可重配置處理器142a連接到網路136。匯流排交換器124a使用本地匯流排125a、126a和127a來可操作地耦接到第一主機處理器102a、可重配置處理器142a和網路介面控制器132a。本地匯流排125a、126a和127a的範例包括快捷週邊組件互連(PCIe)、加速器專屬快取互連一致性(CCIX)、Compute Express Link(CXL)和開放協調加速器處理器介面(OpenCAPI)。
第二處理節點包括第二主機處理器102n。第二主機處理器102n的範例包括x86和x64處理器。第二主機處理器102n與主機記憶體134n(例如,RAM)介接。第二主機處理器102n具有編譯應用程式的編譯器112n和在複數個可重配置處理器142n上執行經編譯的應用程式的運行時邏輯122n。運行時邏輯122n被配置成提供對可重配置資料流資源池的按需求存取,其可以以最少的管理工作量或服務提供者互動來快速地配置和發布。
可重配置處理器142n的範例包括現場可編程閘陣列(FPGA)、粗粒度可重配置架構(CGRA)、特殊應用積體電路(ASIC)及特殊應用指令集處理器(ASIP)。可重配置處理器142n與可重配置處理器記憶體162n(例如,DRAM)介接。可重配置處理器142n之各者包括可編程互連結構中的可配置單元陣列(例如,計算單元和記憶體單元)。可重配置處理器中的可配置單元陣列可被劃分成複數個可配置單元的子陣列(或磚片)。關於可重配置處理器之架構的一種實現的額外細節稍後將在本申請中討論。在其他實現中,資料中心100中的處理節點包括替代/除了可重配置處理器142n之外的處理器。此類處理器的範例包括圖形處理單元(GPU)和數位信號處理器(DSP)。
網路介面控制器132n(例如,NIC、SmartNIC)將第二主機處理器102n和可重配置處理器142n連接到網路136。匯流排交換器124n使用本地匯流排125n、126n和127n來可操作地耦接到第二主機處理器102n、可重配置處理器142n和網路介面控制器132n。本地匯流排125n、126n和127n的範例包括快捷週邊組件互連(PCIe)、加速器專屬快取互連一致性(CCIX)、Compute Express Link(CXL)和開放協調加速器處理器介面(OpenCAPI)。
已經描述了圖1的元素和互連,現在討論轉向所公開之技術使用的緩衝器,用於節點內和節點間處理的延遲最佳化。
緩衝器
圖2A示出位於主機記憶體134a中的主機發送器緩衝器212a和主機接收器緩衝器202a。主機發送器緩衝器212a是可重配置處理器至主機處理器緩衝器,其被配置成從可重配置處理器142a接收資料,並將資料提供給第一主機處理器102a。主機接收器緩衝器202a是主機處理器至可重配置處理器緩衝器,其被配置成從第一主機處理器102a接收資料並且將資料提供給可重配置處理器142a。資料的範例包括純量資料(例如,控制位元)和向量資料(例如,向量、張量、參數、命令)。主機記憶體134a,因此還有主機發送器緩衝器212a和主機接收器緩衝器202a,可被資料中心100中的每個主機處理器(例如,第一和第二主機處理器102a、102n)、每個可重配置處理器(例如,可重配置處理器142a、142n)和每個網路介面控制器(例如,網路介面控制器132a、132n)存取。主機發送器緩衝器212a和主機接收器緩衝器202a可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。主機發送器緩衝器212a和主機接收器緩衝器202a的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
圖2B示出位於主機記憶體134n中的主機發送器緩衝器212n和主機接收器緩衝器202n。主機發送器緩衝器212n是可重配置處理器至主機處理器緩衝器,其被配置成從可重配置處理器142n接收資料並且將資料提供給第二主機處理器102n。主機接收器緩衝器202n是主機處理器至可重配置處理器緩衝器,其被配置成從第二主機處理器102n接收資料並且將資料提供給可重配置處理器142n。資料的範例包括純量資料(例如,控制位元)和向量資料(例如,向量、張量、參數、命令)。主機記憶體134n,因此還有主機發送器緩衝器212n和主機接收器緩衝器202n,可被資料中心100中的每個主機處理器(例如,第一和第二主機處理器102a、102n)、每個可重配置處理器(例如,可重配置處理器142a、142n)和每個網路介面控制器(例如,網路介面控制器132a、132n)存取。主機發送器緩衝器212n和主機接收器緩衝器202n可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。主機發送器緩衝器212n和主機接收器緩衝器202n的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
圖3A示出位於網路介面控制器132a的介面發送器緩衝器312a和介面接收器緩衝器302a。介面發送器緩衝器312a是可重配置處理器至主機處理器緩衝器,其被配置成從可重配置處理器142a接收資料並且將資料提供給第一主機處理器102a。介面接收器緩衝器302a是主機處理器至可重配置處理器緩衝器,其被配置成從第一主機處理器102a接收資料並且將資料提供給可重配置處理器142a。資料的範例包括純量資料(例如,控制位元)和向量資料(例如,向量、張量、參數、命令)。網路介面控制器132a,因此還有介面發送器緩衝器312a和介面接收器緩衝器302a,可被資料中心100中的每個主機處理器(例如,第一和第二主機處理器102a、102n)、每個可重配置處理器(例如,可重配置處理器142a、142n)和每個網路介面控制器(例如,網路介面控制器132a、132n)存取。介面發送器緩衝器312a和介面接收器緩衝器302a可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。介面發送器緩衝器312a和介面接收器緩衝器302a的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
圖3B示出位於網路介面控制器132n的介面發送器緩衝器312n和介面接收器緩衝器302n。介面發送器緩衝器312n是可重配置處理器至主機處理器緩衝器,其被配置成從可重配置處理器142n接收資料並且將資料提供給第二主機處理器102n。介面接收器緩衝器302n是主機處理器至可重配置處理器緩衝器,其被配置成從第二主機處理器102n接收資料並且將資料提供給可重配置處理器142n。資料的範例包括純量資料(例如,控制位元)和向量資料(例如,向量、張量、參數、命令)。網路介面控制器132n,因此還有介面發送器緩衝器312n和介面接收器緩衝器302n,可被資料中心100中的每個主機處理器(例如,第一和第二主機處理器102a、102n)、每個可重配置處理器(例如,可重配置處理器142a、142n)和每個網路介面控制器(例如,網路介面控制器132a、132n)存取。介面發送器緩衝器312n和介面接收器緩衝器302n可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。介面發送器緩衝器312n和介面接收器緩衝器302n的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
圖4A示出位於可重配置處理器142a之可重配置處理器記憶體162a中的可重配置處理器(RP)發送器緩衝器412a和可重配置處理器(RP)接收器緩衝器402a。可重配置處理器發送器緩衝器412a是可重配置處理器至主機處理器緩衝器,其被配置成從可重配置處理器142a接收資料並且將資料提供給第一主機處理器102a。可重配置處理器接收器緩衝器402a是主機處理器至可重配置處理器緩衝器,其被配置成從第一主機處理器102a接收資料並且將資料提供給可重配置處理器142a。資料的範例包括純量資料(例如,控制位元)和向量資料(例如,向量、張量、參數、命令)。可重配置處理器記憶體162a,因此還有可重配置處理器發送器緩衝器412a和可重配置處理器接收器緩衝器402a,可被資料中心100中的每個主機處理器(例如,第一和第二主機處理器102a、102n)、每個可重配置處理器(例如,可重配置處理器142a、142n)和每個網路介面控制器(例如,網路介面控制器132a、132n)存取。可重配置處理器發送器緩衝器412a和可重配置處理器接收器緩衝器402a可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。可重配置處理器發送器緩衝器412a和可重配置處理器接收器緩衝器402a的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
圖4B示出位於可重配置處理器142n之可重配置處理器記憶體162n中的可重配置處理器(RP)發送器緩衝器412n和可重配置處理器(RP)接收器緩衝器402n。可重配置處理器發送器緩衝器412n是可重配置處理器至主機處理器緩衝器,其被配置成從可重配置處理器142n接收資料並且將資料提供給第二主機處理器102n。可重配置處理器接收器緩衝器402n是主機處理器至可重配置處理器緩衝器,其被配置成從第二主機處理器102n接收資料並且將資料提供給可重配置處理器142n。資料的範例包括純量資料(例如,控制位元)和向量資料(例如,向量、張量、參數、命令)。可重配置處理器記憶體162n,因此還有可重配置處理器發送器緩衝器412n和可重配置處理器接收器緩衝器402n,可被資料中心100中的每個主機處理器(例如,第一和第二主機處理器102a、102n)、每個可重配置處理器(例如,可重配置處理器142a、142n)和每個網路介面控制器(例如,網路介面控制器132a、132n)存取。可重配置處理器發送器緩衝器412n和可重配置處理器接收器緩衝器402n可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。可重配置處理器發送器緩衝器412n和可重配置處理器接收器緩衝器402n的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
緩衝器可以由映射到記憶體中的記憶體位址(其可能是連續的或不連續的)的物理範圍的虛擬位址空間定義。在記憶體中分別使用讀指標和寫指標指示的位置讀取和寫入虛擬緩衝器。指標保存在記憶體中(其可能與記憶體相同或不同)。
已經描述了緩衝器,現在討論轉向由所公開之技術揭露的除錯邏輯和測試邏輯。
除錯邏輯和測試邏輯
圖5A是運行時邏輯122a的啟發式(heuristics)圖。運行時邏輯122a包括除錯邏輯502a和測試邏輯512a。運行時邏輯122a被配置成為在一或多個可重配置處理器142a上的應用程式加載和執行一或多個配置檔。可重配置處理器142a被配置成處理配置檔並產生輸出,並且使用至少一個可重配置處理器至主機處理器緩衝器(例如,主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a、可重配置處理器發送器緩衝器412n)將輸出發送到第一主機處理器102a。
在第一主機處理器102a上運行的除錯邏輯502a被配置成檢測錯誤(例如,在執行配置檔時)。在一種實現中,除錯邏輯502a還被配置成基於輸出與預期輸出的比較,向第一主機處理器102a上的除錯控制台報告錯誤。在另一實現中,除錯邏輯502a還被配置成基於輸出與預期輸出的比較,向第一主機處理器102a上的除錯輸出檔報告錯誤。
在一些實現中,在資料中心100中的特定主機處理器或可重配置處理器上運行的除錯邏輯可以向資料中心100中的任何其他主機處理器或可重配置處理器報告錯誤。例如,在第一主機處理器102a上運行的除錯邏輯502a可以基於輸出與預期輸出的比較,向第二主機處理器102n上的除錯控制台報告錯誤。在另一範例中,除錯邏輯502a可以基於輸出與預期輸出的比較,向第二主機處理器102n上的除錯輸出檔報告錯誤。
運行時邏輯122a還被配置成在可重配置處理器142a上執行用於測試應用程式的一或多個測試配置檔。可重配置處理器142a還被配置成處理測試配置檔並產生測試輸出,並且使用至少一個可重配置處理器至主機處理器緩衝器(例如,主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a、可重配置處理器發送器緩衝器412n)將測試輸出發送到第一主機處理器102a。在第一主機處理器102a上運行的測試邏輯512a被配置成基於測試輸出確定測試統計,並且將測試統計報告給第一主機處理器102a上的測試輸出檔。
在一些實現中,在資料中心100中的特定主機處理器或可重配置處理器上運行的測試邏輯可以向資料中心100中的任何其他主機處理器或可重配置處理器上的測試輸出檔報告測試統計。例如,在第一主機處理器102a上運行的測試邏輯512a可以向第二主機處理器102n上的測試輸出檔報告測試統計。
圖5B是運行時邏輯122n的啟發式圖。運行時邏輯122n包括除錯邏輯502n和測試邏輯512n。運行時邏輯122n被配置成為一或多個可重配置處理器142n上的應用程式加載和執行一或多個配置檔。可重配置處理器142n被配置成處理配置檔並產生輸出,並且使用至少一個可重配置處理器至主機處理器緩衝器(例如,主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a、可重配置處理器發送器緩衝器412n)將輸出發送到第二主機處理器102n。
在第二主機處理器102n上運行的除錯邏輯502n被配置成檢測錯誤(例如,在執行配置檔時)。在一種實現中,除錯邏輯502n還被配置成基於輸出與預期輸出的比較,向第二主機處理器102n上的除錯控制台報告錯誤。在另一實現中,除錯邏輯502n還被配置成基於輸出與預期輸出的比較,向第二主機處理器102n上的除錯輸出檔報告錯誤。
在一些實現中,在資料中心100中的特定主機處理器或可重配置處理器上運行的除錯邏輯可以向資料中心100中的任何其他主機處理器或可重配置處理器報告錯誤。例如,在第二主機處理器102n上運行的除錯邏輯502n可以基於輸出與預期輸出的比較,向第一主機處理器102a上的除錯控制台報告錯誤。在另一範例中,除錯邏輯502n可以基於輸出與預期輸出的比較,向第一主機處理器102a上的除錯輸出檔報告錯誤。
在一些實現中,在資料中心100中的特定主機處理器或可重配置處理器上運行的測試邏輯可以向資料中心100中的任何主機處理器或可重配置處理器上的測試輸出檔報告測試統計。例如,在第二主機處理器102n上運行的測試邏輯512n可以向第一主機處理器102a上的測試輸出檔報告測試統計。
圖6是訊息序列圖600,其說明除錯邏輯502a的一種實現,該除錯邏輯502a檢測在一或多個可重配置處理器(RP)142a上執行配置檔時的錯誤。在操作1,編譯器112a編譯應用程式602以產生包括用於應用程式602的一或多個配置檔的圖。在操作2,編譯器112a將圖發送給運行時邏輯122a用於執行。在操作3,運行時邏輯122a在一或多個可重配置處理器142a上加載及執行配置檔。在操作4,可重配置處理器142a處理配置檔並產生輸出(例如,向量、張量)。在操作5,可重配置處理器142a將輸出發送給發送器緩衝器632(或可重配置處理器至主機處理器緩衝器)。發送器緩衝器632的範例包括主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a及可重配置處理器發送器緩衝器412n。在操作6,發送器緩衝器632將輸出提供給除錯邏輯502a。在操作7,除錯邏輯502a基於輸出與預期輸出的比較,檢測執行配置檔時的錯誤。在操作8,除錯邏輯502a向第一主機處理器102a上的除錯控制台或除錯輸出檔報告錯誤。與圖6中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖6中,操作3和6包括使用諸如傳輸控制協定(TCP)的協定,透過本地匯流排(例如,PCIe匯流排),在相同處理節點1上的可重配置處理器(例如,RP 142a)和主機處理器(例如,主機102a)之間串流傳輸網路封包。
圖7是訊息序列圖700,其說明除錯邏輯502a的一種實現,該除錯邏輯502a檢測在一或多個可重配置處理器(RP)142n上執行配置檔時的錯誤。在操作1,編譯器112a編譯應用程式702以產生包括用於應用程式702的一或多個配置檔的圖。在操作2,編譯器112a將圖發送給運行時邏輯122a用於執行。在操作3,運行時邏輯122a在一或多個可重配置處理器142n上加載及執行配置檔。在操作4,可重配置處理器142n處理配置檔並產生輸出(例如,向量、張量)。在操作5,可重配置處理器142n將輸出發送給發送器緩衝器732(或可重配置處理器至主機處理器緩衝器)。發送器緩衝器732的範例包括主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a及可重配置處理器發送器緩衝器412n。在操作6,發送器緩衝器732將輸出提供給除錯邏輯502a。在操作7,除錯邏輯502a基於輸出與預期輸出的比較,檢測執行配置檔時的錯誤。在操作8,除錯邏輯502a向第一主機處理器102a上的除錯控制台或除錯輸出檔報告錯誤。與圖7中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖7中,操作3和6包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)的協定透過網路組構136(例如,乙太網路、InfiniBand(IB))在第二處理節點上的一或多個可重配置處理器(例如,RP 142n)和在第一處理節點上的主機處理器(例如,主機102a)之間串流傳輸網路封包。
圖8是訊息序列圖800,其說明一或多個可重配置處理器(RP)142a向第一主機處理器102a發出遠端程序呼叫的一種實現。在操作1,編譯器112a編譯應用程式802以產生包括用於應用程802的一或多個配置檔的圖。在操作2,編譯器112a將圖發送給運行時邏輯122a用於執行。在操作3,運行時邏輯122a在一或多個可重配置處理器142a上加載及執行配置檔。在操作4,可重配置處理器142a處理配置檔並產生輸出(例如,向量、張量)。在操作5,可重配置處理器142a使用發送器緩衝器832(或可重配置處理器至主機處理器緩衝器)向第一主機處理器102a發出一或多個遠端程序呼叫。發送器緩衝器832的範例包括主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a及可重配置處理器發送器緩衝器412n。在一種實現中,可重配置處理器142a使用遠端程序呼叫通知第一主機處理器102a錯誤報告。在操作6,可重配置處理器142a使用至少一個發送器緩衝器832來發送一或多個參數值給第一主機處理器102a用於執行遠端程序呼叫。在操作7,發送器緩衝器832將遠端程序呼叫和參數值提供給運行時邏輯122a。在操作8,對遠端程序呼叫的一或多個響應經由緩衝器(例如,第一主機處理器102a的發送器緩衝器和可重配置處理器142a的接收器緩衝器)被發送給可重配置處理器142n。與圖8中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖8中,操作3和7包括使用諸如傳輸控制協定(TCP)的協定,透過本地匯流排(例如,PCIe匯流排),在相同處理節點1上的可重配置處理器(例如,RP 142a)和主機處理器(例如,主機102a)之間串流傳輸網路封包。
圖9是訊息序列圖900,其說明一或多個可重配置處理器(RP)142n向第一主機處理器102a發出遠端程序呼叫的一種實現。在操作1,編譯器112a編譯應用程式902以產生包括用於應用程式902的一或多個配置檔的圖。在操作2,編譯器112a將圖發送給運行時邏輯122a用於執行。在操作3,運行時邏輯122a在一或多個可重配置處理器142n上加載及執行配置檔。在操作4,可重配置處理器142n處理配置檔並產生輸出(例如,向量、張量)。在操作5,可重配置處理器142n使用發送器緩衝器932(或可重配置處理器至主機處理器緩衝器)向第一主機處理器102a發出一或多個遠端程序呼叫。發送器緩衝器932的範例包括主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a及可重配置處理器發送器緩衝器412n。在一種實現中,可重配置處理器142n使用遠端程序呼叫通知第一主機處理器102a錯誤報告。在操作6,可重配置處理器142n使用至少一個發送器緩衝器932將一或多個參數值發送給第一主機處理器102a用於執行遠端程序呼叫。在操作7,發送器緩衝器932將遠端程序呼叫和參數值提供給運行時邏輯122a。在操作8,對遠端程序呼叫的一或多個響應經由緩衝器(例如,第一主機處理器102a的發送器緩衝器和可重配置處理器142n的接收器緩衝器)被發送給可重配置處理器142n。與圖9中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖9中,操作3和7包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)的協定,透過網路組構136(例如,乙太網路、InfiniBand (IB)),在第二處理節點上的一或多個可重配置處理器(例如,RP 142n)和第一處理節點上的主機處理器(例如,主機102a)之間串流傳輸網路封包。
圖10是訊息序列圖1000,其說明測試邏輯512a的一種實現,該測試邏輯512a報告在一或多個可重配置處理器(RP)142a上執行測試配置檔的測試統計。在操作1,編譯器112a編譯測試應用程式1002以產生包括用於測試應用程式1002的一或多個測試配置檔的測試圖。在操作2,編譯器112a將圖發送給運行時邏輯122a用於執行。在操作3,運行時邏輯122a在一或多個可重配置處理器142a上加載及執行測試配置檔。在操作4,可重配置處理器142a處理測試配置檔並產生測試輸出(例如,向量、張量)。在操作5,可重配置處理器142a將測試輸出發送到發送器緩衝器1032(或可重配置處理器至主機處理器緩衝器)。發送器緩衝器1032的範例包括主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a及可重配置處理器發送器緩衝器412n。在操作6,發送器緩衝器1032將測試輸出提供給測試邏輯512a。在操作7,測試邏輯512a基於測試輸出確定測試統計。在操作8,測試邏輯512a將測試統計報告給第一主機處理器102a上的測試輸出檔。與圖10中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖10中,操作3和6包括使用諸如傳輸控制協定(TCP)的協定,透過本地匯流排(例如,PCIe匯流排),在相同處理節點1上的可重配置處理器(例如,RP 142a)和主機處理器(例如,主機102a)之間串流傳輸網路封包。
圖11是訊息序列圖1100,其說明測試邏輯512a的一種實現,該測試邏輯512a報告在一或多個可重配置處理器(RP)142n上執行測試配置檔的測試統計。在操作1,編譯器112a編譯測試應用程式1102以產生包括用於測試應用程式1102的一或多個測試配置檔的測試圖。在操作2,編譯器112a將圖發送給運行時邏輯122a用於執行。在操作3,運行時邏輯122a在一或多個可重配置處理器142n上加載及執行測試配置檔。在操作4,可重配置處理器142n處理測試配置檔並產生測試輸出(例如,向量、張量)。在操作5,可重配置處理器142n將測試輸出發送到發送器緩衝器1132(或可重配置處理器至主機處理器緩衝器)。發送器緩衝器1132的範例包括主機發送器緩衝器212a、主機發送器緩衝器212n、介面發送器緩衝器312a、介面發送器緩衝器312n、可重配置處理器發送器緩衝器412a及可重配置處理器發送器緩衝器412n。在操作6,發送器緩衝器1132將測試輸出提供給測試邏輯512a。在操作7,測試邏輯512a基於測試輸出確定測試統計。在操作8,測試邏輯512a將測試統計報告給第一主機處理器102a上的測試輸出檔。與圖11中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖11中,操作3和6包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)的協定,透過網路組構136(例如,乙太網路、InfiniBand(IB)),在第二處理節點上的一或多個可重配置處理器(例如,RP 142n)和第一處理節點上的主機處理器(例如,主機102a)之間串流傳輸網路封包。
已經描述了除錯邏輯和測試邏輯,現在討論轉向由所公開之技術揭露的可重配置處理器到主機處理器的工作負荷分擔(workload sharing)。
可重配置處理器到主機處理器的工作負荷分擔
圖12是訊息序列圖1200,其說明在一或多個可重配置處理器(RP)142a上執行配置檔中的第一組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及在第一主機處理器102a上執行配置檔中的第二組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的一種實現。在操作1,編譯器112a接收應用程式1202用於編譯。在操作2,編譯器112a編譯應用程式1202以產生一或多個配置檔1212。配置檔1212包括複數個函數。複數個函數包括第一組函數1214和第二組函數1224。複數個函數中的函數範例包括諸如線性整流函數(Rectified Linear Unit,ReLU)及其變化(例如,leaky ReLU)、雙曲正切、sigmoid和softmax的非線性,逐元素加法,矩陣乘法(例如,通用矩陣乘法(General Matrix Multiply,GeMM)),層正規化(例如,批次正規化),諸如交叉熵的損耗函數以及諸如轉置的張量形狀修改器。在操作3,編譯器112a將配置檔1212發送給運行時邏輯122a用於執行。在操作4,運行時邏輯122a將第一組函數1214及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及第二組函數1224及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))加載到一或多個可重配置處理器142a。在操作5,可重配置處理器142a處理第一組函數1214及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生第一組輸出(例如,向量、張量)。可重配置處理器142a使用一或多個可重配置處理器至主機處理器緩衝器,將第二組函數1224中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第一主機處理器102a。這在本文中稱為“可重配置處理器到主機處理器的工作負荷分擔”。在一種實現中,使用可重配置處理器至主機處理器緩衝器,將對其執行第二組函數1224中的函數的資料傳輸到第一主機處理器102a。在一些實現中,可重配置處理器至主機處理器緩衝器中的個別緩衝器被用來將第二組函數1224中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第一主機處理器102a。工作負荷分擔流的一個範例包括使用一或多個可重配置處理器發送器緩衝器412a和一或多個主機接收器緩衝器202a。在操作6,可重配置處理器142a將第二組函數1224中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器發送器緩衝器412a。在操作7,可重配置處理器發送器緩衝器412a將第二組函數1224中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到主機接收器緩衝器202a。在操作8,主機接收器緩衝器202a將第二組函數1224中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第一主機處理器102a。在操作9,第一主機處理器102a執行第二組函數1224中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以產生第二組輸出(或結果1234)(例如,向量、張量)。第一主機處理器102a使用一或多個主機處理器至可重配置處理器緩衝器將結果1234傳輸到一或多個可重配置處理器142a。在一些實現中,主機處理器至可重配置處理器緩衝器中的個別緩衝器被用來將執行個別第二組函數1224中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的個別結果傳輸到可重配置處理器142a。一個工作負荷分擔流包括使用一或多個主機發送器緩衝器212a和一或多個可重配置處理器接收器緩衝器402a。在操作10,第一主機處理器102a將結果1234傳輸到主機發送器緩衝器212a。在操作11,主機發送器緩衝器212a將結果1234傳輸到可重配置處理器接收器緩衝器402a。在操作12,可重配置處理器接收器緩衝器402a將結果1234傳輸到可重配置處理器142a。在一些實現中,第一組函數1214中的一或多個函數等待在第一主機處理器102a上執行第二組函數1224中的一或多個函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果,以在可重配置處理器142a上將該結果與執行第一組函數1214中的一或多個函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果相結合。在其他實現中,第一組函數1214和第二組函數1224分開且平行地操作。在一種實現中,第二組函數1224中的一或多個函數將結果菊鏈到第一組函數1214中的一或多個函數,反之亦然。在另一實現中,第二組函數1224中的一或多個函數在將結果返回可重配置處理器142a之前執行一定次數的迭代。與圖12中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖12中,操作6、7、8、10、11和12包括使用諸如傳輸控制協定(TCP)的協定,透過本地匯流排(例如,PCIe匯流排),在相同處理節點1上的可重配置處理器(例如,RP 142a)和主機處理器(例如,主機102a)之間串流傳輸網路封包。
圖13是訊息序列圖1300,其說明在一或多個可重配置處理器(RP)142a上執行配置檔中的第一組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及在第二主機處理器102n上執行配置檔中的第二組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的一種實現。在操作1,編譯器112a接收應用程式1302用於編譯。在操作2,編譯器112a編譯應用程式1302以產生一或多個配置檔1312。配置檔1312包括複數個函數。複數個函數包括第一組函數1314和第二組函數1324。複數個函數中的函數範例包括諸如線性整流函數(ReLU)及其變化(例如,leaky ReLU)、雙曲正切、sigmoid和softmax的非線性,逐元素加法,矩陣乘法(例如,通用矩陣乘法(GeMM)),層正規化(例如,批次正規化),諸如交叉熵的損耗函數以及諸如轉置的張量形狀修改器。在操作3,編譯器112a將配置檔1312發送給運行時邏輯122a用於執行。在操作4,運行時邏輯122a將第一組函數1314及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及第二組函數1324及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))加載到一或多個可重配置處理器142a。在操作5,可重配置處理器142a處理第一組函數1314及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生第一組輸出(例如,向量、張量)。可重配置處理器142a使用一或多個可重配置處理器至主機處理器緩衝器,將第二組函數1324中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第二主機處理器102n。這在本文中稱為“可重配置處理器到主機處理器的工作負荷分擔”。在一種實現中,使用可重配置處理器至主機處理器緩衝器,將對其執行第二組函數1324中的函數的資料傳輸到第二主機處理器102n。在一些實現中,可重配置處理器至主機處理器緩衝器中的個別緩衝器被用來將第二組函數1324中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第二主機處理器102n。一個示例性工作負荷分擔流包括使用一或多個可重配置處理器發送器緩衝器412a和一或多個主機接收器緩衝器202n。在操作6,可重配置處理器142a將第二組函數1324中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器發送器緩衝器412a。在操作7,可重配置處理器發送器緩衝器412a將第二組函數1324中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到主機接收器緩衝器202n。在操作8,主機接收器緩衝器202n將第二組函數1324中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第二主機處理器102n。在操作9,第二主機處理器102n執行第二組函數1324中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以產生第二組輸出(或結果1334)(例如,向量、張量)。第二主機處理器102n使用一或多個主機處理器至可重配置處理器緩衝器將結果1334傳輸到一或多個可重配置處理器142a。在一些實現中,主機處理器至可重配置處理器緩衝器中的個別緩衝器被用來將執行第二組函數1324中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的個別結果傳輸到可重配置處理器142a。一個工作負荷分擔流包括使用一或多個主機發送器緩衝器212n和一或多個可重配置處理器接收器緩衝器402a。在操作10,第二主機處理器102n將結果1334傳輸到主機發送器緩衝器212n。在操作11,主機發送器緩衝器212n將結果1334傳輸到可重配置處理器接收器緩衝器402a。在操作12,可重配置處理器接收器緩衝器402a將結果1334傳輸到可重配置處理器142a。在一些實現中,第一組函數1314中的一或多個函數等待在第二主機處理器102n上執行第二組函數1324中的一或多個函數的結果,以將該結果與在可重配置處理器142a上執行第一組函數1314中的一或多個函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果相結合。在其他實現中,第一組函數1314和第二組函數1324分開且平行地操作。在一種實現中,第二組函數1324中的一或多個函數將結果菊鏈到第一組函數1314中的一或多個函數,反之亦然。在另一實現中,第二組函數1324中的一或多個函數在將結果返回可重配置處理器142a之前執行一定次數的迭代。與圖13中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖13中,操作6、7、8、10、11和12包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)的協定,透過網路組構136(例如,乙太網路、InfiniBand(IB)),在第一處理節點上的一或多個可重配置處理器(例如,RP 142a)和第二處理節點上的主機處理器(例如,主機102n)之間串流傳輸網路封包。
已經描述了可重配置處理器到主機處理器的工作負荷分擔,現在討論轉向向由所公開之技術揭露的可重配置處理器到可重配置處理器的工作負荷分擔。
可重配置處理器到可重配置處理器的工作負荷分擔
圖14A示出可重配置處理器142a中個別可重配置處理器使用的發送器和接收器緩衝器。可重配置處理器1(RP 1)接收器緩衝器1402a和可重配置處理器1(RP 1)發送器緩衝器1412a被可重配置處理器142a中的第一可重配置處理器用來從資料中心100中的另一主機處理器或可重配置處理器接收資料以及將資料發送到資料中心100中的另一主機處理器或可重配置處理器。可重配置處理器n(RP n)接收器緩衝器1422a和可重配置處理器n(RP n)發送器緩衝器1432a被可重配置處理器142a中的第二可重配置處理器用來從資料中心100中的另一主機處理器或可重配置處理器接收資料以及將資料發送到資料中心100中的另一主機處理器或可重配置處理器。可重配置處理器1接收器緩衝器1402a、可重配置處理器1發送器緩衝器1412a、可重配置處理器n接收器緩衝器1422a和可重配置處理器n發送器緩衝器1432a位於可重配置處理器記憶體162a中。
圖14B示出可重配置處理器142n中個別可重配置處理器使用的發送器和接收器緩衝器。可重配置處理器1(RP 1)接收器緩衝器1402n和可重配置處理器1(RP 1)發送器緩衝器1412n被可重配置處理器142n中的第一可重配置處理器用來從資料中心100中的另一主機處理器或可重配置處理器接收資料以及將資料發送到資料中心100中的另一主機處理器或可重配置處理器。可重配置處理器n(RP n)接收器緩衝器1422n和可重配置處理器n(RP n)發送器緩衝器1432n被可重配置處理器142n中的第二可重配置處理器用來從資料中心100中的另一主機處理器或可重配置處理器接收資料以及將資料發送到資料中心100中的另一主機處理器或可重配置處理器。可重配置處理器1接收器緩衝器1402n、可重配置處理器1發送器緩衝器1412n、可重配置處理器n接收器緩衝器1422n和可重配置處理器n發送器緩衝器1432n位於可重配置處理器記憶體162n中。
節點內處理
圖15是訊息序列圖1500,其說明在可重配置處理器142a中的第一可重配置處理器上執行配置檔中的第一組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及在可重配置處理器142a中的第二可重配置處理器上執行配置檔中的第二組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的一種實現。在圖15中,第一可重配置處理器被標識為“RP 1”以及第二可重配置處理器被標識為“RP N”。注意,第一可重配置處理器和第二可重配置處理器可操作地被耦接到同一處理節點,即,第一處理節點。這在本文中稱為“節點內處理”。在操作1,編譯器112a接收應用程式1502用於編譯。在操作2,編譯器112a編譯應用程式1502以產生一或多個配置檔1512。配置檔1512包括複數個函數。複數個函數包括第一組函數1514和第二組函數1524。複數個函數中的函數範例包括諸如線性整流函數(ReLU)及其變化(例如,leaky ReLU)、雙曲正切、sigmoid和softmax的非線性,逐元素加法,矩陣乘法(例如,通用矩陣乘法(GeMM)),層正規化(例如,批次正規化),諸如交叉熵的損耗函數以及諸如轉置的張量形狀修改器。在操作3,編譯器112a將配置檔1512發送給運行時邏輯122a用於執行。在操作4,運行時邏輯122a將第一組函數1514及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))和第二組函數1524及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))加載到第一可重配置處理器。在操作5,第一可重配置處理器處理第一組函數1514及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生第一組輸出(例如,向量、張量)。第一可重配置處理器使用一或多個可重配置處理器到可重配置處理器緩衝器,將第二組函數1524中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第二可重配置處理器。這在本文中稱為“可重配置處理器到可重配置處理器的工作負荷分擔”。在一種實現中,使用可重配置處理器到可重配置處理器緩衝器,將對其執行第二組函數1524中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的資料傳輸到第二可重配置處理器。在一些實現中,可重配置處理器到可重配置處理器緩衝器中的個別緩衝器被用來將第二組函數1524中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第二可重配置處理器。一個示例性工作負荷分擔流包括使用一或多個可重配置處理器1(RP 1)發送器緩衝器1412a和一或多個可重配置處理器N(RP N)接收器緩衝器1422a。在操作6,第一可重配置處理器將第二組函數1524中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器1發送器緩衝器1412a。在操作7,可重配置處理器1發送器緩衝器1412a將第二組函數1524中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器N接收器緩衝器1422a。在操作8,可重配置處理器N接收器緩衝器1422a將第二組函數1524中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到第二可重配置處理器。在操作9,第二可重配置處理器執行第二組函數1524中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以產生第二組輸出(或結果1534)(例如,向量、張量)。第二可重配置處理器使用一或多個可重配置處理器到可重配置處理器緩衝器將結果1534傳輸到第一可重配置處理器。在一些實現中,可重配置處理器到可重配置處理器緩衝器中的個別緩衝器被用來將執行第二組函數1524中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的個別結果傳輸到第一可重配置處理器。一個工作負荷分擔流包括使用一或多個可重配置處理器N(RP N)發送器緩衝器1432a和一或多個可重配置處理器1(RP 1)接收器緩衝器1402a。在操作10,第二可重配置處理器將結果1534傳輸到可重配置處理器N發送器緩衝器1432a。在操作11,可重配置處理器N發送器緩衝器1432a將結果1534傳輸到可重配置處理器1接收器緩衝器1402a。在操作12,可重配置處理器1接收器緩衝器1402a將結果1534傳輸到第一可重配置處理器。在一些實現中,第一組函數1514中的一或多個函數等待在第二可重配置處理器上執行第二組函數1524中的一或多個函數的結果,以將該結果與在第一可重配置處理器上執行第一組函數1514中的一或多個函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果相結合。在其他實現中,第一組函數1514和第二組函數1524分開且平行地操作。在一種實現中,第二組函數1524中的一或多個函數將結果菊鏈到第一組函數1514中的一或多個函數,反之亦然。在另一實現中,第二組函數1524中的一或多個函數在將結果返回第一可重配置處理器之前執行一定次數的迭代。與圖15中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖15中,操作6、7、8、10、11和12包括使用諸如傳輸控制協定(TCP)的協定,透過本地匯流排(例如,PCIe匯流排),在相同處理節點1上的可重配置處理器之間串流傳輸網路封包。
節點間處理
圖16是訊息序列圖1600,其說明在可重配置處理器142a中的第一可重配置處理器上執行配置檔中的第一組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及在可重配置處理器142n中的第一可重配置處理器上執行配置檔中的第二組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的一種實現。在圖16中,可重配置處理器142a中的第一可重配置處理器被標識為“RP 1”以及可重配置處理器142n中的第一可重配置處理器被標識為“RP 1'”。注意,可重配置處理器142a中的第一可重配置處理器和可重配置處理器142n中的第一可重配置處理器可操作地被耦接到不同處理節點,即,第一處理節點和第二處理節點。這在本文中稱為“節點間處理”。在操作1,編譯器112a接收應用程式1602用於編譯。在操作2,編譯器112a編譯應用程式1602以產生一或多個配置檔1612。配置檔1612包括複數個函數。複數個函數包括第一組函數1614和第二組函數1624。複數個函數中的函數範例包括諸如線性整流函數(ReLU)及其變化(例如,leaky ReLU)、雙曲正切、sigmoid和softmax的非線性,逐元素加法,矩陣乘法(例如,通用矩陣乘法(GeMM)),層正規化(例如,批次正規化),諸如交叉熵的損耗函數以及諸如轉置的張量形狀修改器。在操作3,編譯器112a將配置檔1612發送給運行時邏輯122a用於執行。在操作4,運行時邏輯122a將第一組函數1614及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))以及第二組函數1624及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))加載到可重配置處理器142a中的第一可重配置處理器。在操作5,可重配置處理器142a中的第一可重配置處理器處理第一組函數1614及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生第一組輸出(例如,向量、張量)。可重配置處理器142a中的第一可重配置處理器使用一或多個可重配置處理器到可重配置處理器緩衝器,將第二組函數1624中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器142n中的第一可重配置處理器。這在本文中稱為“可重配置處理器到可重配置處理器的工作負荷分擔”。在一種實現中,使用可重配置處理器到可重配置處理器緩衝器,將對其執行第二組函數1624中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的資料傳輸到可重配置處理器142n中的第一可重配置處理器。在一些實現中,可重配置處理器到可重配置處理器緩衝器中的個別緩衝器被用來將第二組函數1624中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器142n中的第一可重配置處理器。一個示例性工作負荷分擔流包括使用一或多個可重配置處理器1(RP 1)發送器緩衝器1412a和一或多個可重配置處理器1'(RP 1')接收器緩衝器1402n。在操作6,可重配置處理器142a中的第一可重配置處理器將第二組函數1624中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器1發送器緩衝器1412a。在操作7,可重配置處理器1發送器緩衝器1412a將第二組函數1624中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器1'接收器緩衝器1402n。在操作8,可重配置處理器1'接收器緩衝器1402n將第二組函數1624中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到可重配置處理器142n中的第一可重配置處理器。在操作9,可重配置處理器142n中的第一可重配置處理器執行第二組函數1624中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生第二組輸出(或結果1634)(例如,向量、張量)。可重配置處理器142n中的第一可重配置處理器使用一或多個可重配置處理器到可重配置處理器緩衝器,將結果1634傳輸到可重配置處理器142a中的第一可重配置處理器。在一些實現中,可重配置處理器到可重配置處理器緩衝器中的個別緩衝器被用來將執行第二組函數1624中的個別函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的個別結果傳輸到可重配置處理器142a中的第一可重配置處理器。一個工作負荷分擔流包括使用一或多個可重配置處理器1'(RP 1')發送器緩衝器1412n和一或多個可重配置處理器1(RP 1)接收器緩衝器1402a。在操作10,可重配置處理器142n中的第一可重配置處理器將結果1634傳輸到可重配置處理器1'發送器緩衝器1412n。在操作11,可重配置處理器1'發送器緩衝器1412n將結果1634傳輸到可重配置處理器1接收器緩衝器1402a。在操作12,可重配置處理器1接收器緩衝器1402a將結果1634傳輸到可重配置處理器142a中的第一可重配置處理器。在一些實現中,第一組函數1614中的一或多個函數等待在可重配置處理器142n中的第一可重配置處理器上執行第二組函數1624中的一或多個函數的結果,以將該結果與在可重配置處理器142a中的第一可重配置處理器上執行第一組函數1614中的一或多個函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果相結合。在其他實現中,第一組函數1614和第二組函數1624分開且平行地操作。在一種實現中,第二組函數1624中的一或多個函數將結果菊鏈到第一組函數1614中的一或多個函數,反之亦然。在另一實現中,第二組函數1624中的一或多個函數在將結果返回可重配置處理器142a中的第一可重配置處理器之前執行一定次數的迭代。與圖16中所示的操作相比,其他實現可以以不同的順序及/或使用不同、更少或額外的操作來執行操作。在一些實現中可以組合多個操作。
本領域之技術人士將理解,在圖16中,操作6、7、8、10、11和12包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)的協定,透過網路組構136(例如,乙太網路、InfiniBand(IB)),在不同處理節點1和n上的可重配置處理器之間串流傳輸網路封包。
已經描述了可重配置處理器到可重配置處理器的工作負荷分擔,現在討論轉向向由所公開之技術揭露的非同步張量串流。
非同步張量串流
圖17A是訊息序列圖1700A,其說明非同步張量串流的一種實現,其中在可重配置處理器正處理當前張量時緩衝下一個張量。資料中心100中的可重配置處理器(例如,一或多個可重配置處理器142a)被配置成使用一系列的資料單元1712執行一或多個配置檔。在一種實現中,資料單元系列1712包括張量1到N的序列。第一複數個緩衝器1704被配置成從源記憶體1702(例如,主機記憶體134a、主機記憶體134n)接收資料單元系列1712中的資料單元,並將資料單元串流傳輸到可重配置處理器用於處理。第一複數個緩衝器1704中的緩衝器的範例包括先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器和循環緩衝器。第一複數個緩衝器1704中的緩衝器的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。第二複數個緩衝器1706被配置成串流傳輸來自可重配置處理器的處理資料單元的結果,並將結果發送到目的地記憶體1708(例如,可重配置處理器記憶體162a、可重配置處理器記憶體162n)用於儲存。第二複數個緩衝器1706中的緩衝器的範例包括先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器和循環緩衝器。第二複數個緩衝器1706中的緩衝器的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
運行時邏輯(例如,運行時邏輯122a、運行時邏輯122n)被配置成使第一複數個緩衝器1704中的緩衝器從源記憶體1702接收資料單元系列1712中的下一個資料單元,同時可重配置處理器處理資料單元系列1712中的當前資料單元。該運行時邏輯還被配置成在第二複數個緩衝器1706中的緩衝器從可重配置處理器串流傳輸處理當前資料單元的結果之後,將下一個資料單元串流傳輸到可重配置處理器用於處理。
轉到圖17A中所示的範例。考量張量1是當前的資料單元,以及張量2和3是下一個資料單元,在時步(timestep)1,第一複數個緩衝器1704中的緩衝器從源記憶體1702接收張量1。在時步2,第一複數個緩衝器1704中的緩衝器將張量1串流傳輸到可重配置處理器。在時步3,可重配置處理器開始處理張量1。當可重配置處理器正在處理張量1時,第一複數個緩衝器1704中的緩衝器分別在時步4和5從源記憶體1702接收張量2和3。在時步6,可重配置處理器將處理張量1的結果(結果1)串流傳輸到第二複數個緩衝器1706中的緩衝器。在時步7,第二複數個緩衝器1706中的緩衝器將處理張量1的結果串流傳輸到目的地記憶體1708用於儲存。在時步8,第一複數個緩衝器1704中的緩衝器將張量2串流傳輸到可重配置處理器。在其他實現中,將張量2從第一複數個緩衝器1704中的緩衝器串流傳輸到可重配置處理器先於將處理張量1的結果從第二複數個緩衝器1706中的緩衝器串流傳輸到目的地記憶體1708。與圖17A中所示的步驟相比,其他實現可以以不同的順序及/或使用不同、更少或額外的步驟來執行步驟。在一些實現中,可重配置處理器142a在一或多個先前時步/迭代中對張量(例如,張量2和3)的處理與可重配置處理器142a在當前時步/迭代中對張量(例如,張量1)的處理重疊。這在本文中稱為“元管線(meta-pipelining)”。在一些實現中可以組合多個步驟。
圖17B是訊息序列圖1700B,其說明非同步張量串流的一種實現,其中在可重配置處理器處理當前張量之前緩衝下一個張量。該運行時邏輯還被配置成使第一複數個緩衝器1704中的緩衝器在可重配置處理器開始處理當前張量之前,從源記憶體1702接收下一個資料單元。
轉到圖17B中所示的範例。在時步1,第一複數個緩衝器1704中的緩衝器從源記憶體1702接收張量1。在時步2,第一複數個緩衝器1704中的緩衝器將張量1串流傳輸到可重配置處理器。在可重配置處理器開始處理張量1之前,第一複數個緩衝器1704中的緩衝器分別在時步3和4從源記憶體1702接收張量2和3。在時步5,可重配置處理器開始處理張量1。在時步6,可重配置處理器將處理張量1的結果(結果1)串流傳輸到第二複數個緩衝器1706中的緩衝器。在時步7,第二複數個緩衝器1706中的緩衝器將處理張量1的結果串流傳輸到目的地記憶體1708用於儲存。在時步8,第一複數個緩衝器1704中的緩衝器將張量2串流傳輸到可重配置處理器。在其他實現中,將張量2從第一複數個緩衝器1704中的緩衝器串流傳輸到可重配置處理器先於將處理張量1的結果從第二複數個緩衝器1706中的緩衝器串流傳輸到目的地記憶體1708。與圖17B中所示的步驟相比,其他實現可以以不同的順序及/或使用不同、更少或額外的步驟來執行步驟。在一些實現中可以組合多個步驟。
圖17C是訊息序列圖1700C,其說明非同步張量串流的一種實現,其中在可重配置處理器已處理當前張量之後緩衝下一個張量。該運行時邏輯還被配置成使第一複數個緩衝器1704中的緩衝器在第二複數個緩衝器1706中的緩衝器從可重配置處理器串流傳輸處理當前資料單元的結果之後,從源記憶體1702接收下一個資料單元。
轉到圖17C中所示的範例。在時步1,第一複數個緩衝器1704中的緩衝器從源記憶體1702接收張量1。在時步2,第一複數個緩衝器1704中的緩衝器將張量1串流傳輸到可重配置處理器。在時步3,可重配置處理器開始處理張量1。在時步4,可重配置處理器將處理張量1的結果(結果1)串流傳輸到第二複數個緩衝器1706中的緩衝器。在第二複數個緩衝器1706中的緩衝器從可重配置處理器串流傳輸處理張量1的結果之後,第一複數個緩衝器1704中的緩衝器分別在時步5和6從源記憶體1702接收張量2和3。在時步7,第二複數個緩衝器1706中的緩衝器將處理張量1的結果串流傳輸到目的地記憶體1708用於儲存。在時步8,第一複數個緩衝器1704中的緩衝器將張量2串流傳輸到可重配置處理器。在其他實現中,將張量2從第一複數個緩衝器1704中的緩衝器串流傳輸到可重配置處理器先於將處理張量1的結果從第二複數個緩衝器1706中的緩衝器串流傳輸到目的地記憶體1708。與圖17C中所示的步驟相比,其他實現可以以不同的順序及/或使用不同、更少或額外的步驟來執行步驟。在一些實現中可以組合多個步驟。
已經描述了非同步張量串流,現在討論轉向所公開的技術如何在資料中心100中的不同處理節點上的可重配置處理器上執行配置檔。這在本文中稱為“配置檔的節點間執行”。
配置檔的節點間執行
圖18是訊息序列圖1800,其說明在資料中心100中的不同處理節點上的可重配置處理器上執行配置檔的一種實現。這在本文中稱為“配置檔的節點間執行”。資料中心100包括可重配置資料流資源池。可重配置資料流資源池包括複數個處理節點(例如,處理節點1至n)。複數個處理節點中的個別處理節點可操作地耦接到各自的複數個可重配置處理器(RP)和各自的複數個緩衝器。個別處理節點還可操作地耦接到各自的主機處理器。個別處理節點還可操作地耦接到各自的複數個網路介面控制器(NIC)或智慧型網路介面控制器(SmartNIC)。
在一種實現中,個別複數個緩衝器中的緩衝器位於個別複數個可重配置處理器的個別記憶體中。個別複數個可重配置處理器的個別記憶體的範例包括晶片外及/或晶片上記憶體,諸如DRAM、NAND快閃、SRAM、鎖存器、觸發器、旁路網路和暫存器。在另一實現中,緩衝器位於個別複數個NIC或SmartNIC中的NIC或SmartNIC的個別記憶體中。在又另一實現中,緩衝器位於個別主機處理器中的主機處理器的個別記憶體(例如,RAM/ROM、快取)。在其他實現中,緩衝器可以位於或連接到資料中心100的任何網路元件,諸如PCIe匯流排、雙倍資料速率(DDR)通道、雙行記憶體模組(DIMM)、路由器和交換器。緩衝器可以是先進先出(FIFO)緩衝器、先進後出(FILO)緩衝器、後進先出(LIFO)緩衝器、後進後出(LILO)緩衝器或循環緩衝器。緩衝器的大小可以是8位元組、16位元組、32位元組、64位元組、128位元組、256位元組等,或是任何適合在主機處理器、網路介面控制器和可重配置處理器之間傳輸資料的方便的大小。
編譯器1812編譯應用程式1802(操作1)並產生配置檔1822(操作2)。配置檔1822指定執行配置檔1822所需的虛擬資料流資源1824的配置。在一種實現中,虛擬資料流資源1824包括在第一虛擬處理節點1824a中的第一虛擬可重配置處理器1824a1、在第二虛擬處理節點1824b中的第二虛擬可重配置處理器1824b1以及在第一虛擬可重配置處理器1824a1和第二虛擬可重配置處理器1824b1之間串流傳輸資料的虛擬緩衝器1824c。虛擬緩衝器1824c包括第一虛擬SmartNIC緩衝器1824c1和第二虛擬SmartNIC緩衝器1824c2。
運行時處理器1832可操作地耦接到可重配置資料流資源池並且被配置為接收配置檔1822(操作3)。運行時處理器1832包括運行時邏輯1842和分配邏輯1844。分配邏輯1844被配置為將可重配置資料流資源池中的可重配置資料流資源分配給虛擬資料流資源1824(操作4)。被分配的可重配置資料流資源包括個別處理節點中被分配給第一虛擬處理節點1824a的第一處理節點、個別處理節點中被分配給第二虛擬處理節點1824b的第二處理節點、被分配給第一虛擬可重配置處理器1824a1之可操作地耦接到第一處理節點的第一可重配置處理器、被分配給第二虛擬可重配置處理器1824b1之可操作地耦接到第二處理節點的第二可重配置處理器以及被分配給虛擬緩衝器1824c之可操作地耦接到第一處理節點的第一複數個緩衝器和可操作地耦接到第二處理節點的的第二複數個緩衝器。運行時邏輯1842被配置為使用分配的可重配置資料流資源執行配置檔1822(操作5)。
現在討論轉向如何透過將緩衝器的物理記憶體位址映射到資料中心100中的不同網路元件的記憶體(例如,主機記憶體、可重配置處理器記憶體、NIC記憶體、SmartNIC記憶體、PCIe匯流排記憶體、DDR通道記憶體、DIMM記憶體等)來分配緩衝器用於節點間串流傳輸配置資料(例如,位元流)。
緩衝器分配
緩衝器是可編程的,並且可以透過指定物理記憶體位址來分配。緩衝器的物理記憶體位址指定緩衝器的記憶體位置。緩衝器的物理記憶體位址可以由主機處理器及/或由可重配置處理器指定。虛擬緩衝器1824c的配置指定被分配用於執行應用程式1802之緩衝器的虛擬記憶體區段(例如,第一和第二複數個緩衝器),包括虛擬記憶體區段的虛擬位址空間(例如,起始或基底位址)和虛擬位址空間的大小(例如,記憶體塊的大小,以位元組為單位)。運行時處理器1832將虛擬記憶體區段的虛擬位址空間映射到被分配的緩衝器所在的記憶體中物理記憶體區段的物理位址空間。記憶體可以是主機處理器記憶體、可重配置處理器記憶體(晶片外或晶片上)、NIC記憶體、SmartNIC記憶體、PCIe記憶體、DMA記憶體、DIMM記憶體或資料中心100中的任何其他網路元件記憶體。
圖19示出記憶體映射1900的一種實現,將虛擬緩衝器1824c記憶體映射到分配的緩衝器1902/物理緩衝器1902,其位於示例性可重配置資料流資源的個別物理記憶體中,諸如SmartNIC 1(SmartNIC 1)記憶體、SmartNIC 2(SmartNIC 2)記憶體、可重配置處理器1(RP 1)記憶體、可重配置處理器2(RP 2)記憶體、PCIe 1記憶體、DMA 1記憶體和主機處理器1記憶體。圖19示出示例性可重配置資料流資源的控制及狀態暫存器(CSR)1980被用於將虛擬記憶體空間中的虛擬緩衝器1824c記憶體映射到物理記憶體空間。在被分配的物理元件(例如,SmartNIC、RP、PCIe裝置的DMA引擎等)中的CSR 1913、1923、1933、1943、1953、1963和1973被用來透過讓運行時邏輯對其進行編程,以將應用程式虛擬緩衝器位址映射到適當的物理位址。(例如,SmartNIC 1緩衝器1912、SmartNIC 2緩衝器1922、RP 1緩衝器1932、RP 2緩衝器1942、PCIe 1緩衝器1952、DMA 1緩衝器1962、主機1緩衝器1972)到連續物理記憶體空間中的分配的緩衝器1902(例如,SmartNIC 1緩衝器1914(第一物理記憶體位址範圍)、SmartNIC 2緩衝器1924(第二物理記憶體位址範圍)、RP 1緩衝器1934(第三物理記憶體位址範圍)、RP 2緩衝器1944(第四物理記憶體位址範圍)、PCIe 1緩衝器1954(第五物理記憶體位址範圍)、DMA 1緩衝器1964(第六物理記憶體位址範圍)、主機1緩衝器1974(第七物理記憶體位址範圍))。
現在討論轉向如何為在給定的可重配置資料流資源集(例如,可重配置處理器、NIC、SmartNIC、PCIe匯流排、DMA通道)上同時或平行執行的多個應用程式獨立地完成緩衝器分配,以及被分配的緩衝器如何在逐個應用程式的基礎上保持隔離。
逐應用程式(Application-Wise)的緩衝器分配和隔離
在一種實現中,運行時處理器1832使用識別虛擬位址空間和物理位址空間之間的映射的配置資料(例如,位元流)來配置可重配置資料流資源的控制及狀態暫存器,以便配置檔1822在執行應用程式1802期間存取物理記憶體區段。在一些實現中,映射到被分配給應用程式1802中的第一應用程式的緩衝器的第一組物理記憶體區段不同於映射到被分配給應用程式1802中的第二應用程式的緩衝器的第二組物理記憶體區段。並且,被分配給應用程式1802中的第一應用程式的緩衝器的存取限於第一組物理記憶體區段,以及被分配給應用程式1802中的第二應用程式的緩衝器的存取限於第二組物理記憶體區段。
在一些實現中,可重配置處理器具有用於個別應用程式的個別複數個緩衝器,使得第一複數個緩衝器可用於串流傳輸配置資料(例如,位元流)以執行用於第一應用程式的配置檔、第二複數個緩衝器可用於串流傳輸配置資料(例如,位元流)以執行用於第二應用程式的配置檔、第三複數個緩衝器可用於串流傳輸配置資料(例如,位元流)以執行用於第三應用程式的配置檔等。用於第一、第二和第三應用程式的配置檔可以分別使用第一、第二和第三複數個緩衝器平行或按順序執行。在一種實現中,用於第一、第二和第三應用程式的配置檔可以分別使用第一、第二和第三複數個緩衝器在單一可重配置處理器上平行或按順序執行。在另一實現中,用於第一、第二和第三應用程式的配置檔可以分別使用第一、第二和第三複數個緩衝器在同一處理節點上的可重配置處理器間平行或按順序執行,使得在一些實現中,第一、第二和第三複數個緩衝器之各者包括針對同一處理節點上之各個可重配置處理器或NIC或SmartNIC的用於執行配置檔的一組發送器(TX)緩衝器和接收器(RX)緩衝器。在又另一實現中,用於第一、第二和第三應用程式的配置檔可以分別使用第一、第二和第三複數個緩衝器在不同處理節點上的可重配置處理器間平行或按順序執行,使得在一些實現中,第一、第二和第三複數個緩衝器之各者包括針對不同處理節點上之各個可重配置處理器或NIC或SmartNIC的用於執行配置檔的一組發送器(TX)緩衝器和接收器(RX)緩衝器。
在一種實現中,運行時處理器1832在資料中心100中的各個主機處理器上運行,並且提供對資料中心100中的可重配置資料流資源池的統一存取。關於分配邏輯1844如何跨越運行時處理器或運行時邏輯在其上運行的主機處理器的使用者空間及核心空間的額外細節可以參見美國非臨時專利申請案號16/922,975,於2020年7月7日申請,名稱為“RUNTIME VIRTUALIZATION OF
RECONFIGURABLE DATAFLOW RESOURCES”,(代理人案號為SBNV 1026-1),其透過引用併入本文(具體參考透過引用併入的申請中的運行時程式庫312、核心模組322、資源管理器471、裝置驅動器474及其他分配邏輯和元件)。
現在討論轉向如何在不使用主機或主機處理器的情況下執行本申請中描述的公開技術的各種態樣。本文中將這種實現稱為“無主機(host-less)實現”。
超管理器及無主機實現
在另一實現中,運行時處理器1832在資料中心100中的各個可重配置處理器上運行,並且提供對資料中心100中的可重配置資料流資源池的統一存取。在又另一實現中,運行時處理器1832僅在資料中心100中的主機處理器的子集上(例如,僅在一個主機處理器上)作為超管理器運行。在又另一實現中,運行時處理器1832在資料中心100中的可重配置處理器的子集上(例如,僅在一個可重配置處理器上)作為超管理器運行。
圖20示出資料中心100之一種實現的架構級示意圖2000,其中資料中心100的處理節點不包括主機處理器。架構級示意圖2000中所示的實現被配置成執行本申請中討論的其他實現(例如,節點內處理、節點間執行配置檔),除了其他實現是在不使用主機處理器的情況下執行的。在許多無主機實現中,其他由主機處理器執行的功能改為由資料中心100中的可重配置處理器執行。在無主機實現中由可重配置處理器執行的功能的一些範例包括託管編譯器1812、編譯應用程式1802、產生配置檔1822、產生虛擬資料流資源1824的配置、託管運行時處理器1832、記憶體映射、資源分配(例如,指定和分配緩衝器的物理記憶體位址和其他可重配置資料流資源)、執行配置檔1822、剖析傳入的網路封包並以超低和確定性延遲運行異常檢測等。在其他無主機實現中,其他由主機處理器執行的功能被資料中心100中的其他網路元件,例如,由包括微控制器以本地觸發類似主機命令而不需要外部主機的SmartNIC排除。
在超管理器和無主機實現中,可以將運行時處理器1832視為分散式運行時處理器、分散式運行時邏輯、分散式資源管理器及/或分散式資源分配器,其提供對資料中心100中的可重配置資料流資源池的統一存取。
現在討論轉向為了有效執行配置檔,所公開的技術如何使用緩衝器透過網路組構在資料中心100的不同處理節點上的可重配置處理器之間串流傳輸配置資料(例如,位元流)。這在本文中稱為“透過網路組構之基於緩衝器的節點間串流傳輸配置資料(例如,位元流)”。
透過網路組構之基於緩衝器的節點間串流傳輸配置資料(例如,位元流)
圖21是訊息序列圖2100,其說明透過網路組構136之基於緩衝器的節點間串流傳輸配置資料(例如,位元流)的一種實現。在圖21所示的實現中,用於節點間串流傳輸的緩衝器,即,發送器緩衝器2176a、接收器緩衝器2178a、發送器緩衝器2176n和接收器緩衝器2178n,位於SmartNIC裝置132a和132n各自的記憶體中。然而,這些緩衝器可以位於資料中心100的任何網路元件中(例如,主機處理器的記憶體、可重配置處理器的記憶體、NIC裝置的記憶體、PCIe匯流排上的記憶體、DDR通道上的記憶體、DIMM的記憶體等)。
在圖21所示的實現中,可操作地將同一處理節點上的可重配置處理器耦接到相同處理節點的主機處理器以及耦接到連接至相同處理節點的NIC裝置或SmartNIC裝置的本地匯流排125a、126a、127a、125n、126n和127n以及匯流排交換器124a和124n分別為PCIe匯流排2132a、2136a、2132n和2136n以及PCIe交換器(PEX)2112a、2134a、2112n和2134n。在其他實現中,PCIe協定可以由其他匯流排協定替代或補充,諸如加速器專屬快取互連一致性(CCIX)、Compute Express Link(CXL)和開放協調加速器處理器介面(OpenCAPI)。
雖然訊息序列圖2100起始於操作1,但為了清楚起見,省略了一些前面的操作。轉到圖18中所示的範例,省略的操作的一些範例包括應用程式1802請求執行、編譯器1812編譯應用程式1802並產生配置檔1822、運行時處理器1832分配物理資源,即,可重配置資料流資源,用於執行配置檔1822以及運行時處理器1832將配置檔1812加載到分配的可重配置資料流資源。這些省略的操作可以在資料中心100中的任何主機處理器或任何可重配置處理器上執行。
繼續圖18中所示的範例,考量虛擬資料流資源1824和虛擬緩衝器1824c被分配了資料中心100中的處理節點1和處理節點n的可重配置資料流資源。第一虛擬處理節點1824a被分配了處理節點1(以下稱為“第一處理節點”)。第一虛擬可重配置處理器1824a1被分配了處理節點1上的可重配置處理器N(RP N)(以下稱為“第一可重配置處理器”)。第二虛擬處理節點1824b被分配了處理節點n(以下稱為“第二處理節點”)。第二虛擬可重配置處理器1824b1被分配了處理節點n上的可重配置處理器N(RP N)(以下稱為“第二可重配置處理器”)。第一虛擬SmartNIC緩衝器1824c1被分配了發送器緩衝器2176a和接收器緩衝器2178a(以下稱為“第一複數個緩衝器”)。第二虛擬SmartNIC緩衝器1824c2被分配了發送器緩衝器2176n和接收器緩衝器2178n(以下稱為“第二複數個緩衝器”)。
第一複數個緩衝器包括第一組發送器緩衝器2176a,其被配置為從第一可重配置處理器接收資料並將資料提供給第二複數個緩衝器中的第二組接收器緩衝器2178n。第二組接收器緩衝器2178n被配置為將資料提供給第二可重配置處理器。第二複數個緩衝器包括第二組發送器緩衝器2176n,其被配置為從第二可重配置處理器接收資料並將資料提供給第一複數個緩衝器中的第一組接收器緩衝器2178a。第一組接收器緩衝器2178a被配置為將資料提供給第一可重配置處理器。
運行時處理器1832被配置為以路由表配置第一SmartNIC 132a,該路由表將第一可重配置處理器指定為本地可重配置處理器,以及將第二可重配置處理器指定為目的地可重配置處理器。運行時處理器1832被配置為以路由表配置第二SmartNIC 132n,該路由表將第二可重配置處理器指定為本地可重配置處理器,以及將第一可重配置處理器指定為目的地可重配置處理器。
特別是,圖21示出運行時處理器1832如何在第一處理節點(處理節點1)和第二處理節點(處理節點n)上執行配置檔1822的一種實現。在一種實現中,該執行包括使用第一複數個緩衝器中的一或多個緩衝器和第二複數個緩衝器中的一或多個緩衝器,在第一可重配置處理器和第二可重配置處理器之間串流傳輸定義應用程式1802之配置檔1822的資料(例如,配置資料(例如,位元流)和應用程式資料(權重、係數、向量、張量、控制資料(例如,控制符記)等),藉此串流傳輸旁路第一主機處理器102a和第二主機處理器102n(如圖21中的虛線所示)。因此,在一些實現中,訊息序列圖2100可以在不使用主機處理器的情況下執行(例如,如關於圖20所討論的無主機實現)。這節省了等待時間並提高吞吐量,並且也不需要第一和第二主機處理器102a和102n上所需的任何處理時間(例如,用於由它們各自的作業系統進行處理)。
在一些實現中,該執行包括將應用程式1802的輸入資料從第一可重配置處理器串流傳輸到第二可重配置處理器。在一些實現中,第一組發送器緩衝器2176a中的一或多個發送器緩衝器被配置為從第一可重配置處理器接收輸入資料(操作1),並將輸入資料提供給第二組接收器緩衝器2178n中的一或多個接收器緩衝器(操作2)。
第一可重配置處理器被配置為將輸入資料推送到第一SmartNIC 132a(例如,經由PCIe端點埠(Endpoint Port,EP)2146a)(操作1)。在一些實現中,操作1透過第一可重配置處理器的位址產生器(例如,位址產生與合併單元(AGCU))將輸入資料寫入映射到第一組發送器緩衝器2176a中的發送器緩衝器的物理記憶體位址(例如,經由硬體寫(HWRITE)命令)來完成。在一種實現中,第一SmartNIC 132a被配置為將封裝後的輸入資料寫入第一組發送器緩衝器2176a中的發送器緩衝器。在一種實現中,第一SmartNIC 132a被配置為回應於輸入資料的寫入,更新第一組發送器緩衝器2176a中的發送器緩衝器的尾指標。在一種實現中,第一SmartNIC 132a被配置為處理輸入資料作為負載2156a、施用封裝、將其儲存在快取2186a並透過網路組構136(例如,經由MAC埠2196a)將其串流傳輸到第二SmartNIC 132n。
本領域之技術人士將理解,操作1和6包括使用諸如交換層封包(Transaction Layer Packet,TLP)(例如,2120a、2128a)的協定,透過本地匯流排PCIe 2132a和2136a,在第一可重配置處理器和第一SmartNIC 132a之間串流傳輸網路封包。本領域之技術人士也將理解,操作2包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)(例如,2198a、2198n)的協定,透過網路組構136(例如,乙太網路、InfiniBand(IB)),從第一SmartNIC 132a串流傳輸網路封包到第二SmartNIC 132n。
第二組接收器緩衝器2178n中的接收器緩衝器被配置為將輸入資料提供給第二可重配置處理器(操作3)。在一些實現中,操作3透過第二可重配置處理器的位址產生器(例如,位址產生與合併單元(AGCU))從映射到第二組接收器緩衝器2178n中的接收器緩衝器的物理記憶體位址讀取輸入資料(例如,經由硬體讀(HWREAD)命令)來完成。在一種實現中,第一SmartNIC 132a被配置為回應於更新後的尾指標,將輸入資料發送到第二SmartNIC 132n。在一種實現中,第二SmartNIC 132n被配置為將解封裝後的輸入資料寫入第二組接收器緩衝器2178n中的接收器緩衝器。在一種實現中,第二SmartNIC 132n被配置為回應於輸入資料的寫入,更新第二組接收器緩衝器2178n中的接收器緩衝器的尾指標。第二可重配置處理器被配置為回應於更新後的尾指標,透過從第二組接收器緩衝器2178n中的接收器緩衝器讀取輸入資料,從第二SmartNIC 132n拉取輸入資料(例如,經由PCIe端點埠(EP)2146n)。
在一些實現中,該執行包括將應用程式1802的輸出資料從第二可重配置處理器串流傳輸到第一可重配置處理器。輸出資料作為處理輸入資料的結果(例如,由第二可重配置處理器處理輸入資料)而產生。在一些實現中,第二組發送器緩衝器2176n中的一或多個發送器緩衝器被配置為從第二可重配置處理器接收輸出資料(操作4),以及將輸出資料提供給第一組接收器緩衝器2178a中的一或多個接收器緩衝器(操作5)。
第二可重配置處理器被配置為將輸出資料推送到第二SmartNIC 132n(例如,經由PCIe端點埠(EP) 2146n)(操作4)。在一些實現中,操作4透過第二可重配置處理器的位址產生器(例如,位址產生與合併單元(AGCU) )將輸出資料寫入映射到第二組發送器緩衝器2176n中的發送器緩衝器的物理記憶體位址(例如,經由硬體寫(HWRITE)命令)來完成。在一種實現中,第二SmartNIC 132n被配置為將封裝後的輸出資料寫入第二組發送器緩衝器2176n中的發送器緩衝器。在一種實現中,第二SmartNIC 132n被配置為回應於輸出資料的寫入,更新第二組發送器緩衝器2176n中的發送器緩衝器的尾指標。在一種實現中,第二SmartNIC 132n被配置為處理輸出資料作為負載2156n、施用封裝、將其儲存在快取2186n並透過網路組構136(例如,經由MAC埠2196n)將其串流傳輸到第一SmartNIC 132a。
本領域之技術人士將理解,操作3和4包括使用諸如交換層封包(TLP)(例如,2120n、2128n)的協定,透過本地匯流排PCIe 2132n和2136n,第二可重配置處理器到第二SmartNIC 132n之間串流傳輸網路封包。本領域之技術人士也將理解,操作5包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)(例如,2198a、2198n)的協定,透過網路組構136(例如,乙太網路、InfiniBand(IB)),從第二SmartNIC 132n串流傳輸網路封包到第一SmartNIC 132a。
第一組接收器緩衝器2178a中的接收器緩衝器被配置為將輸出資料提供給第一可重配置處理器(操作6)。在一些實現中,操作6透過第一可重配置處理器的位址產生器(例如,位址產生與合併單元(AGCU))從映射到第一組接收器緩衝器2178a中的接收器緩衝器的物理記憶體位址讀取輸出資料(例如,經由硬體讀(HWREAD)命令)來完成。在一種實現中,第二SmartNIC 132n被配置為回應於更新後的尾指標,將輸出資料發送到第一SmartNIC 132a。在一種實現中,第一SmartNIC 132a被配置為將解封裝後的輸出資料寫入第一組接收器緩衝器2178a中的接收器緩衝器。在一種實現中,第一SmartNIC 132a被配置為回應於輸出資料的寫入,更新第一組接收器緩衝器2178a中的接收器緩衝器的尾指標。第一可重配置處理器被配置為回應於更新後的尾指標,透過從第一組接收器緩衝器2178a中的接收器緩衝器讀取輸出資料,從第一SmartNIC 132a拉取輸出資料(例如,經由PCIe端點埠(EP)2146a)。
在一些實現中,第一可重配置處理器使用一或多個遠端程序呼叫通知第二可重配置處理器遠端調用。在一種實現中,第一可重配置處理器使用第一組發送器緩衝器2176a中的發送器緩衝器和第二組接收器緩衝器2178n中的接收器緩衝器,透過網路組構136將一或多個參數值發送到第二可重配置處理器用於執行遠端程序呼叫(類似於圖21中的操作2)。
在一些實現中,第二可重配置處理器使用一或多個遠端程序呼叫通知第一可重配置處理器遠端調用。在一種實現中,第二可重配置處理器使用第二組發送器緩衝器2176n中的發送器緩衝器和第一組接收器緩衝器2178a中的接收器緩衝器,透過網路組構136將一或多個參數值發送到第一可重配置處理器用於執行遠端程序呼叫(類似於圖21中的操作5)。
圖22是訊息序列圖2200,其說明透過網路組構136之基於緩衝器的節點間串流傳輸配置資料(例如,位元流)的另一種實現。特別是,圖22示出運行時處理器1832如何在第一處理節點(處理節點1)和第二處理節點(處理節點n)上執行配置檔1822的另一種實現。在一種實現中,該執行包括使用第一複數個緩衝器中的一或多個緩衝器和第二複數個緩衝器中的一或多個緩衝器,在第一可重配置處理器和第二主機處理器102n之間串流傳輸定義應用程式1802之配置檔1822的資料(例如,配置資料(例如,位元流)和應用程式資料(權重、係數、向量、張量、控制資料(例如,控制符記))等),藉此串流傳輸旁路第一主機處理器102a(如圖22中的虛線所示)。這節省了等待時間並提高吞吐量,並且也不需要第一主機處理器102a上所需的任何處理時間(例如,用於由其作業系統進行處理)。
在一些實現中,該執行包括將應用程式1802的輸入資料從第一可重配置處理器串流傳輸到第二主機處理器102n。在一些實現中,第一組發送器緩衝器2176a中的一或多個發送器緩衝器被配置為從第一可重配置處理器接收輸入資料(操作1),以及將輸入資料提供給第二組接收器緩衝器2178n中的一或多個接收器緩衝器(操作2)。
第一可重配置處理器被配置為將輸入資料推送到第一SmartNIC 132a(例如,經由PCIe端點埠(EP) 2146a)(操作1)。在一些實現中,操作1透過第一可重配置處理器的位址產生器(例如,位址產生與合併單元(AGCU))將輸入資料寫入映射到第一組發送器緩衝器2176a中的發送器緩衝器的物理記憶體位址(例如,經由硬體寫(HWRITE)命令)來完成。在一種實現中,第一SmartNIC 132a被配置為將封裝後的輸入資料寫入第一組發送器緩衝器2176a中的發送器緩衝器。在一種實現中,第一SmartNIC 132a被配置為回應於輸入資料的寫入,更新第一組發送器緩衝器2176a中的發送器緩衝器的尾指標。在一種實現中,第一SmartNIC 132a被配置為處理輸入資料作為負載2156a、施用封裝、將其儲存在快取2186a並透過網路組構136(例如,經由MAC埠2196a)將其串流傳輸到第二SmartNIC 132n。
本領域之技術人士將理解,操作1和6包括使用諸如交換層封包(TLP)(例如,2120a、2128a)的協定,透過本地匯流排PCIe 2132a和2136a,在第一可重配置處理器和第一SmartNIC 132a之間串流傳輸網路封包。本領域之技術人士也將理解,操作2包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)(例如,2198a、2198n)的協定,透過網路組構136(例如,乙太網路、InfiniBand(IB)),從第一SmartNIC 132a串流傳輸網路封包到第二SmartNIC 132n。
第二組接收器緩衝器2178n中的接收器緩衝器被配置為將輸入資料提供給第二主機處理器102n(操作3)。在一些實現中,操作3透過第二主機處理器102n的位址產生器(例如,一旦DMA操作完成,第二主機處理器讀取已DMA的資料)從映射到第二組接收器緩衝器2178n中的接收器緩衝器的物理記憶體位址讀取輸入資料(例如,經由硬體讀(HWREAD)命令)來完成。在一種實現中,第一SmartNIC 132a被配置為回應於更新後的尾指標,將輸入資料發送到第二SmartNIC 132n。在一種實現中,第二SmartNIC 132n被配置為將解封裝後的輸入資料寫入第二組接收器緩衝器2178n中的接收器緩衝器。在一種實現中,第二SmartNIC 132n被配置為回應於輸入資料的寫入,更新第二組接收器緩衝器2178n中的接收器緩衝器的尾指標。第二主機處理器102n被配置為回應於更新後的尾指標,透過從第二組接收器緩衝器2178n中的接收器緩衝器讀取輸入資料,從第二SmartNIC 132n拉取輸入資料(例如,經由PCIe端點埠(EP)2146n)。通常SmartNIC會將負載DMA到主機102n記憶體134n,然後透過DMA完成機制通知主機。
在一些實現中,該執行包括將應用程式1802的輸出資料從第二主機處理器102n串流傳輸到第一可重配置處理器。輸出資料作為處理輸入資料的結果(例如,由第二主機處理器102n處理輸出資料)而產生。在一些實現中,第二組發送器緩衝器2176n中的一或多個發送器緩衝器被配置為從第二主機處理器102n接收輸出資料(操作4),以及將輸出資料提供給第一組接收器緩衝器2178a中的一或多個接收器緩衝器(操作5)。
第二主機處理器102n被配置為將輸出資料推送到第二SmartNIC 132n(例如,經由PCIe端點埠(EP)2146n)(操作4)。在一些實現中,操作4透過DMA操作完成。在一種實現中,第二SmartNIC 132n被配置為將封裝後的輸出資料寫入第二組發送器緩衝器2176n中的發送器緩衝器。在一種實現中,第二SmartNIC 132n被配置為回應於輸出資料的寫入,更新第二組發送器緩衝器2176n中的發送器緩衝器的尾指標。在一種實現中,第二SmartNIC 132n被配置為處理輸出資料作為負載2156n、施用封裝、將其儲存在快取2186n並透過網路組構136(例如,經由MAC埠2196n)將其串流傳輸到第一SmartNIC 132a。
本領域之技術人士將理解,操作3和4包括使用諸如交換層封包(TLP)(例如,2120n、2128n)的協定,透過本地匯流排PCIe 2132n和2136n,在第二主機處理器102n到第二SmartNIC 132n之間串流傳輸網路封包。本領域之技術人士也將理解,操作5包括使用諸如基於融合乙太網的RDMA(RoCE)、TCP、用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)(例如,2198a、2198n)的協定,透過網路組構136(例如,乙太網路、InfiniBand (IB)),從第二SmartNIC 132n串流傳輸網路封包到第一SmartNIC 132a。
第一組接收器緩衝器2178a中的接收器緩衝器被配置為將輸出資料提供給第一可重配置處理器(操作6)。在一些實現中,操作6透過第一可重配置處理器的位址產生器(例如,位址產生與合併單元(AGCU))從映射到第一組接收器緩衝器2178a中的接收器緩衝器的物理記憶體位址讀取輸出資料(例如,經由硬體讀(HWREAD)命令)來完成。在一種實現中,第二SmartNIC 132n被配置為回應於更新後的尾指標,將輸出資料發送到第一SmartNIC 132a。在一種實現中,第一SmartNIC 132a被配置為將解封裝後的輸出資料寫入第一組接收器緩衝器2178a中的接收器緩衝器。在一種實現中,第一SmartNIC 132a被配置為回應於輸出資料的寫入,更新第一組接收器緩衝器2178a中的接收器緩衝器的尾指標。第一可重配置處理器被配置為回應於更新後的尾指標,透過從第一組接收器緩衝器2178a中的接收器緩衝器讀取輸出資料,從第一SmartNIC 132a(例如,經由PCIe端點埠(EP)2146a)拉取輸出資料。
在一些實現中,第一可重配置處理器使用一或多個遠端程序呼叫通知第二主機處理器102n遠端調用。在一種實現中,第一可重配置處理器使用第一組發送器緩衝器2176a中的發送器緩衝器和第二組接收器緩衝器2178n中的接收器緩衝器,透過網路組構136將一或多個參數值發送到第二主機處理器102n用於執行遠端程序呼叫(類似於圖22中的操作2)。
在一些實現中,第二主機處理器102n使用一或多個遠端程序呼叫通知第一可重配置處理器遠端調用。在一種實現中,第二主機處理器102n使用第二組發送器緩衝器2176n中的發送器緩衝器和第一組接收器緩衝器2178a中的接收器緩衝器,透過網路組構136將一或多個參數值發送到第一可重配置處理器用於執行遠端程序呼叫(類似於圖22中的操作5)。
在使用第一組緩衝器的遠端程序呼叫的同步模式中,所公開的技術允許執行遠端程序呼叫的遠端實體產生一或多個結果值,並使用不同組的緩衝器將該些結果值發送回遠端呼叫者。在一種實現中,兩個通訊實體可以指定兩個緩衝器佇列,每個方向一個緩衝器佇列。呼叫者將透過將資料複製到第一緩衝器佇列來傳送資料。接收器將從第一緩衝器佇列拉取資料、計算操作、然後將結果放到第二緩衝器佇列。原始呼叫者將只是等待,直到第二緩衝器佇列有可用的資料,並且一旦遠端計算好的結果到達第二緩衝器佇列,就能夠馬上使用該結果。
在公開技術的其他實現中,SmartNIC可以替換為NIC,其可由NIC DMA或者經由主機處理器控制以實現圖21和22中所示的流程(例如,更新緩衝器的頭和尾指標)。例如,在NIC實現中,圖21和22的操作2和5是由第一和第二主機處理器102a和102n透過啟動第一NIC 132a和第二NIC 132n之間的網路封包的遠端DMA(RDMA),並且在網路封包到達時更新緩衝器的相應尾指標來執行的。
在一些實現中,SmartNIC和NIC嵌入在可重配置處理器的晶片上。
模型平行
圖23示出使用所公開的透過網路組構136之基於緩衝器的節點間串流傳輸配置資料(例如,位元流)來平行執行2300模型/應用程式的一種實現。這在本文中稱為“模型平行”。
應用程式2302是使用一組處理模組(例如,處理模組1至5)的資料流圖。處理模組的範例包括神經元或深度類神經網路的層。運行時處理器1832被配置成將該組處理模組分成處理模組的第一子集2304a和處理模組的第二子集2304b。運行時處理器1832被配置成在第一可重配置處理器(例如,來自處理節點1上的RP 142a的RP N)上執行處理模組的第一子集2304a的配置檔2322a。運行時處理器1832被配置成在第二可重配置處理器(例如,來自處理節點n上的RP 142n的RP N)上執行處理模組的第二子集2304b的配置檔2322b。
例如,透過隨機梯度下降法(Stochastic Gradient Descent,SGD)實現的深度類神經網路訓練包括前向傳遞和反向傳遞。反向傳遞包括差量(delta)傳遞和鏈式(chain)傳遞。前向傳遞在前向方向上傳播啟動。差量傳遞在反向方向上傳播差量。當差量傳遞中產生差量時,鏈式傳遞基於差量計算梯度。
運行時處理器1832被配置成使用第一複數個緩衝器2176a、2178a和第二複數個緩衝器2176n、2178n,在處理模組的第一子集2304a和處理模組的第二子集2304b之間串流傳輸資料。資料包括在前向傳遞期間產生的特徵圖及/或啟動(activation),以及在反向傳遞期間產生的損失梯度。
圖23中描述的操作一至六與圖21中的相應操作類似。
資料平行性
圖24示出使用所公開的透過網路組構136之基於緩衝器的節點間串流傳輸配置資料(例如,位元流)來平行執行2400模型/應用程式的多個實例的一種實現。這在本文中稱為“資料平行性”。運行時處理器1832被配置成初始化資料流圖的第一實例2404a和資料流圖的第二實例2404b。
運行時處理器1832被配置成在第一可重配置處理器(例如,來自處理節點1上的RP 142a的RP N)上執行資料流圖的第一實例2404a的配置檔2422a。運行時處理器1832被配置成在第二可重配置處理器(例如,來自處理節點n上的RP 142n的RP N)上執行資料流圖的第二實例2404b的配置檔2422b。
運行時處理器1832被配置成使用第一複數個緩衝器2176a、2178a和第二複數個緩衝器2176n、2178n,在資料流圖的第一實例和資料流圖的第二實例之間串流傳輸資料。資料包括在反向傳遞期間產生的梯度。
圖24中描述的操作一至六與圖21中的相應操作類似。
異質可重配置處理器
圖25示出在異質可重配置處理器(例如,圖25中的RP 1和RP 2)上執行2500配置檔的一種實現。異質可重配置處理器的範例包括中央處理單元(CPU)、圖形處理單元(GPU)、現場可編程閘陣列(FPGA)、粗粒度可重配置架構(CGRA)、特殊應用積體電路(ASIC)、特殊應用指令集處理器(ASIP)及數位信號處理器(DSP)。
異質可重配置處理器具有不同級別的可配置粒度。運行時處理器1832被配置成接收應用程式(例如,1802)的一組配置檔(例如,1822)。運行時處理器1832被配置成在異質可重配置處理器中的第一可重配置處理器(RP 1)上加載並執行該組配置檔中的第一配置檔子集2502a。第一可重配置處理器具有第一配置及/或第一級可配置粒度。運行時處理器1832被配置成在異質可重配置處理器中的第二可重配置處理器(RP 2)上加載並執行該組配置檔中的第二配置檔子集2502b。第二可重配置處理器具有不同於第一配置及/或第一級可配置粒度的第二配置及/或第二級可配置粒度。
第一級可配置粒度為位元級可配置粒度,並且第一可重配置處理器為現場可編程閘陣列(FPGA)。第二級可配置粒度為字級可配置粒度,並且第二可重配置處理器為粗粒度可重配置架構(CGRA)。
第一配置為位元級可配置粒度,並且第一可重配置處理器為現場可編程閘陣列(FPGA)。第二配置為字級可配置粒度,並且第二可重配置處理器為粗粒度可重配置架構(CGRA)。第一配置為閘級可重配置性
(reconfigurability),並且第一可重配置處理器為FPGA。第二配置為暫存器轉移級(register transfer-level)可重配置性,並且第二可重配置處理器為CGRA。第一配置使用逐位元查找表(LUT)和交換器,並且第一可重配置處理器為FPGA。第二配置使用字組寬的發送插槽(Issue Slot,IS)/算術邏輯單元(ALU)/功能單元(FU)/處理元件(PE)、暫存器檔(RF)及互連,並且第二可重配置處理器為CGRA。第二可重配置處理器使用的IS的數量少於第一可重配置處理器使用的LUT的數量。配置第二可重配置處理器所需的位元數比配置第一可重配置處理器所需的位元數小幾個數量級。
晶片上NIC/SmartNIC
圖26示出使用嵌入在可重配置處理器上的NIC或SmartNIC裝置來執行2600配置檔的一種實現。
第一可重配置處理器(例如,來自處理節點1上的RP 142a中的RP N)具有第一網路介面控制器(NIC),並且第一NIC具有第一複數個緩衝器2176a、2178a。第二可重配置處理器(例如,來自處理節點n上的RP 142n中的RP N)具有第二NIC,並且第二NIC具有第二複數個緩衝器2176n、2178n。運行時處理器1832被配置為使用第一可重配置處理器和第二可重配置處理器執行應用程式1802的配置檔1812。該執行包括使用第一NIC之第一複數個緩衝器和第二NIC之第二複數個緩衝器,在第一可重配置處理器和第二可重配置處理器之間串流傳輸用於定義應用程式1802之配置檔1822的資料(例如,配置資料(例如,位元流)和應用程式資料(權重、係數、向量、張量、控制資料(例如,控制符記))等)。
圖26中描述的操作一至六與圖21中的相應操作類似。
示例性可重配置處理器
圖27是說明包括主機2720、記憶體2740及示例性可重配置資料處理器2710之系統2700的圖,其中如本文描述的計算單元透過硬體或者透過可重配置元件的配置來部署並且配置有虛擬化邏輯2797。如在圖27的範例中所示,可重配置資料處理器2710包括可配置單元陣列2790和配置加載/卸載控制器2795。
虛擬化邏輯2797可以包括支持或致能在一個晶粒或一個多晶片模組上的可配置單元陣列中同時執行多個不相關的應用程式圖(或相關的應用程式圖)的資源。在圖示中,第一應用程式圖在特定的可配置單元集2798中的虛擬機VM1中實現,而第二應用程式圖在另一可配置單元集2799中的虛擬機VM2中實現。
可配置單元陣列2790中的可配置單元參考圖30及31進一步說明,並且配置有虛擬化邏輯2797。如本文所述,可配置單元可包括,或者可具有被配置成實現一或多個計算單元的單元。
可重配置資料處理器2710包括透過線2725連接到主機2720的外部I/O介面2730、以及透過線2745連接到記憶體2740的外部I/O介面2750。I/O介面2730、2750經由匯流排系統2715連接到可配置單元陣列2790以及連接到配置加載/卸載控制器2795。匯流排系統2715可具有乘載一個資料塊的匯流排寬度,針對此範例可以是128位元(貫穿全文對128位元的引用可更一般地被視為示例性塊的大小)。
為了用配置檔來配置可配置單元陣列2790中的可配置單元,主機2720可以經由可重配置資料處理器2710中的I/O介面2730、匯流排系統2715及I/O介面2750將配置檔發送到記憶體2740。可按照適合特定架構的多種方式,包括在可配置處理器2710外部的資料路徑中,加載配置檔。可以經由記憶體I/O介面2750從記憶體2740提取配置檔。然後可以依照分發順序將配置檔的塊發送到可重配置資料處理器2710中之可配置單元陣列2790中的可配置單元。
外部時鐘產生器2770或其他時鐘線源可以將時鐘線2775或多條時鐘線提供給可重配置資料處理器2710中的元件,包括可配置單元陣列2790、及匯流排系統2715、及外部資料I/O介面。匯流排系統2715可以經由時鐘線2775或多條時鐘線以處理器時鐘速率傳輸資料。
圖28是CGRA(粗粒度可重配置架構)處理器的元件的簡化方塊圖2800。在此範例中,CGRA處理器有2個磚片(Tile1、Tile2)。磚片包含連接到匯流排系統的可配置單元陣列,其在此範例中包括陣列級網路。磚片中的可配置單元陣列(例如,2790,圖27)包括硬體或透過配置可重配置元件的計算單元,其配置有虛擬化邏輯2797。該匯流排系統包括頂級網路,其將磚片連接到外部I/O介面2805(或任意數量的介面)。在其他實施例中,可以使用不同的匯流排系統配置。在此實施例中,每個磚片中的可配置單元是陣列級網路上的節點。
每個磚片有4個AGCU(位址產生與合併單元) (例如,MAGCU1、AGCU9、AGCU13、AGCU14)。AGCU是頂級網路上的節點和陣列級網路上的節點,並且包括用於在每個磚片中的頂級網路上的節點與陣列級網路上的節點之間路由資料的資源。
在此範例中,頂級網路上的節點包括一或多個外部I/O,其包括介面2805。至外部裝置的介面包括資源,用於在頂級網路上的節點與連接到介面的外部裝置(諸如高容量記憶體、主處理器、其他CGRA處理器、FPGA裝置等)之間路由資料。
在此範例中,磚片中的一個AGCU被配置成主AGCU,其包括用於該磚片的陣列配置加載/卸載控制器。在其他實施例中,可以實現一個以上的陣列配置加載/卸載控制器,並且可以透過分佈在一個以上的AGCU之間的邏輯來實現一個陣列配置加載/卸載控制器。
MAGCU1包括用於Tile1的配置加載/卸載控制器,並且MAGCU2包括用於Tile2的配置加載/卸載控制器。在其他實施例中,配置加載/卸載控制器可被設計用於一個以上的磚片的加載和卸載配置。在其他實施例中,一個以上的配置控制器可被設計用於單一磚片的配置。並且,配置加載/卸載控制器可以在系統的其他部分中實現,包括作為頂級網路上和一或多個陣列級網路上的獨立節點。
頂級網路係使用頂級交換器(2811、2813、2814和2816)來構成,該些頂級交換器彼此連接並且連接到頂級網路上的其他節點,包括AGCU及I/O介面2805。頂級網路包括連接頂級交換器的鏈路(例如,L11、L9、L21、L22)。資料以封包形式在鏈路上的頂級交換器之間傳輸,並且從交換器傳輸到與交換器連接的網路上的節點。例如,頂級交換器2811和2812透過鏈路L11連接,頂級交換器2814和2815透過鏈路L9連接,頂級交換器2811和2814透過鏈路L13連接,以及頂級交換器2812和2813透過鏈路L21連接。這些鏈路可以包括一或多個匯流排,並且支援控制線,例如包括塊寬(chunk-wide)匯流排(向量匯流排)。例如,頂級網路可以包括資料、請求和回應通道,可協同操作用於以類似AXI相容協定的方式傳輸資料。參見AMBA®AXI及ACE協定規格書,ARM。
頂級交換器可被連接到AGCU。例如,頂級交換器2811、2812、2814及2815被分別連接到磚片Tile1中的MAGCU1、AGCU9、AGCU13及AGCU14。頂級交換器2812、2813、2815及2816被分別連接到磚片Tile2中的MAGCU2、AGCU22、AGCU23及AGCU24。
頂級交換器可被連接到一或多個外部I/O介面(例如,介面2805)。
圖29是可在圖28的配置中使用的磚片和陣列級網路的簡化圖,其中陣列中的可配置單元是陣列級網路上的節點,並且可被配置成實現虛擬化邏輯2797。
在此範例中,可配置單元陣列2900包括多種類型的可配置單元,其配置有虛擬化邏輯2797。此範例中的可配置單元的類型包括型樣計算單元(PCU)、型樣記憶體單元(PMU)、交換單元(S)及位址產生與合併單元(每個單元包括兩個位址產生器AG和一共享的CU)。這些類型的可配置單元的功能的範例,參見Prabhakar等人,“Plasticine: A Reconfigurable Architecture For Parallel Patterns”,ISCA ’17,2017年6月24-28日,加拿大安大略省多倫多,其透過引用併入,如在本文中完整闡述一般。在此範例中,可配置單元陣列2900中的PCU(例如,2942)和PMU(例如,2943)可以包括針對計算單元之實施例可配置的資源,本文描述了其示例性配置。這些可配置單元之各者都包含一配置儲存,其包括一組暫存器或正反器,其代表運行程式的設定或序列,並且可以包括巢狀環圈的數量、每個迴圈迭代器的限制、每個階段要執行的路由及/或指令,包括輸入和輸出介面的階段、運算元的來源及網路參數。配置檔可以包括如本文所述的查找表的條目。
此外,這些可配置單元之各者都包含一配置儲存,其包括一組暫存器或正反器,其儲存可用於追蹤巢狀迴圈或其他情況中的進度的狀態。配置儲存中的配置檔包含表示每個執行程式的元件的初始配置或起始狀態的位元流。此位元流稱為位元檔。程式加載是基於位元檔的內容設定可配置單元陣列中的配置儲存,以允許元件執行程式(即,機器),包括利用虛擬化邏輯2797的程式的過程。程式加載可能還需要加載所有的PMU記憶體。
陣列級網路包括互連陣列中可配置單元的鏈接。陣列級網路中的鏈接包括一或多種,在此情況下為三種的實體匯流排:塊級向量匯流排(例如,128位元的資料)、字級純量匯流排(例如,32位元的資料)、及多位元級控制匯流排。例如,交換單元2911和2912之間的互連2921包括具有向量匯流排寬度為128位元的向量匯流排互連、具有純量匯流排寬度為32位元的純量匯流排互連、及控制匯流排互連。
三種物理匯流排不同之處在於所傳輸的資料粒度。在一個實施例中,向量匯流排可以運載一包括16位元組(=128位元)的資料的塊作為其負載。純量匯流排可以具有32位元負載,並且運載純量運算元或控制資訊。在使用此系統實現的一些機器中,可以使用浮點資料格式來表示資料,其包括標準或非標準格式。示例性格式包括FP32和BF16等。可以理解的是,在純量和向量匯流排上運載的資料值的數量是資料值之編碼格式的函數,FP32每值利用32位元,而BF16每值使用16位元。
控制匯流排可以攜帶控制交握,諸如權杖和其他線路。向量和純量匯流排可進行分封交換,包括指示每個封包目的地的標頭和其他資訊,例如當亂序接收到封包時可被用來重組檔案的序列號。每個封包標頭可以包含目的地識別符,其識別目的地交換單元的地理座標(例如,陣列中的列及行),以及介面識別符,其識別用來到達目的地單元之目的地交換器上的介面(例如,北、南、東、西等)。舉例來說,控制網路可以基於裝置中的時序電路進行電路交換。配置加載/卸載控制器可以針對每個128位元的配置資料塊(例如,位元流)產生標頭。在標頭匯流排上將標頭發送給可配置單元陣列中的每個可配置單元。
在一個範例中,在向量匯流排上傳輸具有128位元的資料塊,該向量匯流排將該塊作為向量輸入提供給可配置單元。向量匯流排可以包括128條負載線路,以及一組標頭線路。標頭可以包括用於每個塊的序列ID,其可以包括:
• 用以指示塊是高速暫存記憶體或是配置儲存資料的一位元。
• 形成塊號碼的位元。
• 指示行識別符的位元。
• 指示列識別符的位元。
• 指示元件識別符的位元。
對於加載操作,配置加載控制器可以按照從N-1至0的順序,將數量N的塊發送到可配置單元。例如,若N=6,則以塊5->塊4->塊3->塊2->塊1->塊0的最高有效位元優先順序來發送塊。(應注意,此最高有效位元優先順序導致塊5在陣列配置加載控制器的分發序列的第0輪中被發送)。對於卸載操作,配置卸載控制器可以將卸載資料亂序寫入記憶體。對於加載和卸載兩操作,在可配置單元中的配置資料(例如,位元流)儲存中的配置串聯鏈中的移位是從LSB(最低有效位元)到MSB(最高有效位元)、或者是MSB先出。
圖29B示出連接陣列級網路中之元件的示例性交換單元。如圖29B之範例中所示,交換單元可以有8個介面。交換單元的北、南、東、西介面係用於交換單元之間的連接。交換單元的東北、東南、西北、西南介面係分別用於建立與PCU或PMU實例的連接。每個磚片象限中的一組2個交換單元連接到位址產生與合併單元(AGCU),其包括多個位址產生(AG)單元及連接到多個位址產生單元的合併單元(CU)。合併單元(CU)在AG之間進行仲裁,並處理記憶體請求。交換單元之八個介面中的每個介面可以包括向量介面、純量介面、及控制介面,以與向量網路、純量網路、及控制網路進行通訊。
在配置之後執行機器的期間,可以經由一或多個單元交換器及該些單元交換器之間的一或多條鏈路將資料發送給可配置單元,其使用陣列級網路上的向量匯流排及該一或多個交換單元的向量介面。
在本文所述的實施例中,在配置磚片之前,可以使用相同的向量匯流排從配置加載控制器,經由一或多個單元交換器和該些單元交換器之間的一或多條鏈路,將配置檔或位元檔發送至可配置單元,其使用陣列級網路上的向量匯流排及該一或多個交換單元的向量介面。例如,可將單元檔案中特定於可配置單元PMU 2941的配置資料塊(例如,位元流)從配置加載/卸載控制器2901發送到PMU 2941,其係經由配置加載/卸載控制器2901與交換單元2911的西(W)向量介面之間的鏈路2920、交換單元2911及交換單元2911的東南(SE)向量介面與PMU 2941之間的鏈路2931。
在此範例中,將AGCU之其中一者配置成主AGCU,其包括配置加載/卸載控制器(例如,2901)。主AGCU實現了一暫存器,透過該暫存器,主機(2720,圖27)可以經由匯流排系統將命令發送到主AGCU。主AGCU控制對磚片中的可配置單元陣列的操作,並且實施一程式控制狀態機,以基於其從主機接收的命令透過寫入到暫存器來追蹤磚片的狀態。針對每一狀態轉換,主AGCU透過菊鏈命令匯流排(圖30)向磚片上的所有元件發出命令。該些命令包括程式重置命令及程式加載命令,該程式重置命令用以重置磚片中可配置單元陣列中的可配置單元,以及該程式加載命令用以將配置檔加載到可配置單元。
主AGCU中的配置加載控制器負責從記憶體讀取配置檔,並且將配置資料(例如,位元流)發送到磚片的每一可配置單元。主AGCU可以較佳地以頂級網路的最大吞吐量從記憶體讀取配置檔。主AGCU透過陣列級網路上的向量介面將讀取自記憶體的資料依據本文所述的分發順序發送到相對應的可配置單元。
在一個實施例中,以一種可以減少可配置單元內的佈線要求的方式,將元件中保存要在配置加載過程中加載、或者要在配置卸載過程中卸載的單元檔案的配置及狀態暫存器以串聯鏈連接,並且可以經由透過串聯鏈移位位元的過程進行加載。在一些實施例中,可能會有一條以上的並聯或串聯配置的串聯鏈。例如,當一可配置單元在一個匯流排週期中從主AGCU接收到128位元的配置資料(例如,位元流)時,該可配置單元以每週期1位元的速率通過其串聯鏈移位此資料,其中移位器週期可以以與匯流排週期相同的速率運行。可配置單元將耗費128個移位器週期,將128個配置位元載滿透過向量介面接收的128位元的資料。128位元的配置資料(例如,位元流)被稱為塊。可配置單元可能需要多個資料塊來加載其所有的配置位元。
可配置單元透過多個記憶體介面(2750,圖27)與記憶體介接。可以使用多個AGCU來存取每個記憶體介面。每個AGCU都包含一可重配置純量資料路徑以產生對外接記憶體的請求。每個AGCU都包含FIFO(用於組織資料的先進先出緩衝器),以緩衝來自外接記憶體的輸出命令、資料以及輸入響應。
圖30是示出示例性可配置單元3000,諸如型樣計算單元(PCU)的方塊圖,其配置有虛擬化邏輯2797。可配置單元可以與純量、向量及控制匯流排介接,在此範例中使用三組相應的輸入及輸出(IO):純量輸入/輸出、向量輸入/輸出及控制輸入/輸出。純量IO可被用來傳輸單一字組的資料(例如,32位元)。在諸如單元配置加載過程中接收配置資料(例如,位元流)以及在多個PCU之間的長管線進行配置之後的操作過程中傳送和接收資料的情況下,向量IO可被用來傳輸資料塊(例如,128位元)。控制IO可被用來在控制線上傳輸信號,諸如執行可配置單元的開始或結束。控制輸入可以由控制塊3090接收,而控制輸出由控制塊3090提供。
在此範例中,每個向量輸入使用向量FIFO塊3060中的向量FIFO來進行緩衝,該向量FIFO塊3060可以包括一或多個向量FIFO。同樣的,在此範例中,每個純量輸入使用純量FIFO 3070來進行緩衝。使用輸入FIFO可解耦資料生產者和消費者之間的時序,並且透過使其對輸入延遲失配更強健來簡化可配置單元間的控制邏輯。
可配置單元包括塊3080中的多個可重配置資料路徑。可配置單元中的資料路徑可被組織為多階段(階段1…階段N)、可重配置SIMD(單指令、多資料)管線。被推送到可配置單元中的配置串聯鏈的資料塊包括用於可配置單元中每個資料路徑的每個階段的配置資料(例如,位元流)。配置資料(例如,位元流)儲存3020中的配置串聯鏈經由線路3021連接到塊3080中的多個資料路徑。
組織為多階段管線的可配置資料路徑可以在個別階段包括多個功能單元(例如,3081、3082、3083、3084、3085、3086)。計算單元或部分計算單元可以在一多階段管線或多個多階段管線中的個別階段的多個功能單元中實現。包括虛擬化邏輯2797的電路可以在多個功能單元和多個記憶體單元中實現。功能單元中的輸入暫存器可以暫存來自純量FIFO 3070或向量FIFO 3060或來自多階段管線中的先前階段的輸入。在多階段管線中之一階段的功能單元可以執行例如邏輯移位、算術函數、比較、邏輯運算等的功能,並且產生輸出。
可配置單元陣列中的可配置單元包括配置資料(例如,位元流)儲存3020(例如,串聯鏈),用以儲存單元檔案,其包括特定於相應可配置單元的配置資料(例如,位元流)的複數塊(或其他大小的子檔案)。可配置單元陣列中的可配置單元各包括單元配置加載邏輯3040,其經由線路3022連接到配置資料(例如,位元流)儲存3020,用以執行單元配置加載過程。單元配置加載過程包括經由匯流排系統(例如,向量輸入)接收特定於可配置單元的單元檔案的塊,以及將接收到的塊加載到可配置單元的配置資料(例如,位元流)儲存3020。被加載到配置資料(例如,位元流)儲存3020的單元檔案可以包括配置資料(例如,位元流),其包括運算碼及路由配置,用於電路(例如,模組)在多個功能單元和多個記憶體單元中實現虛擬化邏輯2797,如本文所述。
在此範例中,在複數個可配置單元中之可配置單元中的配置資料(例如,位元流)儲存包括鎖存器的串聯鏈,其中鎖存器儲存控制可配置單元中的資源配置的位元。配置資料(例如,位元流)中的串聯鏈可以包括串聯連接的用於配置資料(例如,位元流)的移位暫存器鏈和用於狀態資訊及計數器值的第二移位暫存器鏈。
輸入配置資料(例如,位元流)3010可被提供給向量FIFO作為向量輸入,然後被傳送到配置資料(例如,位元流)儲存3020。可以使用向量輸出從配置資料(例如,位元流)儲存3020卸載輸出配置資料3030。
CGRA使用菊鏈式完成匯流排以指示加載/卸載命令何時被完成。主AGCU透過菊鏈式命令匯流排將程式加載和卸載命令傳送到可配置單元陣列中的可配置單元。如在圖30的範例中所示,控制塊3090、菊鏈式完成匯流排3091和菊鏈式命令匯流排3092被連接到菊鏈邏輯3093,其與單元配置加載邏輯3040通訊。菊鏈邏輯3093可以包括加載完成狀態邏輯,如下所述。下面進一步說明菊鏈式完成匯流排。顯然命令和完成匯流排的其他拓樸也是可能的,但未於此處說明。
圖31是示出示例性可配置單元3100,諸如型樣記憶體單元(PMU)的方塊圖,其配置有虛擬化邏輯2797(即,讀取就緒(ready-to-read)信用計數器、寫信用計數器和用於操作它們的流控制邏輯)。PMU可以包含高速暫存記憶體3130,其與旨在用於高速暫存記憶體3130的位址計算(RA,WA)和控制(WE,RE)的可重配置純量資料路徑3120耦合,以及PCU中所使用的匯流排介面。
匯流排介面可以包括純量輸入、向量輸入、純量輸出及向量輸出,可用於提供寫入資料WD。可將資料路徑組織為多階段可重配置管線,包括功能單元FU的階段以及暫存功能單元之輸入和輸出的相關聯管線暫存器PR。PMU可被用來儲存分散在整個可重配置單元陣列的晶載記憶體。
高速暫存記憶體內置有多個SRAM庫(例如,3131、3132、3133、3134)。用於高速暫存記憶體內之SRAM庫的分庫(banking)及緩衝邏輯3135可被配置成以數種分庫模式操作,以支援各種存取型樣。如本文描述的計算單元可以包括儲存在高速暫存記憶體3130中、來自配置檔或來自其他來源的查找表。在如本文描述的計算單元中,純量資料路徑3120可以將用於尋址實現函數f(I)的查找表的原始輸入值I的一部分轉換成SRAM高速暫存記憶體3130所使用的尋址格式,添加適當的偏移等,以使用該輸入值I的該部分來讀取儲存在高速暫存記憶體3130中的查找表的條目。每個PMU可以包括寫入位址計算邏輯和讀取位址計算邏輯,其將寫入位址WA、寫入致能WE、讀取位址RA及讀取致能RE提供給分庫緩衝邏輯3135。基於本地FIFO 3111和3112的狀態以及外部控制輸入,控制塊3115可被配置成透過致能適當的計數器3116來觸發寫入位址計算、讀取位址計算或二者。可編程計數器鏈3116(控制輸入、控制輸出)及控制塊3115可以觸發PMU執行。
這是用於實現如本文所述之計算單元的可配置處理器的配置的一個簡化範例。可以以其他方式配置可配置處理器以實現計算單元。其他類型的可配置處理器可以以其他方式實現計算單元。此外,在一些範例中可以使用專用邏輯、或專用邏輯和指令控制處理器的組合來實現計算單元。
其他實現
在公開技術的各種實現中,當兩個或更多個可重配置處理器協同執行應用程式時,該兩個或更多個可重配置處理器獨立且分別地配置(例如,透過運行時處理器)有相同的配置檔集合。在一種實現中,當配置有給定配置檔集合的第一可重配置處理器開始執行該給定配置檔集合中的配置檔及/或其功能及/或其資料,並且需要同時也配置有給定配置檔集合的第二可重配置處理器執行該給定配置檔集合中的某些配置檔及/或其功能及/或其資料時,則第二可重配置處理器等待來自第一可重配置處理器的信號。信號的範例包括控制信號,其指示靜止(quiesce)條件之後的斷點/檢查點,諸如美國非臨時專利申請案號16/504,627,於2019年7月8日申請,名稱為“QUIESCE RECONFIGURABLE DATA PROCESSOR”,(代理人案號為SBNV 1008-1)中描述的一種。
接著,在從第一可重配置處理器接收到信號和相應的應用程式資料和張量狀態之後,第二可重配置處理器使用它自己的被獨立且分別地配置有的給定配置檔集合的副本,開始執行某些配置檔及/或其功能及/或其資料。在一些實現中,在第一可重配置處理器處產生檢查點,將檢查點傳輸到第二可重配置處理器,第二可重配置處理器加載檢查點並開始執行某些配置檔及/或其功能及/或其資料。
加速深度學習的第一範例是使用使用深度學習加速器來訓練類神經網路。加速深度學習的第二範例是使用深度學習加速器來操作經訓練的類神經網路以執行推論。加速深度學習的第三範例是使用深度學習加速器來訓練類神經網路,隨後使用任何一或多個經訓練的類神經網路、來自其之資訊及其之變體執行推論。
類神經網路的範例包括全連接類神經網路(FCNN)、遞迴類神經網路(RNN)、卷積類神經網路(CNN)、長短期記憶體(LSTM)網路、自動編碼器、深度信念網路及生成對抗網路(GAN)。
訓練類神經網路的範例是確定與類神經網路相關聯的一或多個權重,諸如透過經由深度學習加速器的硬體加速。進行推論的範例是使用經訓練的類神經網路,透過基於與經訓練的類神經網路相關聯的權重處理輸入資料來計算結果。如本文中所使用的,術語‘權重’是例如在各種形式的類神經網路處理中使用的‘參數’的範例。例如,一些類神經網路學習旨在確定參數,其然後可用於使用這些參數來執行類神經網路推論。
類神經網路根據包括神經元層的資料流圖來處理資料。刺激(例如,輸入資料)是由神經元的輸入層接收,並且資料流圖的計算結果(例如,輸出資料)是由神經元的輸出層提供。神經元的示例性層包括輸入層、輸出層、線性整流函數層、全連接層、遞迴層、長短期記憶體層、卷積層、核心層、丟棄層(dropout layer)及池化層。類神經網路是有條件地及/或選擇性地被訓練,受硬體加速的影響。在訓練後,類神經網路是有條件地及/或選擇性被用於推論,受硬體加速的影響。
深度學習加速器的範例是一或多個相對專用的硬體元件,其與一或多個軟體元件結合操作,以比使用相對不那麼專用的硬體元件相對更有效地訓練神經網路及/或使用神經網路執行推論。相對專用的硬體元件的一些實現包括一或多個硬體邏輯電路元件,諸如電晶體、電阻器、電感器、電容器、導線互連、組合邏輯(例如,NAND、NOR)閘、鎖存器、暫存器檔、記憶體陣列、記憶體陣列的標籤、內容可定址記憶體、快閃記憶體、ROM、DRAM、SRAM、序列器/解除序列器(SerDes)、I/O驅動器等,諸如透過定製邏輯、合成邏輯、ASIC及/或FPGA來實現。一些相對不那麼專用的硬體元件包括傳統的CPU和傳統的GPU。
儲存的範例是能夠保留狀態資訊的一或多個元件,例如,以下任一或多者:正反器、鎖存器或鎖存器陣列、暫存器或暫存器陣列、暫存器檔、記憶體、記憶體陣列、磁性儲存裝置、光學儲存裝置、SRAM、DRAM、快閃記憶體和ROM。在各種實施例中,儲存是揮發性的(例如,SRAM或DRAM)及/或非揮發性的的(例如,快閃記憶體或ROM)。
積體電路(IC)的範例是在半導體材料的一或多個部分,諸如單晶粒或複數個晶粒,上實現的電路集合。晶粒之3D堆疊的範例是提供晶粒之間,例如在與晶粒之主要表面正交的維度上,的機械連接及/或電連接以形成一單元。機械連接及/或電連接以各種方式實現,例如,透過一或多個焊球、微凸塊及矽通孔。晶粒之2.5D堆疊的範例是透過公用元件(例如,矽中介層)提供晶粒之間的機械連接及/或電連接以形成一單元,其中每個晶粒和公用基板之間的機械連接及/或電連接是在與晶粒之主要表面正交的維度上。機械連接及/或電連接以各種方式實現,例如,透過一或多個焊球、微凸塊及矽通孔。特殊應用積體電路(ASIC)的一範例是為特定用途設計的IC。
封裝的範例是能夠機械地保持及/或包含一或多個電子電路及/或電互連一或多個電子電路的元件。示例性電子電路是半導體材料的一或多個部分、一或多個晶粒、一或多個中介層及一或多個基板中的任意一或多個。封裝的特定範例包括BGA封裝及其變體。一些IC包括封裝。基底的範例是機械地保持及/或電互連一或多個晶粒及/或一或多個封裝的元件。基底的特定範例是PCB,用以例如保持和互連封裝。基底的另一特定範例是矽中介層,用以例如耦接一或多個3D堆疊的或2.5D堆疊的晶粒。基底的另一特定範例是例如保持複數個晶粒的封裝。
SmartNIC是網路介面卡或網路適配器,其直接對資料封包進行操作,獨立於主機核心資源並運行作業系統網路堆疊,從而減少對主機處理資源的爭用,減少網路延遲,並增加網路資料封包吞吐量。SmartNIC透過從系統主機CPU卸載網路堆疊處理任務來實現這一點,充當某種協同處理器。
在當前上下文中,SmartNIC是裝備有完全可編程硬體實現的NIC,支持為網路處理任務配置的作業系統。硬體實現可包括單晶片系統(SoC)、FPGA、ASIC、CGRA或其他可編程處理器電路,諸如ARM系列。SmartNIC可以支持專用硬體功能集合加速特定類別的功能(例如,Open vSwitch資料平面)或執行通用封包和流過濾、封包檢驗、流表處理、加密、RDMA、VXLAN覆蓋及NVMe-oF功能。
SmartNIC包括主機核心旁路邏輯,用於向/從節點和其他主機發送和接收封包。SmartNIC可以透過提供一組包含用於輸入和輸出的共用記憶體的物理位址來實現這一點。在一態樣中,可重編程處理器可以使用如前所述的頭和尾指標的組合直接存取SmartNIC FIFO緩衝器集合以推送和拉取資料,從而繞過主機核心並且減少至少一跳。主機還可以透過寫入物理位址直接與SmartNIC介接而無需驅動器控制網路流,進一步提高理論吞吐量。
在一態樣中,SmartNIC可以提供配置介面以指定複數個I/O共享記憶體緩衝器的物理位址,該複數個I/O共享記憶體緩衝器包括FIFO佇列和映射表用於包含封包緩衝的記憶體區域。在另外的態樣中,SmartNIC可以耦接節點、可重編程處理器(RP)和主機,以從共享記憶體緩衝器擷取封包緩衝並透過網路將封包緩衝從主機、節點或RP DRAM發送至SmartNIC共享記憶體緩衝器。
網路組構是複數個節點和主機的介面。SmartNIC提供主機和網路之間或者節點和網路之間的連接。一節點包括複數個可重編程處理器(RP),並且在與SmartNIC介接時繞過主機。SmartNIC可以透過網路連接到第一物理/鏈路連接,將SmartNIC與主機、節點或RP耦接。SmartNIC連接到第二物理/鏈路連接,將SmartNIC耦接到網路。連接到網路組構介面的物理/鏈路連接各者可以是任何類型,例如,乙太網路、光纖通道、InfiniBand、PCIe等等。物理/鏈路連接也可以是無線媒體。SmartNIC包括媒體存取控制器(MAC),用以與物理/鏈路連接介接以將資料封包路由到RP和主機。
示例性SmartNIC可以使用FPGA來實現用以執行網際網路路由的通訊協定,例如傳送控制協定(“TCP”),並且可以包括PCIe高速網路介面、共享物理記憶體和FPGA。FPGA可以將SmartNIC控制器實現為主機、節點、RP和位在“物理層”的網路之間的橋接器,以直接整合到資料路徑中。SmartNIC可以進一步實現開放系統互連(“OSI”)模型,該模型是一概念模型,其透過將通訊系統劃分為抽象層來表徵和標準化通訊系統的內部功能。物理抽象層定義了裝置和傳輸媒體(諸如銅纜或光纖電纜)之間的電氣和物理規範。這包括針腳佈局、電壓、線路阻抗、電纜規格、信號時序、集線器、轉發器、網路適配器、主機匯流排適配器等。物理層執行的主要功能和服務包括:(1)建立和終止與通訊媒體的連接;(2)爭用解決;(3)流控制;及(4)調變以將使用者設備上的數位資料轉換成在通訊通道上傳輸的相應信號。這些是透過物理電纜(諸如銅或光纖)或者透過無線電鏈路運行的信號。
例如,網路流可以是傳送控制協定/網際網路協定(TCP/IP)流。SmartNIC可以透過包含媒體/物理鏈路的網路/光纖與節點或主機交換網路封包,並且可以透過至主機NIC的面向主機的媒體/物理鏈路與它們各自的節點或主機交換網路封包。應用程式用來交換資料的網路流可以通過SmartNIC,如下所述。基於主機的應用程式可以具有應用程式層資料,以傳送例如遠端呼叫調用。主機遠端呼叫調用可以包括用於通過作業系統應用程式設計介面(API)的命令或資料(例如,串流或插座)作為對SmartNIC上的物理位址的寫入,命令或資料在該物理位址進入網路堆疊。API將命令或資料寫入共用記憶體FIFO的物理位址並放置在一或多個傳輸封包(例如,TCP/IP封包)內。接著,將傳輸封包封裝成網路封包(例如,以主機的網際網路協定(IP)位址為發送者的TCP/IP封包),然後加載到一或多個物理層幀(例如,乙太網路幀)的負載中。然後該些幀通過網路組構的第一個物理/鏈路連接。在第二SmartNIC上,上述過程相反,其中網路封包需要解封裝,資料最終抵達主機、節點或RP的物理位址。
透過對個別計算和記憶體元件進行編程,應用程式以分散形式在可重配置處理器上執行,並且可非同步地接收、處理和發送資料並控制資訊。在可重配置處理器中,計算可以作為深度、巢狀資料流管線執行,其非常有效地利用巢狀平行性和資料局部性。這些資料流管線包含數個計算階段,其中每個階段以不規則記憶體存取型樣從一或多個輸入緩衝器讀取資料、對資料執行計算同時使用一或多個內部緩衝器來儲存和提取中間結果並且產生要寫到一或多個輸出緩衝器的輸出。這些管線的結構取決於表示應用程式的控制和資料流圖。管線可以任意地嵌套並且在彼此之內循環。
應用程式/圖/應用程式圖/使用者應用程式/資料流圖/控制流圖/資料和控制流圖/模型/深度學習應用程式/深度類神經網路/程式/程式圖像/工作/任務包含高階程式。高階程式是例如使用PyTorch、TensorFlow、ONNX、Caffe和Keras等的深度學習框架,以C、C++、Java、JavaScript、Python和Spatial等的程式語言編寫的原始碼。高階程式可以實現AlexNet、VGGNet、GoogLeNet、ResNet、ResNeXt、RCNN、YOLO、SqueezeNet、SegNet、GAN、BERT、ELMo、USE、Transformer和Transformer-XL等機器學習模型的計算機結構和演算法。在一個範例中,高階程式可以實現具有多個處理層的卷積神經網路,使得每個處理層可以包括一或多個巢狀迴圈。高階程式可以執行不規則的記憶體操作,其涉及存取輸入和權重,並執行輸入和權重之間的矩陣乘法。高階程式可以包括具有高迭代計數的巢狀環圈和迴圈體,其加載來自前一處理層的輸入值,並將其與後一處理層的權重相乘,以產生輸出給後一處理層。高階程式可以具有最外層迴圈體的迴圈級平行性,其可以使用粗粒度管線操作進行利用。高階程式可以具有最內層迴圈體的指令級平行性,其可以使用迴圈展開、SIMD向量化和管線操作來進行利用。
關於應用程式之高階程式中的迴圈,直接嵌套在迴圈體中的迴圈被稱為外父迴圈的子迴圈。若一迴圈沒有任何子迴圈,即,其體內沒有任何巢狀迴圈,則稱為最內層迴圈。若一迴圈沒有任何父迴圈,即,其並未嵌套在另一迴圈的體內,則其為最外層迴圈。不完美巢狀迴圈的主體包含非迴圈的語句(例如,基元算術、邏輯和關係運算)及一或多個子迴圈的混合體。不完美巢狀迴圈中的平行性可以在任何或所有迴圈級別中、以及在包含迴圈體的運算中使用。平行性可以以多種形式出現,諸如細粒度和粗粒度管線平行、資料平行和任務平行。
在一些實現中,軟體開發套件(SDK)(或資料流圖產生器)產生應用程式之高階程式的資料流圖。SDK將高階程式的輸入行為描述轉換為中間表示,諸如資料流圖。這可以包括程式碼最佳化步驟,如錯誤資料相依刪除、死碼刪除和常數折疊。資料流圖對高階程式的資料和控制相依性進行編碼。
資料流圖包含節點和邊。節點可以表示計算操作和記憶體分配。邊可以表示資料流和控制流。在一些實現中,高階程式中的每個迴圈都可以表示為資料流圖中的控制器。資料流圖支持分支、迴圈、函數呼叫和控制相依性的其他變體。在一些實現中,在產生了資料流圖之後,可以執行專注於迴圈轉換的額外分析或最佳化,諸如迴圈展開、迴圈管線化、迴圈分裂/融合及迴圈分塊(loop tiling)。
SDK還支持在多級別,例如,從高階深度學習框架到C++和組合語言,對可重配置資料流資源池中的可重配置處理器進行編程。在一些實現中,SDK允許程式設計師開發直接在可重配置處理器上運行的程式碼。在其他實現中,SDK提供包含預定義函數的程式庫,如在可重配置處理器上創建、執行和分析資料流圖所需的線性代數運算、逐元素張量運算、非線性及縮減。SDK通過應用程式介面(API)與深度學習框架進行通訊。
資料流圖中的節點表示操作單元,可配置為生產者以產生用於執行應用程式的張量,以及配置為消費者以消耗用於執行應用程式的張量。生產者和消費者沿著資料連接非同步地傳輸資料。張量包括一或多個向量。
「編譯器」將資料流圖轉換為特定於硬體的配置,並且在由編譯器114產生的執行檔中指定。在一種實現中,編譯器將資料流圖劃分為記憶體分配和執行片段,其中在執行檔中指定這些劃分。執行片段表示對資料進行運算。執行片段可以包括程式中表示工作量的部分。執行片段可以包括由一組迴圈、一組圖形節點或需要同步的一些其他工作單元所包含的計算。根據程式的需要,執行片段可以包括固定的或可變的工作量。執行片段中的不同片段可以包括不同的計算量。執行片段可以表示平行模式或部分的平行模式,並且可以非同步地執行。
在一些實現中,將資料流圖劃分為執行片段包括將資料流圖之巢狀迴圈的至少一個最內層迴圈內的計算視為單獨的執行片段。在其他實現中,將資料流圖劃分為執行片段包括將圍繞資料流圖之最內層迴圈的外迴圈的計算視為單獨的執行片段。在不完美巢狀迴圈的情況下,迴圈體內直到該迴圈體內巢狀迴圈之起始為止的運算都被組合在一起作為單獨的執行片段。
記憶體分配表示在晶片上(on-chip)及/或晶片外(off-chip)記憶體中為實現資料流圖所需的資料創建邏輯記憶體空間,並且在執行檔中指定這些記憶體分配。記憶體分配定義了硬體資源(功能單元、儲存器或連接元件)的類型和數量。主記憶體(例如,DRAM)是可以進行記憶體分配的晶片外記憶體。高速暫存記憶體(scratchpad memory)(例如,SRAM)是可以進行記憶體分配的晶片上記憶體。可以針對各種存取型樣和佈局進行記憶體分配的其他記憶體類型包括唯讀查找表(LUT)、固定大小的佇列(例如,FIFO)及暫存器檔案。
編譯器將記憶體分配綁定到虛擬記憶體單元以及將執行片段綁定到虛擬計算單元,並且在執行檔中指定這些綁定。在一些實現中,編譯器將執行片段劃分成記憶體片段和計算片段,並且在執行檔中指定這些劃分。記憶體片段包括引導至記憶體存取的位址計算。計算片段包括父執行片段中的所有其他運算。在一種實現中,每個執行片段被分解成複數個記憶體片段和恰好一個計算片段。在一種實現中,編譯器使用反向資料流分析來執行劃分,使得在記憶體存取中使用的位址的輸入遞迴地標記,直到編譯器達到常數值或(界限)迴圈/型樣迭代器之任一者。單一執行片段可以產生一或多個記憶體片段,這取決於有多少記憶體存取存在於原始迴圈體中。在多個記憶體存取共享同一記憶體定址邏輯的情況下,位址計算可能會被重複以從同一執行片段創建多個記憶體片段。
執行片段的記憶體片段被配置成編索引到資料結構。至少一個記憶體片段編索引到記憶體分配之一的邏輯記憶體空間中的資料結構。每個計算和記憶體片段都保留有關其迴圈體直接包含相應執行片段中的運算的所有迴圈的資訊。在一種實現中,這對應於將每個迴圈的迴圈迭代器的計算複製到每個計算和記憶體片段。這種複製允許每個片段保留與原始程式相同的迭代行為,同時還允許迴圈迭代器的分散式計算。
編譯器將使用諸如Keras和PyTorch等常用開源套裝軟體開發的應用程式轉譯為可重配置處理器規格。編譯器產生配置檔,其具有用於放置位置和路由資料及控制網路的配置資料(例如,位元流)。在一種實現中,這包括透過將單元放置及路由到處理器陣列上來分配實體記憶體和計算單元的坐標和通訊資源,同時最大化頻寬和最小化延遲。
條項
描述了使用緩衝器在同一處理節點和不同處理節點上的處理器之間有效地串流傳輸資料的技術,該技術尤其適用於諸如中央處理單元(CPU)、圖形處理單元(GPU)、現場可編程閘陣列(FPGA)、粗粒度可重配置架構(CGRA)、特殊應用積體電路(ASIC)、特殊應用指令集處理器(ASIP)及數位信號處理器(DSP)等的處理器。所公開的技術允許連接到不同主機的加速器(例如,可重配置處理器)透過緩衝器直接相互通訊來實現高效率的分散式計算。
所公開的技術可以作為系統、方法或製品來實踐。實現的一或多個特徵可以與基本實現結合。不互斥的實現被教導為可組合的。實現的一或多個特徵可以與其他實現結合。本公開會定期地提醒使用者這些選項。省略重複這些選項的一些實現不應被視為限制在前面章節中教導的組合–這些在此透過引用併入以下每個實現中。
所公開的技術或其元素的一或多個實現和條項可以以電腦產品的形式來實現,包括具有用於執行所指示之方法步驟的電腦可使用程式碼的非暫時性電腦可讀取儲存媒體。此外,所公開的技術或其元素的一或多個實現和條項可以以包括記憶體和至少一個處理器的裝置的形式來實現,該至少一個處理器耦接到該記憶體並且可操作以執行示例性方法步驟。此外,在另一方面,所公開的技術或其元素的一或多個實現和條項可以以用於執行本文所述之一或多個方法步驟的手段的形式來實現;該手段可以包括(i)硬體模組、(ii)在一或多個硬處理器上執行的軟體模組或(iii)硬體與軟體模組的組合;(i)-(iii)中的任一個實現本文所述的特定技術,並且軟體模組被儲存在電腦可讀取儲存媒體(或多個這樣的媒體)中。
可將本節中描述的條項組合為特徵。為了簡潔起見,特徵的組合不會單獨列舉,也不會與基本特徵集重複。讀者將理解本節中描述的條項中標識的特徵如何能夠容易地與本申請之其他章節中標識為實現的基本特徵集結合。這些條項並不意味著互斥、窮舉或限制;並且所公開的技術不限於這些條項,而是包括在申請專利保護之技術及其等效物的範圍內的所有可能的組合、修改和變化。
本節中描述的條項的其他實現可以包括儲存指令的非暫時性電腦可讀取儲存媒體,該些指令可由處理器執行以執行本節中描述的任何條項。本節中描述的條項的又一實現可以包括系統,其包括記憶體和一或多個處理器,該一或多個處理器可操作以執行儲存在記憶體中的指令以執行本節中描述的任何條項。
吾人揭露以下條項:
條項集1
1.一種資料處理系統,包括:
複數個可重配置處理器,該複數個可重配置處理器中的可重配置處理器具有可重配置處理器記憶體;
複數個主機處理器,該複數個主機處理器中的一主機處理器可操作地耦接到該些可重配置處理器並且具有主機記憶體;
複數個緩衝器,該複數個緩衝器中的緩衝器包括被配置成從該些可重配置處理器接收資料及向該主機處理器提供該資料的可重配置處理器至主機處理器緩衝器,和被配置成從該主機處理器接收資料並向該些可重配置處理器提供該資料的主機處理器至可重配置處理器緩衝器;
運行時邏輯,運行在該主機處理器上,被配置成加載和執行用於該可重配置處理器上的應用程式的一或多個配置檔;
該些可重配置處理器被配置成處理該些應用程式的該些配置檔和資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生輸出,以及使用該些可重配置處理器至主機處理器緩衝器中的至少一個緩衝器將該些輸出發送到該主機處理器;以及
除錯邏輯,運行在該主機處理器上,被配置成檢測錯誤。
2.如條項1的資料處理系統,其中該除錯邏輯還被配置成基於該些輸出與預期輸出的比較,向該主機處理器上的除錯控制台報告該些錯誤。
3.如條項1-2中任一項的資料處理系統,其中該除錯邏輯還被配置成基於該比較,向該主機處理器上的除錯輸出檔報告該些錯誤。
4.如條項1-3中任一項的資料處理系統,其中該些可重配置處理器和該主機處理器可存取該些緩衝器。
5.如條項1-4中任一項的資料處理系統,其中該些緩衝器位於該可重配置處理器記憶體中,並且該主機處理器可存取該可重配置處理器記憶體。
6.如條項1-5中任一項的資料處理系統,其中該些緩衝器位於該主機記憶體中,並且該些可重配置處理器和該主機處理器可存取該主機記憶體。
7.如條項1-6中任一項的資料處理系統,其中該些緩衝器位於該些可重配置處理器和該主機處理器可存取的網路介面控制器(NIC)中。
8.如條項1-7中任一項的資料處理系統,其中該些緩衝器是先進先出(FIFO)緩衝器。
9.如條項1-8中任一項的資料處理系統,其中該些可重配置處理器使用一或多個遠端程序呼叫通知該主機處理器錯誤報告。
10.如條項1-9中任一項的資料處理系統,其中該些可重配置處理器使用該些可重配置處理器至主機處理器緩衝器中的至少一個緩衝器,將一或多個參數值發送到該主機處理器用於執行該些遠端程序呼叫。
11.如條項1-10中任一項的資料處理系統,其中該運行時邏輯還被配置成執行用於該些可重配置處理器上的測試應用程式的一或多個測試配置檔,其中該些可重配置處理器還被配置成處理用於該些測試應用程式的該些測試配置檔資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))並產生測試輸出,以及使用該些可重配置處理器至主機處理器緩衝器中的至少一個緩衝器將該些測試輸出發送到該主機處理器,以及其中在該主機處理器上運行的測試邏輯被配置成基於該些測試輸出確定測試統計,並且將該些測試統計報告給該主機處理器上的測試輸出檔。
12.一種資料處理系統,包括:
複數個可重配置處理器,該複數個可重配置處理器中的可重配置處理器具有可重配置處理器記憶體;
複數個主機處理器,該複數個主機處理器中的一主機處理器可操作地耦接到該些可重配置處理器並且具有主機記憶體;
複數個緩衝器,該複數個緩衝器中的緩衝器包括被配置成從該些可重配置處理器接收資料及向該主機處理器提供該資料的可重配置處理器至主機處理器緩衝器,和被配置成從該主機處理器接收資料並向該些可重配置處理器提供該資料的主機處理器至可重配置處理器緩衝器;
運行時邏輯,被配置成加載用於該些可重配置處理器上的應用程式的一或多個配置檔以供執行,該些配置檔包括複數個函數;以及
該運行時邏輯被配置成在該些可重配置處理器上執行該複數個函數中的第一組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),以及在該主機處理器上執行該複數個函數中的第二組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),
其中使用該些可重配置處理器至主機處理器緩衝器中的一或多個緩衝器將該第二組函數中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到該主機處理器,以及
其中使用該些主機處理器至可重配置處理器緩衝器中的一或多個緩衝器將在該主機處理器上執行該些函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果傳輸到該些可重配置處理器。
13.如條項1-12中任一項的資料處理系統,其中使用該些可重配置處理器至主機處理器緩衝器中的該一或多個緩衝器,將執行該些函數的資料傳輸到該主機處理器。
14.如條項1-13中任一項的資料處理系統,還包括使用該些可重配置處理器至主機處理器緩衝器中的各個緩衝器來將該第二組函數中的各個函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到該主機處理器。
15.如條項1-14中任一項的資料處理系統,還包括使用該些主機處理器至可重配置處理器緩衝器中的各個緩衝器來傳輸執行該各個函數的結果。
16.如條項1-15中任一項的資料處理系統,其中該些可重配置處理器和該主機處理器可存取該些緩衝器。
17.如條項1-16中任一項的資料處理系統,其中該些緩衝器位於該可重配置處理器記憶體中,並且該主機處理器可存取該可重配置處理器記憶體。
18.如條項1-17中任一項的資料處理系統,其中該些緩衝器位於該主機記憶體中,並且該些可重配置處理器和該主機處理器可存取該主機記憶體。
19.如條項1-18中任一項的資料處理系統,其中該些緩衝器位於該些可重配置處理器和該主機處理器可存取的網路介面控制器(NIC)中。
20.如條項1-19中任一項的資料處理系統,其中該些緩衝器是先進先出(FIFO)緩衝器。
21.一種資料處理系統,包括:
複數個可重配置處理器,包括第一可重配置處理器和附加的可重配置處理器;
複數個緩衝器,該複數個緩衝器中的緩衝器包括被配置成從該第一可重配置處理器接收資料並將該資料提供給該些附加的可重配置處理器的第一可重配置處理器至附加的可重配置處理器緩衝器,和被配置成從該些附加的可重配置處理器接收資料並將該資料提供給該第一可重配置處理器的附加的可重配置處理器至第一可重配置處理器緩衝器;
運行時邏輯,被配置成加載用於該第一可重配置處理器上的應用程式的一或多個配置檔以供執行,該些配置檔包括複數個函數;以及
該運行時邏輯被配置成在該第一可重配置處理器上執行該複數個函數中的第一組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),以及在該些附加的可重配置處理器上執行該複數個函數中的第二組函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),
其中使用該些第一可重配置處理器至附加的可重配置處理器緩衝器中的一或多個緩衝器,將該第二組函數中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到該些附加的可重配置處理器,以及
其中使用該些附加的可重配置處理器至第一可重配置處理器緩衝器中的一或多個緩衝器,將在該些附加的可重配置處理器上執行該些函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果傳輸到該第一可重配置處理器。
22.如條項1-21中任一項的資料處理系統,其中該第一可重配置處理器和該些附加的可重配置處理器可操作地耦接到同一處理節點。
23.如條項1-22中任一項的資料處理系統,其中該第一可重配置處理器和該些附加的可重配置處理器可操作地耦接到不同處理節點。
24.一種資料處理系統,包括:
可重配置處理器,被配置成使用一系列資料單元執行一或多個配置檔;
第一複數個緩衝器,被配置成從源記憶體接收該系列資料單元中的資料單元,並將該些資料單元串流傳輸到該可重配置處理器進行處理;
第二複數個緩衝器,被配置成從該可重配置處理器串流傳輸處理該些資料單元的結果,並將該些結果發送到目的地記憶體進行儲存;以及
運行時邏輯,被配置成使該第一複數個緩衝器中的緩衝器從該源記憶體接收該系列資料單元中的下一個資料單元,同時該可重配置處理器處理該系列資料單元中的當前資料單元,以及在該第二複數個緩衝器中的緩衝器串流傳輸來自該可重配置處理器之處理當前資料單元的結果之後,將該下一個資料單元串流傳輸到該可重配置處理器進行處理。
25.如條項1-24中任一項的資料處理系統,其中該運行時邏輯還被配置成使該可重配置處理器處理一或多個先前的資料單元,同時該可重配置處理器正處理該當前資料單元。
26.如條項1-25中任一項的資料處理系統,其中該運行時邏輯還被配置成使該第一複數個緩衝器中的該些緩衝器在該可重配置處理器開始處理該當前資料單元之前,從該源記憶體接收該下一個資料單元。
27.如條項1-26中任一項的資料處理系統,其中該運行時邏輯還被配置成使該第一複數個緩衝器中的該些緩衝器該第二複數個緩衝器中的該些緩衝器串流傳輸來自該可重配置處理器之處理該當前資料單元的該些結果之後,從該源記憶體接收該下一個資料單元。
28.一種資料處理系統,包括:
複數個可重配置處理器,該複數個可重配置處理器中的可重配置處理器具有可重配置處理器記憶體;
複數個主機處理器,該複數個主機處理器中的一主機處理器可操作地耦接到該些可重配置處理器並且具有主機記憶體;
共享記憶體中複數個緩衝器,可由該些可重配置處理器和該主機處理器存取;以及
運行時邏輯,被配置成使用該些可重配置處理器和該主機處理器,執行用於應用程式的一或多個配置檔,其定義該些應用程式和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),以及
其中該些配置檔的執行和該應用程式資料的處理包括從該些可重配置處理器中的至少一個處理器接收該些配置檔中的配置資料和該應用程式資料,並將該配置資料和該應用程式資料提供給該主機處理器,以及從該主機處理器接收該配置資料和該應用程式資料並將該配置資料和該應用程式資料提供給該些可重配置處理器中的該至少一個處理器。
29.一種資料處理系統,包括:
複數個可重配置處理器,包括第一可重配置處理器和附加的可重配置處理器;
共享記憶體中複數個緩衝器,可由該第一可重配置處理器和該些附加的可重配置處理器存取;以及
運行時邏輯,被配置成使用該第一可重配置處理器和該些附加的可重配置處理器,執行用於應用程式的一或多個配置檔,其定義該些應用程式和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),以及
其中該些配置檔的執行和該應用程式資料的處理包括從該第一可重配置處理器接收該些配置檔中的配置資料和該應用程式資料並將該配置資料和該應用程式資料提供給該些附加的可重配置處理器中的至少一個處理器,以及從該些附加的可重配置處理器中的該至少一個處理器接收該配置資料和該應用程式資料並將該配置資料和該應用程式資料提供給該第一可重配置處理器。
條項集2
1.一種資料處理系統,包括:
可重配置資料流資源池,包括複數個處理節點,該複數個處理節點中的個別處理節點可操作地耦接到個別複數個可重配置處理器和個別複數個緩衝器;以及
運行時處理器,可操作地耦接到該可重配置資料流資源池,並被配置成:
接收用於應用程式的複數個配置檔,該複數個配置檔中的配置檔指定執行該些配置檔所需的虛擬資料流資源的配置,以及該虛擬資料流資源包括第一虛擬處理節點中的第一虛擬可重配置處理器,第二虛擬處理節點中的第二虛擬可重配置處理器,以及在該第一虛擬可重配置處理器和該第二虛擬可重配置處理器之間串流傳輸資料的虛擬緩衝器;
將該可重配置資料流資源池中的可重配置資料流資源分配給該些虛擬資料流資源,該些被分配的可重配置資料流資源包括
被分配給該第一虛擬處理節點的該些個別處理節點中的第一處理節點,
被分配給該第二虛擬處理節點的該些個別處理節點中的第二處理節點,
第一可重配置處理器,可操作地耦接到該第一處理節點,被分配給該第一虛擬可重配置處理器,
第二可重配置處理器,可操作地耦接到該第二處理節點,被分配給該第二虛擬可重配置處理器,以及
第一複數個緩衝器,可操作地耦接到該第一處理節點,以及第二複數個緩衝器,可操作地耦接到該第二處理節點,被分配給該些虛擬緩衝器;以及
使用該些被分配的可重配置資料流資源針對該些應用程式執行該些配置檔和處理資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))。
2.如條項集1之條項1-29中任一項及/或條項集2之條項1的資料處理系統,其中該第一複數個緩衝器包括第一組發送器緩衝器,其被配置成從該第一可重配置處理器接收資料並將該資料提供給該第二複數個緩衝器中的第二組接收器緩衝器,該第二組接收器緩衝器被配置成將該資料提供給該第二可重配置處理器。
3.如條項集1之條項1-29中任一項及/或條項集2之條項1-2中任一項的資料處理系統,其中該第二複數個緩衝器包括第二組發送器緩衝器,其被配置成從該第二可重配置處理器接收資料並將該資料提供給該第一複數個緩衝器中的第一組接收器緩衝器,該第一組接收器緩衝器被配置成將該資料提供給該第一可重配置處理器。
4.如條項集1之條項1-29中任一項及/或條項集2之條項1-3中任一項的資料處理系統,其中該些個別處理節點可操作地耦接到個別主機處理器。
5.如條項集1之條項1-29中任一項及/或條項集2之條項1-4中任一項的資料處理系統,其中該第一複數個緩衝器在可操作地耦接到該第一處理節點的第一主機處理器的記憶體中操作,以及該第二複數個緩衝器在可操作地耦接到該第二處理節點的第二主機處理器的記憶體中操作。
6.如條項集1之條項1-29中任一項及/或條項集2之條項1-5中任一項的資料處理系統,其中該些個別處理節點可操作地耦接到個別複數個智慧型網路介面控制器(SmartNIC)。
7.如條項集1之條項1-29中任一項及/或條項集2之條項1-6中任一項的資料處理系統,其中該第一複數個緩衝器在可操作地耦接到該第一處理節點的第一SmartNIC的記憶體中操作。
8.如條項集1之條項1-29中任一項及/或條項集2之條項1-7中任一項的資料處理系統,其中該運行時邏輯還被配置成以路由表配置該第一SmartNIC,該路由表將該第一可重配置處理器指定為本地可重配置處理器,以及將該第二可重配置處理器指定為目的地可重配置處理器。
9.如條項集1之條項1-29中任一項及/或條項集2之條項1-8中任一項的資料處理系統,其中該第二複數個緩衝器在可操作地耦接到該第二處理節點的第二SmartNIC的記憶體中操作。
10.如條項集1之條項1-29中任一項及/或條項集2之條項1-9中任一項的資料處理系統,其中該運行時邏輯還被配置成以路由表配置該第二SmartNIC,該路由表將該第二可重配置處理器指定為本地可重配置處理器,以及將該第一可重配置處理器指定為目的地可重配置處理器。
11.如條項集1之條項1-29中任一項及/或條項集2之條項1-10中任一項的資料處理系統,其中該些應用程式中的至少一個是具有一組處理模組的資料流圖。
12.如條項集1之條項1-29中任一項及/或條項集2之條項1-11中任一項的資料處理系統,其中該運行時邏輯還被配置成將該組處理模組分成處理模組的第一子集和處理模組的第二子集。
13.如條項集1之條項1-29中任一項及/或條項集2之條項1-12中任一項的資料處理系統,其中該運行時邏輯還被配置成在該第一可重配置處理器上執行用於該處理模組的第一子集的配置檔及其資料。
14.如條項集1之條項1-29中任一項及/或條項集2之條項1-13中任一項的資料處理系統,其中該運行時邏輯還被配置成在該第二可重配置處理器上執行用於該處理模組的第二子集的配置檔及其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))。
15.如條項集1之條項1-29中任一項及/或條項集2之條項1-14中任一項的資料處理系統,其中該運行時邏輯還被配置成使用第一複數個緩衝器和第二複數個緩衝器,在處理模組的第一子集和處理模組的第二子集之間串流傳輸資料,其中該資料包括在前向傳遞期間產生的特徵圖及/或啟動,以及在反向傳遞期間產生的損失梯度。
16.如條項集1之條項1-29中任一項及/或條項集2之條項1-15中任一項的資料處理系統,其中該運行時邏輯還被配置成初始化該資料流圖的第一實例和該資料流圖的第二實例。
17.如條項集1之條項1-29中任一項及/或條項集2之條項1-16中任一項的資料處理系統,其中該運行時邏輯還被配置成在該第一可重配置處理器上執行用於該資料流圖的第一實例的配置檔及其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))。
18.如條項集1之條項1-29中任一項及/或條項集2之條項1-17中任一項的資料處理系統,其中該運行時邏輯還被配置成在該第二可重配置處理器上執行用於該資料流圖的第二實例的配置檔及其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))。
19.如條項集1之條項1-29中任一項及/或條項集2之條項1-18中任一項的資料處理系統,其中該運行時邏輯還被配置成使用該第一複數個緩衝器和該第二複數個緩衝器,在該資料流圖的第一實例和該資料流圖的第二實例之間串流傳輸資料,其中該資料包括反向傳遞期間產生的梯度。
20.如條項集1之條項1-29中任一項及/或條項集2之條項1-19中任一項的資料處理系統,其中該第一複數個緩衝器在該第一可重配置處理器的記憶體中操作,以及該第二複數個緩衝器在該第二可重配置處理器的記憶體中操作。
21.一種資料處理系統,包括:
可重配置資料流資源池,包括複數個處理節點,該複數個處理節點中的個別處理節點可操作地耦接到個別複數個可重配置處理器和個別複數個緩衝器;以及
可操作地耦接到該可重配置資料流資源池的運行時處理器,該運行時處理器包括運行時邏輯,其被配置成:
接收用於應用程式的一組配置檔;
在可操作地耦接到該些個別處理節點中的第一處理節點的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集及相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記));
在可操作地耦接到該些個別處理節點中的第二處理節點的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集及相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記));以及
使用可操作地耦接到該第一處理節點的第一複數個緩衝器和可操作地耦接到該第二處理節點的第二複數個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸資料,以加載和執行該第一配置檔子集和該第二配置檔子集。
22.如條項集1之條項1-29中任一項及/或條項集2之條項1-21中任一項的資料處理系統,其中該第一複數個緩衝器在可操作地耦接到該第一處理節點的第一主機處理器的記憶體中操作,以及該第二複數個緩衝器在可操作地耦接到該第二處理節點的第二主機處理器的記憶體中操作。
23.如條項集1之條項1-29中任一項及/或條項集2之條項1-22中任一項的資料處理系統,其中該第一複數個緩衝器在可操作地耦接到該第一處理節點的第一智慧型網路介面控制器(SmartNIC)的記憶體中操作,以及該第二複數個緩衝器在可操作地耦接到該第二處理節點的第二SmartNIC的記憶體中操作。
24.如條項集1之條項1-29中任一項及/或條項集2之條項1-23中任一項的資料處理系統,其中該第一複數個緩衝器在該第一可重配置處理器的記憶體中操作,以及該第二複數個緩衝器在該第二可重配置處理器的記憶體中操作。
25.如條項集1之條項1-29中任一項及/或條項集2之條項1-24中任一項的資料處理系統,其中網路組構可操作地耦接該第一處理節點和該第二處理節點。
26.如條項集1之條項1-29中任一項及/或條項集2之條項1-25中任一項的資料處理系統,其中該網路組構在該第一複數個緩衝器和該第二複數個緩衝器之間串流傳輸該資料。
27.如條項集1之條項1-29中任一項及/或條項集2之條項1-26中任一項的資料處理系統,其中該運行時邏輯還被配置成:
在可操作地耦接到該些個別處理節點中的第三處理節點的第三可重配置處理器上加載和執行該組配置檔中的第三配置檔子集及相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記));
在可操作地耦接到該些個別處理節點中的第四處理節點的第四可重配置處理器上加載和執行該組配置檔中的第四配置檔子集及相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記));以及
使用可操作地耦接到該第三處理節點的第三複數個緩衝器和可操作地耦接到該第四處理節點的第四複數個緩衝器在該第三可重配置處理器和該第四可重配置處理器之間串流傳輸資料,以加載和執行該第三配置檔子集和該第四配置檔子集。
28.一種資料處理系統,包括:
處理節點,可操作地耦接到具有不同級別之可配置粒度的可重配置處理器;以及
可操作地耦接到該處理節點的運行時處理器,該運行時處理器包括運行時邏輯,其被配置成:
接收用於應用程式的一組配置檔;
在該些可重配置處理器中的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該第一可重配置處理器具有第一級可配置粒度;以及
在該些可重配置處理器中的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該第二可重配置處理器具有不同於該第一級可配置粒度的第二級可配置粒度。
29.如條項集1之條項1-29中任一項及/或條項集2之條項1-28中任一項的資料處理系統,其中該第一級可配置粒度為位元級可配置粒度,並且該第一可重配置處理器為現場可編程閘陣列(FPGA)。
30.如條項集1之條項1-29中任一項及/或條項集2之條項1-29中任一項的資料處理系統,其中該第二級可配置粒度為字級可配置粒度,並且該第二可重配置處理器為粗粒度可重配置架構(CGRA)。
31.一種資料處理系統,包括:
處理節點,可操作地耦接到具有不同級別之可配置粒度的可重配置處理器;以及
可操作地耦接到該處理節點的運行時處理器,該運行時處理器包括運行時邏輯,其被配置成:
接收用於應用程式的一組配置檔;
在該些可重配置處理氣中的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該第一可重配置處理器具有第一配置;以及
在該些可重配置處理器中的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該第二可重配置處理器具有不同於該配置的第二配置。
32.如條項集1之條項1-29中任一項及/或條項集2之條項1-31中任一項的資料處理系統,其中該第一配置為位元級可配置粒度,並且該第一可重配置處理器為現場可編程閘陣列(FPGA)。
33.如條項集1之條項1-29中任一項及/或條項集2之條項1-32中任一項的資料處理系統,其中該第二配置為字級可配置粒度,並且該第二可重配置處理器為粗粒度可重配置架構(CGRA)。
34.如條項集1之條項1-29中任一項及/或條項集2之條項1-33中任一項的資料處理系統,其中該第一配置為閘級可重配置性,並且該第一可重配置處理器為該FPGA。
35.如條項集1之條項1-29中任一項及/或條項集2之條項1-34中任一項的資料處理系統,其中該第二配置為暫存器轉移級可重配置性,並且該第二可重配置處理器為該CGRA。
36.如條項集1之條項1-29中任一項及/或條項集2之條項1-35中任一項的資料處理系統,其中該第一配置使用逐位元查找表(LUT)和交換器,並且該第一可重配置處理器為該FPGA。
37.如條項集1之條項1-29中任一項及/或條項集2之條項1-36中任一項的資料處理系統,其中該第二配置使用字組寬的發送插槽(IS)/算術邏輯單元(ALU)/功能單元(FU)/處理元件(PE)、暫存器檔(RF)及互連,並且該第二可重配置處理器為該CGRA。
38.如條項集1之條項1-29中任一項及/或條項集2之條項1-37中任一項的資料處理系統,其中該第二可重配置處理器使用的IS的數量少於該第一可重配置處理器使用的LUT的數量。
39.如條項集1之條項1-29中任一項及/或條項集2之條項1-38中任一項的資料處理系統,其中配置該第二可重配置處理器所需的位元數比配置該第一可重配置處理器所需的位元數小幾個數量級。
條項集3
1.一種資料處理系統,包括:
複數個處理節點,該複數個處理節點中的處理節點包括第一處理節點和第二處理節點,該第一處理節點可操作地耦接到該第二處理節點,該第一處理節點具有第一主機處理器、可操作地耦接到該第一主機處理器的第一複數個可重配置處理器和可操作地耦接到該第一複數個可重配置處理器的第一複數個智慧型網路介面控制器(SmartNIC),以及該第二處理節點具有第二主機處理器、可操作地耦接到該第二主機處理器的第二複數個可重配置處理器和可操作地耦接到該第二複數個可重配置處理器的第二複數個SmartNIC;
在該第一複數個SmartNIC中的第一SmartNIC的記憶體中的第一複數個緩衝器,該第一SmartNIC可操作地耦接到該第一複數個可重配置處理器的中的第一可重配置處理器;
在該第二複數個SmartNIC中的第二SmartNIC的記憶體中的第二複數個緩衝器,該第二SmartNIC可操作地耦接到該第二複數個可重配置處理器的中的第二可重配置處理器;
該第一複數個緩衝器包括第一組發送器緩衝器,其被配置成從該第一可重配置處理器接收資料並將該資料提供給該第二複數個緩衝器中的第二組接收器緩衝器,該第二組接收器緩衝器被配置成將該資料提供給該第二可重配置處理器;
該第二複數個緩衝器包括第二組發送器緩衝器,其被配置成從該第二可重配置處理器接收資料並將該資料提供給該第一複數個緩衝器中的第一組接收器緩衝器,該第一組接收器緩衝器被配置成將該資料提供給該第一可重配置處理器;以及
運行時邏輯,被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該執行包括使用該第一複數個緩衝器中的一或多個緩衝器和該第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料,從而該串流傳輸繞過該第一主機處理器和該第二主機處理器。
2.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1的資料處理系統,其中該執行包括將用於該些應用程式的輸入資料從該第一可重配置處理器串流傳輸到該第二可重配置處理器。
3.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-2中任一項的資料處理系統,其中該第一組發送器緩衝器中的一或多個發送器緩衝器被配置成從該第一可重配置處理器接收該輸入資料並將該輸入資料提供給該第二組接收器緩衝器中的一或多個接收器緩衝器,其中該第二組接收器緩衝器中的該些接收器緩衝器被配置成將該輸入資料提供給該第二可重配置處理器。
4.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-3中任一項的資料處理系統,其中該執行包括將用於該些應用程式的輸出資料從該第二可重配置處理器串流傳輸到該第一可重配置處理器,其中該輸出資料被產生作為處理該輸入資料的結果。
5.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-4中任一項的資料處理系統,其中該第二組發送器緩衝器中的一或多個發送器緩衝器被配置成從該第二可重配置處理器接收該輸出資料並將該輸出資料提供給該第一組接收器緩衝器中的一或多個接收器緩衝器,其中該第一組接收器緩衝器中的該些接收器緩衝器被配置成將該輸出資料提供給該第一可重配置處理器。
6.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-5中任一項的資料處理系統,其中該第一可重配置處理器被配置成將該輸入資料推送到該第一SmartNIC,其中該第一SmartNIC被配置成將該輸入資料寫入該第一組發送器緩衝器中的該些發送器緩衝器,以及其中該第一SmartNIC被配置成回應於該輸入資料的該寫入而更新該第一組發送器緩衝器中的該些發送器緩衝器的尾指標。
7.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-6中任一項的資料處理系統,其中該第一SmartNIC被配置成回應於更新後的尾指標,將該輸入資料發送到該第二SmartNIC,其中該第二SmartNIC被配置成將該輸入資料寫入該第二組接收器緩衝器中的該些接收器緩衝器,以及其中該第二SmartNIC被配置成回應於該輸入資料的該寫入而更新該第二組接收器緩衝器中的該些接收器緩衝器的尾指標。
8.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-7中任一項的資料處理系統,其中該第二可重配置處理器被配置成透過回應於更新後的尾指標而從該第二組接收器緩衝器中的該些接收器緩衝器讀取該輸入資料來從該第二SmartNIC拉取該輸入資料。
9.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-8中任一項的資料處理系統,其中該第二可重配置處理器被配置成將該輸出資料推送到該第二SmartNIC,其中該第二SmartNIC被配置為將該輸出資料寫入該第二組發送器緩衝器中的該些發送器緩衝器,以及其中該第二SmartNIC被配置為回應於該輸出資料的寫入,更新該第二組發送器緩衝器中的發送器緩衝器的尾指標。
10.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-9中任一項的資料處理系統,其中該第二SmartNIC被配置成回應於更新後的尾指標,將該輸出資料發送到該第一SmartNIC,其中該第一SmartNIC被配置成將該輸出資料寫入該第一組接收器緩衝器中的該些接收器緩衝器,以及其中該第一SmartNIC被配置為回應於該輸出資料的寫入,更新該第一組接收器緩衝器中的接收器緩衝器的尾指標。
11.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-10中任一項的資料處理系統,其中該第一可重配置處理器被配置成透過回應於更新後的尾指標而從該第一組接收器緩衝器中的該些接收器緩衝器讀取該輸出資料來從該第一SmartNIC拉取該輸出資料。
12.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-11中任一項的資料處理系統,其中網路組構可操作地耦接該第一處理節點和該第二處理節點,以及該網路組構被配置成實現從該第一組發送器緩衝器中的該些發送器緩衝器串流傳輸該輸入資料到該第二組接收器緩衝器中的該些接收器緩衝器,以及實現從該第二組發送器緩衝器中的該些發送器緩衝器串流傳輸該輸出資料到該第一組接收器緩衝器中的該些接收器緩衝器。
13.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-12中任一項的資料處理系統,其中第一可重配置處理器使用一或多個遠端程序呼叫通知第二可重配置處理器遠端調用。
14.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-13中任一項的資料處理系統,其中該第一可重配置處理器使用該第一組發送器緩衝器中的該些發送器緩衝器和該第二組接收器緩衝器中的該些接收器緩衝器,將一或多個參數值發送到該第二可重配置處理器用於執行該些遠端程序呼叫。
15.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-14中任一項的資料處理系統,其中第二可重配置處理器使用一或多個遠端程序呼叫通知第一可重配置處理器遠端調用。
16.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-15中任一項的資料處理系統,其中該第二可重配置處理器使用該第二組發送器緩衝器中的該些發送器緩衝器和該第一組接收器緩衝器中的該些接收器緩衝器,將一或多個參數值發送到該第一可重配置處理器用於執行該些遠端程序呼叫。
17.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-16中任一項的資料處理系統,其中該第一複數個SmartNIC中的個別SmartNIC透過個別匯流排可操作地耦接到該第一複數個可重配置處理器中的個別可重配置處理器,以及該第二複數個SmartNIC中的個別SmartNIC透過個別匯流排可操作地耦接到該第二複數個可重配置處理器中的個別可重配置處理器。
18.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-17中任一項的資料處理系統,其中該些配置檔包括複數個函數。
19.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-18中任一項的資料處理系統,還包括:
該運行時邏輯被配置成在該第一可重配置處理器上執行該複數個函數中的第一組函數,以及在該第二可重配置處理器上執行該複數個函數中的第二組函數,
其中使用該第一組發送器緩衝器中的該些發送器緩衝器和該第二組接收器緩衝器中的該些接收器緩衝器,將該第二組函數中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到該第二可重配置處理器,以及
其中使用該第二組發送器緩衝器中的該些發送器緩衝器和該第一組接收器緩衝器中的該些接收器緩衝器,將在該第二可重配置處理器上執行該些函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果傳輸到該第一可重配置處理器。
20.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-19中任一項的資料處理系統,其中該第一複數個緩衝器中的該些緩衝器和該第二複數個緩衝器中的該些緩衝器是先進先出(FIFO)緩衝器。
21.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-20中任一項的資料處理系統,其中該運行時邏輯運行在該第一主機處理器和該第二主機處理器之至少一者中。
22.一種資料處理系統,包括:
複數個處理節點,該複數個處理節點中的處理節點包括第一處理節點和第二處理節點,該第一處理節點可操作地耦接到該第二處理節點,該第一處理節點具有第一主機處理器、可操作地耦接到該第一主機處理器的第一複數個可重配置處理器和可操作地耦接到該第一複數個可重配置處理器的第一複數個智慧型網路介面控制器(SmartNIC),以及該第二處理節點具有第二主機處理器、可操作地耦接到該第二主機處理器的第二複數個可重配置處理器和可操作地耦接到該第二複數個可重配置處理器的第二複數個SmartNIC;
該第一複數個SmartNIC中的第一SmartNIC的記憶體中的第一複數個緩衝器,該第一SmartNIC可操作地耦接到該第一複數個可重配置處理器中的第一可重配置處理器;
該第二複數個SmartNIC中的第二SmartNIC的記憶體中的第二複數個緩衝器,該第二SmartNIC可操作地耦接到該第二主機處理器;
該第一複數個緩衝器包括第一組發送器緩衝器,其被配置成從該第一可重配置處理器接收資料並將該資料提供給該第二複數個緩衝器中的第二組接收器緩衝器,該第二組接收器緩衝器被配置成將該資料提供給該第二主機處理器;
該第二複數個緩衝器包括第二組發送器緩衝器,其被配置成從該第二可重配置處理器接收資料並將該資料提供給該第一複數個緩衝器中的第一組接收器緩衝器,該第一組接收器緩衝器被配置成將該資料提供給該第一可重配置處理器;以及
運行時邏輯,其被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該執行包括使用該第一複數個緩衝器中的一或多個緩衝器和該第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料,從而該串流傳輸繞過該第一主機處理器。
23.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-22中任一項的資料處理系統,其中第一可重配置處理器使用一或多個遠端程序呼叫通知第二主機處理器遠端調用。
24.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-23中任一項的資料處理系統,其中該第一可重配置處理器使用該第一組發送器緩衝器中的一或多個發送器緩衝器和該第二組接收器緩衝器中的一或多個接收器緩衝器,將一或多個參數值發送到該第二主機處理器用於執行該些遠端程序呼叫。
25.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-24中任一項的資料處理系統,其中第二主機處理器使用一或多個遠端程序呼叫通知第一可重配置處理器遠端調用。
26.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-25中任一項的資料處理系統,其中該第二主機處理器使用該第二組發送器緩衝器中的一或多個發送器緩衝器和該第一組接收器緩衝器中的一或多個接收器緩衝器,將一或多個參數值發送到該第一可重配置處理器用於執行該些遠端程序呼叫。
27.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-26中任一項的資料處理系統,還包括除錯邏輯,其被配置成檢測錯誤,及使用該第一組發送器緩衝器中的該些發送器緩衝器和該第二組接收器緩衝器中的該些接收器緩衝器,將該些錯誤報告給在該第二主機處理器上的除錯控制台。
28.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-27中任一項的資料處理系統,還包括:
該運行時邏輯被配置成在該第一可重配置處理器上針對測試應用程式執行定義該些測試應用程式的測試配置檔和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記));以及
測試邏輯,其被配置成產生執行該些測試配置檔和該應用程式資料的結果,並使用該第一組發送器緩衝器中的該些發送器緩衝器和該第二組接收器緩衝器中的該些接收器緩衝器,將該些結果報告給在該第二主機處理器上的輸出檔。
29.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-28中任一項的資料處理系統,其中該些配置檔包括複數個函數。
30.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-29中任一項的資料處理系統,還包括:
該運行時邏輯被配置成在該第一可重配置處理器上執行該複數個函數中的第一組函數及其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),以及在該第二主機處理器上執行該複數個函數中的第二組函數及其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),
其中使用該第一組發送器緩衝器中的該些發送器緩衝器和該第二組接收器緩衝器中的該些接收器緩衝器,將該第二組函數中的函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))傳輸到該第二主機處理器,以及
其中使用該第二組發送器緩衝器中的該些發送器緩衝器和該第一組接收器緩衝器中的該些接收器緩衝器,將在該第二主機處理器上執行該些函數及/或其資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))的結果傳輸到該第一可重配置處理器。
31.一種資料處理系統,包括:
複數個可重配置處理器,包括第一可重配置處理器和第二可重配置處理器;
可操作地耦接到該第一可重配置處理器的第一智慧型網路介面控制器(SmartNIC),該第一SmartNIC具有第一複數個緩衝器;
可操作地耦接到該第二可重配置處理器的第二SmartNIC,該第二SmartNIC具有第二複數個緩衝器;以及
運行時邏輯,被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和處理影用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該執行包括使用該第一複數個緩衝器中的一或多個緩衝器和該第二複數個緩衝器中的一或多個緩衝器,在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料。
32.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-31中任一項的資料處理系統,其中該第一可重配置處理器位於第一處理節點上並且可操作地耦接到第一主機處理器,其中該第二可重配置處理器位於第二處理節點上並且可操作地耦接到第二主機處理器,以及其中該第一處理節點和該第二處理節點是由網路組構可操作地耦接。
33.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-32中任一項的資料處理系統,其中該第一可重配置處理器和該第二可重配置處理器位於同一處理節點上並且可操作地耦接到同一主機處理器。
34.一種資料處理系統,包括:
第一可重配置處理器,可操作地耦接到在第一處理節點上運行的第一主機處理器;
第二可重配置處理器,可操作地耦接到在第二處理節點上運行的第二主機處理器;
第一智慧型網路介面控制器(SmartNIC),可操作地耦接到該第一可重配置處理器,該第一SmartNIC具有第一複數個緩衝器;
第二SmartNIC,可操作地耦接到該第二主機處理器,該第二SmartNIC具有第二複數個緩衝器;以及
運行時邏輯,被配置成使用該第一可重配置處理器和該第二主機處理器針對應用程式執行定義該些應用程式的配置檔和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該執行包括使用該第一複數個緩衝器中的一或多個緩衝器和該第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二主機處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料。
35.一種資料處理系統,包括:
第一可重配置處理器,可操作地耦接到在第一處理節點上運行的第一主機處理器;
第二可重配置處理器,可操作地耦接到在第二處理節點上運行的第二主機處理器;
第一網路介面控制器(NIC),可操作地耦接到該第一處理節點,該第一NIC具有第一複數個緩衝器;
第二NIC,可操作地耦接到該第二處理節點,該第二NIC具有第二複數個緩衝器;以及
運行時邏輯,被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該執行包括:
該第一可重配置處理器被配置成將用於該應用程式的輸入資料推送到該第一複數個緩衝器中的一或多個緩衝器;
該第一主機處理器被配置成使該第一NIC從該第一複數個緩衝器將該輸入資料串流傳輸到該第二複數個緩衝器中的一或多個緩衝器;以及
該第二主機處理器被配置成使該第二NIC從該第二複數個緩衝器中的緩衝器將該輸入資料串流傳輸到該第二可重配置處理器。
36.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-35中任一項的資料處理系統,其中該第二主機處理器使用一或多個遠端直接記憶體存取(RDMA)命令,用以在該輸入資料被串流傳輸到該第二複數個緩衝器中的該些緩衝器之後,更新該第二複數個緩衝器中的該些緩衝器的尾指標。
37.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-36中任一項的資料處理系統,其中該第二可重配置處理器被配置成回應於更新後的尾指標,從該第二複數個緩衝器中的該些緩衝器拉取該輸入資料。
38.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-37中任一項的資料處理系統,該執行還包括:
該第二可重配置處理器,用以將用於該些應用程式的輸出資料推送到該第二複數個緩衝器中的該些緩衝器,其中該輸出資料被產生作為處理該輸入資料的結果;
該第二主機處理器,被配置成使該第二NIC從該第二複數個緩衝器將該輸出資料串流傳輸到該第一複數個緩衝器中的該些緩衝器;以及
該第一主機處理器,被配置成使該第一NIC從該第一複數個緩衝器中的該些緩衝器將該輸出資料串流傳輸到該第一可重配置處理器。
39.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-38中任一項的資料處理系統,其中該第一主機處理器使用一或多個RDMA命令,用以在該輸出資料被串流傳輸到該第一複數個緩衝器中的該些緩衝器之後,更新該第一複數個緩衝器中的該些緩衝器的尾指標。
40.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-39中任一項的資料處理系統,其中該第一可重配置處理器被配置成回應於更新後的尾指標,從該第一複數個緩衝器中的該些緩衝器拉取該輸出資料。
41.一種資料處理系統,包括:
第一可重配置處理器,具有第一網路介面控制器(NIC),以及該第一NIC具有第一複數個緩衝器;
第二可重配置處理器,具有第二NIC,以及該第二NIC具有第二複數個緩衝器;以及
運行時邏輯,被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和處理應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記)),該執行包括使用該第一NIC的該第一複數個緩衝器和該第二NIC的該第二複數個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料。
42.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-41中任一項的資料處理系統,其中該第一NIC是第一SmartNIC,以及該第二NIC是第二SmartNIC,其中該第一和第二可重配置處理器位在同一處理節點上,以及其中該第一和第二可重配置處理器位在不同處理節點上。
43.一種資料處理系統,包括:
第一可重配置處理器,可操作地耦接到在第一處理節點上運行的第一主機處理器,該第一處理節點可操作地耦接到第一網路介面控制器(NIC);
第二可重配置處理器,可操作地耦接到在第二處理節點上運行的第二主機處理器,該第二處理節點可操作地耦接到第二NIC;
該第一可重配置處理器的位址產生器,被配置成使用映射到第一複數個緩衝器的記憶體位址,將用於執行定義應用程式的配置檔的配置資料(例如,位元流)和應用程式資料(例如,權重、係數、向量、張量(影像資料、音頻資料、自然語言處理(NLP資料))、控制資料(例如,控制符記))從該第一可重配置處理器串流傳輸到該第二可重配置處理器;以及
該第二可重配置處理器的位址產生器,被配置成使用映射到第二複數個緩衝器的記憶體位址,將該配置資料(例如,位元流)和該應用程式資料從該第二可重配置處理器串流傳輸到該第一可重配置處理器。
44.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-43中任一項的資料處理系統,其中該第一複數個緩衝器在該第一可重配置處理器的記憶體中操作。
45.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-44中任一項的資料處理系統,其中該第一複數個緩衝器在該第一主機處理器的記憶體中操作。
46.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-45中任一項的資料處理系統,其中該第一複數個緩衝器在該第一NIC的記憶體中操作。
47.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-46中任一項的資料處理系統,其中該第二複數個緩衝器在該第二可重配置處理器的記憶體中操作。
48.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-47中任一項的資料處理系統,其中該第二複數個緩衝器在該第二主機處理器的記憶體中操作。
49.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-48中任一項的資料處理系統,其中該第二複數個緩衝器在該第二NIC的記憶體中操作。
50.如條項集1之條項1-29中任一項及/或條項集2之條項1-39中任一項及/或條項集3之條項1-49中任一項的資料處理系統,其中該第一NIC是第一SmartNIC,以及該第二NIC是第二SmartNIC。
條項集4
1.一種電腦實現的方法,包括:
接收定義應用程式的複數個配置檔,該複數個配置檔中的配置檔指定執行該些配置檔所需的虛擬資料流資源的配置,以及該虛擬資料流資源包括第一虛擬處理節點中的第一虛擬可重配置處理器,第二虛擬處理節點中的第二虛擬可重配置處理器,以及在該第一虛擬可重配置處理器和該第二虛擬可重配置處理器之間串流傳輸資料的虛擬緩衝器;
將可重配置資料流資源池中的可重配置資料流資源分配給該些虛擬資料流資源,該可重配置資料流資源池包括複數個處理節點,該複數個處理節點中的個別處理節點可操作地耦接到個別複數個可重配置處理器和個別複數個緩衝器,該些被分配的可重配置資料流資源包括
被分配給該第一虛擬處理節點的該些個別處理節點中的第一處理節點,
被分配給該第二虛擬處理節點的該些個別處理節點中的第二處理節點,
第一可重配置處理器,可操作地耦接到該第一處理節點,被分配給該第一虛擬可重配置處理器,
第二可重配置處理器,可操作地耦接到該第二處理節點,被分配給該第二虛擬可重配置處理器,以及
第一複數個緩衝器,可操作地耦接到該第一處理節點,以及第二複數個緩衝器,可操作地耦接到該第二處理節點,被分配給該些虛擬緩衝器;以及
使用被分配的可重配置資料流資源,針對該些應用程式執行配置檔和處理應用程式資料。
2.一種電腦實現的方法,包括:
接收用於應用程式的一組配置檔;
在可操作地耦接到個別處理節點中的第一處理節點的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料;
在可操作地耦接到該些個別處理節點中的第二處理節點的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料;以及
使用可操作地耦接到該第一處理節點的第一複數個緩衝器和可操作地耦接到該第二處理節點的第二複數個緩衝器,在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸資料,以加載和執行該第一配置檔子集和該第二配置檔子集。
3.一種電腦實現的方法,包括:
接收用於應用程式的一組配置檔和相關聯的應用程式資料;
在具有第一級可配置粒度的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料;以及
在具有不同於該第一級可配置粒度的第二級可配置粒度的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料。
4.一種電腦實現的方法,包括:
接收用於應用程式的一組配置檔和相關聯的應用程式資料;
在具有第一配置的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料;以及
在具有不同於該第一配置的第二配置的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料。
5.一種電腦實現的方法,包括:
使用第一可重配置處理器和第二可重配置處理器,針對應用程式執行定義該些應用程式的配置檔和處理應用程式資料,該執行包括使用第一複數個緩衝器中的一或多個緩衝器和第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料,從而該串流傳輸繞過第一主機處理器和第二主機處理器。
6.一種電腦實現的方法,包括:
使用第一可重配置處理器和第二主機處理器,針對應用程式執行定義該些應用程式的配置檔和處理應用程式資料,該執行包括使用第一複數個緩衝器中的一或多個緩衝器和第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二主機處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料,從而該串流傳輸繞過第一主機處理器。
7.一種資料處理系統,包括:
可重配置資料流資源池,包括複數個處理節點,該複數個處理節點中的個別處理節點可操作地耦接到個別複數個可重配置處理器和個別複數個緩衝器;以及
運行時處理器,運行在該個別複數個可重配置處理器中的一或多個可重配置處理器上,並被配置成:
接收用於應用程式的複數個配置檔,該複數個配置檔中的配置檔指定執行該些配置檔所需的虛擬資料流資源的配置,以及該虛擬資料流資源包括第一虛擬處理節點中的第一虛擬可重配置處理器,第二虛擬處理節點中的第二虛擬可重配置處理器,以及在該第一虛擬可重配置處理器和該第二虛擬可重配置處理器之間串流傳輸資料的虛擬緩衝器;
將該可重配置資料流資源池中的可重配置資料流資源分配給該些虛擬資料流資源,該些被分配的可重配置資料流資源包括
被分配給該第一虛擬處理節點的該些個別處理節點中的第一處理節點,
被分配給該第二虛擬處理節點的該些個別處理節點中的第二處理節點,
第一可重配置處理器,可操作地耦接到該第一處理節點,被分配給該第一虛擬可重配置處理器,
第二可重配置處理器,可操作地耦接到該第二處理節點,被分配給該第二虛擬可重配置處理器,以及
第一複數個緩衝器,可操作地耦接到該第一處理節點,以及第二複數個緩衝器,可操作地耦接到該第二處理節點,被分配給該些虛擬緩衝器;以及
使用該些被分配的可重配置資料流資源,針對該些應用程式執行該些配置檔和處理應用程式資料。
8.一種資料處理系統,包括:
可重配置資料流資源池,包括複數個處理節點,該複數個處理節點中的個別處理節點可操作地耦接到個別複數個可重配置處理器和個別複數個緩衝器;以及
運行時處理器,運行在該個別複數個可重配置處理器中的一或多個可重配置處理器上,並且被配置成:
接收用於應用程式的一組配置檔;
在可操作地耦接到該些個別處理節點中的第一處理節點的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料;
在可操作地耦接到該些個別處理節點中的第二處理節點的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料;以及
使用可操作地耦接到該第一處理節點的第一複數個緩衝器和可操作地耦接到該第二處理節點的第二複數個緩衝器,在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸資料,以加載和執行該第一配置檔子集和該第二配置檔子集。
9.一種資料處理系統,包括:
處理節點,可操作地耦接到具有不同級別之可配置粒度的可重配置處理器;以及
運行時處理器,運行在該些可重配置處理器中的一或多個處理器上,該運行時處理器包括運行時邏輯,其被配置成:
接收用於應用程式的一組配置檔和相關聯的應用程式資料;
在該些可重配置處理器中的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料,該第一可重配置處理器具有第一級可配置粒度;以及
在該些可重配置處理器中的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料,該第二可重配置處理器具有不同於該第一級可配置粒度的第二級可配置粒度。
10.一種資料處理系統,包括:
處理節點,可操作地耦接到具有不同級別之可配置粒度的可重配置處理器;以及
運行時處理器,運行在該些可重配置處理器中的一或多個處理器上,該運行時處理器包括運行時邏輯,其被配置成:
接收用於應用程式的一組配置檔和相關聯的應用程式資料;
在該些可重配置處理器中的第一可重配置處理器上加載和執行該組配置檔中的第一配置檔子集和相關聯的應用程式資料,該第一可重配置處理器具有第一配置;以及
在該些可重配置處理器中的第二可重配置處理器上加載和執行該組配置檔中的第二配置檔子集和相關聯的應用程式資料,該第二可重配置處理器具有不同於該配置的第二配置。
11.一種資料處理系統,包括:
複數個處理節點,該複數個處理節點中的處理節點包括第一處理節點和第二處理節點,該第一處理節點可操作地耦接到該第二處理節點,該第一處理節點具有可操作地耦接的第一複數個可重配置處理器和第一複數個智慧型網路介面控制器(SmartNIC),以及該第二處理節點具有第二複數個可重配置處理器和第二複數個SmartNIC;
在該第一複數個SmartNIC中的第一SmartNIC的記憶體中的第一複數個緩衝器,該第一SmartNIC可操作地耦接到該第一複數個可重配置處理器的中的第一可重配置處理器;
在該第二複數個SmartNIC中的第二SmartNIC的記憶體中的第二複數個緩衝器,該第二SmartNIC可操作地耦接到該第二複數個可重配置處理器的中的第二可重配置處理器;
該第一複數個緩衝器包括第一組發送器緩衝器,其被配置成從該第一可重配置處理器接收資料並將該資料提供給該第二複數個緩衝器中的第二組接收器緩衝器,該第二組接收器緩衝器被配置成將該資料提供給該第二可重配置處理器;
該第二複數個緩衝器包括第二組發送器緩衝器,其被配置成從該第二可重配置處理器接收資料並將該資料提供給該第一複數個緩衝器中的第一組接收器緩衝器,該第一組接收器緩衝器被配置成將該資料提供給該第一可重配置處理器;以及
運行時邏輯,運行在該第一複數個可重配置處理器或該第二複數個可重配置處理器中的至少一個可重配置處理器上,並被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和應用程式資料,該執行包括使用該第一複數個緩衝器中的一或多個緩衝器和該第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料。
12.一種資料處理系統,包括:
複數個可重配置處理器,包括第一可重配置處理器和第二可重配置處理器;
第一智慧型網路介面控制器(SmartNIC),可操作地耦接到該第一可重配置處理器,該第一SmartNIC具有第一複數個緩衝器;
第二SmartNIC,可操作地耦接到該第二可重配置處理器,該第二SmartNIC具有第二複數個緩衝器;以及
運行時邏輯,運行在該複數個可重配置處理器中的至少一個可重配置處理器上,並被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和應用程式資料,該執行包括使用該第一複數個緩衝器中的一或多個緩衝器和該第二複數個緩衝器中的一或多個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料。
13.一種資料處理系統,包括:
第一可重配置處理器,具有第一網路介面控制器(NIC),以及該第一NIC具有第一複數個緩衝器;
第二可重配置處理器,具有第二NIC,以及該第二NIC具有第二複數個緩衝器;以及
運行時邏輯,運行在至少一個可重配置處理器上(例如,該第一可重配置處理器、該第二可重配置處理器、第三可重配置處理器),並被配置成使用該第一可重配置處理器和該第二可重配置處理器針對應用程式執行定義該些應用程式的配置檔和應用程式資料,該執行包括使用該第一NIC的該第一複數個緩衝器和該第二NIC的該第二複數個緩衝器在該第一可重配置處理器和該第二可重配置處理器之間串流傳輸該些配置檔中的配置資料(例如,位元流)和該應用程式資料。
14.一種資料處理系統,包括:
第一可重配置處理器,可操作地耦接到第一網路介面控制器(NIC);
第二可重配置處理器,可操作地耦接到第二NIC;
該第一可重配置處理器的位址產生器,被配置成使用映射到第一複數個緩衝器的記憶體位址,將用於執行配置檔的配置資料(例如,位元流)和應用程式資料從該第一可重配置處理器串流傳輸到該第二可重配置處理器;以及
該第二可重配置處理器的位址產生器,被配置成使用映射到第二複數個緩衝器的記憶體位址,將配置資料(例如,位元流)和該應用程式資料從該第二可重配置處理器串流傳輸到該第一可重配置處理器。
15.一種資料處理系統,包括:
可重配置資料流資源池,包括複數個處理節點,該複數個處理節點中的個別處理節點可操作地耦接到個別複數個可重配置處理器和個別複數個緩衝器;以及
運行時處理器,可操作地耦接到該可重配置資料流資源池,並被配置成:
接收用於應用程式的執行檔,該執行檔包括用於應用程式的配置檔和執行該些配置檔所需的虛擬資料流資源的配置,並且該虛擬資料流資源包括第一虛擬處理節點中的第一虛擬可重配置處理器,第二虛擬處理節點中的第二虛擬可重配置處理器,以及在該第一虛擬可重配置處理器和該第二虛擬可重配置處理器之間串流傳輸資料的虛擬緩衝器;
將該可重配置資料流資源池中的可重配置資料流資源分配給該些虛擬資料流資源,該些被分配的可重配置資料流資源包括
被分配給該第一虛擬處理節點的該些個別處理節點中的第一處理節點,
被分配給該第二虛擬處理節點的該些個別處理節點中的第二處理節點,
第一可重配置處理器,可操作地耦接到該第一處理節點,被分配給該第一虛擬可重配置處理器,
第二可重配置處理器,可操作地耦接到該第二處理節點,被分配給該第二虛擬可重配置處理器,以及
第一複數個緩衝器,可操作地耦接到該第一處理節點,以及第二複數個緩衝器,可操作地耦接到該第二處理節點,被分配給該些虛擬緩衝器;以及
使用該些被分配的可重配置資料流資源針對該些應用程式執行該些配置檔和處理資料。
雖然本發明是透過參考上面詳述的較佳實現和範例來公開的,但應理解的是這些範例旨在說明性而非限制性。可以想到的是,本領域技術人員將容易想到修改和組合,這些修改和組合將落在本發明的精神及下面條項的範圍內。
100:資料中心
102a,102n:主機處理器
112a,112n:編譯器
122a,122n:運行時邏輯
124a,124n:匯流排交換器
125a,125n:本地匯流排
126a,126n:本地匯流排
127a,127n:本地匯流排
132a,132n:網路介面控制器
134a,134n:主機記憶體
136:網路
142a,142n:可重配置處理器
162a,162n:可重配置處理器記憶體
202a,202n:主機接收器緩衝器
212a,212n:主機發送器緩衝器
302a,302n:介面接收器緩衝器
312a,312n:介面發送器緩衝器
402a,402n:可重配置處理器(RP)接收器緩衝器
412a,412n:可重配置處理器(RP)發送器緩衝器
502a,502n:除錯邏輯
512a,512n:測試邏輯
600:訊息序列圖
602:應用程式
632:發送器緩衝器
700:訊息序列圖
702:應用程式
732:發送器緩衝器
800:訊息序列圖
802:應用程式
832:發送器緩衝器
900:訊息序列圖
902:應用程式
932:發送器緩衝器
1000:訊息序列圖
1002:測試應用程式
1032:發送器緩衝器
1100:訊息序列圖
1102:測試應用程式
1132:發送器緩衝器
1200:訊息序列圖
1202:應用程式
1212:配置檔
1214:第一組函數
1224:第二組函數
1234:結果
1300:訊息序列圖
1302:應用程式
1312:配置檔
1314:第一組函數
1324:第二組函數
1334:結果
1402a,1402n:可重配置處理器1(RP 1)接收器緩衝器
1412a,1412n:可重配置處理器1(RP 1)發送器緩衝器
1422a,1422n:可重配置處理器n(RP n)接收器緩衝器
1432a,1432n:可重配置處理器n(RP n)發送器緩衝器
1500:訊息序列圖
1502:應用程式
1512:配置檔
1514:第一組函數
1524:第二組函數
1534:結果
1600:訊息序列圖
1602:應用程式
1612:配置檔
1614:第一組函數
1624:第二組函數
1634:結果
1700A:訊息序列圖
1702:源記憶體
1704:第一複數個緩衝器
1706:第二複數個緩衝器
1708:目的地記憶體
1712:資料單元系列
1700B:訊息序列圖
1700C:訊息序列圖
1800:訊息序列圖
1802:應用程式
1812:編譯器
1822:配置檔
1824:虛擬資料流資源
1824a:第一虛擬處理節點
1824a1:第一虛擬可重配置處理器
1824b:第二虛擬處理節點
1824b1:第二虛擬可重配置處理器
1824c:虛擬緩衝器
1824c1:第一虛擬SmartNIC緩衝器
1824c2:第二虛擬SmartNIC緩衝器
1832:運行時處理器
1842:運行時邏輯
1844:分配邏輯
1900:記憶體映射
1902:分配的緩衝器/物理緩衝器
1912:SmartNIC 1緩衝器
1913:控制及狀態暫存器(CSR)
1914:SmartNIC 1緩衝器
1922:SmartNIC 2緩衝器
1923:控制及狀態暫存器(CSR)
1924:SmartNIC 2緩衝器
1932:RP 1緩衝器
1933:控制及狀態暫存器(CSR)
1934:RP 1緩衝器
1942:RP 2緩衝器
1943:控制及狀態暫存器(CSR)
1944:RP 2緩衝器
1952:PCIe 1緩衝器
1953:控制及狀態暫存器(CSR)
1954:PCIe 1緩衝器
1962:DMA 1緩衝器
1963:控制及狀態暫存器(CSR)
1964:DMA 1緩衝器
1972:主機1緩衝器
1973:控制及狀態暫存器(CSR)
1974:主機1緩衝器
1980:控制及狀態暫存器(CSR)
2000:架構級示意圖
2100:訊息序列圖
2112a,2112n:PCIe交換器(PEX)
2120a,2120n:交換層封包(TLP)
2128a,2128n:交換層封包(TLP)
2132a,2132n:PCIe匯流排
2134a,2134n:PCIe交換器(PEX)
2136a,2136n:PCIe匯流排
2146a,2146n:PCIe端點埠(EP)
2156a,2156n:負載
2176a,2176n:發送器緩衝器
2178a,2178n:接收器緩衝器
2186a,2186n:快取
2196a,2196n:MAC埠
2198a,2198n:基於融合乙太網的RDMA(RoCE)/ TCP/用戶資料報協定(UDP)和快速UDP網際網路連接(QUIC)
2200:訊息序列圖
2300:執行
2302:應用程式
2304a:處理模組的第一子集
2304b:處理模組的第二子集
2322a,2322b:配置檔
2400:執行
2404a:資料流圖的第一實例
2404b:資料流圖的第二實例
2422a,2422b:配置檔
2500:執行
2502a:第一配置檔子集
2502b:第二配置檔子集
2600:執行
2700:系統
2710:可重配置資料處理器
2715:匯流排系統
2720:主機
2725:線
2730:I/O介面
2740:記憶體
2745:線
2750:I/O介面
2770:外部時鐘產生器
2775:時鐘線
2790:可配置單元陣列
2795:配置加載/卸載控制器
2797:虛擬化邏輯
2798:可配置單元集
2799:可配置單元集
2800:方塊圖
2805:I/O介面
2811~2816:頂級交換器
2900:可配置單元陣列
2901:配置加載/卸載控制器
2911:交換單元
2912:交換單元
2920:鏈路
2921:互連
2931:鏈路
2941:PMU
2942:PCU
2943:PMU
3000:可配置單元
3010:輸入配置資料
3021:線路
3022:線路
3020:配置資料儲存
3030:卸載輸出配置資料
3040:單元配置加載邏輯
3060:向量FIFO
3070:純量FIFO
3080:塊
3081~3086:功能單元
3090:控制塊
3091:菊鏈式完成匯流排
3092:菊鏈式命令匯流排
3093:菊鏈邏輯
3100:可配置單元
3111:本地FIFO
3112:本地FIFO
3115:控制塊
3116:可編程計數器鏈
3120:可重配置純量資料路徑
3130:高速暫存記憶體
3131~3134:SRAM庫
3135:分庫緩衝邏輯
在圖式中,在全文不同視圖中,相似的參考標號通常指相似的部分。並且,圖式不一定按比例繪製,而是通常將重點放在說明所公開的技術的原理上。在以下描述中,將參考下面的圖式說明所公開之技術的各種實施方式,其中:
[圖1]示出依據一種實現的資料中心的架構級示意圖。
[圖2A]示出位於圖1之資料中心中的第一處理節點的第一主機處理器之主機記憶體中的主機發送器緩衝器和主機接收器緩衝器。
[圖2B]示出位於圖1之資料中心中的第二處理節點的第二主機處理器之主機記憶體中的主機發送器緩衝器和主機接收器緩衝器。
[圖3A]示出位於可操作地耦接到第一處理節點之第一網路介面控制器的介面發送器緩衝器和介面接收器緩衝器。
[圖3B]示出位於可操作地耦接到第二處理節點之第二網路介面控制器的介面發送器緩衝器和介面接收器緩衝器。
[圖4A]示出位於可操作地耦接到第一處理節點之第一可重配置處理器的處理器記憶體中的可重配置處理器(RP)發送器緩衝器和可重配置處理器接收器緩衝器。
[圖4B]示出位於可操作地耦接到第二處理節點之第二可重配置處理器的處理器記憶體中的可重配置處理器發送器緩衝器和可重配置處理器接收器緩衝器。
[圖5A]是在第一主機處理器運行之運行時邏輯的啟發式圖。
[圖5B]是在第二主機處理器運行之運行時邏輯的啟發式圖。
[圖6]是訊息序列圖,其說明除錯邏輯的一種實現,該除錯邏輯運行在第一主機處理器並檢測在可操作地耦接到第一處理節點的一或多個可重配置處理器上執行配置檔的錯誤。
[圖7]是訊息序列圖,其說明圖6之除錯邏輯的一種實現,該除錯邏輯檢測在可操作地耦接到第二處理節點的一或多個可重配置處理器上執行配置檔的錯誤。
[圖8]是訊息序列圖,其說明可操作地耦接到第一處理節點的一或多個可重配置處理器向第一主機處理器發出遠端程序呼叫的一種實現。
[圖9]是訊息序列圖,其說明可操作地耦接到第二處理節點的一或多個可重配置處理器向第一主機處理器發出遠端程序呼叫的一種實現。
[圖10]是訊息序列圖,其說明測試邏輯的一種實現,該測試邏輯運行在第一主機處理器並確定和報告在可操作地耦接到第一處理節點的一或多個可重配置處理器上執行測試配置檔的測試統計。
[圖11]是訊息序列圖,其說明圖10之測試邏輯的一種實現,該測試邏輯確定和報告在可操作地耦接到第二處理節點的一或多個可重配置處理器上執行測試配置檔的測試統計。
[圖12]是訊息序列圖,其說明在可操作地耦接到第一處理節點的一或多個可重配置處理器上執行配置檔中的第一組函數以及在第一主機處理器上執行配置檔中的第二組函數的一種實現。
[圖13]是訊息序列圖,其說明在可操作地耦接到第一處理節點的一或多個可重配置處理器上執行配置檔中的第一組函數以及在第二主機處理器上執行配置檔中的第二組函數的一種實現。
[圖14A]示出可操作地耦接到第一處理節點的可重配置處理器中的個別可重配置處理器用於資料串流的發送器和接收器緩衝器。
[圖14B]示出可操作地耦接到第二處理節點的可重配置處理器中的個別可重配置處理器用於資料串流的發送器和接收器緩衝器。
[圖15]是訊息序列圖,其說明在可操作地耦接到第一處理節點的第一可重配置處理器上執行配置檔中的第一組函數以及在可操作地耦接到第一處理節點的第二可重配置處理器上執行配置檔中的第二組函數的一種實現。
[圖16]是訊息序列圖,其說明在可操作地耦接到第一處理節點的第一可重配置處理器上執行配置檔中的第一組函數以及在可操作地耦接到第二處理節點的第一可重配置處理器上執行配置檔中的第二組函數的一種實現。
[圖17A]是訊息序列圖,其說明非同步張量串流的一種實現,其中當可重配置處理器正處理當前張量時緩衝下一個張量。
[圖17B]是訊息序列圖,其說明非同步張量串流的一種實現,其中在可重配置處理器處理當前張量之前緩衝下一個張量。
[圖17C]是訊息序列圖,其說明非同步張量串流的一種實現,其中在可重配置處理器已處理當前張量之後緩衝下一個張量。
[圖18]是訊息序列圖,其說明在資料中心的不同處理節點上的可重配置處理器上執行配置檔的一種實現。
[圖19]示出將虛擬緩衝器記憶體映射和分配到位於資料中心中的不同網路元件的記憶體中的物理緩衝器的一種實現。
[圖20]示出資料中心之一種實現的架構級示意圖,其中該資料中心的處理節點不包括主機處理器。
[圖21]是訊息序列圖,其說明透過網路組構之基於緩衝器的節點間串流傳輸配置資料的一種實現。
[圖22]是訊息序列圖,其說明透過網路組構之基於緩衝器的節點間串流傳輸配置資料的另一種實現。
[圖23]示出使用所公開的透過網路組構136之基於緩衝器的節點間串流傳輸配置資料來平行執行模型/應用程式的一種實現。這在本文中稱為“模型平行性”。
[圖24]示出使用所公開的透過網路組構136之基於緩衝器的節點間串流傳輸配置資料來平行執行模型/應用程式的多個實例的一種實現。這在本文中稱為“資料平行性”。
[圖25]示出在異質可重配置處理器上執行配置檔的一種實現。
[圖26]示出使用嵌入在可重配置處理器上的NIC或SmartNIC裝置來執行配置檔的一種實現。
[圖27]是系統圖,說明系統包括主機、記憶體及示例性可重配置資料處理器,在該系統上可以應用所公開的技術。
[圖28]是CGRA(粗粒度可重配置架構)的頂級網路和元件的簡化方塊圖。
[圖29]是可用於圖27的配置中的磚片和陣列級網路的簡化圖,其中可配置單元是陣列級網路上的節點,並且可配置成實現具有輸入偏移的查找表。
[圖29B]示出連接陣列級網路中的元素的示例性交換單元。
[圖30]是示出示例性可配置單元,諸如型樣計算單元(Pattern Compute Unit,PCU)的方塊圖。
[圖31]是示出示例性可配置單元,諸如型樣記憶體單元(Pattern Memory Unit,PMU)的方塊圖。
102a:主機處理器
112a:編譯器
122a:運行時邏輯
142a:可重配置處理器
202a:主機接收器緩衝器
212a:主機發送器緩衝器
402a:可重配置處理器(RP)接收器緩衝器
412a:可重配置處理器(RP)發送器緩衝器
1200:訊息序列圖
1202:應用程式
1212:配置檔
1214:第一組函數
1224:第二組函數
1234:結果
Claims (20)
- 一種資料處理系統,包括:複數個可重配置處理器,該複數個可重配置處理器中的可重配置處理器具有可重配置處理器記憶體;複數個主機處理器,該複數個主機處理器中的一主機處理器可操作地耦接到該些可重配置處理器並且具有主機記憶體;複數個緩衝器,該複數個緩衝器中的該些緩衝器包括被配置成從該些可重配置處理器接收資料及向該主機處理器提供從該些可重配置處理器接收的該資料的可重配置處理器至主機處理器緩衝器,和被配置成從該主機處理器接收資料並向該些可重配置處理器提供從該主機處理器接收的該資料的主機處理器至可重配置處理器緩衝器;其中該主機處理器、該些可重配置處理器和該複數個緩衝器透過一或多個本地匯流排連接;運行時邏輯,運行在該主機處理器上,被配置成使用該些主機處理器至可重配置處理器緩衝器中的至少一個緩衝器並且透過連接該主機處理器、該些可重配置處理器和該些主機處理器至可重配置處理器緩衝器中的該至少一個緩衝器的至少一個該本地匯流排來加載和執行用於該些可重配置處理器上的應用程式的一或多個配置檔,從而配置該些可重配置處理器以執行該些應用程式;以及該些可重配置處理器被配置成處理該些應用程式的該些配置檔和資料並產生輸出,以及使用該些可重配置處理 器至主機處理器緩衝器中的至少一個緩衝器並且透過連接該主機處理器、該些可重配置處理器和該些可重配置處理器至主機處理器緩衝器中的該至少一個緩衝器的至少一個該本地匯流排將該些輸出發送到該主機處理器。
- 如請求項1的資料處理系統,其中除錯邏輯被配置成檢測錯誤,並基於該些輸出與預期輸出的比較,向該主機處理器上的除錯控制台報告該些錯誤。
- 如請求項2的資料處理系統,其中該除錯邏輯還被配置成基於該比較,向該主機處理器上的除錯輸出檔報告該些錯誤。
- 如請求項1的資料處理系統,其中該些可重配置處理器和該主機處理器可存取該些緩衝器。
- 如請求項4的資料處理系統,其中該些緩衝器位於該可重配置處理器記憶體中,並且該主機處理器可存取該可重配置處理器記憶體。
- 如請求項4的資料處理系統,其中該些緩衝器位於該主機記憶體中,並且該些可重配置處理器和該主機處理器可存取該主機記憶體。
- 如請求項4的資料處理系統,其中該些緩衝器位於該些可重配置處理器和該主機處理器可存取的網路介面控制器(NIC)中。
- 如請求項1的資料處理系統,其中該些緩衝器是先進先出(FIFO)緩衝器。
- 如請求項1的資料處理系統,其中該些可 重配置處理器使用一或多個遠端程序呼叫通知該主機處理器錯誤報告。
- 如請求項9的資料處理系統,其中該些可重配置處理器使用該些可重配置處理器至主機處理器緩衝器中的至少一個緩衝器將一或多個參數值發送到該主機處理器用於執行該些遠端程序呼叫。
- 如請求項1的資料處理系統,其中該運行時邏輯還被配置成執行用於該些可重配置處理器上的測試應用程式的一或多個測試配置檔,其中該些可重配置處理器還被配置成處理用於該些測試應用程式的該些測試配置檔和資料並產生測試輸出,以及使用該些可重配置處理器至主機處理器緩衝器中的至少一個緩衝器將該些測試輸出發送到該主機處理器,以及其中在該主機處理器上運行的測試邏輯被配置成基於該些測試輸出確定測試統計,並且將該些測試統計報告給該主機處理器上的測試輸出檔。
- 一種資料處理系統,包括:複數個可重配置處理器,該複數個可重配置處理器中的可重配置處理器具有可重配置處理器記憶體;複數個主機處理器,該複數個主機處理器中的一主機處理器可操作地耦接到該些可重配置處理器並且具有主機記憶體;複數個緩衝器,該複數個緩衝器中的該些緩衝器包括被配置成從該些可重配置處理器接收資料及向該主機處理器提供從該些可重配置處理器接收的該資料的可重配置處 理器至主機處理器緩衝器,和被配置成從該主機處理器接收資料並向該些可重配置處理器提供從該主機處理器接收的該資料的主機處理器至可重配置處理器緩衝器;其中該主機處理器、該些可重配置處理器和該複數個緩衝器透過一或多個本地匯流排連接;運行時邏輯,被配置成使用該些主機處理器至可重配置處理器緩衝器中的至少一個緩衝器並且透過連接該主機處理器、該些可重配置處理器和該些主機處理器至可重配置處理器緩衝器中的該至少一個緩衝器的至少一個該本地匯流排來加載用於該些可重配置處理器上的應用程式的一或多個配置檔以供執行,從而配置該些可重配置處理器以執行該些應用程式,該些配置檔包括複數個函數;以及該運行時邏輯被配置成在該些可重配置處理器上執行該複數個函數中的第一組函數及該第一組函數的資料,以及在該主機處理器上執行該複數個函數中的第二組函數及該第二組函數的資料,其中使用該些可重配置處理器至主機處理器緩衝器中的一或多個緩衝器並透過連接該主機處理器、該些可重配置處理器和該些可重配置處理器至主機處理器緩衝器中的該一或多個緩衝器的至少一個該本地匯流排,將該第二組函數中的函數及該些函數的資料傳輸到該主機處理器,以及其中使用該些主機處理器至可重配置處理器緩衝器中的一或多個緩衝器並透過連接該主機處理器、該些可重配 置處理器和該些主機處理器至可重配置處理器緩衝器中的該一或多個緩衝器的至少一個該本地匯流排,將在該主機處理器上執行該第二組函數中的該些函數及該些函數的該資料的結果傳輸到該些可重配置處理器。
- 如請求項12的資料處理系統,其中使用該些可重配置處理器至主機處理器緩衝器中的該一或多個緩衝器,將該第一和第二組函數的該資料傳輸到該主機處理器。
- 如請求項12的資料處理系統,還包括使用該些可重配置處理器至主機處理器緩衝器中的各個緩衝器來將該第二組函數中的各個函數及其資料傳輸到該主機處理器。
- 如請求項14的資料處理系統,還包括使用該些主機處理器至可重配置處理器緩衝器中的各個緩衝器來傳輸執行該各個函數的結果。
- 如請求項12的資料處理系統,其中該些可重配置處理器和該主機處理器可存取該些緩衝器。
- 如請求項16的資料處理系統,其中該些緩衝器位於該可重配置處理器記憶體中,並且該主機處理器可存取該可重配置處理器記憶體。
- 如請求項16的資料處理系統,其中該些緩衝器位於該主機記憶體中,並且該些可重配置處理器和該主機處理器可存取該主機記憶體。
- 如請求項16的資料處理系統,其中該些 緩衝器位於該些可重配置處理器和該主機處理器可存取的網路介面控制器(NIC)中。
- 如請求項16的資料處理系統,其中該些緩衝器是先進先出(FIFO)緩衝器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/127,818 | 2020-12-18 | ||
US17/127,929 | 2020-12-18 | ||
US17/127,818 US11182264B1 (en) | 2020-12-18 | 2020-12-18 | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US17/127,929 US11182221B1 (en) | 2020-12-18 | 2020-12-18 | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202238378A TW202238378A (zh) | 2022-10-01 |
TWI792773B true TWI792773B (zh) | 2023-02-11 |
Family
ID=85460285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110147197A TWI792773B (zh) | 2020-12-18 | 2021-12-16 | 用於可重配置處理器即服務(RPaaS)的節點內基於緩衝器的串流 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI792773B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470485B1 (en) * | 2000-10-18 | 2002-10-22 | Lattice Semiconductor Corporation | Scalable and parallel processing methods and structures for testing configurable interconnect network in FPGA device |
US6667983B1 (en) * | 1999-05-27 | 2003-12-23 | 3Com Corporation | Scaleable priority arbiter for arbitrating between multiple FIFO entry points of a network interface card |
US20150100971A1 (en) * | 2013-10-03 | 2015-04-09 | International Business Machines Corporation | Acceleration prediction in hybrid systems |
TW201826122A (zh) * | 2016-12-31 | 2018-07-16 | 美商英特爾股份有限公司 | 用於異質計算之系統,方法,及設備 |
-
2021
- 2021-12-16 TW TW110147197A patent/TWI792773B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6667983B1 (en) * | 1999-05-27 | 2003-12-23 | 3Com Corporation | Scaleable priority arbiter for arbitrating between multiple FIFO entry points of a network interface card |
US6470485B1 (en) * | 2000-10-18 | 2002-10-22 | Lattice Semiconductor Corporation | Scalable and parallel processing methods and structures for testing configurable interconnect network in FPGA device |
US20150100971A1 (en) * | 2013-10-03 | 2015-04-09 | International Business Machines Corporation | Acceleration prediction in hybrid systems |
TW201826122A (zh) * | 2016-12-31 | 2018-07-16 | 美商英特爾股份有限公司 | 用於異質計算之系統,方法,及設備 |
Also Published As
Publication number | Publication date |
---|---|
TW202238378A (zh) | 2022-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625283B2 (en) | Inter-processor execution of configuration files on reconfigurable processors using smart network interface controller (SmartNIC) buffers | |
US11893424B2 (en) | Training a neural network using a non-homogenous set of reconfigurable processors | |
US11392740B2 (en) | Dataflow function offload to reconfigurable processors | |
US11182264B1 (en) | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
US11709664B2 (en) | Anti-congestion flow control for reconfigurable processors | |
WO2022173821A1 (en) | Instrumentation profiling for reconfigurable processors | |
EP4010793A1 (en) | Compiler flow logic for reconfigurable architectures | |
WO2022133047A1 (en) | Dataflow function offload to reconfigurable processors | |
TWI802332B (zh) | 可重組態處理器的資源分配 | |
TW202227979A (zh) | 用於檢測串流相容及廣播相容的資料存取型樣的編譯時邏輯 | |
TW202230129A (zh) | 用於檢測串流相容和廣播相容的資料存取型樣之編譯時邏輯 | |
TWI784845B (zh) | 對可重配置處理器之資料流功能卸載 | |
US20230229407A1 (en) | Compiler for a Fracturable Data Path in a Reconfigurable Data Processor | |
TWI792773B (zh) | 用於可重配置處理器即服務(RPaaS)的節點內基於緩衝器的串流 | |
CN115705213A (zh) | 封装条件分支操作 | |
WO2022133043A1 (en) | Runtime execution of configuration files on reconfigurable processors with varying configuration granularity | |
US20240069770A1 (en) | Multiple contexts for a memory unit in a reconfigurable data processor | |
US20240037063A1 (en) | Routing Method Based On A Sorted Operation Unit Graph For An Iterative Placement And Routing On A Reconfigurable Processor | |
US20240020264A1 (en) | Estimating a Scaled Cost of Implementing an Operation Unit Graph on a Reconfigurable Processor | |
CN118043815A (zh) | 调试数据流计算机架构 |