TW202215223A - 用於加速器的裝置及用於處理資料的方法 - Google Patents
用於加速器的裝置及用於處理資料的方法 Download PDFInfo
- Publication number
- TW202215223A TW202215223A TW110137785A TW110137785A TW202215223A TW 202215223 A TW202215223 A TW 202215223A TW 110137785 A TW110137785 A TW 110137785A TW 110137785 A TW110137785 A TW 110137785A TW 202215223 A TW202215223 A TW 202215223A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- accelerator
- virtual
- type
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明提供一種裝置,可包含:互連介面;記憶體系統,包含用以接收第一資料的一或多個第一類型記憶體裝置,用以接收第二資料的一或多個第二類型記憶體裝置;以及加速器,經組態以使用第一資料及第二資料來執行操作。記憶體系統可更包含經組態以快取一或多個第二類型記憶體裝置的第二資料的快取記憶體。裝置可包含:互連介面;記憶體系統,耦接至互連介面以接收資料;加速器,耦接至記憶體系統;以及虛擬化邏輯,經組態以將加速器的一或多個資源分割成一或多個虛擬加速器,其中一或多個虛擬加速器中的第一者可經組態以對資料的第一部分執行第一操作。
Description
本發明大體上是關於加速器裝置,且更特定而言,是關於具有虛擬化以及分層記憶體加速器的系統、方法以及裝置。
相關申請案的交叉參考
本申請案主張2020年10月12日申請的標題為「記憶體一致性互連件的系統、方法以及裝置(Systems, Methods, and Devices for Memory Coherent Interconnects)」的美國臨時專利申請案序列號63/090,710的優先權及權益,所述臨時專利申請案以引用的方式併入。
資料處理系統可使用一或多個加速器裝置以提高系統的輸送量。諸如機器學習工作負荷的一些資料處理工作負荷可涉及可使用大量記憶體的模型的使用。可跨越多個加速器裝置分割及散佈模型。模型的一部分可儲存於每一加速器裝置處,所述加速器裝置可針對模型的對應部分執行操作。
此背景技術章節中揭露的上述資訊僅用於增強對背景技術的理解且因此其可含有不構成先前技術的資訊。
一種裝置,可包含:互連介面;記憶體系統,包含耦接至互連介面以接收第一資料的一或多個第一類型記憶體裝置,耦接至互連介面以接收第二資料的一或多個第二類型記憶體裝置;以及加速器,耦接至一或多個第一類型記憶體裝置及一或多個第二類型記憶體裝置,且經組態以使用第一資料及第二資料來執行操作。記憶體系統可更包含經組態以快取一或多個第二類型記憶體裝置的第二資料的快取記憶體。一或多個第一類型記憶體裝置可包含一或多個堆疊式記憶體裝置,一或多個第二類型記憶體裝置可包含一或多個非揮發性記憶體裝置,且快取記憶體可包含一或多個揮發性記憶體裝置。裝置可更包含經組態以維持一或多個第一類型記憶體裝置中的至少一者的一致性的一致性引擎。裝置可更包含經配置以組態一或多個第一類型記憶體裝置與加速器之間的一或多個連接的記憶體開關。記憶體開關可經配置以組態一或多個第二類型記憶體裝置與加速器之間的一或多個連接。裝置可更包含經組態以在一或多個第一類型記憶體裝置與加速器之間交換第一資料的記憶體管理器。裝置可更包含耦接至記憶體系統且經組態以預處理第一資料的預處理器。裝置可為第一裝置,所述第一裝置可更包含經組態以經由互連介面與第二裝置交換第一資料的整合(reduce)引擎。
裝置可包含:互連介面;記憶體系統,耦接至互連介面以接收資料;加速器,耦接至記憶體系統;以及虛擬化邏輯,經組態以將加速器的一或多個資源分割成一或多個虛擬加速器,其中一或多個虛擬加速器中的第一者可經組態以對資料的第一部分執行第一操作。一或多個虛擬加速器中的第二者可經組態以對資料的第二部分執行第二操作。虛擬化邏輯可包含一或多個暫存器以基於經由互連介面接收的組態資訊而組態一或多個虛擬加速器。虛擬化邏輯可包含經組態以經由互連介面控制一或多個虛擬加速器與主機之間的資料流的流程控制邏輯。一或多個虛擬加速器中的第一者可經組態以經由互連介面接收一或多個操作參數,且基於一或多個操作參數而執行第一操作。一或多個操作參數可包含記憶體用途、相依性或時序資訊中的一或多者。裝置可更包含經組態以針對第一操作的一或多個部分排程記憶體系統的一或多個部分的記憶體管理器。記憶體管理器可經組態以基於記憶體存取模式而排程記憶體系統的一或多個部分。記憶體管理器可經組態以基於頻寬敏感度而判定記憶體系統的第一部分,且將資料自記憶體系統的第一部分導引至記憶體系統的第二部分。裝置可更包含經組態以將一或多個命令串流多工至一或多個虛擬加速器的排程器。
方法可包含:將模型分割成第一部分及第二部分;將模型的第一部分儲存於裝置的記憶體中;將模型的第二部分儲存於裝置的記憶體中;藉由裝置處的第一虛擬加速器使用模型的第一部分執行第一操作;以及藉由裝置處的第二虛擬加速器使用模型的第二部分執行第二操作。模型可包含圖形、機器學習模型或神經網路中的一或多者。分割模型可包含至少部分地藉由主機分割模型。分割模型可包含基於模型的第一部分的一或多個參數及第一虛擬加速器的一或多個參數分割所述模型。模型的第一部分的一或多個參數可包含記憶體用途或計算用途中的一或多者。第一虛擬加速器的一或多個參數可包含記憶體資源、計算資源或互連資源中的一或多者。分割模型可包含使模型的第一部分與第一進程位址空間相關聯,且使模型的第二部分與第二進程位址空間相關聯。方法可更包含基於模型的第一部分產生用於第一虛擬加速器的第一資料組。記憶體可包含第一類型的記憶體裝置及第二類型的記憶體裝置,所述方法可更包含針對第一類型的記憶體裝置及第二類型的記憶體裝置排程第一資料組的至少一部分。第一類型的記憶體裝置可包含用於第一虛擬加速器的工作記憶體。方法可更包含基於模型的第二部分產生用於第二虛擬加速器的第二資料組。記憶體可包含與第一虛擬加速器相關聯的第一類型的第一記憶體裝置、與第一虛擬加速器相關聯的第二類型的第一記憶體裝置,以及與第二虛擬加速器相關聯的第一類型的第二記憶體裝置。所述方法可更包含針對第一類型的第一記憶體裝置及第二類型的第一記憶體裝置排程第一資料組的至少一部分,及針對第一類型的第一記憶體裝置及第一類型的第二記憶體裝置排程第二資料組的至少一部分。
用於諸如圖形處理、機器學習(ML)及/或類似者的應用的一些模型可能太大而不能配合於加速器裝置的記憶體中。因此,可跨越多個加速器裝置分割及散佈模型。然而,此可增加主機與加速器裝置之間的資料傳送,此是因為加速器裝置可在其使用模型的不同部分處理輸入時將模型的不同部分交換至其記憶體中。
根據本揭露的實例實施例的一些加速器裝置可包含多層記憶體系統。舉例而言,第一層可包含可充當用於加速器的工作記憶體的高頻寬記憶體。第二層可包含可儲存模型中的一些或全部的高容量記憶體。取決於實施細節,此可減少將大模型的部分(及/或模型的輸入資料)移動至加速器裝置中的時間、成本、能量及/或類似者。
在一些實施例中,第二層可包含快取記憶體以改良儲存於高容量記憶體中的資料的更頻繁使用部分(例如,模型的更頻繁使用部分)的存取速度。取決於實施細節,此可減少記憶體的第二層的潛時,其又可改良加速器裝置在諸如可為潛時敏感的ML推斷的應用中的效能。
根據本揭露的實例實施例的一些加速器裝置可實施一或多個虛擬加速器。舉例而言,實體加速器(例如,處理器核心、工作記憶體、快取記憶體及/或類似物)的一或多個資源可分割成多個虛擬加速器,所述虛擬加速器中的每一者可作為單獨加速器呈現給主機或其他裝置。取決於實施細節,此可使得加速器裝置能夠實施模型、資料及/或工作負荷平行性。
一些實施例可包含記憶體開關及/或記憶體管理器。舉例而言,記憶體開關可將實體連接組態至各種類型的記憶體、自各種類型的記憶體組態實體連接及/或在各種類型的記憶體之間組態實體連接,所述實體連接可用於第一記憶體層、第二記憶體層、快取記憶體及/或類似物,而記憶體管理器可管理記憶體裝置之間及/或加速器裝置與主機及/或其他裝置之間的資料移動。在一些實施例中,記憶體管理器可基於一或多個習得記憶體存取模式而控制資料移動。
在一些實施例中,各種控制量可例如經由一或多個暫存器及/或應用程式設計介面(application programming interface;API)提供至使用者及/或應用程式,所述暫存器及/或應用程式設計介面可判定虛擬加速器之間的資源的分配、多層記憶體系統中的記憶體資源的分配及/或類似者。
在一些實施例中,工作流程及/或諸如圖形、機器學習模型、神經網路及/或類似者的模型可能分配於根據本揭露的實例實施例的多個加速器裝置及/或虛擬加速器之間。舉例而言,主機可基於模型的部分的記憶體要求及/或計算時間以及虛擬加速器的記憶體資源及/或核心來在虛擬加速器之間分割模型。在一些實施例中,基於所述分割,主機可產生具有待由虛擬加速器執行且由記憶體管理器排程的資料組的群集圖形。
本文中所揭露的原理具有獨立效用,且可單獨地實施,且並非每一實施例皆可利用每一原理。然而,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式放大個別原理的益處。舉例而言,一些加速器裝置可在無虛擬加速器的情況下實施多層記憶體系統,且其他加速器可在無分層記憶體的情況下實施虛擬加速器。然而,一些實施例可在同一裝置中實施多層記憶體系統及虛擬加速器,其取決於實施細節可放大兩個特徵的個別益處。
圖1示出根據本揭露的實例實施例的用於分析平行處理操作的構架的實施例。圖1中所示出的構架可用於例如分析圖形處理及/或深度學習(deep learning;DL)應用(例如,深度神經網路(deep neural network;DNN)),其中DL模型的計算及/或部分可跨越諸如加速器裝置(例如,多個神經處理單元(neural processing unit;NPU))的多個機器分佈。在圖1中所示出的實施例中,模型103可跨越多個機器機器1至機器4拆分,如下文所描述。
舉例而言,使用具有大模型的一或多個加速器裝置可為困難的,舉例而言,此是因為模型的僅一小部分及/或模型的輸入資料可配合於加速器裝置的工作記憶體中。因此,使用加速器裝置來執行計算可涉及以下操作:(1)經訓練模型的部分可移動至加速器的工作記憶體;(2)用於計算的一或多個輸入(例如,一或多個向量)可移動至加速器裝置的工作記憶體;(3)加速器裝置可使用一或多個輸入及經訓練模型的部分來執行計算;以及(4)加速器裝置可將計算的一或多個結果儲存於工作記憶體中及/或將一或多個結果發送至主機或其他裝置。此外,為了針對模型的不同部分執行計算,可重複操作(1)至操作(4)。
參考圖1,根據本揭露的實例實施例,各種類型的平行性可用於減少處理時間。舉例而言,資料平行性可涉及跨越多個機器(例如,加速器裝置)拆分工作負荷的資料。在一些實施例中,資料平行性可減少處理時間(例如,訓練及/或推斷時間)。然而,取決於實施細節,資料平行性可計算受限(例如,受計算資源的量限制),且因此,若達至計算極限,則處理時間可增加。
模型平行性可涉及跨越多個機器(例如,加速器裝置)拆分模型,所述機器中的每一者可處理模型的特定部分的資料。在一些實施例中,模型平行性可減少處理時間,然而,取決於實施細節,模型平行性可記憶體受限(例如,受記憶體資源的量限制)。舉例而言,大DL模型可致使具有模型平行性的系統達至記憶體極限。
工作負荷分割可涉及跨越多個機器(例如,加速器裝置)拆分工作負荷(例如,資料及模型)。在一些實施例中,工作負荷分割可減少處理時間。舉例而言,在較大批量的情況下,處理器核心利用率及/或準確度可得以改良及/或訓練時間可得以減少。然而,取決於實施細節,工作負荷分割可記憶體受限及/或計算受限。舉例而言,大DL模型可使得具有模型平行性的系統達至記憶體極限,在此情況下,可未充分利用計算資源(例如,處理器核心)。
在上文所描述的平行性類型中的任一者的情況下,影響系統效能的記憶體因素可基於機器學習模型的寬度及/或深度、資料批量大小及/或輸入品質及/或其類似者。移動資料就時間、能量及/或類似者而言可為昂貴的。添加額外機器對於具有大計算要求的工作負荷可為有效的,但機器可能未充分利用記憶體受限工作負荷(且因此昂貴)。此外,在一些實施例中,在超標化環境中實施平行性可對推斷工作負荷及/或低潛時工作負荷作出強調。舉例而言,可離線執行一些訓練工作負荷,其中相對較高的潛時可為可接受的。然而,線上(例如,即時)ML工作負荷可對潛時更敏感,不管批量大小如何。舉例而言,在諸如行動影像辨識的小批量大小推斷工作負荷的情況下,使用者可期望快速結果。類似地,在諸如語言處理、影像搜尋及/或商業及/或社交媒體的建議的大批量推斷工作負荷的情況下,使用者亦可期望快速結果。
圖2示出根據本揭露的實例實施例的具有分層記憶體的裝置的實施例。圖2中所示出的裝置200可包含互連介面202、記憶體系統204以及加速器206。記憶體系統204可包含第一記憶體層208及第二記憶體層210。第一記憶體層208可至少部分地藉由第一類型記憶體實施,且第二記憶體層210可至少部分地藉由第二類型記憶體實施。記憶體系統204及加速器206可經由互連件212與互連介面202通信。加速器206可經由第一記憶體介面214存取第一類型的記憶體208。加速器206可經由第二記憶體介面216存取第二類型的記憶體208。
在一些實施例中,第一記憶體層208中的第一類型記憶體可藉由可提供相對高頻寬的一或多種類型的記憶體實施。因此,第一記憶體層208可被稱為頻寬增強型記憶體。舉例而言,第一類型記憶體可藉由高頻寬記憶體(high bandwidth memory;HBM)實施,所述高頻寬記憶體可包含記憶體裝置的一或多個堆疊、一或多個***件以及一或多個點對點互連件。作為另一實例,第一類型記憶體可藉由動態隨機存取記憶體(dynamic random access memory;DRAM)實施,諸如任一代雙資料速率(double data rate;DDRX)DRAM,其中X可指示一代(例如,DDR2、DDR3、DDR4等)低功率雙資料速率(LPDDRX)DRAM及/或類似者。其他實例可包含同步DRAM(SDRAM)、靜態隨機存取記憶體(static random access memory;SRAM)及/或類似者。在一些實施例中,第一記憶體層208可包含不同記憶體類型的組合。在一些實施例中,可針對記憶體系統204內的頻寬最佳化第一記憶體層208。
在一些實施例中,第二記憶體層210中的第二類型記憶體可藉由可提供相對高容量的一或多種類型的記憶體實施。因此,第二記憶體層210可被稱為容量增強型記憶體。舉例而言,第二類型記憶體可藉由非揮發性記憶體實施,所述非揮發性記憶體可包含:快閃記憶體,諸如反及(NAND)快閃記憶體;低潛時NAND快閃記憶體;持續記憶體(persistent memory;PMEM),諸如交叉網格非揮發性記憶體;具有體電阻變化的記憶體;相變記憶體(phase change memory;PCM);及/或類似者;或其任何組合。在一些實施例中,可針對記憶體系統204內的容量最佳化第二記憶體層。
在一些實施例中,記憶體系統204可包含經配置以快取第一記憶體層208及/或第二記憶體層210的資料的快取記憶體218。快取記憶體218可例如藉由諸如DRAM、SRAM及/或類似者的相對低潛時記憶體實施。在一些實施例中,快取記憶體218可為第二記憶體層210的部分。因此,第二記憶體層210可被稱為潛時增強型記憶體。在一些實施例中,可針對記憶體系統204內的潛時最佳化第二記憶體層。
圖2中所示出的裝置200可用於實施廣泛多種應用。舉例而言,在一些實施例中,裝置200可用於ML訓練及/或推斷(例如,DL及/或DNN)、語音辨識、語言處理、影像辨識、圖形處理、產生推薦及/或其類似者。在一些實施例中,第一記憶體層208可經組態為可充當加速器的工作記憶體的高頻寬記憶體,且第二層可210經組態為可儲存諸如圖形或ML模型的模型中的一些或全部的低潛時高容量記憶體(例如,使用快取記憶體218)。取決於實施細節,此可減少將模型的部分(及/或模型的輸入及/或輸出資料)移動至加速器裝置中的時間、成本、能量及/或類似者,改良第一及/或第二記憶體層的一或多個部分的存取速度,減少一或多個加速器操作的潛時,及/或類似者。
互連介面202及/或互連件212可例如藉由任何類型的介面及/或協定中的一或多者實施,包含周邊組件高速互連(Peripheral Component Interconnect Express;PCIe)、非揮發性記憶體高速(Nonvolatile Memory Express;NVMe)、網狀架構上NVMe(NVMe-oF)、進階可擴展介面(Advanced eXtensible Interface;AXI)、超路徑互連(Ultra Path Interconnect;UPI)、乙太網路、傳輸控制協定/網際網路協定(Transmission Control Protocol/Internet Protocol;TCP/IP)、遠端直接記憶體存取(remote direct memory access;RDMA)、經由彙聚乙太網路的RDMA(RDMA over Converged Ethernet;ROCE)、光纖通道(FibreChannel)、無線頻帶(InfiniBand)、串列ATA(SATA)、小電腦系統介面(Small Computer Systems Interface;SCSI)、串列附接的SCSI(Serial Attached SCSI;SAS)、iWARP及/或類似者,或其任何組合。在一些實施例中,互連介面202可藉由一或多個記憶體語義及/或記憶體一致性介面及/或協定實施,諸如計算高速鏈路(Compute Express Link;CXL),及/或CXL.mem、CXL.io及/或CXL.cache、Gen-Z、一致性加速器處理器介面(Coherent Accelerator Processor Interface;CAPI)、用於加速器的快取一致性互連(Cache Coherent Interconnect for Accelerator;CCIX),及/或類似者,或其任何組合。
記憶體介面214及記憶體介面216可例如藉由任何類型的介面中的一或多者實施,包含:DDRX、LPDDRX、開放記憶體介面(Open Memory Interface;OMI)、NVLink、高頻寬記憶體(HBM)、HBM2、HBM3,及/或上文所提及的包含CXL的互連介面及/或協定中的任一者。記憶體介面214及記憶體介面216可藉由一致性及/或非一致性介面實施。舉例而言,非一致性記憶體介面可用於第一記憶體層208與加速器206之間的記憶體介面214,而一致性介面可用於第二記憶體層210與加速器206之間的記憶體介面216。
互連介面202、互連件212以及記憶體介面214及記憶體介面216中的一或多者可實施為單獨組件或整合至互連網狀架構中,例如,使用一或多個開關以組態示出於圖2中的組件之間的連接。
加速器206可藉由可包含適合於加速器的一或多個處理資源的任何類型的裝置實施,例如圖形處理單元(graphics processing unit;GPU)、神經處理單元(neural processing unit;NPU)、張量處理單元(tensor processing unit;TPU)、基於組合邏輯的加速器、順序邏輯、一或多個計時器、計數器、暫存器、狀態機、複雜可程式化邏輯裝置(complex programmable logic device;CPLD)、場可程式化閘陣列(field programmable gate array;FPGA)、特定應用積體電路(application specific integrated circuit;ASIC)、諸如複雜指令集電腦(complex instruction set computer;CISC)處理器(諸如x86 處理器)及/或精簡指令集電腦(reduced instruction set computer;RISC)處理器(諸如ARM處理器)的中央處理單元(CPU),及/或類似者,或其任何組合。
裝置200可以任何實體及/或電氣組態及/或外觀尺寸實施,諸如獨立式設備、諸如PCIe配接器或擴充卡的***卡、例如可***至伺服器底盤的連接器及/或槽(例如,底板及/或伺服器或其他設備的中平面上的連接器)中的***式裝置,及/或類似者。在一些實施例中,裝置200可使用用於互連介面202的任何連接器組態以用於諸如3.5吋、2.5吋、1.8吋、M.2、企業及資料中心SSD外觀尺寸(EDSFF)、NF1及/或其類似者的儲存裝置的外觀尺寸實施,所述連接器組態諸如SATA連接器、SCSI連接器、SAS連接器、M.2連接器、U.2連接器、U.3連接器及/或類似者。本文中所揭露的裝置中的任一者可完全或部分地與下述者一起實施及/或與下述者結合使用:伺服器底盤、伺服器機架、資料機房、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合。在一些實施例中,裝置200可實施為CXL類型1裝置、CXL類型2裝置、CXL類型3裝置及/或類似者。
圖3示出根據本揭露的實例實施例的具有加速器虛擬化的裝置的實施例。圖3中所示出的裝置300可包含可類似於上文關於圖2所描述的互連介面302、記憶體系統304、加速器306以及互連件312,但記憶體系統304可或可不實施分層記憶體結構且可替代地在任何組態中使用任何類型的記憶體或其組合。加速器306可經由任何類型的一或多個記憶體介面315介接至記憶體系統304。
裝置300亦可包含虛擬化邏輯320,所述虛擬化邏輯320可將加速器306的一或多個資源分割成一或多個虛擬加速器306-1……306-N。可被分割的加速器資源可包含處理資源(例如,處理器核心)、暫存器、記憶體資源、互連資源及/或類似者。舉例而言,在一些實施例中,虛擬化邏輯320可將加速器306的一或多個實體處理器核心分配至虛擬加速器306-1……虛擬加速器306-N中的一或多者。虛擬化邏輯320亦可將來自記憶體系統304的記憶體的一部分分配至虛擬加速器306-1……虛擬加速器306-N中的一或多者。在記憶體系統304藉由階層實施的實施例中,虛擬化邏輯可將來自每一層的記憶體的一部分分配至虛擬加速器306-1……虛擬加速器306-N中的一或多者。在記憶體層可包含快取記憶體的實施例中,快取記憶體的一部分可分配至虛擬加速器306-1……虛擬加速器306-N中的一或多者。
在一些實施例中,虛擬化邏輯320亦可將諸如埠的單獨互連資源分配至虛擬加速器306-1……虛擬加速器306-N中的一或多者。
取決於實施細節,虛擬加速器306-1……虛擬加速器306-N中的一或多者可作為單獨加速器呈現給主機或其他裝置。舉例而言,虛擬加速器306-1……虛擬加速器306-N中的每一者可實施為具有單獨裝置標識符(ID)的單獨端點。在一些實施例中,虛擬加速器可藉由將裝置300實施為多頭裝置而實施為分離的端點,其中虛擬加速器306-1……虛擬加速器306-N中的每一者可具有單獨埠。
虛擬加速器306-1……虛擬加速器306-N可藉由虛擬加速器之間的各種孤立量實施。舉例而言,在一些實施例中,用於每一虛擬加速器的所有資源(例如,處理器核心、記憶體、埠及/或類似者)可完全獨立,使得個別虛擬加速器可不競爭資源,及/或每一虛擬加速器可不污染任何其他虛擬加速器的記憶體(例如,快取記憶體)。作為另一實例,在一些實施例中,一或多個資源(例如,互連埠、快取記憶體的部分及/或類似者)可部分地或完全在虛擬加速器之間共用。
在一些實施例中,虛擬化邏輯320可為可程式化的,例如,使用可由使用者或應用程式經由互連介面302存取(例如,使用API)的一或多個暫存器322。舉例而言,虛擬化邏輯320可經程式化以組態第一虛擬加速器306-1對經由互連介面302接收且儲存於記憶體系統304中的資料的第一部分執行第一操作。虛擬化邏輯320可經進一步程式化以組態第二虛擬加速器306-2以經由互連介面302接收且儲存於記憶體系統304中的資料的第二部分執行第二操作。在一些實施例中,資料的第一部分及第二部分可儲存於記憶體系統304的分離部分中,所述分離部分可分配至分離的虛擬加速器306-1及虛擬加速器306-2。
根據本揭露的實例實施例的具有加速器虛擬化的裝置可在廣泛多種應用中使用。舉例而言,在一些實施例中,模型(例如,圖形、ML模型及/或類似者)可分割成可各自分配給虛擬加速器以實施模型平行性的部分。取決於實施細節,此可使得相對大模型能夠跨越多個虛擬加速器有效地實施。此外,根據本揭露的實例實施例的虛擬加速器的使用可減少或消除記憶體界限限制,尤其在虛擬加速器結合根據本揭露的實例實施例的分層記憶體系統實施的情況下。
出於說明本揭露的原理的目的,下文在系統、方法及/或裝置的上下文中描述一些實例實施例,所述系統、方法及/或裝置可使用特定實施細節,諸如CXL互連件及/或協定、CXL類型2裝置、用於快取的DRAM、用於容量增強型記憶體的快閃記憶體、用於加速器的NPU、DL及/或圖形模型,及/或其他實施細節。然而,原理不限於此等實例實施細節,且可應用於可使用任何其他互連件、協定、記憶體類型、裝置類型、加速器、模型及/或類似者的實施例。
圖4A示出根據本揭露的實例實施例的主機的實例實施例。圖4B示出根據本揭露的實例實施例的具有分層記憶體及虛擬加速器的裝置的實例實施例。圖4A及圖4B共同地示出根據本揭露的實例實施例的系統的實例實施例且統稱為圖4。圖4中所示出的實施例可例如用於實施上文關於圖2及圖3所描述的實施例中的任一者(包含其特徵中的一或多者)。
參考圖4,系統可包含可經由互連件430通信的裝置400及主機424。在一些實施例中,系統可更包含可經由如圖4中所繪示的網路431及網路介面432與主機424通信的遠端儲存器426,但在其他實施例中,遠端儲存器426可以任何其他方式連接至系統,例如經由諸如互連件430的一或多個互連件使用開關而連接至系統。
裝置400可包含具有頻寬增強型記憶體408及潛時增強型記憶體410的分層記憶體系統404,所述潛時增強型記憶體410可包含容量增強型記憶體417及快取記憶體418。頻寬增強型記憶體408可至少部分地藉由諸如LPDDRX裝置及/或HBM裝置的一或多個頻寬增強型點對點記憶體裝置實施,所述頻寬增強型點對點記憶體裝置可包含記憶體晶粒與***件的堆疊。潛時增強型記憶體410可至少部分地藉由諸如低潛時NAND記憶體及DRAM快取記憶體418的容量增強型記憶體417實施。
裝置400亦可包含一或多個加速器406,在此實例中,所述加速器406可實施為NPU。NPU 406可藉由虛擬化邏輯420分割成一或多個虛擬NPU 406-1……406-N,所述虛擬化邏輯420可例如使用一或多個暫存器422而程式化。虛擬化邏輯420可例如以類似於上文關於圖3所描述的虛擬化邏輯320的方式操作。
參考圖4,虛擬NPU 406-1……虛擬NPU 406-N可經由諸如DDRX及/或NVLINK的非一致性記憶體介面414介接至頻寬增強型記憶體408。虛擬NPU 406-1……虛擬NPU 406-N可經由諸如CXL的一致性介面416介接至潛時增強型記憶體410。儘管記憶體介面414及記憶體介面416繪示為分離的介面,但在一些實施例中,其可例如整合為記憶體介面網狀架構。在一些實施例中,頻寬增強型記憶體408中的一些或全部可充當用於NPU 406及/或虛擬NPU 406-1……虛擬NPU 406-N中的一或多者的工作記憶體。
裝置400亦可包含互連介面402,在此實例中,所述互連介面402可實施為CXL介面且使用CXL.io協定介面434、CXL.cache協定介面436及/或CXL.mem協定介面438。裝置一致性(device coherency;DCOH)引擎440(例如,一致性代理)可解析裝置處的一或多個快取記憶體的一致性及/或管理一或多個CXL偏壓狀態。
在一些實施例中,裝置400亦可包含記憶體開關448。在一些實施例中,記憶體開關448可將實體連接組態至各種類型的記憶體、自各種類型的記憶體組態實體連接及/或在各種類型的記憶體之間組態實體連接,所述實體連接可用於第一層記憶體、第二層記憶體、快取記憶體及/或類似物。儘管記憶體開關448繪示為單個組件,但在一些實施例中,其可藉由記憶體開關448的一或多個部分以分佈方式實施,所述記憶體開關448位於分層記憶體系統404的組件中的任一者、NPU 406的任何組件及/或類似者內及/或之間,例如如藉由圖4中的記憶體開關448、分層記憶體系統404以及NPU 406之間的交疊所示。因此,在一些實施例中,記憶體開關448及/或分層記憶體系統404的任何組件及/或NPU 406可形成記憶體網狀架構,其中記憶體開關448可充當記憶體網狀架構管理器。在一些實施例中,記憶體管理器可使用諸如環形、機械(mech)、點對點及/或類似者的拓樸來實施一或多個記憶體組態。
在一些實施例中,記憶體開關448可例如藉由應用程式經由API程式化,以組態記憶體開關448,及/或分層記憶體系統404及/或NPU 406的任何組件。舉例而言,程式設計師可知曉在NPU 406上執行的特定工作負荷,或虛擬NPU 406-1……虛擬NPU 406-N中的一者可需要或受益於特定量的快取記憶體418。因此,程式設計師(例如,經由應用程式)可程式化記憶體開關(例如,經由API)以將特定量的快取記憶體組態至NPU 406或虛擬NPU 406-1……虛擬NPU 406-N中的一者。
在一些實施例中,裝置400亦可包含記憶體管理器450。記憶體管理器450可管理分層記憶體系統404內、分層記憶體系統404的任何組件與NPU 406之間、分層記憶體系統404的任何組件與主機及/或其他裝置之間及/或類似者的資料移動。因此,記憶體開關448可組態記憶體及其他資源的實體配置,而記憶體管理器450可管理經組態記憶體配置內的資料移動。在一些實施例中,記憶體開關448及記憶體管理器450可基於如例如由記憶體存取模式分析器452判定的一或多個所觀測或習得的記憶體存取模式而組態記憶體及/或控制資料移動。在一些實施例中,記憶體管理器450可實施一或多個快取演算法及/或快取策略。
在一些實施例中,裝置400亦可包含一或多個預處理器442、一或多個輸入及/或輸出(I/O或IO)引擎444,及/或一或多個壓縮及/或解壓邏輯446。預處理器可執行可準備資料以供NPU 406及/或一或多個虛擬NPU 406-1……406-N處理的任何功能。舉例而言,預處理可用於資料清洗(例如,消除雜訊、遺失或空值的填充及/或類似者)、資料變換(例如,標準化、正規化、特徵選擇及/或類似者)、資料組織、資料簡化(例如,聚合、數目減少、降維及/或類似者)及/或類似者。
IO引擎444可實施一或多個IO相關功能,諸如資料重複刪除、資料集的全部或一部分的卸載預處理(例如,至預處理器442)及/或類似者。壓縮及/或解壓邏輯446可幫助藉由在將資料向外發送之前壓縮資料及/或在經由互連介面402接收資料之後解壓資料而改良互連介面402的有效頻寬。
在一些實施例中,裝置400亦可包含可執行與全整合操作相關聯的一或多個操作的全整合引擎454。舉例而言,全整合引擎454可幫助排程NPU、裝置及/或類似者之間的資料(例如,張量、來自NPU的更新及/或類似者)的轉移。
一些實施例可包含各種組件中的任一者之間的一或多個內部互連件,其一些實例在圖4中識別為456a及456b(其可統稱為456)。內部互連件456中的任一者可藉由任何類型的匯流排、點對點連接及/或類似者實施。在一些實施例中,一或多個內部互連件456可藉由PCIe、NVLink、AXI及/或類似者實施。在一些實施例中,內部互連件456中的一或多者可藉由封包處理實施(例如,以增加圖4中所示出的組件中的任一者內及/或之間的資料移動的頻寬)。可例如使用一或多個晶片上網路(network on chip;NOC)裝置實施封包處理以對內部互連件456中的任一者執行封包處理。
主機424可包含具有介面(例如,CXL)控制器460、記憶體控制器462以及內部快取記憶體464的CPU 458。記憶體控制器462可控制快取記憶體464及/或一或多個主機(例如,系統)記憶體466。在一些實施例中,快取記憶體可藉由SRAM實施,且主機記憶體466可藉由DRAM實施。
主機424可包含互連介面428,在此實例中,所述互連介面428可實施為CXL介面且使用CXL.io、CXL.cache及/或CXL.mem協定中的一或多者。
主機424亦可包含本端儲存器468,所述本端儲存器468可例如藉由基於任何類型的記憶體及/或儲存媒體的任何類型的儲存裝置實施,儲存媒體包含固態媒體、磁性媒體、光學媒體及/或類似者。
主機424亦可包含網路介面432,所述網路介面432可提供對遠端儲存器426及/或任何其他系統、主機、裝置及/或類似者的存取。網路介面432可例如實施為網路介面卡(network interface card;NIC),所述網路介面卡可使用任何合適的網路連接介面及/或協定,包含乙太網路、TCP/IP、RDMA、ROCE及/或包含上文所提及的彼等的任何其他介面及/或協定。遠端儲存器426可例如藉由基於任何類型的記憶體及/或儲存媒體的任何類型的儲存裝置實施,所述記憶體及/或儲存媒體包含固態媒體、磁性媒體、光學媒體及/或類似者,且組態於伺服器底盤、伺服器機架、資料機房、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合中。
CPU 458、本端儲存器468及/或網路介面432可例如經由系統匯流排470通信。
主機424亦可包含加速器(例如,NPU)虛擬化邏輯472,所述加速器虛擬化邏輯472可在裝置400處與虛擬化邏輯420協同工作,以分割、管理及/或使用一或多個虛擬NPU 406-1……406-N。主機側虛擬化邏輯472及/或裝置側虛擬化邏輯420中的任一者可以硬體、軟件或其組合實施。舉例而言,在一些實施例中,裝置側虛擬化邏輯420可主要以硬體實施以將與NPU 406相關聯的資源分割成一或多個虛擬NPU 406-1……406-N,而主機側虛擬化邏輯472可主要以軟體實施,例如至少部分地以裝置400的裝置驅動程式實施及/或至少部分地以一或多個應用程式474實施。在一些實施例中,主機側虛擬化邏輯472中的裝置驅動程式可經由API自應用程式474接收一或多個命令,以在裝置側虛擬化邏輯420中程式化一或多個暫存器422以建立、管理及/或使用虛擬NPU 406-1……406-N中的一或多者。
在一些實施例中,裝置側虛擬化邏輯420及/或主機側虛擬化邏輯472(其可統稱為虛擬化邏輯)可為虛擬NPU 406-1……406-N中的一或多者提供流程控制。在一些實施例中,流程控制可判定每一虛擬NPU可在虛擬NPU與主機424之間的一定量的頻寬處飽和(例如限於一定量的頻寬)。在一些實施例中,流程控制可在每分區(例如,每虛擬NPU)基礎上提供。此可被稱為空間多工,其可跨越多個虛擬NPU實施某種形式的平行性。
在一些實施例中,虛擬化邏輯可包含硬體及/或軟體排程器423以識別可在虛擬NPU當中多工的命令串流。此可被稱為時間多工及/或排程。
在一些實施例中,時間多工可與空間多工組合。舉例而言,十個不同命令串流可跨越十個不同虛擬NPU而時間多工化以呈現100個不同NPU的外觀。取決於實施細節,時間及/或空間多工可例如基於每一虛擬NPU可具有的資源的量而分佈於虛擬NPU當中。
在一些實施例中,網路介面432及/或遠端儲存器426可起始至分層記憶體系統404的DMA異動。對於此類異動,資料路徑可穿過網路介面432、CXL 控制器460、主機側互連介面428、互連件430(使用CXL.io)協定、裝置側互連介面402以及記憶體開關448。
在處理DMA異動時,記憶體開關448可使用一或多個佇列,所述一或多個佇列可與用於CXL異動(例如,用於使用微片的向量轉移)的一或多個佇列分離。分離的隊列的使用可避免可由經由CXL.mem及/或CXL.cache介面自主機接收請求同時經由CXL.io執行批量轉移(例如,DMA)而導致的衝突,某一實施例可針對DMA及/或CXL轉移實施優先級的系統。
在一些實施例中,實體位址範圍的清單可例如由遠端伺服器維持,以幫助經由網路介面432使用一或多個DMA引擎起始同級RDMA請求。可針對諸如裝置400的一或多個裝置及/或每一裝置內的任何虛擬NPU或其他加速器維持位址範圍。
為了執行至NPU 406的DMA轉移,起始裝置可在裝置400中使用目的地(例如,目標)緩衝器。因此,在一些實施例中,記憶體管理器450可針對DMA轉移分配一或多個目標緩衝器位置。
在一些實施例中,CXL介面402可使用可自分層記憶體系統404的一或多個部分分配的受主機管理的裝置記憶體(HDM)來實施CXL.io、CXL.mem及/或CXL.cache能力。舉例而言,藉由主機424使用CXL轉移至裝置400的資料可置放於記憶體的HDM區中。在一些實施例中,主機424可不知曉裝置400處的除HDM記憶體外的任何其他記憶體。舉例而言,暴露於主機424的一或多個記憶體區可由基礎位址暫存器(base address register;BAR)中的一或多個開始及/或結束位址指示。舉例而言,在第二記憶體層410中具有總共1TB記憶體的裝置400中,1TB中的僅10GB可作為HDM暴露於主機424。
裝置400的組件及/或能力中的任一者或所有可藉由固件的輔助而組態、管理、操作、實施及/或類似者,所述固件可例如在裝置400上的RISC處理器核心上執行。舉例而言,在一些實施例中,裝置400處的固件可判定分層記憶體系統404的多少及/或哪一類型的記憶體暴露於主機424(例如,作為HDM)及/或哪些裝置能力暴露於主機424。此等判定可例如基於裝置400處可用的全部資源、可致力於其他用途的資源及/或類似者。
在裝置400實施為CXL類型2裝置的實施例中,I/O異動可使用位址轉譯服務(ATS)遵循任一代PCIe協定。舉例而言,對於裝置400請求存取主機記憶體466(例如,使用CXL.cache),裝置400可使用ATS來作出請求,此是因為裝置400可不知曉主機記憶體466中的對其作出請求的實際實體位址。舉例而言,ATS可使用輸入輸出記憶體管理單元(input-output memory management unit;IOMMU)及/或裝置側轉譯後備緩衝器(device-side translation lookaside buffer;DTLB)在CXL 控制器460中實施,所述裝置側轉譯後備緩衝器可快取一或多個位址轉譯。在一些實施例中,此可使得裝置400能夠按需求自主機記憶體466(例如,使用CXL.cache)及/或遠端儲存器426拉取資料。
主機424亦可包含記憶體存取模式分析器452,其可監視及/或分析貫穿系統的記憶體存取,包含在分層記憶體系統404、NPU 406及/或虛擬NPU 406-1……虛擬NPU 406-N中的一或多者內及其之間,以判定可用於例如組態分層記憶體系統404、NPU 406及/或類似者的一或多個組件以用於更高效操作的一或多個記憶體存取模式。在一些實施例中,記憶體存取模式分析器452可使用一或多種ML技術以識別一或多個記憶體存取模式。
主機424可執行與一或多個NPU及/或可由裝置400實施的其他類型的加速器的使用相關的任何類型的應用程式474。舉例而言,主機424可執行可使用裝置400來實施圖形處理的一或多個應用程式、ML構架(包含諸如TensorFlow、PyTorch的一或多個DL構架)及/或類似者。
如上所述,使用具有大模型的一或多個加速器裝置可為困難的,舉例而言,此是因為模型的僅一小部分及/或模型的輸入資料可配合於加速器裝置的工作記憶體中。取決於實施細節,添加足夠的額外工作記憶體以保持整個模型可能過分地昂貴,例如,就經濟成本、空間、功率消耗及/或類似者而言。因此,使用具有大模型的一或多個加速器裝置可涉及至主機及/或自主機的昂貴資料轉移以將模型的不同部分交換至加速器裝置的工作記憶體中。
然而,在一些實施例中,圖4中所示出的系統可用於例如藉由使用第二記憶體層410中的容量增強型記憶體417來實施大DL模型(例如,大DNN模型),所述容量增強型記憶體417為諸如快閃記憶體(例如,低潛時NAND記憶體),其可取決於實施細節用於就經濟、空間、功率消耗及/或類似者而言以可接受成本保持整個DL模型。因此,系統可減少或消除與使用具有DL模型的加速器裝置相關聯的資料轉移。
此外,潛時增強型記憶體410中的快取記憶體418(例如,DRAM)的使用可補償快閃記憶體的潛在潛時問題(例如,資料可自第二記憶體層410快速移動至第一記憶體層408)。
此外,系統可使得能夠使用多種技術來實施根據本揭露的實例實施例的DL模型。舉例而言,CXL可與PCIe結合使用,且因此,系統及/或裝置400可能夠取決於特定情形而在PCIe與CXL轉移之間選擇。舉例而言,經由PCIe的直接記憶體存取(DMA)可以4KB粒度使用以例如在用於推斷的經訓練模型之前將大型經訓練模型轉移至第二記憶體層(潛時增強型及/或容量增強記憶體)410中。此可被稱為將模型置放於NPU 406後方。在一些實施例中,PCIe轉移可使用CXL.io協定實施,其取決於實施細節可基本上作為PCIe操作。
用於模型的運行時間輸入資料可例如經由網路介面432在主機424處接收。輸入資料可自主機424轉移至NPU 406的工作記憶體(例如,頻寬增強型記憶體的第一記憶體層408),因此NPU 406可使用模型處理輸入資料。儘管PCIe可不提供一致性,但其仍可用於例如藉由將輸入資料推送至工作記憶體中且隨後通知NPU 406所述資料可用而將輸入資料(例如,DL向量)轉移至工作記憶體中。(為簡單起見,在一些實施例中,NPU 406及/或虛擬NPU 406-1……虛擬NPU 406-N中的任一者可統稱為NPU 406。)
作為另一實例,CXL可用於將輸入資料自主機424轉移至工作記憶體408。在一些實施例中,使用CXL來轉移輸入資料(例如,DL向量)的潛在優勢在於CXL的一致性可允許資料例如按需求藉由NPU 406(及/或虛擬NPU 406-1……虛擬NPU 406-N中的任一者)以被動方式轉移。舉例而言,因為NPU 406、工作記憶體408及/或主機424可處於同一一致性域中,且因此,當NPU 406可使用快取線以繼續工作時,其可作出快取線請求。此外,CXL可提供較小粒度資料轉移(例如,64B微片)。取決於實施細節,此可減少或消除不必要的資料轉移及/或實現更高效資料轉移。
在一些實施例中,快取記憶體418可藉由硬體控制、軟體控制或其組合來實施。舉例而言,在一些實施例中,快取記憶體418中的一些或全部的控制可由具有極少或無軟體控制的硬體微架構來判定。快取記憶體418的硬體控制可為有益的,例如在資料具有良好空間及/或時序局部性的情況下,在此情況下,將控制工作卸載至硬體可更高效。快取記憶體418的硬體控制亦可藉由小粒度資料轉移而為有益的,此是因為軟體可能難以由於與控制快取記憶體418相關聯的軟體開銷而遷移小部分資料。在基於硬體的快取的情況下,快取記憶體418可對NPU 406透明,例如,NPU 406可僅看見容量增強型記憶體417(例如,NAND快閃記憶體),但益處為藉由快取記憶體418的更快記憶體(例如,DRAM)提供的減少的潛時。
作為另一實例,在一些實施例中,可主要經由軟體控制快取記憶體418。舉例而言,快取記憶體418的軟體控制可使得程式設計師能夠(例如,經由應用程式)控制哪些輸入資料向量預取至快取記憶體中,儲存於NAND快閃記憶體中的模型的哪一部分預取至快取記憶體中,及/或類似者。快取記憶體418的軟體控制可為有益的,例如,在資料不具有空間及/或時序局部性的情況下(例如,藉由串流資料存取),在此情況下,程式設計師可能夠作出關於快取哪些資料的較佳決策。此外,在大粒度資料轉移的情況下,軟體開銷可較小且因此,向程式設計師及/或應用程式提供在何處置放及/或移動資料的較大控制可為有益的。
在一些實施例中,記憶體開關448及/或記憶體管理器450可實施硬體智慧以識別熱資料(例如,頻繁使用或很可能使用區塊、頁面、線及/或類似者),以在快取記憶體418中移動及/或保持及/或將冷資料移出快取記憶體418。在一些實施例中,記憶體開關448及/或記憶體管理器450可實施用於快取記憶體418的硬體及/或軟體控制的控制邏輯。在一些實施例中,記憶體開關448及/或記憶體管理器450可實施串流偵測及/或預取以便於預測哪些資料預取至快取記憶體中。在一些實施例中,快取記憶體418可作為用於可經預取(例如,熱向量及/或熱索引)以減少或阻止容量增強型記憶體417(例如,快閃記憶體)的存取的模型及/或輸入資料的部分的分段區域而操作。
在一些實施例中,NPU 406或其他類型的加速器可藉由單指令多資料(single instruction,multiple data;SIMD)引擎及/或多串流單元來實施。一或多個NPU 406可用於實施跨越一或多個群集分佈的資料流處理引擎,其中每一群集可包含資料流引擎或SIMD引擎、一或多個暫存器、浮點(FP)單元及/或SRAM快取記憶體的圖塊。在一些實施例中,轉譯後備緩衝器(TLB)可用於加速定址。在一些實施例中,一或多個多層快取記憶體可跨越電腦群集而實施。
在一些實施例中,主機424及NPU 406可在可由CXL控制器460及/或DCOH引擎440維持在一致性狀態下的一致性記憶體空間中共用一或多個快取線。DCOH引擎440可實施快取線窺探以追蹤裝置側上的一或多個快取線的存在及/或狀態,以使得裝置400能夠在主機424自裝置400請求快取線時作出回應。在一些實施例中,DCOH引擎440可對裝置至主機(device-to-host;D2H)回應通道上的主機窺探作出回應,例如,此是因為裝置可保持錯資料。為實施CXL.cache介面,DCOH引擎440可實施回應及/或請求邏輯以產生對於來自主機424的關於D2H轉移的請求的回應,及/或藉由裝置400產生關於主機至裝置(host-to-device;H2D)轉移的請求。在一些實施例中,DCOH引擎440可使得裝置400能夠自系統中除主機以外的其他處請求一或多個快取線。舉例而言,裝置400可請求來自不同裝置、加速器、記憶體擴展、記憶體緩衝器及/或類似者的一或多個快取線,且主機424處的CXL 控制器460有助於所請求快取線至裝置400的轉移。
DCOH引擎440可在裝置400實施為CXL類型2裝置的實施例中追蹤偏壓狀態,諸如裝置偏壓及/或主機偏壓。在裝置偏壓狀態中,NPU或其他類型的加速器可存取裝置本端記憶體而無可能與主機偏壓狀態相關聯的效能損失,然而,主機仍可使用一致性語義存取裝置本端記憶體。
裝置400的一些實施例可向CXL或其他記憶體一致性及/或記憶體語義介面及/或協定提供一或多個增強。舉例而言,裝置記憶體(例如,分層記憶體系統404中的任何記憶體)的一致性區可由諸如主機424、裝置400及/或其他主機、裝置及/或類似者的多個源寫入。根據本揭露的實例實施例的裝置400的實施可藉由以下操作處置自此等多個源至一致性區的寫入:(1)限制主機(例如,HDM)可見的一致性區,及/或(2)將DCOH用於寫入的排序(及/或強制執行排序)。取決於實施細節,此可改良效能,例如,其中來自多個源的多個寫入的次序可為未定義的。因此,DCOH可定義寫入的次序(例如,嚴格地、不嚴謹地及/或類似者)。類似技術可應用於讀取。
在一些實施例中,主機424可使用主控至從屬協定來執行裝置記憶體的一致性區的讀取及/或寫入存取。在讀取請求後,裝置可以資料及/或無資料回應(no-data response;NDR)欄位回應。
記憶體管理器450可管理記憶體線可如何分佈於第一記憶體層408與第二記憶體層410之間。記憶體管理器450亦可在第二記憶體層410中的快取記憶體(例如,DRAM)418與容量增強型記憶體417(例如,快閃記憶體)之間實施快取管理。在一些實施例中,記憶體管理器450可例如利用一或多個參數來實施基於硬體的快取及/或基於軟體的快取,以將快取記憶體418及容量增強型記憶體417的兩個區暴露於可實施構架的一或多個軟體層,諸如應用程式474。
在一些實施例中,記憶體管理器450可實施標記快取記憶體管理器及/或用於快取記憶體418的控制器(例如,在DDR DRAM用於快取記憶體418的情況下,DDR控制器)。
在一些實施例中,大粒度轉移,例如整個模型自網路緩衝器或外接儲存裝置至容量增強型記憶體417的全系統複本,可經由CXL.io介面434在PCIe上使用DMA流。較小粒度轉移可經由CXL.mem介面438使用CXL流。在一些實施例中,除最初用模型填充容量增強型記憶體417以外,記憶體管理器450可使得主機424上的應用程式474能夠直接地或間接地經由快取記憶體418的視窗存取容量增強型記憶體417,以促進在容量增強型記憶體417與快取記憶體418之間的模型的一或多個部分中及/或外進行調換。在一些實施例中,記憶體管理器450可分離第一記憶體層408及第二記憶體層410的一或多個區,所述一或多個區可以可例如經由可由API存取的記憶體管理器450中的一或多個暫存器組態的方式暴露於主機424。因此,在一些實施例中,大DL模型可在運行時間之前針對初始群體調換至及/或調換出容量增強型記憶體417(例如,NAND快閃記憶體)。然而,在諸如將模型用於推斷的運行時間期間,可存在可更頻繁存取的模型的一或多個部分,其可藉由使用階層408與階層410之間的快取記憶體418快取模型的一或多個部分來促進。
裝置記憶體管理器476可包含於一些實施例中以管理階層408及階層410內的記憶體裝置、儲存裝置及/或類似者的一或多個態樣。儘管記憶體管理器450可實施快取演算法,管理階層408與階層410之間的資料移動及/或類似者,但裝置記憶體管理器476可執行較低級功能,諸如耗損均衡、位址轉譯、散列表、標記管理、額外邏輯、記憶體裝置內的資料移動、儲存裝置及/或類似者。在一些實施例中,裝置記憶體管理器476可實施信令方案,所述信令方案可使得應用程式474(例如,DL構架)能夠指示用於模型的主動部分的一或多個基礎位址、偏移位址及/或類似者。此可使得裝置記憶體管理器476能夠使用硬體明顯地將資料移動至主機及/或NPU。在一些實施例中,裝置記憶體管理器476可實施一或多種硬體技術以判定記憶體的頻寬敏感部分而不涉及主機424、NPU 406及/或類似者。在一些實施例中,裝置管理器476可經由API暴露一或多個控制件,例如以使得可知曉特定應用程式的耗損水平模式的程式設計師能夠實施所述應用程式的耗損均衡方案。
在一些實施例中,根據本揭露的實例實施例的具有加速器虛擬化及/或分層記憶體的一或多個裝置可用於例如經由使用單層及/或多層切換來實施記憶體及/或加速器解聚。
圖5示出根據本揭露的實例實施例的具有解聚的系統的實施例。圖5中所示出的系統可包含分別經由互連件556a及互連件556b連接至第一開關578a及第二開關578b的主機524。第一開關578a可分別經由互連件556c及互連件556d連接至第一裝置500a及第一記憶體580a。第二開關578b可分別經由互連件556e及互連件556f連接至第二裝置500b及第二記憶體580b。在一些實施例中,第一開關578a及第二開關578b以及互連件556a至互連件556f(其可共同地形成互連網狀架構)可藉由PCIe開關及/或互連件使用CXL協定實施。
第一裝置500a及第二裝置500b可例如藉由根據本揭露的實例實施例的具有加速器虛擬化及/或分層記憶體的一或多個裝置實施。
圖5中所示出的系統可使得諸如第一開關578a及第二開關578b以及第一記憶體580a及第二記憶體580b的資源能夠例如基於當前處理及/或記憶體需求線上及/或離線地取得。資源中的一或多者可例如跨多個域而時間多工化。此外,下游埠(例如,主機根埠582a及主機根埠582b)及或開關(例如,開關578a及開關578b)中的一或多者可虛擬化,例如供與圖5中所示出的多個虛擬NPU 406-1……406-N一起使用。在一些實施例中,裝置500a及裝置500b中的一或多者可實施為具有多個埠以供使用的多頭裝置,例如,可實施為多個虛擬加速器。
圖5中所示出的系統亦可包含網狀架構管理器,其可執行一或多個功能,諸如裝置發現、虛擬開關創建及/或管理、將虛擬埠結合至實體埠及/或類似者。在一些實施例中,網狀架構管理器可位於主機524處且例如藉由一或多個裝置驅動器實施。在一些實施例中,網狀架構管理器可以旁頻帶組態實施,例如具有系統管理匯流排(SMBus)。儘管圖5中所示出的實施例經繪示具有兩個開關、兩個裝置以及兩個記憶體,但任何數目個組件可使用任何水平的切換與任何數目個開關、互連件及/或類似者一起使用。
根據本揭露的實例實施例的具有加速器虛擬化及/或分層記憶體的裝置可用於實施各種類型的平行性。舉例而言,資料平行性可涉及跨多個加速器裝置拆分工作負荷的資料,多個加速器裝置中的每一者可具有相同模型。取決於實施細節,資料平行性可計算受限,尤其對於大型模型。然而,根據本揭露的實例實施例的具有分層記憶體系統的裝置可例如適應第二記憶體層的容量增強型記憶體中的大型模型。此外,第二記憶體層中的快取記憶體的使用可補償容量增強型記憶體的潛在潛時問題。
在模型平行性的情況下,模型的部分可跨多個加速器拆分,且相同資料可由每一加速器處理。舉例而言,若模型在NPU0與NPU1之間對半拆分,則資料的全部或一部分可首先由NPU0處理,隨後相同資料可由NPU1處理。模型平行性可用於例如全整合演算法及/或全區域(all-to-all;A2A)通信,其中一或多個(有時所有)NPU在每一時期之後與一或多個(有時所有)其他NPU通信。根據本揭露的實例實施例的具有加速器虛擬化的裝置可例如藉由使得多個虛擬加速器中的每一者能夠處置模型的一部分來適應模型平行性。
在一些實施例中,在資料平行性與模型平行性之間的選擇可涉及一或多個取捨。舉例而言,在大模型的情況下,資料平行性可能難以實施,此是因為整個模型可在每一加速器處複製及儲存。此外,在資料平行性的情況下,可需要同步資料以用於訓練DL模型。舉例而言,權重可在訓練期間同步,此是因為每一加速器可在具有不同訓練資料的相同模型上工作,因此系統可同步資料且判定每一時期的權重的一或多個平均值。在模型平行性的情況下,較少記憶體及/或儲存器資源可用於在每一加速器處儲存模型的僅一部分,且可避免訓練同步問題。然而,取決於實施細節,加速器之間的通信可增加。
取決於實施細節,圖4中所示出的裝置400可減少或消除取捨,例如在藉由全整合及/或全區域通信基元實施模型平行性時。舉例而言,使用諸如CXL的一致性介面可使得多個NPU(例如,在裝置400的不同個例處的多個NPU 406及/或單個裝置400內的多個虛擬NPU 406-1……406-N)能夠以較小粒度交換資料(例如,使用CXL微片)。因此,全整合引擎454可組態為可使用CXL基元及/或視需要藉由各種NPU發射資料線來收集來自各種NPU的更新的站台。在一些實施例中,全整合引擎454亦可經組態以經由互連件430及/或網路431實施訊息傳遞介面(MPI)發送及/或接收基元。取決於實施細節,此可使得能夠在具有模型平行性的情況下在網路431上將系統向外擴展至多個加速器。此外,CXL可實現跨越分佈於裝置內的多個加速器的一致性(例如作為一或多個NPU 406及/或一或多個虛擬NPU 406-1……406-N)、伺服器、機架、跨越網路及/或類似者。因此,在一些實施例中,全整合引擎454可實施MPI及CXL的組合,其可清除CXL請求以收集供裝置400使用的更新及/或產生其他裝置可用於按比例增大至多個NPU的更新。取決於實施細節,此可使得全整合引擎454能夠有效地交換及/或排程張量,例如使用CXL語義。
圖6示出根據本揭露的實例實施例的圖形及用於圖形的全域分割的方法的實施例。圖6中所示出的圖形684可包含藉由邊緣
連接的指示為
至
的十二個頂點683,其中
及
可指示由邊緣連接的頂點。在導引邊緣的情況下,
及
可分別指示原點頂點及目的地頂點。在無導引邊緣的情況下,
及
可為無序的。因此,邊緣(1,4)指示頂點
與頂點
之間的邊緣。(為了防止混淆圖式,並非所有邊緣均可被標記。)
圖形684可藉由將其在虛線686a及虛線686b處拆分成三個部分684a(其可包含頂點
至頂點
)、684b(其可包含頂點
至頂點
)以及684c(其可包含頂點
至頂點
)而全局分割。圖形684可例如藉由在主機上執行且實施諸如TensorFlow、PyTorch及/或類似者的ML構架的應用程式而分割。
應用程式可將頂點分割成指示為
至
的三個加速器裝置688。特定言之,應用程式可將頂點圖形的第一部分684a分割成
,將圖形的第二部分684b分割成
,且將圖形的第三部分684c分割成
。應用程式可基於例如圖形元素(例如,頂點及/或邊緣)的一或多個參數(諸如待使用的記憶體、計算時間及/或類似者)及加速器裝置688的一或多個參數(諸如計算資源、記憶體、互連件及/或類似者)來分割頂點。
儘管圖6中所示出的圖形可包含十二個頂點及17個邊緣且可分割成三個部分,但在其他實施例中,可使用任何數目個頂點、邊緣及/或呈任何組態的分區。
圖7示出根據本揭露的實例實施例的局部排程操作。圖7中所示出的實施例可例如用於使用分別指示為
、
以及
的加速器裝置788來排程圖形的部分684a、部分684b以及部分684c的圖形處理操作,所述部分已如圖6中所繪示的分割。
參考圖7,兩個頂點在一個裝置內的邊緣(例如,邊緣(1,4))可經排程以供對應裝置(例如,
)處理。橫跨兩個裝置的頂點之間的邊緣(例如,邊緣(4,11))可經排程以供對應裝置中的一或兩者處理。舉例而言,含有目的地頂點
的裝置
可處理邊緣(4,11)。
圖8示出根據本揭露的實例實施例的裝置虛擬化方法的實施例。儘管圖8中所示出的實施例可用於任何類型的應用程式,但取決於實施細節,一些實施例可尤其適用於針對多個大DNN實施裝置虛擬化。出於說明本揭露的原理的目的,圖8中所示出的方法使用圖6及圖7中所示出的圖形及圖形分區。然而,原理可藉由任何其他圖形、模型、及/或類似者以及其分區實施。
參考圖8,出於說明的目的,圖形884可以與圖6中所示出的圖形684類似的方式實施,但可使用任何其他圖形、模型及/或類似者。在此實施例中,操作881、操作883以及操作885可由主機執行,且操作887可由裝置執行,但在其他實施例中,操作可以不同方式分佈。主機及裝置可例如使用本文中所揭露的主機及/或裝置中的任一者實施,所述主機及/或裝置包含關於圖2、圖3、圖4及/或圖5所描述的彼等。圖形884可例如藉由諸如在主機上執行的ML構架的應用程式874實施。
參考圖8,在操作881(部分1)處,在運行時間之前的組態過程期間,裝置可將自身作為多個虛擬NPU呈現給主機,其各自具有一或多個資源,包含例如一或多個處理器核心、記憶體(例如,分層或非分層記憶體)、互連件及/或類似者。在一些實施例中,至主機的一或多個互連件可實施為裝置間及/或裝置內。
在操作883(部分2.1)處,主機可藉由一或多個參數註解圖形輸入及/或輸出,所述一或多個參數諸如待使用的記憶體的量、計算時間及/或類似者。
在操作885(部分2.2)處,主機可基於虛擬NPU的一或多個參數將圖形884分割成裝置
、
以及
,所述一或多個參數諸如計算資源(例如,處理器核心)、記憶體、互連件及/或類似者。在一些實施例中,主機可嘗試使圖形部分的一或多個參數(諸如待使用的記憶體、計算時間及/或類似者)與虛擬加速器裝置的對應參數(諸如計算資源(例如,處理器核心)、記憶體、互連件及/或類似者)匹配。
在操作887(部分3.)處,裝置(例如,實施虛擬NPU的裝置)可自藉由主機提供的圖形分區提取一或多個操作參數,諸如記憶體用途、任務相依性、用於一或多個圖形分區的時序資訊,及/或類似者,以供在運行時間使用。在一些實施例中,裝置可針對每一虛擬裝置及分區設置一或多個進程位址空間。每一進程位址空間可具有進程位址空間識別符(process address space identifier;PASID)。在圖8中所示出的實施例中,裝置可分別針對實體加速器806中的虛擬加速器
、虛擬加速器
以及虛擬加速器
設置進程位址空間PASID0、進程位址空間PASID1以及進程位址空間PASID2。在一些實施例中,PASID可在CXL的上下文中例如藉由CPU專用時間共用、共用虛擬機(VM)及/或共用單根輸入及/或輸出虛擬化(single root input and/or output virtualization;SR-IOV)實施。
圖9示出根據本揭露的實例實施例的用於裝置虛擬化方法的工作流程的實施例。圖9中所示出的工作流程可例如與圖8及圖10中所示出的方法一起使用。
參考圖9,在操作902處,例如在主機處執行的一或多個使用者應用程式可創建一或多個圖形表示。在操作904處,一或多個應用程式可使用ML構架實施一或多個圖形表示。在操作906處,一或多個應用程式可將圖形分割成一或多個部分,且例如針對記憶體效能(例如,最佳化)基於諸如任務相依性、峰值記憶體容量、最小同步開銷及/或類似者的操作參數而將一或多個部分映射至一或多個NPU(例如,虛擬NPU)中。
共同地形成圖10的圖10A及圖10B示出根據本揭露的實例實施例的記憶體排程方法的實施例。儘管圖10中所示出的實施例可用於任何類型的應用程式,但取決於實施細節,一些實施例可尤其適用於針對多個大DNN實施記憶體排程。出於說明本揭露的原理的目的,圖10中所示出的方法使用圖6及圖7中所示出的圖形及圖形分區。然而,原理可藉由任何其他圖形、模型、及/或類似者以及其分區實施。
參考圖10A,出於說明的目的,圖形1084可以與圖6中所示出的圖形684類似的方式實施,但可使用任何其他圖形、模型及/或類似者。在此實施例中,操作1081、操作1083、操作1085以及操作1089可由主機執行。圖形1084可例如藉由應用程式1074實施,所述應用程式1074諸如在主機上執行的ML構架,且記憶體圖形產生器1075可同樣在主機上實施。然而,在其他實施例中,操作可以不同方式分佈於例如主機與裝置之間。主機及裝置可例如使用本文中所揭露的主機及/或裝置中的任一者實施,所述主機及/或裝置包含關於圖2、圖3、圖4及/或圖5所描述的彼等。
參考圖10,在操作1081(部分1)處,在運行時間之前的組態過程期間,裝置(例如,CXL類型2裝置)可將自身作為多個虛擬NPU呈現給主機,其各自具有一或多個資源,包含例如一或多個處理器核心、記憶體(例如,分層或非分層記憶體)、互連件及/或類似者。
在操作1083(部分2.1)處,主機可藉由一或多個參數註解圖形輸入及/或輸出,所述一或多個參數諸如待使用的記憶體的量、計算時間及/或類似者。
在操作1085(部分2.2)處,主機可基於虛擬NPU的一或多個參數將圖形884分割成裝置
、
以及
,所述一或多個參數諸如計算資源(例如,處理器核心)、記憶體、互連件及/或類似者。在一些實施例中,主機可嘗試使圖形部分的一或多個參數(諸如待使用的記憶體、計算時間及/或類似者)與虛擬加速器裝置的對應參數(諸如計算資源(例如,處理器核心)、記憶體、互連件及/或類似者)匹配。
用於圖形部分的參數的一些實例值可如下:
在操作1089(部分2.3)處,主機(例如,使用記憶體圖形產生器1075)可產生具有記憶體容量及/或持續時間資訊的群集圖形1090。群集圖形1090可包含分佈於虛擬NPU(指示為VNPU1、VNPU2以及VNPU3)之間的資料組(指示為組1、組2以及組3)。在圖10A中所示出的實施例中,VNPU1(組1)及VNPU2(組3)可實施於第一實體裝置(裝置1)上,且VNPU3(組2)可實施於第二實體裝置(裝置2)上。針對圖10A中所示出的群集圖形1090所示出的記憶體用途及時序值可實施於如圖10B中所示出的兩個實體裝置上。
參考圖10B,裝置1的NPU記憶體1008-1(其可充當用於VNPU1及VNPU2的工作記憶體)可例如藉由圖4中所示出的頻寬增強型記憶體408實施。裝置1的分層記憶體1010-1可例如藉由圖4中所示出的潛時增強型記憶體410實施。類似地,裝置2的NPU記憶體1008-2(其可充當用於VNPU3的工作記憶體)可例如藉由圖4中所示出的頻寬增強型記憶體408實施,且裝置2的分層記憶體1010-2可例如藉由圖4中所示出的潛時增強型記憶體410實施。
再次參考圖10B,最初可將組1資料載入至裝置1的NPU記憶體1008-1中。當VNPU1處理組1資料時,其可例如在如(1)處所繪示的優先基礎上將資料逐漸換出至分層記憶體1010-1。此外,當VNPU1處理組1資料時,其可在如(2)處所示的時間T8處將資料(例如15GB區塊)轉移至裝置2的NPU記憶體1008-2,其中資料可在組2中藉由VNPU3處理。類似地,在處理13GB區塊的資料之後,VNPU3可將資料轉移至如(4)處所示的裝置1的NPU記憶體1008-1,其中資料可藉由VNPU2處理為組3的部分。在***時間中,裝置1處的VNPU2可例如一旦其具有最少量的資料及/或記憶體以如(3)處所示進行處理時便開始處理組3資料。
圖11示出根據本揭露的實例實施例的全整合操作方法的實施例。圖11中所示出的實施例可例如使用本文中所揭露的主機及/或裝置中的任一者實施,包含關於圖2、圖3、圖4及/或圖5所描述的彼等主機及/或裝置。
參考圖11,方法可使用主機1124、互連控制器(例如,CXL控制器)1160以及具有一或多個加速器的一或多個裝置1106實施。出於說明的目的,圖11中所示出的實施例藉由八個加速器1106-1至1106-8實施,然而,原理可藉由任何數目個裝置應用。加速器1106-1至加速器1106-8可藉由實體加速器、虛擬加速器或其任何組合實施。在一些實施例中,圖11中所示出的實施例可部分或完全地藉由圖4B中所示出的全整合引擎454實施。
圖12示出根據本揭露的實例實施例的用於運用模型處理資料的方法的實施例。方法可在操作1202處開始。在操作1204處,方法可將模型分割成第一部分及第二部分。舉例而言,方法可基於模型的一或多個參數及/或第一虛擬加速器及第二虛擬加速器的一或多個參數而分割模型。在操作1206處,方法可將模型的第一部分儲存於裝置的記憶體中。在操作1208處,方法可將模型的第二部分儲存於裝置的記憶體中。在一些實施例中,記憶體可實施為分層記憶體。在操作1210處,模型可藉由裝置處的第一虛擬加速器使用模型的第一部分執行第一操作。在操作1212處,方法可藉由裝置處的第二虛擬加速器使用模型的第二部分執行第二操作。方法可在操作1214處結束。
圖12中所示出的實施例以及本文中所描述的所有其他實施例為實例操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包含其他操作及/或組件。此外,在一些實施例中,操作及/或組件的時間及/或空間次序可變化。儘管一些組件及/或操作可示出為個別組件,但在一些實施例中,單獨展示的一些組件及/或操作可整合於單一組件及/或操作中,及/或展示為單一組件及/或操作的一些組件及/或操作可使用多個組件及/或操作來實施。
本文所描述的功能性中的任一者,包含主機功能性、裝置功能性及/或類似者中的任一者,包含關於圖1至圖12所描述的功能性,例如加速器、IO引擎、全整合引擎、壓縮及/或解壓邏輯、記憶體開關、記憶體管理器、預處理器、虛擬化邏輯、記憶體存取模式分析器、DCOH及/或類似者,可藉由硬體、軟體或其任何組合實施,包含執行儲存於任何類型的記憶體中的指令的組合邏輯、順序邏輯、一或多個計時器、計數器、暫存器、狀態機、CPLD、FPGA、ASIC、包含CISC處理器(諸如x86處理器)及/或RISC處理器(諸如ARM處理器)的CPU、GPU、NPU、TPU及/或類似者。在一些實施例中,一或多個組件可實施為晶載系統(system-on-chip;SOC)。
上文所揭露的一些實施例已在各種實施細節的上下文中描述,但本揭露的原理不限於此等或任何其他特定細節。舉例而言,一些功能性已描述為藉由某些組件實施,但在其他實施例中,所述功能性可分佈於不同位置中的不同系統及組件之間且具有各種使用者介面。某些實施例已經描述為具有特定過程、操作等,但此等術語亦涵蓋其中特定過程、操作等可藉由多個過程、操作等實施或其中多個過程、操作等可整合至單一過程、步驟等中的實施例。對組件或元件的提及可僅指組件或元件的一部分。舉例而言,對區塊的提及可指整個區塊或一或多個子區塊。在本揭露中及申請專利範圍中,諸如「第一」及「第二」的術語的使用可僅出於區分其修改的事物的目的,且除非自上下文另外顯而易見,否則可並不指示任何空間或時間次序。在一些實施例中,對事物的提及可指事物的至少一部分,例如,「基於」可指「至少部分地基於」及/或類似者。對第一元件的提及可能不暗示存在第二元件。本文中所揭露的原理具有獨立效用,且可單獨地實施,且並非每一實施例皆可利用每一原理。然而,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式放大個別原理的益處。
上文所描述的各種細節及實施例可經組合以產生根據此專利揭露內容的發明原理的額外實施例。由於可在不脫離本發明概念的情況下修改此專利揭露內容的發明原理的配置及細節,將此等改變及修改視為處於以下申請專利範圍的範疇內。
1、2、3、4:機器
103:模型
200、300、400、1106:裝置
202、302、402、428:互連介面
204、304:記憶體系統
206、306:加速器
208:第一記憶體層
210:第二記憶體層
212、312、430、556a、556b、556c、556d、556e、556f:互連件
214:第一記憶體介面
216:記憶體介面
218:快取記憶體
306-1:第一虛擬加速器
306-2:第二虛擬加速器
306-N:虛擬加速器
315:記憶體介面
320:虛擬化邏輯
322:暫存器
404:分層記憶體系統
406:加速器
406-1、406-N:虛擬NPU
408:頻寬增強型記憶體
410:潛時增強型記憶體
414:非一致性記憶體介面
416:一致性介面
417:容量增強型記憶體
418:快取記憶體
420:虛擬化邏輯
422:暫存器
423:硬體及/或軟體排程器
424、524、1124:主機
426:遠端儲存器
431:網路
432:網路介面
434:CXL.io協定介面
436:CXL.cache協定介面
438:CXL.mem協定介面
440:DCOH引擎
442:預處理器
444:輸入及/或輸出引擎
446:壓縮及/或解壓邏輯
448:記憶體開關
450:記憶體管理器
452:記憶體存取模式分析器
454:全整合引擎
456、456a、456b:內部互連件
458:CPU
460:介面控制器
462:記憶體控制器
464:內部快取記憶體
466:主機記憶體
468:本端儲存器
470:系統匯流排
472:加速器虛擬化邏輯
474、874、1074:應用程式
476:裝置記憶體管理器
500a:第一裝置
500b:第二裝置
578a:第一開關
578b:第二開關
580a:第一記憶體
580b:第二記憶體
582a、582b:主機根埠
683:頂點
684、884、1084:圖形
684a:第一部分
684b:第二部分
684c:第三部分
688、788:加速器裝置
806:實體加速器
881、883、885、887、902、904、906、1081、1083、1085、1089、1202、1204、1206、1208、1210、1212、1214:操作
1008-1、1008-2:NPU記憶體
1010-1、1010-2:分層記憶體
1075:記憶體圖形產生器
1090:群集圖形
1106-1、1106-2、1106-3、1106-4、1106-5、1106-6、1106-7、1106-8:加速器
1160:互連控制器
PASID0、PASID1、PASID2:進程位址空間
貫穿諸圖,出於示出的目的,圖式未必按比例繪製且類似結構或功能的元件可通常由相似附圖標號或其部分表示。圖式僅意欲有助於對本文中所描述的各種實施例的描述。圖式並不描述本文中所揭露的教示的每一態樣且不限制申請專利範圍的範疇。為防止圖式變得模糊,並非可繪示所有組件、連接以及類似者,且並非所有組件可具有附圖標號。然而,組件組態的圖案可自圖式顯而易見。附圖與本說明書一起示出本揭露的實例實施例,且與描述一起用以解釋本揭露的原理。
圖1示出根據本揭露的實例實施例的用於分析平行處理操作的構架的實施例。
圖2示出根據本揭露的實例實施例的具有分層記憶體的裝置的實施例。
圖3示出根據本揭露的實例實施例的具有加速器虛擬化的裝置的實施例。
圖4A示出根據本揭露的實例實施例的主機的實例實施例。
圖4B示出根據本揭露的實例實施例的具有分層記憶體及虛擬加速器的裝置的實例實施例。
圖5示出根據本揭露的實例實施例的具有解聚的系統的實施例。
圖6示出根據本揭露的實例實施例的圖形及用於圖形的全域分割的方法的實施例。
圖7示出根據本揭露的實例實施例的局部排程操作。
圖8示出根據本揭露的實例實施例的裝置虛擬化方法的實施例。
圖9示出根據本揭露的實例實施例的用於裝置虛擬化方法的工作流程的實施例。
共同地形成圖10的圖10A及圖10B示出根據本揭露的實例實施例的記憶體排程方法的實施例。
圖11示出根據本揭露的實例實施例的全整合(allreduce)操作方法的實施例。
圖12示出根據本揭露的實例實施例的用於運用模型處理資料的方法的實施例。
200:裝置
202:互連介面
204:記憶體系統
206:加速器
208:第一記憶體層
210:第二記憶體層
212:互連件
214:第一記憶體介面
216:記憶體介面
218:快取記憶體
Claims (20)
- 一種裝置,包括: 互連介面; 記憶體系統,包括: 一或多個第一類型記憶體裝置,耦接至所述互連介面以接收第一資料; 一或多個第二類型記憶體裝置,耦接至所述互連介面以接收第二資料;以及 加速器,耦接至所述一或多個第一類型記憶體裝置及所述一或多個第二類型記憶體裝置,且經組態以使用所述第一資料及所述第二資料來執行操作。
- 如請求項1所述的裝置,其中所述記憶體系統更包括經組態以快取所述一或多個第二類型記憶體裝置的所述第二資料的快取記憶體。
- 如請求項1所述的裝置,更包括經組態以維持所述一或多個第一類型記憶體裝置中的至少一者的一致性的一致性引擎。
- 如請求項1所述的裝置,更包括經配置以組態所述一或多個第一類型記憶體裝置與所述加速器之間的一或多個連接的記憶體開關。
- 如請求項1所述的裝置,更包括經組態以在所述一或多個第一類型記憶體裝置與所述加速器之間交換所述第一資料的記憶體管理器。
- 一種裝置,包括: 互連介面; 記憶體系統,耦接至所述互連介面以接收資料; 加速器,耦接至所述記憶體系統;以及 虛擬化邏輯,經組態以將所述加速器的一或多個資源分割成一或多個虛擬加速器; 其中所述一或多個虛擬加速器中的第一者經組態以對所述資料的第一部分執行第一操作。
- 如請求項6所述的裝置,其中所述一或多個虛擬加速器中的第二者經組態以對所述資料的第二部分執行第二操作。
- 如請求項6所述的裝置,其中所述一或多個虛擬加速器中的所述第一者經組態以: 經由所述互連介面接收一或多個操作參數;以及 基於所述一或多個操作參數執行所述第一操作。
- 如請求項6所述的裝置,更包括經組態以針對所述第一操作的一或多個部分排程所述記憶體系統的一或多個部分的記憶體管理器。
- 如請求項9所述的裝置,其中所述記憶體管理器經組態以基於記憶體存取模式而排程所述記憶體系統的所述一或多個部分。
- 如請求項9所述的裝置,其中所述記憶體管理器經組態以: 基於頻寬敏感度判定所述記憶體系統的第一部分;以及 將資料自所述記憶體系統的所述第一部分導引至所述記憶體系統的第二部分。
- 一種用於處理資料的方法,所述方法包括: 將模型分割成第一部分及第二部分; 將所述模型的所述第一部分儲存於裝置的記憶體中; 將所述模型的所述第二部分儲存於所述裝置的所述記憶體中; 藉由所述裝置處的第一虛擬加速器使用所述模型的所述第一部分執行第一操作;以及 藉由所述裝置處的第二虛擬加速器使用所述模型的所述第二部分執行第二操作。
- 如請求項12所述的方法,其中分割所述模型包括至少部分地藉由主機分割所述模型。
- 如請求項12所述的方法,其中分割所述模型包括基於以下各者分割所述模型: 所述模型的所述第一部分的一或多個參數;以及 所述第一虛擬加速器的一或多個參數。
- 如請求項12所述的方法,其中分割所述模型包括: 使所述模型的所述第一部分與第一進程位址空間相關聯;以及 使所述模型的所述第二部分與第二進程位址空間相關聯。
- 如請求項12所述的方法,更包括基於所述模型的所述第一部分產生用於所述第一虛擬加速器的第一資料組。
- 如請求項16所述的方法,其中所述記憶體包括第一類型的記憶體裝置及第二類型的記憶體裝置,所述方法更包括針對所述第一類型的所述記憶體裝置及所述第二類型的所述記憶體裝置排程所述第一資料組的至少一部分。
- 如請求項17所述的方法,其中所述第一類型的所述記憶體裝置包括用於所述第一虛擬加速器的工作記憶體。
- 如請求項16所述的方法,更包括基於所述模型的所述第二部分產生用於所述第二虛擬加速器的第二資料組,其中所述記憶體包括: 與所述第一虛擬加速器相關聯的第一類型的第一記憶體裝置; 與所述第一虛擬加速器相關聯的第二類型的第一記憶體裝置;以及 與所述第二虛擬加速器相關聯的所述第一類型的第二記憶體裝置。
- 如請求項19所述的方法,更包括: 針對所述第一類型的所述第一記憶體裝置及所述第二類型的所述第一記憶體裝置排程所述第一資料組的至少一部分;以及 針對所述第一類型的所述第一記憶體裝置及所述第一類型的所述第二記憶體裝置排程所述第二資料組的至少一部分。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063090710P | 2020-10-12 | 2020-10-12 | |
US63/090,710 | 2020-10-12 | ||
US17/497,882 | 2021-10-08 | ||
US17/497,882 US11914903B2 (en) | 2020-10-12 | 2021-10-08 | Systems, methods, and devices for accelerators with virtualization and tiered memory |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202215223A true TW202215223A (zh) | 2022-04-16 |
Family
ID=78087262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110137785A TW202215223A (zh) | 2020-10-12 | 2021-10-12 | 用於加速器的裝置及用於處理資料的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11914903B2 (zh) |
EP (1) | EP3982269A1 (zh) |
KR (1) | KR20220048460A (zh) |
CN (1) | CN114356492A (zh) |
TW (1) | TW202215223A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442858B1 (en) * | 2021-03-10 | 2022-09-13 | Micron Technology, Inc. | Bias control for a memory device |
US20230297669A1 (en) * | 2022-03-15 | 2023-09-21 | Mellanox Technologies, Ltd. | Secure remote reset |
CN115883564B (zh) * | 2023-02-21 | 2023-05-23 | 青岛创新奇智科技集团股份有限公司 | 一种媒体流处理方法、装置、电子设备及存储介质 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440752A (en) * | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US8117606B2 (en) * | 2007-06-04 | 2012-02-14 | Infosys Technologies Ltd. | System and method for application migration in a grid computing environment |
US8898324B2 (en) * | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Data access management in a hybrid memory server |
US8949431B2 (en) * | 2011-08-24 | 2015-02-03 | Radware, Ltd. | Method for live migration of virtual machines |
US9648148B2 (en) * | 2013-12-24 | 2017-05-09 | Intel Corporation | Method, apparatus, and system for QoS within high performance fabrics |
DE112013007724B4 (de) | 2013-12-26 | 2024-01-11 | Intel Corporation | System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten |
KR102214511B1 (ko) * | 2014-02-17 | 2021-02-09 | 삼성전자 주식회사 | 두 단계로 페이지를 필터링하는 데이터 저장 장치, 이를 포함하는 시스템, 및 상기 데이터 저장 장치의 동작 방법 |
US20160379686A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Server systems with hardware accelerators including stacked memory |
AU2016203619A1 (en) * | 2016-05-31 | 2017-12-14 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US11157422B2 (en) | 2017-03-31 | 2021-10-26 | Intel Corporation | Shared memory for intelligent network interface cards |
US11488008B2 (en) * | 2017-05-05 | 2022-11-01 | Intel Corporation | Hardware implemented point to point communication primitives for machine learning |
US11030126B2 (en) * | 2017-07-14 | 2021-06-08 | Intel Corporation | Techniques for managing access to hardware accelerator memory |
US11263143B2 (en) | 2017-09-29 | 2022-03-01 | Intel Corporation | Coherent accelerator fabric controller |
US11231927B2 (en) * | 2018-03-08 | 2022-01-25 | Intel Corporation | System, apparatus and method for providing a fabric for an accelerator |
US10719247B2 (en) | 2018-03-20 | 2020-07-21 | Kabushiki Kaisha Toshiba | Information processing device, information processing method, estimation device, estimation method, and computer program product |
US11347643B2 (en) * | 2018-06-29 | 2022-05-31 | Intel Corporation | Control logic and methods to map host-managed device memory to a system address space |
US10817441B2 (en) * | 2019-03-29 | 2020-10-27 | Intel Corporation | Shared accelerator memory systems and methods |
US11025544B2 (en) | 2019-06-07 | 2021-06-01 | Intel Corporation | Network interface for data transport in heterogeneous computing environments |
US20210011755A1 (en) | 2019-07-09 | 2021-01-14 | Shreyas Shah | Systems, methods, and devices for pooled shared/virtualized or pooled memory with thin provisioning of storage class memory modules/cards and accelerators managed by composable management software |
US11036650B2 (en) | 2019-09-19 | 2021-06-15 | Intel Corporation | System, apparatus and method for processing remote direct memory access operations with a device-attached memory |
US11182309B2 (en) * | 2019-11-04 | 2021-11-23 | Nvidia Corporation | Techniques for an efficient fabric attached memory |
US11762802B2 (en) | 2019-12-05 | 2023-09-19 | Intel Corporation | Streaming fabric interface |
US20200379922A1 (en) | 2020-08-17 | 2020-12-03 | Intel Corporation | Adaptive routing for pooled and tiered data architectures |
US20210011864A1 (en) | 2020-09-25 | 2021-01-14 | Francesc Guim Bernat | System, apparatus and methods for dynamically providing coherent memory domains |
US20210042254A1 (en) | 2020-10-28 | 2021-02-11 | Pratik Marolia | Accelerator controller hub |
US20210064531A1 (en) | 2020-11-09 | 2021-03-04 | Francesc Guim Bernat | Software-defined coherent caching of pooled memory |
US20210081312A1 (en) | 2020-11-18 | 2021-03-18 | Intel Corporation | Shared memory |
-
2021
- 2021-10-08 US US17/497,882 patent/US11914903B2/en active Active
- 2021-10-12 TW TW110137785A patent/TW202215223A/zh unknown
- 2021-10-12 KR KR1020210135181A patent/KR20220048460A/ko unknown
- 2021-10-12 EP EP21202070.5A patent/EP3982269A1/en active Pending
- 2021-10-12 CN CN202111186579.1A patent/CN114356492A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11914903B2 (en) | 2024-02-27 |
CN114356492A (zh) | 2022-04-15 |
EP3982269A1 (en) | 2022-04-13 |
KR20220048460A (ko) | 2022-04-19 |
US20220113915A1 (en) | 2022-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hsieh et al. | Transparent offloading and mapping (TOM) enabling programmer-transparent near-data processing in GPU systems | |
Lee et al. | Decoupled direct memory access: Isolating CPU and IO traffic by leveraging a dual-data-port DRAM | |
TW202215223A (zh) | 用於加速器的裝置及用於處理資料的方法 | |
US8443376B2 (en) | Hypervisor scheduler | |
TWI620128B (zh) | 在中央處理單元與圖形處理單元間分享資源之裝置與系統 | |
US9141173B2 (en) | Thread consolidation in processor cores | |
Song et al. | Architecting flash-based solid-state drive for high-performance I/O virtualization | |
Hou et al. | Cost effective data center servers | |
US11010084B2 (en) | Virtual machine migration system | |
JP7126136B2 (ja) | 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
KR20230028145A (ko) | 상호 연결된 장치들 간의 데이터 전송을 위한 시스템, 방법 및 장치 | |
US11157191B2 (en) | Intra-device notational data movement system | |
JP2018136922A (ja) | メモリープールを有するコンピューティングシステムのためのメモリー分割 | |
CN115687193A (zh) | 存储模块、包括其的***以及存储模块的操作方法 | |
WO2023124304A1 (zh) | 芯片的缓存***、数据处理方法、设备、存储介质及芯片 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
US20240201909A1 (en) | Systems, methods, and devices for accelerators with virtualization and tiered memory | |
Wickramasinghe et al. | Hybrid mpi: A case study on the xeon phi platform | |
Yang et al. | On construction of a virtual GPU cluster with InfiniBand and 10 Gb Ethernet virtualization | |
KR101587600B1 (ko) | Numa 시스템상에서 가상머신간의 통신방법 | |
US20240211293A1 (en) | Efficient queue shadowing for virtual machines | |
US20240070107A1 (en) | Memory device with embedded deep learning accelerator in multi-client environment | |
US10853293B2 (en) | Switch-based inter-device notational data movement system | |
US20210373790A1 (en) | Inference in memory |