TW201905714A - 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 - Google Patents
以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體Info
- Publication number
- TW201905714A TW201905714A TW107118244A TW107118244A TW201905714A TW 201905714 A TW201905714 A TW 201905714A TW 107118244 A TW107118244 A TW 107118244A TW 107118244 A TW107118244 A TW 107118244A TW 201905714 A TW201905714 A TW 201905714A
- Authority
- TW
- Taiwan
- Prior art keywords
- gpu
- memory
- storage device
- space
- computing system
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 559
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000012546 transfer Methods 0.000 claims abstract description 66
- 230000008569 process Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 146
- 238000013507 mapping Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 35
- 239000000463 material Substances 0.000 claims description 24
- 230000000977 initiatory effect Effects 0.000 claims description 21
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims description 20
- 239000007787 solid Substances 0.000 claims description 15
- 230000002093 peripheral effect Effects 0.000 claims description 12
- 238000010801 machine learning Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 claims description 3
- 239000000835 fiber Substances 0.000 claims description 2
- 230000005055 memory storage Effects 0.000 claims 3
- 238000012549 training Methods 0.000 description 16
- 238000012360 testing method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 230000036541 health Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000012567 medical material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 241001657585 Rudra Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000012015 optical character recognition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W50/00—Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/0088—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/061—Improving I/O performance
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W50/00—Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
- B60W2050/0001—Details of the control system
- B60W2050/0002—Automatic control, details of type of controller or control system architecture
- B60W2050/0004—In digital systems, e.g. discrete-time systems involving sampling
- B60W2050/0005—Processor details or data handling, e.g. memory registers or chip architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
- G06F2213/2806—Space or buffer allocation for DMA transfers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Automation & Control Theory (AREA)
- Health & Medical Sciences (AREA)
- Mechanical Engineering (AREA)
- Business, Economics & Management (AREA)
- Transportation (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Game Theory and Decision Science (AREA)
- Medical Informatics (AREA)
- Aviation & Aerospace Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本發明提供計算系統中的直接記憶體存取。對於GPU物理記憶體的每一頁面,創建表示GPU物理記憶體的頁面的資料結構,分配GPU虛擬記憶體空間,將GPU虛擬記憶體空間映射到GPU物理記憶體空間。基於所述資料結構,將所述GPU物理記憶體空間映射到與使用者空間程序相關聯的CPU虛擬位址。使用所述CPU虛擬位址以發起在儲存裝置上的直接輸入輸出操作,基於所述資料結構創建至少一個匯流排位址,且基於所述匯流排位址發起DMA操作以在儲存裝置與GPU物理記憶體空間之間通過對等主機匯流排傳送資料,而不將資料複製到CPU記憶體。
Description
本發明是有關於一種用於輔助處理器記憶體的直接記憶體存取的計算系統、操作計算系統的方法、車輛及電腦可讀媒體。
輔助處理器包含(例如)通用圖形處理單元(general-purpose graphics processing units,GPGPU),其是處理資料以用於圖形呈現並且還執行通常由中央處理單元(central processing unit,CPU)執行的非專業化計算的圖形處理單元。圖形處理單元可具有許多比傳統中央處理單元更快地處理圖像和圖形資料的處理核心。將資料移轉成為圖形形式並使用所述圖形處理單元來處理資料可引起顯著性能改進。已應用通用圖形處理單元來處理用於人工智慧應用程式和複雜模擬的大量資料。可以並行使用多個通用圖形處理單元以進一步提高性能。
在一些實例中,計算系統可包含中央處理單元(central processing unit,CPU)、通用圖形處理單元(GPGPU)、與所述CPU相關聯的系統記憶體或CPU記憶體、與所述GPU相關聯的GPU記憶體、晶片組以及儲存資料和程式碼的非揮發性儲存裝置(例如固態驅動器SSD)。非揮發性儲存裝置和其它週邊裝置可以連接到周邊元件連接高速(peripheral component interconnect express,PCIe)匯流排。所述晶片組可包含PCIe控制器及/或PCIe交換器,其控制資料通過PCIe匯流排從非揮發性儲存裝置和其它週邊裝置到中央處理單元以及從中央處理單元到非揮發性儲存裝置和其它週邊裝置的傳送。當通用圖形處理單元需要存取儲存在非揮發性儲存裝置中的資料時,中央處理單元從非揮發性儲存裝置中檢索資料,並將所述資料儲存在CPU記憶體中。圖形處理單元從CPU記憶體讀取資料,並將所述資料儲存在GPU記憶體中。當GPU記憶體中的資料需要寫入到非揮發性儲存裝置時,通用圖形處理單元從GPU記憶體讀取資料並將所述資料寫入到CPU記憶體。中央處理單元從CPU記憶體讀取資料,並將所述資料寫入到非揮發性儲存裝置。
一般來說,一方面,提供一種用於處理計算系統中的資料的方法。計算系統包含中央處理單元、與所述中央處理單元相關聯的CPU記憶體、圖形處理單元、與所述圖形處理單元相關聯的GPU記憶體、主機匯流排以及電耦合到所述主機匯流排的儲存裝置。所述CPU記憶體的第一部分配置為使用者空間且所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,且所述核心空間配置成供作業系統核心應用程式使用。所述方法包含:在中央處理單元處,針對多個GPU物理記憶體區域中的每一個區域,創建表示所述GPU物理記憶體區域並具有關於所述GPU物理記憶體區域的資訊的資料結構,所述資訊包含所述GPU物理記憶體區域的狀態;以及將所述資料結構儲存在核心空間中。所述資料結構具備格式,所述格式與由計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域。所述方法包含:為使用者空間程序(user-space process)分配第一GPU虛擬記憶體空間,以及在圖形處理單元處,將第一GPU虛擬記憶體空間映射到第一GPU物理記憶體空間。所述方法包含:基於表示GPU物理記憶體區域的資料結構,將第一GPU物理記憶體空間映射到與使用者空間程序相關聯的CPU虛擬位址;使用映射到第一GPU物理記憶體空間的CPU虛擬位址發起直接輸入/輸出操作;基於對應於所述CPU虛擬位址的資料結構創建匯流排位址;以及基於匯流排位址發起直接記憶體存取(direct memory access,DMA)操作以在儲存裝置與第一GPU物理記憶體空間通過主機匯流排傳送資料。記憶體空間通過主機匯流排傳送資料。
一般來說,另一方面,提供一種計算系統。所述計算系統包含中央處理單元(CPU)以及與所述中央處理單元相關聯的CPU記憶體,其中CPU記憶體的第一部分配置為使用者空間且CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,且所述核心空間配置成供作業系統核心應用程式使用。所述計算系統包含具有多個處理核心的通用圖形處理單元;與所述圖形處理單元相關聯的GPU記憶體;主機匯流排以及電耦合到所述主機匯流排的儲存裝置。中央處理單元、圖形處理單元以及儲存裝置配置成進行以下操作:執行使用者空間程序;及針對多個GPU物理記憶體區域中的每一個區域,創建表示GPU物理記憶體區域並具有關於所述GPU物理記憶體區域的資訊的資料結構,所述資訊包含所述GPU物理記憶體區域的狀態;以及將所述資料結構儲存在核心空間中,其中所述資料結構具備格式,所述格式由計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域。中央處理單元、圖形處理單元以及儲存裝置配置成進行以下操作:為使用者空間程序分配第一GPU虛擬記憶體空間;將第一GPU虛擬記憶體空間映射到第一GPU物理記憶體空間;基於表示GPU物理記憶體區域的資料結構,將第一GPU物理記憶體空間映射到與使用者空間程序相關聯的CPU虛擬位址;使用映射到第一GPU物理記憶體空間的CPU虛擬位址發起直接輸入/輸出操作;基於對應於所述CPU虛擬位址的資料結構創建匯流排位址;以及基於匯流排位址發起直接記憶體存取(DMA)操作,以在儲存裝置與第一GPU物理記憶體空間通過主機匯流排傳送資料。
一般來說,另一方面,提供一種具有資料處理能力的車輛。所述車輛包含:中央處理單元(CPU);以及與所述中央處理單元相關聯的CPU記憶體,其中所述CPU記憶體的第一部分配置為使用者空間且所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供用於控制車輛的應用程式使用,且所述核心空間配置成供作業系統核心應用程式使用。所述車輛包含:至少一個通用圖形處理單元,每一圖形處理單元具有多個處理核心及相關聯GPU記憶體;主機匯流排;以及電耦合到所述主機匯流排的儲存裝置,所述儲存裝置儲存可用於控制車輛的資料。中央處理單元、圖形處理單元以及儲存裝置配置成進行以下操作:在CPU記憶體的使用者空間中執行車輛應用程式;以及針對多個GPU物理記憶體區域中的每一個區域,創建表示GPU物理記憶體區域並具有關於所述GPU物理記憶體區域的資訊的資料結構,所述資訊包含所述GPU物理記憶體區域的狀態;以及將所述資料結構儲存在核心空間中,其中所述資料結構具備格式,所述格式與由車輛的作業系統使用的格式一致,以用於表示物理記憶體的區域。中央處理單元、圖形處理單元以及儲存裝置配置成進行以下操作:為使用者空間程序分配第一GPU虛擬記憶體空間;以及將第一GPU虛擬記憶體空間映射到第一GPU物理記憶體空間。中央處理單元、圖形處理單元以及儲存裝置配置成進行以下操作:基於表示GPU物理記憶體區域的資料結構,將第一GPU物理記憶體空間映射到與使用者程序相關聯的CPU虛擬位址;使用映射到第一GPU物理記憶體空間的CPU虛擬位址發起直接輸入/輸出操作;基於對應於CPU虛擬位址的資料結構創建匯流排位址;基於所述匯流排位址發起直接記憶體存取(DMA)操作,以在儲存裝置與第一GPU物理記憶體空間之間通過所述主機匯流排傳送資料;使用圖形處理單元處理資料以創建輸出;以及使用由圖形處理單元創建的所述輸出來控制車輛的操作。
一般來說,另一方面,提供一種儲存電腦可執行指令的電腦可讀媒體。所述可執行指令配置成使得這些指令在由計算系統執行時使所述計算系統執行以下操作,所述計算系統包含中央處理單元、與所述中央處理單元相關聯的CPU記憶體、圖形處理單元、與所述圖形處理單元相關聯的GPU記憶體、主機匯流排以及電耦合到所述主機匯流排的儲存裝置,其中所述CPU記憶體的第一部分配置為使用者空間且所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,且所述核心空間配置成供作業系統核心應用程式使用:在所述中央處理單元處,針對多個GPU物理記憶體區域中的每一個區域,創建表示GPU物理記憶體區域並具有關於所述GPU物理記憶體區域的資訊的資料結構,所述資訊包含所述GPU物理記憶體區域的狀態;以及將所述資料結構儲存在核心空間中,其中所述資料結構的格式與由計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域。可執行指令配置成使得這些指令在由計算系統執行時使所述計算系統執行以下操作:為使用者空間程序分配第一GPU虛擬記憶體空間;在所述圖形處理單元處,將所述第一GPU虛擬記憶體空間映射到第一GPU物理記憶體空間;基於表示第一GPU物理記憶體區域的資料結構,將第一GPU物理記憶體空間映射到與所述使用者空間程序相關聯的CPU虛擬位址;使用映射到所述第一GPU物理記憶體空間的CPU虛擬位址發起直接輸入/輸出操作;基於對應於CPU虛擬位址的資料結構創建匯流排位址;以及基於所述匯流排位址發起直接記憶體存取(DMA)操作,以在所述儲存裝置與所述第一GPU物理記憶體空間之間通過所述主機匯流排傳送資料。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
本發明描述啟用(enable)對於中央處理單元記憶體及圖形處理單元記憶體兩者的直接記憶體存取的新穎計算系統。在具有作業系統調用(call)和裝置驅動器函數以在週邊裝置與CPU記憶體之間啟用資料的直接記憶體存取傳送的計算系統中,建立資料結構以啟用匯流排位址到GPU物理記憶體的映射,從而允許連接到匯流排的週邊裝置能夠直接將資料從GPU記憶體傳送或傳送到GPU記憶體而不會將資料複製到CPU記憶體或從CPU記憶體複製資料。舉例來說,對於使用Linux作業系統的系統,“結構頁面(struct page)”資料結構用於表示記憶體的物理頁面。在CPU記憶體的使用者空間中執行的使用者應用程式可以通過適當系統調用(proper system call)向連接到PCIe匯流排的儲存裝置的裝置驅動器發送表示映射到使用者空間的CPU物理記憶體的頁面的結構頁面資料物件或資料結構,以使得儲存裝置能夠通過PCIe匯流排直接將資料從CPU記憶體傳送或傳送到CPU記憶體而不用經CPU處理。還可針對GPU物理記憶體的頁面建立結構頁面資料物件或資料結構。在使用者應用程式意圖在GPU記憶體與儲存裝置之間傳送資料時,所述使用者應用程式通過適當系統調用向儲存裝置驅動器發送表示映射到使用者空間的GPU物理記憶體的頁面的結構頁面資料物件,以使得儲存裝置能夠通過PCIe匯流排直接將資料傳送出或傳送入GPU記憶體頁面,而不用使資料經過CPU處理以及不用使資料複製到CPU記憶體。
圖1為示範性計算系統100的方塊圖,所述示範性計算系統包含中央處理單元(CPU)102、多個通用圖形處理單元(GPGPU)104以及與CPU 102相關聯的CPU記憶體106。CPU 102可為(例如)Intel® Xeon CPU。每一GPU 104與GPU記憶體108相關聯。在一些實例中,GPU 104可體現在包含GPU晶片以及一或多個記憶體晶片的半導體系統單晶片封裝中。在一些實例中,GPU晶片可具有內置記憶體(built-in memory)。在一些實例中,GPU 104及GPU記憶體108可以安裝在印刷電路板(例如圖形卡)上,且GPU記憶體108及GPU 104通過主機匯流排電耦合。圖式示出多個GPU 104;本發明還可用於具有單個GPU 104的計算系統中。
CPU記憶體106還被稱作系統記憶體或主機記憶體,並配置成儲存用於作業系統的程式指令或代碼以及所述作業系統使用的資料。舉例來說,作業系統可為Linux作業系統、Apple® macOS作業系統、蘋果iOS移動作業系統、Windows®作業系統或Android®作業系統。CPU記憶體106還可分成使用者空間110及核心空間112。使用者空間110儲存使用者應用程式120,例如視頻呈現程式、動畫呈現程式、影像處理程式、機器學習程式、數學模擬程式、用於控制車輛的應用程式、用於控制機器人的應用程式、大數據應用程式、用於處理財務資料的應用程式、用於處理健康護理資料的應用程式、用於處理醫療資料的應用程式,及/或具有人工智慧功能的應用程式。
核心空間112配置成儲存作業系統核心程式以及相關聯資料,例如作業系統、系統調用(system call)介面、應用程式介面、儲存驅動器114、檔案系統、資料結構116以及GPU驅動器118。GPU驅動器118使得使用者應用程式120能夠通過(例如)函式呼叫(function call)而存取GPU 104的功能。舉例來說,GPU 104可與NVIDIA®開發的統一計算架構(compute unified device architecture,CUDA®)平臺相容,且GPU驅動器118可包含啟用對CUDA平臺的功能的存取的CUDA驅動器。
資料結構116可用於各種目的。舉例來說,對於使用Linux作業系統的計算系統,系統核心使用“結構頁面”資料結構或資料物件來表示由作業系統控制的CPU記憶體106的每一物理頁面,並用來在虛擬空間、物理空間以及匯流排位址空間當中轉換位址。下文描述示範性結構頁面資料結構。
舉例來說,在使用Linux作業系統的計算系統中,系統中的每一物理頁面具有與其相關聯的結構頁面以記錄所述頁面的用途。對於頁面緩存頁,rmap結構可提供關於「該頁面由哪個任務所映射」的資訊。舉例來說,結構頁面中的物件以雙字區塊組織而成,以便允許對結構頁面的各部分使用原子雙字運算。所述佈置允許對標記/映射(flags/mapping)及lru列表指標(lru list pointer)使用原子雙字運算(atomic double word operation)。
圖6A到圖6E示出示範性結構頁面定義。此僅為實例,取決於作業系統及應用程式,可以不同方式定義結構頁面。在結構頁面中,圖6A中的“flags”欄位用於描述所述頁面的狀況、狀態、屬性及/或特性。圖6B中的“refcount”欄位用於記錄對所述頁面的參考計數。如果所述計數下降到0,可釋放所述頁面。例如當等待輸入或輸出時,如果所述計數大於0,則其意味著所述頁面正由一或多個程序(process)使用或正由核心使用。圖6C中的“pgmap”欄位用於記錄裝置記憶體(例如GPU記憶體)的使用。在創建結構頁面資料結構時使用“flags”欄位、“refcount”欄位以及“pgmap”欄位。使用Linux核心應用程式設計發展介面(application programming interface,API)修改這些欄位。結構頁面資料結構可以使用Linux核心API而創建。在已創建結構頁面資料結構時,記憶體映射表內的結構頁面的位置可做為在物理位址與匯流排位址之間進行轉換的基礎。“flags”欄位、“refcount”欄位以及“pgmap”欄位由作業系統(例如系統核心、檔案系統以及裝置驅動器)使用。
計算系統100包含儲存裝置122。舉例來說,儲存裝置122可為非揮發性儲存裝置,例如使用快閃記憶體的固態驅動器(solid state drive,SSD)。非揮發性儲存裝置可與非揮發性記憶體高速(non-volatile memory express,NVMe)規格相容。儲存裝置122可電耦合到系統匯流排124,例如周邊元件連接高速(peripheral component interconnection express,PCIe)匯流排或NVIDIA NVLink匯流排。CPU 102及CPU記憶體106還電耦合到系統匯流排124。
每一儲存裝置122可具有儲存在CPU記憶體106的核心空間112中的相對應的儲存驅動器114。儲存驅動器114使得作業系統或使用者應用程式120能夠(例如)通過使用函式呼叫存取儲存裝置122的功能。舉例來說,儲存驅動器114可提供函式呼叫,用於執行資料從相對應的週邊裝置到記憶體的直接記憶體存取(DMA)傳送。
在一些實例中,計算系統100包含用於管理CPU 102、GPU 104、CPU記憶體106、GPU記憶體108以及儲存裝置122之間的資料流程的晶片組126。在一些實例中,晶片組126可包含北橋(northbridge)和南橋(southbridge)。北橋將CPU 102連結到較高速裝置,例如CPU記憶體106、GPU 104以及GPU記憶體108。南橋將CPU 102連接到較低速週邊裝置,例如鍵盤、電腦滑鼠以及印表機。在一些實例中,晶片組126或晶片組的各部分可集成到CPU 102中。舉例來說,CPU 102可包含用於控制對記憶體的存取的記憶體控制器。CPU 102可包含擴展匯流排(例如PCIe)介面控制器,其用於控制與連接到系統匯流排124的儲存裝置122的互動。CPU 102可包含視訊控制器,其用於控制與顯示裝置的互動。
將連接到系統匯流排124的每一裝置在一位址的範圍(range of addresses)中分配。舉例來說,CPU記憶體106與匯流排位址128的第一範圍相關聯,GPU記憶體108與匯流排位址130的第二範圍相關聯,且每一儲存裝置122與匯流排位址132的第三範圍相關聯。在向特定匯流排位址寫入資料時,所述資料將被發送到與所述特定匯流排位址相關聯的特定裝置。舉例來說,如果特定匯流排位址在匯流排位址128的第一範圍內,那麼資料將被寫入到CPU記憶體106。如果特定匯流排位址在匯流排位址130的第二範圍內,那麼資料將被寫入到GPU記憶體108。如果特定匯流排位址在匯流排位址132的第三範圍內,那麼資料將被寫入到儲存裝置122。
從CPU角度來看,將連接到系統匯流排124的每一裝置在一物理位址的範圍分配,且在物理位址與匯流排位址之間存在映射。在CPU通過物理位址定位連接到系統匯流排124的其它裝置時,連接到系統匯流排124的其它裝置通過匯流排位址定位彼此。在一些實例中,在連接到系統匯流排124的裝置(包含CPU)發起(initiate)直接記憶體存取操作之前,將物理位址轉換為匯流排位址。這種位址轉換可在硬體層級(例如輸入-輸出記憶體管理單元(input-output memory management unit,IOMMU))下或在軟體層級(例如裝置驅動器)下發生。如果物理位址和相對應的匯流排位址相同,那麼可忽略這種位址轉換。
下文描述用於啟用資料從儲存裝置122到GPU記憶體108以及從GPU記憶體108到儲存裝置122的DMA傳送的技術。為了執行儲存裝置122與記憶體區域之間的DMA資料傳送,儲存裝置122需要瞭解對應於記憶體區域的匯流排位址。在一些實施方案中,Linux作業系統核心使用結構頁面資料物件來表示CPU記憶體106的物理頁面。Linux核心可向儲存裝置122的儲存驅動器114發送具有至少一個結構頁面資料物件(struct page data object)的讀取請求或寫入請求,且儲存驅動器114可基於結構頁面資料物件確定匯流排位址。儲存驅動器114可將資料發送到對應於CPU記憶體頁面的匯流排位址或從所述匯流排位址讀取資料。在一些實施方案中,Linux核心和GPU驅動器118均不會自動創建用於GPU記憶體108的結構頁面資料物件。因此,使用現有Linux作業系統及裝置驅動器,可能難以在儲存裝置122與GPU記憶體108之間執行資料的DMA傳送。
在一些實施方案中,為了在儲存裝置122與GPU記憶體108之間啟用資料的DMA傳送,可創建資料結構116來表示GPU記憶體108的區域,以使得所述資料結構116具有與由作業系統使用的資料結構相同的格式來表示CPU記憶體106的區域。舉例來說,可建立結構頁面資料結構116來表示GPU 記憶體108,以提供Linux核心向儲存裝置122的儲存驅動器114發送具有至少一個結構頁面資料結構116的讀取請求或寫入請求,且儲存驅動器114可基於結構頁面資料結構116確定GPU記憶體108的匯流排位址。儲存驅動器114可將資料發送到對應於GPU記憶體108的匯流排位址或從所述匯流排位址讀取資料。
GPU記憶體108可具有GPU物理記憶體位址及GPU虛擬記憶體位址。GPU物理記憶體位址對應於GPU物理記憶體140,且GPU虛擬記憶體位址對應於GPU虛擬記憶體134。通過使用GPU虛擬記憶體位址,使用者應用程式120所見的GPU記憶體108看起來就像是連續位址空間或一批連續片段。GPU 104包含將虛擬位址轉譯為物理位址的記憶體管理單元(memory management unit,MMU)。在一些實例中,GPU虛擬位址空間可超出GPU物理記憶體的容量,且因此參考比實際存在更多的GPU記憶體。GPU虛擬記憶體134的益處包含使使用者應用程式120不必管理可在數個使用者應用程式120當中共用的GPU記憶體空間的細節。
為使儲存裝置122將資料傳送到GPU記憶體108或從GPU記憶體108接收資料,儲存裝置122需要將資料寫入到GPU物理記憶體140的匯流排位址或從所述匯流排位址讀取資料(因此避免將虛擬記憶體位址轉譯為物理記憶體位址的需要,所述轉譯耗時並減慢資料傳送)。如果儲存裝置122瞭解對應於GPU物理記憶體位址的匯流排位址,那麼儲存裝置122可將資料寫入到GPU物理記憶體108的匯流排位址或從所述匯流排位址讀取資料。資料結構116提供關於GPU物理記憶體140的資訊。基於資料結構116,儲存裝置122的儲存驅動器114可確定對應於GPU記憶體108的物理位址的匯流排位址。
在一些實施方案中,為了創建用於GPU物理記憶體140的區域的資料結構116,使用者應用程式120可調用GPU 104的第一函式呼叫來請求GPU虛擬記憶體134的區域的分配。第一函式呼叫將指向GPU虛擬記憶體134的分配區域的GPU虛擬記憶體指標136,返回到使用者應用程式120。使用者應用程式120可以調用GPU 104的第二函式呼叫以請求GPU虛擬記憶體134的分配區域映射到GPU物理記憶體140的區域。第二函式呼叫將GPU記憶體映射控制柄(mapping handle)返回到使用者應用程式120,所述GPU記憶體映射控制柄表示GPU虛擬記憶體134與GPU物理記憶體140之間的映射。使用者應用程式120接著可調用GPU記憶體映射控制柄,並將所述GPU記憶體映射控制柄傳遞到GPU 104的第三函式呼叫,以請求GPU物理記憶體140映射到與使用者應用程式120相關聯的CPU虛擬記憶體空間。GPU虛擬記憶體指標136與通過第三函式呼叫所返回的CPU虛擬位址138相關聯。基於GPU記憶體映射控制柄,資料結構116可被建立並用來將CPU虛擬位址138映射到GPU物理記憶體140。
使用者應用程式120使用與GPU物理位址140相關聯的CPU虛擬位址138發起直接輸入/輸出操作。作業系統核心向與儲存裝置122相關聯的儲存驅動器114發送與CPU虛擬位址138相關聯的資料結構116。儲存驅動器114基於資料結構116確定GPU記憶體108的匯流排位址。儲存裝置122基於GPU記憶體108的匯流排位址發起與GPU記憶體108的DMA資料傳送。
下文描述用於建立可用於啟用儲存裝置122與GPU記憶體108之間的DMA資料傳送的資料結構的一般化示範性程序。參考圖2、圖3A以及圖3B,提供一種用於啟用儲存裝置122與GPU記憶體108之間的DMA資料傳送的程序150。圖2示出對應於圖3A和圖3B中所示的程序150的步驟的系統100的模組之間的互動、函式呼叫及/或信號路徑。
程序150可包含以下示範性步驟。
步驟152:針對整個GPU物理記憶體,GPU驅動器118或核心模組在核心空間112中創建必要的資料結構116,以促進位址轉換和DMA操作。這個步驟是可選擇的,是因為在一些實施方案中,可在後述步驟中創建必要的資料結構116。
步驟154:使用者空間程序分配GPU虛擬記憶體134並接收到所述GPU虛擬記憶體134的指標136。所述使用者空間程序隸屬於使用者應用程式120,其可包含(例如)視頻呈現(video rendering)程式、動畫呈現(animation rendering)程式、影像處理程式、機器學習程式、數學模擬程式、用於控制車輛(例如,電動自行車、摩托車、個人交通工具、轎車、卡車、火車、船或飛機)的應用程式、用於控制機器人的應用程式、用於控制家用電器的應用程式、用於控制工業機器的應用程式、大數據應用程式、用於處理財務資料的應用程式、用於處理健康護理資料的應用程式、用於處理醫療資料的應用程式及/或具有人工智慧功能的應用程式。
步驟156:GPU驅動器118將所分配的GPU虛擬記憶體134映射到GPU物理記憶體140的區域,並鎖定(lock)GPU虛擬記憶體134與GPU物理記憶體140之間的映射。術語“鎖定(locking)”是指維持所分配的GPU虛擬記憶體134與GPU物理記憶體140之間的映射直到使用者空間程序發出解鎖或釋放映射的指令。因此,當所分配的GPU虛擬記憶體134與GPU物理記憶體140的區域之間的映射鎖定時,GPU物理記憶體140的區域無法映射到另一虛擬記憶體,直到所述映射解鎖或釋放。
如果所分配GPU虛擬記憶體134與GPU物理記憶體140的對應區域之間的映射未鎖定,那麼有可能的是,當(例如)使用者應用程式120或另一應用程式請求另外的GPU虛擬記憶體以使得沒有充足的GPU物理記憶體140映射到GPU虛擬記憶體134時,GPU 104可將GPU物理記憶體140的另一區域映射到所分配GPU虛擬記憶體134。在一些實例中,GPU 104可將資料從GPU物理記憶體140的一部分複製到外部記憶體裝置,並將GPU虛擬位址的一部分映射到與儲存在儲存裝置處的資料相關聯的位址。鎖定GPU虛擬記憶體134與GPU物理記憶體140之間的映射確保GPU虛擬記憶體指標136將始終映射到GPU物理記憶體140中的相同區域。
步驟158:如果未執行步驟152,那麼針對鎖定的GPU記憶體,GPU驅動器118或核心模組在核心空間112中創建可用於位址轉換和DMA操作的資料結構116。如果執行步驟152以使得資料結構116已經創建,那麼可跳過步驟158。
步驟160:GPU驅動器118或核心模組將鎖定的GPU記憶體映射到使用者空間程序的CPU虛擬位址138。因此,將使用者空間程序的CPU虛擬位址138連結到在步驟154中已經分配給使用者空間程序的GPU虛擬記憶體134。
步驟162:使用者空間程序利用所映射GPU記憶體的CPU虛擬位址138發起直接輸入/輸出操作。
步驟164:回應於步驟162中的直接輸入/輸出操作,作業系統核心(駐留(residing)在核心空間112中)向對等裝置(例如儲存裝置122)的儲存驅動器114發送所映射GPU記憶體的CPU虛擬位址138有關的必要資料結構116以及其它必要參數。在此實例中,對等裝置與GPU 104處於相同主機橋(host bridge)或根複合體(root complex)之下。儲存驅動器114基於資料結構116創建匯流排位址132並相應地發起DMA操作。
步驟166:在DMA操作完成之後,GPU驅動器118或核心模組取消映射鎖定的GPU記憶體,以使得CPU虛擬位址138不再映射到鎖定的GPU記憶體。
步驟168:GPU驅動器118解鎖GPU記憶體108。
步驟170:GPU驅動器118或核心模組釋放在步驟152或步驟158中創建的資料結構116。
步驟172:使用者空間程序釋放步驟154中分配的GPU虛擬記憶體134。程序150在步驟172之後結束。
以下描述用於啟用儲存裝置122與NVIDIA GPU 104(購自加利福尼亞聖克拉拉NVIDIA公司)的GPU記憶體108之間的DMA資料傳送的示範性程序。在此實例中,作業系統是Linux。使用者空間應用程式與NVIDIA CUDA平臺相容,並且有時被稱作CUDA應用程式。
參考圖4A到圖4C,提供一種用於啟用儲存裝置122與NVIDIA GPU記憶體108之間的DMA資料傳送的程序180。程序180可包含以下示範性步驟。
步驟182:載入NVIDIA驅動器(例如GPU驅動器118),其提供用於存取NVIDIA GPU 104的功能的介面。
步驟184:載入可用於創建用來啟用儲存裝置122與GPU記憶體108之間的DMA資料傳送的結構頁面資料結構的gdrdrv驅動器。gdrdrv驅動器創建用於與使用者空間應用程式(例如使用者應用程式120)通信的字元裝置(character device)。對於每一GPU 104,gdrdrv驅動器從NVIDIA驅動器檢索PCI裝置資訊,以保留第一基底位址暫存器(base address register 1,BAR1)空間並相應地創建結構頁面資料結構,或調用devm_request_mem_region(),接著另外調用devm_memremap_pages()。
步驟186:CUDA應用程式(例如)通過調用cudaMalloc函數或cuMemAlloc函數來分配GPU虛擬記憶體。
步驟188:CUDA應用程式打開gdrdrv驅動器的字元裝置。
步驟190:CUDA應用程式向gdrdrv的字元裝置發送第一IOCTL命令以創建並鎖定GPU虛擬記憶體134與GPU物理記憶體140之間的映射。IOCTL是指用於裝置特定輸入/輸出操作的Linux輸入/輸出控制系統調用。
步驟192:回應於第一IOCTL系統調用,gdrdrv驅動器要求NVIDIA驅動器創建及鎖定GPU虛擬記憶體134與GPU物理記憶體140之間的映射,並返回與所述映射相關聯的控制柄。
步驟194:CUDA應用程式以上述控制柄調用mmap系統調用,以將所分配GPU記憶體映射到使用者空間110中。
步驟196:作為處理mmap系統調用的一部分,Linux核心調用gdrdrv驅動器的字元裝置的mmap回呼函數。
步驟198:mmap回呼函數通過先前提到的控制柄識別所分配GPU記憶體的物理頁面,並基於相對應的結構頁面資料結構將所分配GPU記憶體的物理頁面插入到使用者空間110,同時確保VM_IO及VM_PFNMAP兩者均不會針對使用者空間110而設置。VM_IO用來標記記憶體映射I/O(memory-mapped I/O)空間,而VM_PFNMAP則用來標記無相對應結構頁面資料結構的空間。
步驟200:Linux核心將所分配GPU記憶體的使用者空間指標(例如:CPU虛擬位址138)返回到CUDA應用程式。
步驟202:CUDA應用程式打開具有O_DIRECT標記的檔案。O_DIRECT標記用於Linux中,以請求核心避免在使用者空間與核心空間之間複製資料,而替代地使用直接記憶體存取在GPU記憶體與儲存裝置之間直接傳送資料(若有可能)。
步驟204:CUDA應用程式將所分配GPU記憶體的使用者空間指標傳遞到讀取或寫入系統調用。
步驟206:Linux核心使用使用者空間指標138以確定對應於所分配GPU記憶體的相對應的結構頁面資料結構116。應注意,Linux核心使用使用者空間指標138來識別使用者空間位址區;如果設置了使用者空間位址區的VM_IO或VM_PFNMAP標記,Linux核心將不會繼續找出相關聯的結構頁面,即使其確實存在,那麼讀取或寫入系統調用將失敗。否則,Linux核心將查詢頁表條目(page table entries),檢索物理位址,並基於phys_to_page()相應地定位結構頁面。
步驟208:Linux核心利用結構頁面資料結構116創建讀取請求或寫入請求,並將其發送到底層區塊裝置驅動器(例如:儲存驅動器114)。
步驟210:底層區塊裝置驅動器基於結構頁面資料結構116創建PCI匯流排位址。
步驟212:底層區塊裝置驅動器使用匯流排位址和任何其它必要參數,以針對讀取請求發起從所述區塊裝置144(例如儲存裝置122)到GPU記憶體的DMA操作或針對寫入請求發起從GPU記憶體到所述區塊裝置的DMA操作。
步驟214:Linux核心等待DMA操作的完成。
步驟216:在DMA操作完成時,Linux核心返回傳送到CUDA應用程式的位元組(bytes)的數目。
步驟218:CUDA應用程式關閉檔案。
步驟220:CUDA應用程式調用munmap系統調用以使所分配GPU記憶體的使用者空間指標138無效。
步驟222:CUDA應用程式向gdrdrv驅動器的字元裝置發送第二IOCTL命令以解鎖並釋放GPU虛擬記憶體134與GPU物理記憶體140之間的映射。
步驟224:回應於第二IOCTL命令,gdrdrv驅動器要求NVIDIA驅動器解鎖及釋放GPU虛擬記憶體134與GPU物理記憶體140之間的映射。
步驟226:CUDA應用程式關閉gdrdrv驅動器的字元裝置。
步驟228:CUDA應用程式通過(例如)調用cudaFree或cuMemFree函數釋放步驟186中分配的GPU記憶體。
步驟230:卸載gdrdrv驅動器。
步驟232:卸載NVIDIA驅動器以釋放步驟184中分配的資源。程序180在步驟232之後結束。
以下描述用於啟用儲存裝置122與AMD GPU 104(購自加利福尼亞森尼韋爾先進微電子器件公司)的GPU記憶體108之間的DMA資料傳送的示範性程序。在此實例中,作業系統是Linux。使用者空間應用程式與AMD ROCm平臺相容,並且有時被稱作ROCm應用程式。
參考圖5A到圖5F,提供一種用於啟用儲存裝置122與AMD GPU記憶體108之間的DMA資料傳送的程序240。程序240可包含以下示範性步驟。
步驟242:載入ROCK的amdkfd驅動器。
步驟244:載入可用於創建用來啟用儲存裝置122與GPU記憶體108之間的DMA資料傳送的結構頁面資料結構的amdp2ptest驅動器。amdp2ptest驅動器創建用於與使用者空間應用程式(例如使用者應用程式120)通信的字元裝置,並從amdkfd驅動器獲得RDMA介面。對於每一GPU 104,amdp2ptest驅動器從Linux核心獲得PCI裝置資訊,以保留BAR0空間並相應地創建結構頁面資料結構,或調用devm_request_mem_region(),接著另外調用devm_memremap_pages()。
步驟246:ROCm應用程式通過調用hsaKmtAllocMemory函數來分配GPU虛擬記憶體134。
步驟248:ROCm應用程式打開amdp2ptest驅動器的字元裝置。
步驟250:ROCm應用程式向amdp2ptest驅動器的字元裝置發送第一IOCTL命令以創建並鎖定GPU虛擬記憶體134與GPU物理記憶體140之間的映射。
步驟252:回應於第一IOCTL命令,amdp2ptest驅動器通過使用RDMA介面要求amdkfd驅動器創建並鎖定GPU虛擬記憶體134與GPU物理記憶體140之間的映射,並返回與所述映射相關聯的控制柄。
步驟254:ROCm應用程式以上述控制柄調用mmap系統調用以將所分配GPU記憶體映射到使用者空間110中。
步驟256:作為處理mmap系統調用的一部分,Linux核心調用amdp2ptest驅動器的字元裝置的mmap回呼函數。
步驟258:mmap回呼函數通過先前提到的控制柄識別所分配GPU記憶體的物理頁面,並基於相對應的結構頁面資料結構將所分配GPU記憶體的物理頁面插入到使用者空間110,同時確保VM_IO及VM_PFNMAP兩者均不會針對使用者空間110而設置。
步驟260:Linux核心將所分配GPU記憶體的使用者空間指標(例如:CPU虛擬位址138)返回到ROCm應用程式。
步驟262:ROCm應用程式打開具有O_DIRECT標記的檔案。
步驟264:ROCm應用程式將所分配GPU記憶體的使用者空間指標傳遞到讀取系統調用或寫入系統調用。
步驟266:Linux核心使用使用者空間指標確定所分配GPU記憶體的相對應的結構頁面資料結構。
步驟268:Linux核心利用結構頁面創建讀取請求或寫入請求,並將其發送到底層區塊裝置驅動器(underlying block device driver)(例如:儲存驅動器114)。
步驟270:底層區塊裝置驅動器基於結構頁面確定PCI匯流排位址。
步驟272:底層區塊裝置驅動器使用匯流排位址和任何其它必要參數,以針對讀取請求發起從所述區塊裝置144(對應儲存裝置122)到GPU記憶體的DMA操作或針對寫入請求發起從GPU記憶體到所述區塊裝置的DMA操作。
步驟274:Linux核心等待DMA操作的完成。
步驟276:在DMA操作完成時,Linux核心返回傳送到ROCm應用程式的位元組的數目。
步驟278:ROCm應用程式關閉檔案。
步驟280:ROCm應用程式調用munmap系統調用以使所分配GPU記憶體的使用者空間指標無效。
步驟282:ROCm應用程式向amdp2ptest驅動器的字元裝置發送第二IOCTL命令以解鎖並釋放GPU虛擬記憶體134與GPU物理記憶體140之間的映射。
步驟284:回應於第二IOCTL命令,amdp2ptest驅動器通過使用RDMA介面要求amdkfd驅動器解鎖並釋放GPU虛擬記憶體134與GPU物理記憶體140之間的映射。
步驟286:ROCm應用程式關閉amdp2ptest驅動器的字元裝置。
步驟288:ROCm應用程式通過調用hsaKmtFreeMemory函數釋放步驟246中分配的GPU記憶體。
步驟290:卸載amdp2ptest驅動器。
步驟292:卸載amdkfd驅動器以釋放步驟244中分配的資源。程序240在步驟292之後結束。
可以使用上述程序150、程序180及/或程序240或等效程序顯著提高從儲存裝置122到GPU記憶體108的資料傳送的性能。舉例來說,通過在NVMe固態驅動器與NVIDIA Tesla® P100 GPU之間傳送資料來進行大量性能測試。在第一測試中,從固態驅動器傳送資料到GPU。當不使用上述DMA傳送技術以使得將資料從固態驅動器傳送到主機記憶體(例如CPU記憶體),隨後從主機記憶體傳送到GPU記憶體時,資料速率約3598 MB/s。當使用上述DMA傳送技術以使得將資料直接從固態驅動器傳送到GPU記憶體而不經由主機記憶體時,資料速率約5921 MB/s,其顯著高於在不使用上述DMA傳送技術的情況下的資料速率。在第二測試中,同時執行讀取操作以將總共4GB的資料從四個NVMe固態驅動器讀取到四個GPU記憶體。在不使用DMA時,其花費718 ms讀取4 GB資料。在使用DMA時,其花費341 ms讀取4 GB資料,其顯著短於在不使用DMA時讀取相同量的資料所需的時間。
在第三測試中,最先進的即時物件偵測系統只需一眼(You Only Look Once,YOLO)用來偵測416×416彩色圖像中的物件,所述偵測使用第一批量大小的160個圖像和第二批量大小的80個圖像從兩個NVMe固態驅動器傳送到兩個GPU記憶體,並以第三批量大小的160個圖像從一個NVMe固態驅動器傳送到一個GPU記憶體。為一致性起見,測試中使用的都是同一張彩色圖像。圖14示出用於執行第三測試的硬體設置。CPU 460電耦合到CPU記憶體462。CPU 460電耦合到PCIe交換器464,其電耦合到第一GPU 466和第二GPU 468。PCIe交換器464還電耦合到第一NVMe固態驅動器470及第二NVMe固態驅動器472。PCIe交換器464與其它元件之間的每個鏈路(link)是PCIe Gen3 x16雙向通道。此外,連接到PCIe交換器464的任何兩個端點之間的通信是完全無阻塞的。在此實例中,CPU 460為Intel Xeon CPU E5-2609 v4 @ 1.70GHz,第一GPU 466和第二GPU 468為NVIDIA Tesla P100 16G,PCIe交換器464為Falconwitch PS1816,且NVMe固態驅動器470、NVMe固態驅動器472為Intel NVMe P3700 PCIe Gen3 x4。
參考圖15,曲線480示出1000次反覆運算測試(1000-iteration test)的I/O時間。如果圖像直接從NVMe SSD 470、NVMe SSD 472傳送到GPU466之記憶體、GPU468之記憶體而不會穿過CPU記憶體462,分別減少42.6秒、19.9秒以及34秒,或減少20.15%、17.94%以及18.76%。在曲線480中,條(bar)482a、條484a以及條486a表示使用常規方法獲得的測試資料。條482b、條484b以及條486b表示使用上述DMA傳送技術直接將資料從NVMe SSD傳送到GPU記憶體而獲得的測試資料。
參考圖16,曲線490示出1000次反覆運算測試的偵測速度每秒鐘分別增加46.9個圖像、41.6個圖像以及47個圖像或增加8.26%、7.49%以及10.49%。在曲線490中,條492a、條494a以及條496a表示常規方法獲得的測試資料。條492b、條494b以及條496b表示使用上述DMA傳送技術直接將資料從NVMe SSD傳送到GPU記憶體獲得的測試資料。
因此,上述DMA技術可顯著改進計算系統的性能並產生有形結果。通過使得資料能夠從儲存裝置更快傳送到GPU記憶體,所述GPU與不使用上述DMA技術的計算系統相比可更快地處理大量資料。上述DMA技術可用於自駕車輛中,所述自駕車輛處理大量資料,例如圖像資料和由車輛的各種感測器捕捉的其它資料。上述DMA技術可用於智慧型機器人中,所述智慧型機器人處理大量資料,例如圖像資料和由機器人的各種感測器捕捉的其它資料。上述DMA技術可由處理大量財務資料、健康護理資料及/或醫療資料的雲端伺服器使用。
舉例來說,圖7為可用於機器學習應用程式的電腦系統300的圖。系統300包含CPU 302、加速器304以及儲存裝置306。加速器304可包含一或多個圖形處理單元。匯流排連接和記憶體模組在圖式中並未示出。在此實例中,訓練業務流程處理框架(training orchestration framework)318可在CPU 302上執行,而模型訓練及驗證在加速器304上進行。訓練業務流程處理框架318可基於Torch、TensorFlow™、Caffe及/或Rudra。有標記的訓練資料316儲存在儲存裝置306中。通過使用上述DMA技術,有標記的訓練資料316可以比常規方法更快地從儲存裝置306傳送到加速器304的記憶體。
舉例來說,模型可以使用儲存在儲存裝置306上的有標記的訓練資料316來訓練。相同模型310的數個並行個例可使用訓練資料的不同部分來訓練,其中模型310的每一個例可具有其自身模型參數。個別模型參數定期合併(例如:步驟312),以使得從訓練資料的所有部分獲悉的資訊可在訓練模組當中共用。更新的模型308之參數隨後廣播回到訓練模組(例如:步驟314),並進行驗證程序316以定期檢查模型的最新版本的精確性以便確保模型訓練程序匯聚。在達到模型的所要精確性時停止模型訓練程序。
舉例來說,模型可用於諸如以下的應用程式中:欺詐檢測、電子郵件過濾、網路侵入者檢測、光學字元辨識、圖像辨識、語音辨識、面部辨識、產品推薦、醫療診斷、形狀檢測、顧客區分、股票交易推薦以及電腦視覺。在許多這些應用程式中,模型訓練要求處理大量樣本資料。當加速器(例如圖形處理單元)的計算速度變得更快時,重要的是維持儲存裝置306與加速器304之間的高資料輸送量,以允許大訓練資料集從儲存裝置306快速傳送到加速器304。使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量以啟用儲存裝置306與加速器304的記憶體之間的DMA資料傳送。
在一些實施方案中,用於實施程序150、程序180及程序240的軟體指令可提供在電腦可讀媒體(例如,RAM、ROM、SDRAM、硬碟、光碟以及快閃記憶體)上。術語“電腦可讀媒體”是指參與將指令提供到處理器以用於執行的媒體,包含但不限於非揮發性媒體(例如光碟或磁片)和易失性媒體(例如記憶體)以及傳輸媒體。傳輸媒體包含但不限於同軸電纜、銅線、光纖以及可用空間。
上述特徵可有利地在一或多個電腦程式中實施,所述一或多個電腦程式可在包含至少一個可程式設計處理器的可程式設計系統上執行,所述至少一個可程式設計處理器耦合成從資料儲存系統、至少一個輸入裝置以及至少一個輸出裝置接收資料和指令並向其傳輸資料及指令。電腦程式為可在電腦中直接或間接使用以進行某一活動或帶來某種結果的一組指令。電腦程式可以任何形式的程式設計語言(例如C、Java)撰寫,包含編譯或解譯語言,且其可以任何形式部署,包含部署為獨立程式或部署為模組、元件、次常式、基於流覽器的網頁應用程式或適合在計算環境中使用的其它單元。
用於執行指令程式的合適的處理器包含(例如)任何種類電腦的通用微處理器、專用微處理器、數位訊號處理器、單核處理器或多核處理器。一般來說,處理器將從唯讀記憶體或隨機存取記憶體或兩者接收指令和資料。電腦的基本元件是用於執行指令的處理器以及一或多個用於儲存指令和資料的記憶體。一般來說,電腦還將包含一或多個用於儲存資料檔案的大量儲存裝置,或以操作方式耦合以與所述大量儲存裝置連通;這些裝置包含磁片,例如內部硬碟和可移式磁片;磁光碟;以及光碟。適用於有形地體現電腦程式指令和資料的儲存裝置包含所有形式的非揮發性記憶體,包含例如半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁片,例如內部硬碟和可移式磁片;磁光碟;以及CD-ROM磁片、DVD-ROM磁片和藍光BD-ROM磁片。處理器和記憶體可以專用積體電路(application-specific integrated circuit,ASIC)作為補充或併入ASIC。
已經描述所述主題的特定實施例。其它實施例在以下權利要求書的範圍內。在一些情況下,權利要求書中所敘述的動作可以不同次序來執行且仍達到合乎需要的結果。另外,附圖中所描繪的程序不一定需要所示出的特定次序或循序次序來達到合乎需要的結果。在某些實施方案中,多工處理和並行處理可為有利的。
儘管上文已經論述一些實例,但其它實施方案和應用也在以下權利要求書的範圍內。舉例來說,圖1的實例中的系統匯流排124可為啟用電耦合到主機匯流排的第一裝置與電耦合到主機匯流排的第二裝置之間的對等通信的任何匯流排。此類匯流排的實例包含Thunderbolt及NVLink。上述DMA技術可用於其它類型的具有可通過系統匯流排124直接定址的記憶體的輔助處理器。舉例來說,輔助處理器可專用於某些數學計算,例如某些加密及解密操作。輔助處理器可專用於進行複雜物理計算、音訊信號處理及/或視訊訊號處理。輔助處理器可專用於加速人工神經網路。在本說明書中,打開檔案可能意味著打開儲存在儲存裝置上的檔案或打開對應於儲存裝置的裝置檔案。舉例來說,在Linux作業系統(或其它Unix類作業系統)中,裝置檔案是裝置驅動器的介面,就像其他普通檔案一樣,出現在檔案系統中。裝置檔案允許軟體使用標準輸入/輸出系統調用與裝置驅動器互動。裝置檔案可為週邊裝置(例如儲存裝置)提供一個簡單介面,且還可用來存取裝置(例如磁碟分割)上的特定資源。作業系統核心模組可包含內置模組或可載入模組。
在一些實施方案中,CPU、GPU以及儲存裝置可連接到使用匯流排協定轉譯器耦合的不同匯流排。圖8到圖13示出此類計算系統的實例。參考圖8,在一些實施方案中,計算系統320包含CPU 322及CPU記憶體324,其兩者均電耦合到系統匯流排(主機匯流排)326。儲存裝置328及圖形處理處理(GPU)330電耦合到匯流排A 332。GPU 330具有GPU記憶體336。匯流排協定轉譯器#1 334(或轉換器)將資料從遵守系統匯流排協定的格式轉譯(或轉換)成遵守匯流排A協定的格式,且反之亦然。可以使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量,以通過匯流排A 332啟用儲存裝置328與GPU記憶體336之間的DMA資料傳送。
在此實例中,當在儲存裝置328與GPU記憶體336之間傳送資料時,得將資料從匯流排A 332,通過匯流排協定轉譯器#1 334及系統匯流排326,傳送到CPU記憶體324,並接著從CPU記憶體324,通過系統匯流排326及匯流排協定轉譯器#1 334,傳送到匯流排A 332;但上述DMA資料傳送技術可以減少這樣的需求而提供顯著優點。
參考圖9,在一些實施方案中,計算系統340包含CPU 342及CPU記憶體344,其兩者均電耦合到系統匯流排(主機匯流排)346。儲存裝置348電耦合到匯流排A 350。GPU 352電耦合到匯流排B 354。GPU 352具有GPU記憶體356。匯流排協定轉譯器#4 358(或轉換器)將資料從遵守系統匯流排協定的格式轉譯(或轉換)成遵守匯流排A協定的格式,且反之亦然。匯流排協定轉譯器#4 358可將資料從遵守系統匯流排協定的格式轉譯成遵守匯流排B協定的格式,且反之亦然。匯流排協定轉譯器#4 358還可將資料從遵守匯流排A協定的格式轉譯成遵守匯流排B協定的格式,且反之亦然。可以使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量,以通過匯流排A 350、匯流排協定轉譯器#4 358以及匯流排B 354啟用儲存裝置348與GPU記憶體356之間的DMA資料傳送。
參考圖10,在一些實施方案中,計算系統360包含CPU 362及CPU記憶體364,其兩者均電耦合到系統匯流排(主機匯流排)366。儲存裝置368電耦合到匯流排A 370。GPU 372電耦合到匯流排B 374。GPU 372具有GPU記憶體376。匯流排協定轉譯器#1 378(或轉換器)將資料從遵守系統匯流排協定的格式轉譯(或轉換)成遵守匯流排A協定的格式,且反之亦然。匯流排協定轉譯器#2 380將資料從遵守匯流排A協定的格式轉譯成遵守匯流排B協定的格式,且反之亦然。可以使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量,以通過匯流排A 370、匯流排協定轉譯器#2 380以及匯流排B 374啟用儲存裝置368與GPU記憶體376之間的DMA資料傳送。
參考圖11,在一些實施方案中,計算系統390包含CPU 392及CPU記憶體394,其兩者均電耦合到系統匯流排(主機匯流排)396。儲存裝置398電耦合到匯流排A 400。GPU 402電耦合到匯流排B 404。GPU 402具有GPU記憶體406。匯流排協定轉譯器#3 408(或轉換器)將資料從遵守系統匯流排協定的格式轉譯(或轉換)成遵守匯流排B協定的格式,且反之亦然。匯流排協定轉譯器#2 410將資料從遵守匯流排A協定的格式轉譯成遵守匯流排B協定的格式,且反之亦然。可以使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量,以通過匯流排A 400、匯流排協定轉譯器#2 410以及匯流排B 404啟用儲存裝置398與GPU記憶體406之間的DMA資料傳送。
參考圖12,在一些實施方案中,計算系統420包含CPU 422及CPU記憶體424,其兩者均電耦合到系統匯流排(主機匯流排)426。儲存裝置428電耦合到匯流排A 430。GPU 432電耦合到系統匯流排426。GPU 432具有GPU記憶體434。匯流排協定轉譯器#1 436(或轉換器)將資料從遵守系統匯流排協定的格式轉譯(或轉換)成遵守匯流排A協定的格式,且反之亦然。可以使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量,以通過匯流排A 430、匯流排協定轉譯器#1 436以及系統匯流排426啟用儲存裝置428與GPU記憶體434之間的DMA資料傳送。
參考圖13,在一些實施方案中,計算系統440包含CPU 442及CPU記憶體444,其兩者均電耦合到系統匯流排(主機匯流排)446。儲存裝置448電耦合到系統匯流排446。GPU 450電耦合到匯流排B 452。GPU 450具有GPU記憶體454。匯流排協定轉譯器#2 456(或轉換器)將資料從遵守系統匯流排協定的格式轉譯(或轉換)成遵守匯流排B協定的格式,且反之亦然。可以使用上述程序(例如程序150、程序180或程序240)達到高資料輸送量,以通過系統匯流排 446、匯流排協定轉譯器#2 456以及匯流排B 452啟用儲存裝置448與GPU記憶體454之間的DMA資料傳送。
在圖8到圖13中所示的實例中,當在儲存裝置(例如,儲存裝置328、儲存裝置348、儲存裝置368、儲存裝置398、儲存裝置428、儲存裝置448)與GPU記憶體(例如,GPU記憶體336、GPU記憶體356、GPU記憶體376、GPU記憶體406、GPU記憶體434以及GPU記憶體454)之間傳送資料時,上述DMA資料傳送技術,因減少將資料複製到CPU記憶體(例如,CPU記憶體324、CPU記憶體344、CPU記憶體364、CPU記憶體394、CPU記憶體424、CPU記憶體444)的需要而提供顯著優點。
上述DMA資料傳送技術的另一優點在於可減少或消除多GPU環境中的CPU記憶體頻寬爭用。在常規系統中,當同時傳送用於每一GPU的模型訓練資料(例如機器學習模型訓練資料)時,可強制GPU及儲存裝置爭奪CPU記憶體頻寬。通過使用上述發明,將減少或消除CPU記憶體頻寬爭用問題。
雖然本說明書含有許多特定實施細節,但這些細節不應解釋為限制任何發明的範圍或可請求的事物的範圍,而應解釋為針對特定發明之特定實施例的特徵描述。本說明書在單獨實施例的上下文中所描述的某些特徵也可在單個實施例中以組合方式實施。反之,在單個實施例的上下文中描述的各種特徵也可單獨地在多個實施例中實施或以任何適合子組合來實施。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100‧‧‧計算系統
102‧‧‧中央處理單元(CPU)
104‧‧‧通用圖形處理單元
106‧‧‧CPU記憶體
108‧‧‧GPU記憶體
110‧‧‧使用者空間
112‧‧‧核心空間
114‧‧‧儲存驅動器
116‧‧‧資料結構
118‧‧‧GPU驅動器
120‧‧‧使用者應用程式
122‧‧‧儲存裝置
124‧‧‧系統匯流排
126‧‧‧晶片組
128、130、132‧‧‧匯流排位址
134‧‧‧GPU虛擬記憶體
136‧‧‧GPU虛擬記憶體指標
138‧‧‧CPU虛擬位址
140‧‧‧GPU物理記憶體
144‧‧‧區塊裝置
150、180、240‧‧‧程序
152、154、156、158、160、162、164、166、168、170、172、182、184、186、188、190、192、194、196、198、200、202、204、206、208、210、212、214、216、218、220、222、224、226、228、230、232‧‧‧步驟
300‧‧‧電腦系統
302‧‧‧CPU
304‧‧‧加速器
306‧‧‧儲存裝置
308‧‧‧更新的模型
310‧‧‧模型
312、314‧‧‧步驟
316‧‧‧有標記的訓練資料
318‧‧‧訓練業務流程處理框架
320‧‧‧計算系統
322‧‧‧CPU
324‧‧‧CPU記憶體
326‧‧‧系統匯流排
328‧‧‧儲存裝置
330‧‧‧圖形處理單元(GPU)
332‧‧‧匯流排A
334‧‧‧匯流排協定轉譯器#1
336‧‧‧GPU記憶體
340‧‧‧計算系統
342‧‧‧CPU
344‧‧‧CPU記憶體
346‧‧‧系統匯流排
348‧‧‧儲存裝置
350‧‧‧匯流排A
352‧‧‧GPU
354‧‧‧匯流排B
356‧‧‧GPU記憶體
358‧‧‧匯流排協定轉譯器#4
360‧‧‧計算系統
362‧‧‧CPU
364‧‧‧CPU記憶體
366‧‧‧系統匯流排
368‧‧‧儲存裝置
370‧‧‧匯流排A
372‧‧‧GPU
374‧‧‧匯流排B
376‧‧‧GPU記憶體
378‧‧‧匯流排協定轉譯器#1
380‧‧‧匯流排協定轉譯器#2
390‧‧‧計算系統
392‧‧‧CPU
394‧‧‧CPU記憶體
396‧‧‧系統匯流排
398‧‧‧儲存裝置
400‧‧‧匯流排A
402‧‧‧GPU
404‧‧‧匯流排B
406‧‧‧GPU記憶體
408‧‧‧匯流排協定轉譯器#3
410‧‧‧匯流排協定轉譯器#2
420‧‧‧計算系統
422‧‧‧CPU
424‧‧‧CPU記憶體
426‧‧‧系統匯流排
428‧‧‧儲存裝置
430‧‧‧匯流排A
432‧‧‧GPU
434‧‧‧GPU記憶體
436‧‧‧匯流排協定轉譯器#1
440‧‧‧計算系統
442‧‧‧CPU
444‧‧‧CPU記憶體
446‧‧‧系統匯流排
448‧‧‧儲存裝置
450‧‧‧GPU
452‧‧‧匯流排B
454‧‧‧GPU記憶體
456‧‧‧匯流排協定轉譯器#2
460‧‧‧CPU
462‧‧‧CPU記憶體
464‧‧‧PCIe交換器
466‧‧‧GPU
468‧‧‧GPU
470‧‧‧第一NVMe固態驅動器
472‧‧‧第二NVMe固態驅動器
480‧‧‧曲線
482a、482b、484a、484b、486a、486b‧‧‧條
490‧‧‧曲線
492a、492b、494a、494b、496a、496b‧‧‧條
圖1為計算系統的示意圖。 圖2為計算系統的操作圖。 圖3A、圖3B、圖4A到圖4C以及圖5A到圖5C為用於在計算系統中實施資料的直接記憶體存取(DMA)傳送的程序的流程圖。 圖6A到圖6E示出結構頁面定義(struct page definition)的實例。 圖7為可用於機器學習應用程式的示範性系統的圖。 圖8到圖13為示範性電腦系統的方塊圖。 圖14為用於測試資料的直接記憶體存取傳送的硬體設定的圖。 圖15及圖16是示出資料的直接記憶體存取傳送的測試結果的曲線圖。 各種圖式中的相同參考符號指示相同元件。
Claims (57)
- 一種操作計算系統的方法,所述計算系統包括中央處理單元、與所述中央處理單元相關聯的CPU記憶體、圖形處理單元、與所述圖形處理單元相關聯的GPU記憶體、能夠進行直接記憶體存取(direct memory access,DMA)的儲存裝置以及對等主機匯流排(peer-to-peer host bus),其中所述CPU記憶體的第一部分配置為使用者空間且所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,所述核心空間配置成供作業系統核心模組使用,所述方法包括: 在所述中央處理單元處,針對多個GPU物理記憶體區域中的每一個區域,創建表示所述GPU物理記憶體區域的資料結構並且將所述資料結構儲存在所述核心空間中,其中所述資料結構具備格式,所述格式與由所述計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域; 為使用者空間程序分配第一GPU虛擬記憶體空間; 在所述圖形處理單元處,將所述第一GPU虛擬記憶體空間映射到包括GPU物理記憶體的至少一個區域的第一GPU物理記憶體空間; 基於表示所述GPU物理記憶體區域的所述資料結構,將所述第一GPU物理記憶體空間映射到與所述使用者空間程序(user-space process)相關聯的CPU虛擬位址; 使用映射到所述第一GPU物理記憶體空間的所述CPU虛擬位址發起(initiating)在所述儲存裝置上的直接輸入輸出操作; 基於表示所述GPU物理記憶體區域的所述資料結構,創建對應於映射到所述CPU虛擬位址的所述第一GPU物理記憶體空間的至少一個匯流排位址;以及 通過使用所述儲存裝置的裝置驅動器,基於所述匯流排位址發起直接記憶體存取操作,以在所述儲存裝置與所述第一GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料。
- 如申請專利範圍第1項所述的的操作計算系統的方法,其中發起直接記憶體存取操作以在所述儲存裝置與所述第一GPU物理記憶體空間之間傳送資料包括:發起直接記憶體存取操作以在所述儲存裝置與所述第一GPU物理記憶體空間之間傳送資料而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述計算系統包括多個圖形處理單元,其各自具有相關聯GPU記憶體並且電耦合到所述對等主機匯流排,以及所述方法包括:發起直接記憶體存取操作,以在所述儲存裝置與所述多個圖形處理單元的GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述計算系統包括能夠進行直接記憶體存取的多個儲存裝置,其各自電耦合到所述對等主機匯流排,以及所述方法包括:發起直接記憶體存取操作,以在所述多個儲存裝置與所述圖形處理單元的所述GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述計算系統包括能夠進行直接記憶體存取的多個儲存裝置,其各自通過所述對等主機匯流排電耦合到多個圖形處理單元,所述多個圖形處理單元各具有相關聯GPU記憶體,以及所述方法包括:發起直接記憶體存取操作,以在所述多個儲存裝置與所述多個圖形處理單元的GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中創建對應於所述第一GPU物理記憶體空間的至少一個匯流排位址的步驟包括:使用所述儲存裝置的所述裝置驅動器來創建對應於所述第一GPU物理記憶體空間的至少一個匯流排位址。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中創建對應於所述第一GPU物理記憶體空間的至少一個匯流排位址的步驟包括:使用所述作業系統核心來創建對應於所述第一GPU物理記憶體空間的至少一個匯流排位址。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述儲存裝置包括非揮發性記憶體高速(non-volatile memory express,NVMe)儲存裝置。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述儲存裝置包括固態儲存裝置、硬碟驅動器、光碟驅動器、快閃記憶體儲存裝置、電阻式RAM儲存裝置、相變記憶體儲存裝置或磁阻式RAM儲存裝置中的至少一個。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述儲存裝置包括串列AT連接儲存裝置、串列連接的SCSI儲存裝置、通用序列匯流排儲存裝置、IEEE1394儲存裝置或光纖通道儲存裝置中的至少一個。
- 如申請專利範圍第1項所述的操作計算系統的方法,其包括:維持所述第一GPU虛擬記憶體空間與所述第一GPU物理記憶體空間之間的映射,直到完成所述直接記憶體存取操作為止。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述圖形處理單元包括統一計算架構(CUDA)所支援的圖形處理單元,以及所述使用者空間程序包括基於CUDA的應用程式。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述對等主機匯流排包括周邊元件連接高速(PCIe)、Thunderbolt或NVLink匯流排中的至少一個。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中使用所述CPU虛擬位址發起所述儲存裝置上的直接輸入輸出操作的步驟包括: 打開檔案;以及 通過所述使用者空間程序將所述CPU虛擬位址傳遞到讀取系統調用、寫入系統調用、等效於所述讀取系統調用的系統調用或等效於所述寫入系統調用的系統調用中的至少一個。
- 如申請專利範圍第1項所述的操作計算系統的方法,其包括使用所述使用者空間程序進行以下操作: 調用(call)與所述圖形處理單元相關聯的第一函數以分配第一GPU虛擬記憶體空間; 調用與所述圖形處理單元相關聯的第二函數以將所述第一GPU虛擬記憶體空間映射到第一GPU物理記憶體空間;以及 基於表示所述GPU物理記憶體區域的所述資料結構調用第三函數以將所述第一GPU物理記憶體空間映射到與所述使用者空間程序相關聯的CPU虛擬位址。
- 如申請專利範圍第15項所述的操作計算系統的方法,其中所述第三函數包括確保VM_IO及VM_PFNMAP兩者均不會針對所述使用者空間程序而設置。
- 如申請專利範圍第1項所述的操作計算系統的方法,其中所述作業系統包括Linux作業系統,以及所述資料結構包括結構頁面或等效於所述結構頁面的資料結構。
- 一種操作計算系統的方法,所述計算系統包括中央處理單元、與所述中央處理單元相關聯的CPU記憶體、輔助處理器(co-processor)、與所述輔助處理器相關聯的輔助處理器記憶體、能夠進行直接記憶體存取(DMA)的儲存裝置以及對等主機匯流排,其中所述CPU記憶體的第一部分配置為使用者空間且所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,所述核心空間配置成供作業系統核心模組使用,所述方法包括: 在所述中央處理單元處,針對多個輔助處理器物理記憶體區域中的每一個區域,創建表示所述輔助處理器物理記憶體區域的資料結構並且將所述資料結構儲存在所述核心空間中,其中所述資料結構具備格式,所述格式與由所述計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域; 為使用者空間程序分配第一輔助處理器虛擬記憶體空間; 在所述輔助處理器處,將所述第一輔助處理器虛擬記憶體空間映射到包括輔助處理器物理記憶體的至少一個區域的第一輔助處理器物理記憶體空間; 基於表示所述輔助處理器物理記憶體區域的所述資料結構,將所述第一輔助處理器物理記憶體空間映射到與所述使用者空間程序相關聯的CPU虛擬位址; 使用映射到所述第一輔助處理器物理記憶體空間的所述CPU虛擬位址發起在所述儲存裝置上的直接輸入輸出操作; 基於表示所述輔助處理器物理記憶體區域的所述資料結構,創建對應於映射到所述CPU虛擬位址的所述第一輔助處理器物理記憶體空間的至少一個匯流排位址;以及 使用所述儲存裝置的裝置驅動器,基於所述匯流排位址發起直接記憶體存取操作,以在所述儲存裝置與所述第一輔助處理器物理記憶體空間之間通過所述對等主機匯流排傳送資料。
- 如申請專利範圍第18項所述的操作計算系統的方法,其中發起直接記憶體存取操作以在所述儲存裝置與所述第一輔助處理器物理記憶體空間之間傳送資料的步驟包括:發起直接記憶體存取操作以在所述儲存裝置與所述第一輔助處理器物理記憶體空間之間傳送資料而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第18項所述的操作計算系統的方法,其中所述計算系統包括多個輔助處理器,其各自具有相關聯輔助處理器記憶體並且電耦合到所述對等主機匯流排,以及所述方法包括:發起直接記憶體存取操作,以在所述儲存裝置與所述多個輔助處理器的物理輔助處理器記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第18項所述的操作計算系統的方法,其中所述計算系統包括能夠進行直接記憶體存取的多個儲存裝置,其各自電耦合到所述對等主機匯流排,以及所述方法包括:發起直接記憶體存取操作,以在所述多個儲存裝置與所述輔助處理器的所述物理輔助處理器記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第18項所述的操作計算系統的方法,其中所述計算系統包括能夠進行直接記憶體存取的多個儲存裝置,其各自通過所述對等主機匯流排電耦合到多個輔助處理器,所述輔助處理器各具有相關聯輔助處理器記憶體,以及所述方法包括:發起直接記憶體存取操作,以在所述多個儲存裝置與所述多個輔助處理器的物理輔助處理器記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 一種計算系統,其包括: 中央處理單元; 與所述中央處理單元相關聯的CPU記憶體,其中所述CPU記憶體的第一部分配置為使用者空間以及所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,所述核心空間配置成供作業系統核心模組使用; 具有多個處理核心的通用圖形處理單元; 與所述圖形處理單元相關聯的GPU記憶體; 能夠進行直接記憶體存取的儲存裝置;以及 對等主機匯流排; 其中所述中央處理單元、所述圖形處理單元以及所述儲存裝置配置成: 在所述CPU記憶體的所述使用者空間中執行使用者程序; 針對多個GPU物理記憶體區域中的每一個區域,創建表示所述GPU物理記憶體區域的資料結構並且將所述資料結構儲存在所述核心空間中,其中所述資料結構具備格式,所述格式與由所述計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域; 分配第一GPU虛擬記憶體空間; 將所述第一GPU虛擬記憶體空間映射到包括GPU物理記憶體的至少一個區域的第一GPU物理記憶體空間; 基於表示所述GPU物理記憶體區域的所述資料結構,將所述第一GPU物理記憶體空間映射到與所述使用者程序相關聯的CPU虛擬位址; 使用映射到所述第一GPU物理記憶體空間的所述CPU虛擬位址發起在所述儲存裝置上的直接輸入輸出操作; 基於表示所述GPU物理記憶體區域的所述資料結構,創建對應於映射到所述CPU虛擬位址的所述第一GPU物理記憶體空間的至少一個匯流排位址;以及 通過使用所述儲存裝置的裝置驅動器,基於所述匯流排位址發起直接記憶體存取(DMA)操作,以在所述儲存裝置與所述第一GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料。
- 如申請專利範圍第23項所述的計算系統,其中使用所述CPU虛擬位址發起所述儲存裝置上的直接輸入輸出操作包括: 打開檔案;以及 將所述CPU虛擬位址傳遞到讀取系統調用、寫入系統調用、等效於所述讀取系統調用的系統調用或等效於所述寫入系統調用的系統調用中的至少一個。
- 如申請專利範圍第24項所述的計算系統,其中打開檔案包括以下中的至少一個:(i)打開儲存在所述儲存裝置上的檔案(file)或(ii)打開對應於所述儲存裝置的裝置檔案。
- 如申請專利範圍第24項所述的計算系統,其中所述作業系統核心進一步配置成避免複製使用者空間與核心空間之間的資料,而替代地使用直接記憶體存取在所述GPU記憶體與所述儲存裝置之間直接傳送所述資料。
- 如申請專利範圍第26項所述的計算系統,其中所述作業系統核心進一步配置成基於所述CPU虛擬位址識別對應於所述第一GPU物理記憶體空間的每一資料結構。
- 如申請專利範圍第27項所述的計算系統,其中所述作業系統核心進一步配置成向所述儲存裝置的所述裝置驅動器發送至少一個讀取請求或至少一個寫入請求,所述至少一個讀取請求或至少一個寫入請求各自具有對應於所述GPU物理記憶體空間的至少一個所識別的資料結構。
- 如申請專利範圍第23項所述的計算系統,其中所述中央處理單元配置成執行所述使用者程序以進行以下操作: 調用與所述圖形處理單元相關聯的第一函數以分配所述第一圖形處理單元虛擬記憶體空間; 調用與所述圖形處理單元相關聯的第二函數以將所述第一GPU虛擬記憶體空間映射到所述第一GPU物理記憶體空間;以及 基於表示所述GPU物理記憶體區域的所述資料結構調用第三函數以將所述第一GPU物理記憶體空間映射到與所述使用者程序相關聯的CPU虛擬位址。
- 如申請專利範圍第29項所述的計算系統,其中所述第一函數配置成返回指向所述所分配第一GPU虛擬記憶體空間的使用者空間指標。
- 如申請專利範圍第30項所述的計算系統,其中執行所述使用者程序以調用所述第二函數包括將所述使用者空間指標傳遞到所述第二函數。
- 如申請專利範圍第31項所述的計算系統,其中所述第二函數配置成返回與所述第一GPU虛擬記憶體空間與所述第一GPU物理記憶體空間之間的所述映射相關聯的GPU記憶體映射控制柄(handle)。
- 如申請專利範圍第32項所述的計算系統,其中執行所述使用者程序以調用所述第三函數包括將所述GPU記憶體映射控制柄傳遞到所述第三函數。
- 如申請專利範圍第32項所述的計算系統,其中所述第三函數配置成包括: 通過所述GPU記憶體映射控制柄識別所述第一GPU物理記憶體空間的每一區域; 通過所述對應的資料結構將所述第一GPU物理記憶體的每一區域插入到所述使用者程序中;以及 返回映射到所述第一GPU物理記憶體空間的CPU虛擬位址。
- 如申請專利範圍第34項所述的計算系統,其中多個GPU物理記憶體區域中的每一個區域包括多個GPU物理記憶體頁面中的每一個頁面,以及每一資料結構表示GPU物理記憶體的頁面。
- 如申請專利範圍第35項所述的計算系統,其中所述作業系統包括Linux作業系統,以及所述資料結構包括結構頁面或等效於所述結構頁面的資料結構。
- 如申請專利範圍第36項所述的計算系統,其中所述第三函數配置成包括確保VM_IO及VM_PFNMAP兩者均不會針對所述使用者空間程序而設置。
- 如申請專利範圍第23項所述的計算系統,其中所述中央處理單元配置成執行所述儲存裝置的所述裝置驅動器以創建對應於所述第一GPU物理記憶體空間的至少一個匯流排位址。
- 如申請專利範圍第23項所述的計算系統,其中所述作業系統核心配置成創建對應於所述第一GPU物理記憶體空間的至少一個匯流排位址。
- 如申請專利範圍第23項所述的計算系統,其中所述對等主機匯流排包括周邊元件連接高速(PCIe)、Thunderbolt或NVLink匯流排中的至少一個。
- 如申請專利範圍第23項所述的計算系統,其中所述儲存裝置包括非揮發性記憶體高速儲存裝置。
- 如申請專利範圍第23項所述的計算系統,其中所述儲存裝置包括固態儲存裝置、硬碟驅動器、光碟驅動器、快閃記憶體儲存裝置、電阻式RAM儲存裝置、相變記憶體儲存裝置或磁阻式RAM儲存裝置中的至少一個。
- 如申請專利範圍第23項所述的計算系統,其中所述中央處理單元、所述圖形處理單元以及所述儲存裝置配置成發起所述直接記憶體存取操作以在所述儲存裝置與所述第一GPU物理記憶體空間之間傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第23項所述的計算系統,其中所述計算系統包括多個圖形處理單元,其各自具有相關聯GPU記憶體並且電耦合到所述對等主機匯流排,並且所述中央處理單元、所述多個圖形處理單元以及所述儲存裝置配置成發起直接記憶體存取操作,以在所述儲存裝置與所述多個圖形處理單元的GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第23項所述的計算系統,其中所述計算系統包括能夠進行直接記憶體存取的多個儲存裝置,其各自電耦合到所述對等主機匯流排,並且所述中央處理單元、所述圖形處理單元以及所述多個儲存裝置配置成發起直接記憶體存取操作,以在所述多個儲存裝置與所述圖形處理單元的所述GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第23項所述的計算系統,其中所述計算系統包括能夠進行直接記憶體存取的多個儲存裝置,其各自通過所述對等主機匯流排電耦合到多個圖形處理單元,每一圖形處理單元具有相關聯GPU記憶體,並且所述中央處理單元、所述多個圖形處理單元以及所述多個儲存裝置配置成發起直接記憶體存取操作,以在所述多個儲存裝置與所述多個圖形處理單元的GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體。
- 如申請專利範圍第23項所述的計算系統,其中所述圖形處理單元包括統一計算架構所支援的GPU,以及所述使用者程序包括基於統一計算架構的應用程式。
- 如申請專利範圍第23項所述的計算系統,其中所述圖形處理單元包括AMD圖形處理單元,以及所述使用者程序包括基於ROCm的應用程式。
- 如申請專利範圍第23項所述的計算系統,其包括維持所述第一GPU虛擬記憶體空間與所述第一GPU物理記憶體空間之間的映射,直到完成所述直接記憶體存取操作為止。
- 如申請專利範圍第23項所述的計算系統,其包括具有機器學習能力的自駕車輛或機器人中的至少一個,其中所述使用者程序包括用於控制所述自駕車輛或機器人的操作的應用程式。
- 如申請專利範圍第23項所述的計算系統,其中創建表示所述GPU物理記憶體區域的資料結構包括使用作業系統核心模組來創建表示所述GPU物理記憶體區域的資料結構。
- 如申請專利範圍第51項所述的計算系統,其中所述作業系統核心模組包括內置模組或可載入模組中的至少一個。
- 一種車輛,其包括: 中央處理單元; 與所述中央處理單元相關聯的CPU記憶體,其中所述CPU記憶體的第一部分配置為使用者空間以及所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供用於控制所述車輛的應用程式使用,所述核心空間配置成供作業系統核心模組使用; 至少一個圖形處理單元,每一圖形處理單元具有多個處理核心以及相關聯GPU記憶體; 能夠進行直接記憶體存取的儲存裝置,所述儲存裝置儲存可用於控制所述車輛的資料;以及 對等主機匯流排; 其中所述中央處理單元、所述圖形處理單元以及所述儲存裝置配置成: 在所述CPU記憶體的所述使用者空間中執行車輛應用程式; 針對多個GPU物理記憶體區域中的每一個區域,創建表示所述GPU物理記憶體區域的資料結構並且將所述資料結構儲存在所述核心空間中,其中所述資料結構具備格式,所述格式與由所述車輛的作業系統使用的格式一致,以用於表示物理記憶體的區域; 分配第一GPU虛擬記憶體空間; 將所述第一GPU虛擬記憶體空間映射到包括GPU物理記憶體的至少一個區域的第一GPU物理記憶體空間; 基於表示所述第一GPU物理記憶體區域的所述資料結構,將所述第一GPU物理記憶體空間映射到與所述車輛應用程式相關聯的CPU虛擬位址; 使用映射到所述第一GPU物理記憶體空間的所述CPU虛擬位址發起在所述儲存裝置上的直接輸入輸出操作; 基於表示所述GPU物理記憶體區域的所述資料結構,創建對應於映射到所述CPU虛擬位址的所述第一GPU物理記憶體空間的至少一個匯流排位址; 通過使用所述儲存裝置的裝置驅動器,基於所述匯流排位址發起直接記憶體存取(DMA)操作,以在所述儲存裝置與所述第一GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料,而不將所述資料複製到所述CPU記憶體; 使用所述圖形處理單元處理所述資料以創建輸出;以及 使用由所述圖形處理單元創建的所述輸出來控制所述車輛的操作。
- 如申請專利範圍第53項所述的車輛,其中所述車輛應用程式包括車輛自駕應用程式,以及在所述儲存裝置與所述第一GPU物理記憶體空間之間傳送資料包括將可用於確定道路狀況的資料從所述儲存裝置傳送到所述第一GPU物理記憶體空間。
- 一種儲存電腦可執行指令的電腦可讀媒體,所述電腦可執行指令在由計算系統執行時使所述電腦系統執行以下操作,所述計算系統包含中央處理單元、與所述中央處理單元相關聯的CPU記憶體、圖形處理單元、與所述圖形處理單元相關聯的GPU記憶體、能夠進行直接記憶體存取的儲存裝置以及對等主機匯流排,其中所述CPU記憶體的第一部分配置為使用者空間以及所述CPU記憶體的第二部分配置為核心空間,所述使用者空間配置成供使用者應用程式使用,所述核心空間配置成供作業系統核心模組使用: 在所述中央處理單元處,針對多個GPU物理記憶體區域中的每一個區域,創建表示所述GPU物理記憶體區域的資料結構並且將所述資料結構儲存在所述核心空間中,其中所述資料結構的格式與由所述計算系統的作業系統使用的格式一致,以用於表示物理記憶體的區域; 為使用者空間程序分配第一GPU虛擬記憶體空間; 在所述圖形處理單元處,將所述第一GPU虛擬記憶體空間映射到包括GPU物理記憶體的至少一個區域的第一GPU物理記憶體空間; 基於表示所述GPU物理記憶體區域的所述資料結構,將所述第一GPU物理記憶體空間映射到與所述使用者空間程序相關聯的CPU虛擬位址; 使用映射到所述第一GPU物理記憶體空間的所述CPU虛擬位址發起在所述儲存裝置上的直接輸入輸出操作; 基於表示所述GPU物理記憶體區域的所述資料結構,創建對應於映射到所述CPU虛擬位址的所述第一GPU物理記憶體空間的至少一個匯流排位址;以及 通過使用所述儲存裝置的裝置驅動器,基於所述匯流排位址發起直接記憶體存取(DMA)操作,以在所述儲存裝置與所述第一GPU物理記憶體空間之間通過所述對等主機匯流排傳送資料。
- 如申請專利範圍第55項所述的電腦可讀媒體,其中使用所述CPU虛擬位址發起所述儲存裝置上的直接輸入輸出包括: 打開檔案;以及 通過所述使用者空間程序將所述CPU虛擬位址傳遞到讀取系統調用、寫入系統調用、等效於所述讀取系統調用的系統調用或等效於所述寫入系統調用的系統調用中的至少一個。
- 如申請專利範圍第56項所述的電腦可讀媒體,其中打開檔案包括以下中的至少一個:(i)打開儲存在所述儲存裝置上的檔案或(ii)打開對應於所述儲存裝置的裝置檔案。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762527902P | 2017-06-30 | 2017-06-30 | |
US62/527,902 | 2017-06-30 | ||
US15/808,077 | 2017-11-09 | ||
US15/808,077 US10489881B2 (en) | 2017-06-30 | 2017-11-09 | Direct memory access for co-processor memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201905714A true TW201905714A (zh) | 2019-02-01 |
TWI696919B TWI696919B (zh) | 2020-06-21 |
Family
ID=64738991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107118244A TWI696919B (zh) | 2017-06-30 | 2018-05-29 | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10489881B2 (zh) |
CN (1) | CN109062833B (zh) |
TW (1) | TWI696919B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104459A (zh) * | 2019-08-22 | 2020-05-05 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430333B2 (en) * | 2017-09-29 | 2019-10-01 | Intel Corporation | Storage system with interconnected solid state disks |
US11074668B2 (en) * | 2018-06-19 | 2021-07-27 | Weka.IO Ltd. | GPU based server in a distributed file system |
US11494621B2 (en) | 2018-06-27 | 2022-11-08 | Amazon Technologies, Inc. | Attached accelerator selection and placement |
US11599821B2 (en) | 2018-06-27 | 2023-03-07 | Amazon Technologies, Inc. | Attached accelerator based inference service |
US11422863B2 (en) | 2018-06-27 | 2022-08-23 | Amazon Technologies, Inc. | Attached accelerator scaling |
US11960935B2 (en) * | 2018-06-27 | 2024-04-16 | Amazon Technologies, Inc. | Fault-tolerant accelerator based inference service |
US11057496B2 (en) * | 2018-09-05 | 2021-07-06 | Nutanix, Inc. | Distributed computing systems having capability services |
US11353870B2 (en) * | 2018-12-31 | 2022-06-07 | Baidu Usa Llc | Autonomous driving computing and storage expansion device with flexible host and client configuration |
CN109947671B (zh) * | 2019-03-05 | 2021-12-03 | 龙芯中科技术股份有限公司 | 一种地址转换方法、装置、电子设备及储存介质 |
EP3964949B1 (en) * | 2019-05-27 | 2023-09-06 | Huawei Technologies Co., Ltd. | Graphics processing method and apparatus |
US11321068B2 (en) | 2019-09-05 | 2022-05-03 | International Business Machines Corporation | Utilizing memory coherency to improve bandwidth performance |
US11048447B2 (en) * | 2019-10-17 | 2021-06-29 | International Business Machines Corporation | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data |
US11669425B2 (en) * | 2020-04-08 | 2023-06-06 | Micron Technology, Inc. | Computerized system and method for periodically powering up a storage device to avoid data loss |
US11495195B2 (en) * | 2020-07-31 | 2022-11-08 | Alphascale Technologies, Inc. | Apparatus and method for data transfer in display images unto LED panels |
US11620968B2 (en) | 2020-07-31 | 2023-04-04 | Alphascale Technologies, Inc. | Apparatus and method for displaying images unto LED panels |
EP3961469A1 (en) * | 2020-08-27 | 2022-03-02 | Siemens Industry Software and Services B.V. | Computing platform for simulating an industrial system and method of managing the simulation |
CN113312232A (zh) * | 2020-09-07 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 信息处理方法、装置及系统 |
KR102472721B1 (ko) * | 2020-12-02 | 2022-11-30 | 울산과학기술원 | 전자 장치 및 이의 제어 방법 |
US11940933B2 (en) | 2021-03-02 | 2024-03-26 | Mellanox Technologies, Ltd. | Cross address-space bridging |
CN113326004B (zh) * | 2021-06-10 | 2023-03-03 | 深圳市移卡科技有限公司 | 云计算环境下高效日志集中化方法及设备 |
US20220413732A1 (en) * | 2021-06-28 | 2022-12-29 | Advanced Micro Devices, Inc. | System and method for transferring data from non-volatile memory to a process accelerator |
CN114546913B (zh) * | 2022-01-21 | 2024-05-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于pcie接口的多主机之间数据高速交互的方法和装置 |
CN114866534B (zh) * | 2022-04-29 | 2024-03-15 | 浪潮电子信息产业股份有限公司 | 一种图像处理方法、装置、设备及介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8531471B2 (en) * | 2008-11-13 | 2013-09-10 | Intel Corporation | Shared virtual memory |
US8868848B2 (en) * | 2009-12-21 | 2014-10-21 | Intel Corporation | Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform |
US8566537B2 (en) * | 2011-03-29 | 2013-10-22 | Intel Corporation | Method and apparatus to facilitate shared pointers in a heterogeneous platform |
US9373182B2 (en) * | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US9378572B2 (en) * | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
US9886736B2 (en) * | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
US11410024B2 (en) * | 2017-04-28 | 2022-08-09 | Intel Corporation | Tool for facilitating efficiency in machine learning |
-
2017
- 2017-11-09 US US15/808,077 patent/US10489881B2/en active Active
-
2018
- 2018-05-29 TW TW107118244A patent/TWI696919B/zh active
- 2018-06-28 CN CN201810685923.3A patent/CN109062833B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111104459A (zh) * | 2019-08-22 | 2020-05-05 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
US12001681B2 (en) | 2019-08-22 | 2024-06-04 | Huawei Technologies Co., Ltd. | Distributed storage system and data processing method |
Also Published As
Publication number | Publication date |
---|---|
CN109062833B (zh) | 2021-04-20 |
CN109062833A (zh) | 2018-12-21 |
US10489881B2 (en) | 2019-11-26 |
TWI696919B (zh) | 2020-06-21 |
US20190005606A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI696919B (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
US7287101B2 (en) | Direct memory access using memory descriptor list | |
CN110647480A (zh) | 数据处理方法、远程直接访存网卡和设备 | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
EP3335124B1 (en) | Register files for i/o packet compression | |
TW201539196A (zh) | 用於處理多個交易之資料處理系統及方法 | |
CN109977037B (zh) | 一种dma数据传输方法及系统 | |
TW201738763A (zh) | 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統 | |
US20140236561A1 (en) | Efficient validation of coherency between processor cores and accelerators in computer systems | |
US10467138B2 (en) | Caching policies for processing units on multiple sockets | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
US10754802B2 (en) | Dynamically remapping in-process data transfers | |
US9792209B2 (en) | Method and apparatus for cache memory data processing | |
US20230229357A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
US9436395B2 (en) | Mechanisms to save user/kernel copy for cross device communications | |
US20230359396A1 (en) | Systems and methods for processing commands for storage devices | |
CN107250995B (zh) | 存储器管理设备 | |
US9727521B2 (en) | Efficient CPU mailbox read access to GPU memory | |
WO2020029619A1 (zh) | 数据处理的方法、设备和服务器 | |
US20230281113A1 (en) | Adaptive memory metadata allocation | |
CN111625281A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
US8593472B1 (en) | System and method for accessing a frame buffer via a storage driver | |
WO2021093249A1 (zh) | 外部设备访问计算机内存的方法 | |
TWI452468B (zh) | 虛擬機器記憶體的分享方法與電腦系統 |