CN109062833B - 计算系统操作方法、计算系统、车辆及计算机可读媒体 - Google Patents

计算系统操作方法、计算系统、车辆及计算机可读媒体 Download PDF

Info

Publication number
CN109062833B
CN109062833B CN201810685923.3A CN201810685923A CN109062833B CN 109062833 B CN109062833 B CN 109062833B CN 201810685923 A CN201810685923 A CN 201810685923A CN 109062833 B CN109062833 B CN 109062833B
Authority
CN
China
Prior art keywords
gpu
memory
space
physical memory
computing system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810685923.3A
Other languages
English (en)
Other versions
CN109062833A (zh
Inventor
杨渊智
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chuangyida Technology Co ltd
Original Assignee
Chuangyida Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chuangyida Technology Co ltd filed Critical Chuangyida Technology Co ltd
Publication of CN109062833A publication Critical patent/CN109062833A/zh
Application granted granted Critical
Publication of CN109062833B publication Critical patent/CN109062833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT 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/00Details 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT 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/00Details 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/0001Details of the control system
    • B60W2050/0002Automatic control, details of type of controller or control system architecture
    • B60W2050/0004In digital systems, e.g. discrete-time systems involving sampling
    • B60W2050/0005Processor details or data handling, e.g. memory registers or chip architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2806Space 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)
  • Radar, Positioning & Navigation (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Game Theory and Decision Science (AREA)
  • Medical Informatics (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Remote Sensing (AREA)
  • Business, Economics & Management (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (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 graphicsprocessing units,GPGPU),其是处理数据以用于图形呈现并且还执行通常由中央处理单元(central processing unit,CPU)执行的非专业化计算的图形处理单元。图形处理单元可具有许多比传统中央处理单元更快地处理图像和图形数据的处理核心。将数据迁移成为图形形式并使用所述图形处理单元来处理数据可引起显著性能改进。已应用通用图形处理单元来处理用于人工智能应用进程和复杂仿真的大量数据。可以并行使用多个通用图形处理单元以进一步提高性能。
在一些实例中,计算系统可包含中央处理单元(central processing unit,CPU)、通用图形处理单元(GPGPU)、与所述CPU相关联的系统存储器或CPU存储器、与所述GPU相关联的GPU存储器、芯片组以及存储数据和进程代码的非易失性存储装置(例如固态驱动器SSD)。非易失性存储装置和其它外围装置可以连接到外围组件互连高速(peripheralcomponent 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物理存储器空间之间通过所述主机总线传送数据。
在附图和以下描述中阐述以上方面及实施方案中的一或多个的细节。其它特征、方面和优点将从描述、图式和所附权利要求书变得显而易见。
附图说明
图1为计算系统的示意图。
图2为计算系统的操作图。
图3A、图3B、图4A到图4C以及图5A到图5C为用于在计算系统中实施数据的直接存储器存取(DMA)传送的进程的流程图。
图6A到图6E示出结构页面定义(struct page definition)的实例。
图7为可用于机器学习应用进程的示范性系统的图。
图8到图13为示范性计算系统的框图。
图14为用于测试数据的直接存储器存取传送的硬件配置的图。
图15及图16是示出数据的直接存储器存取传送的测试结果的曲线图。
各种图式中的相同参考符号指示相同元件。
附图标号说明
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、242、244、246、248、250、252、254、256、258、260、262、264、266、268、270、272、274、276、278、280、282、284、286、288、290、292:步骤
300:计算系统
302:CPU
304:加速器
306:存储装置
308:更新的模型
310:模型
312、314:步骤
316:有标记的训练数据
317:验证进程
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:总线协议转译器#4360:计算系统
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:条
具体实施方式
本发明描述启用(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。CPU102可为(例如)
Figure BDA0001711640970000091
Xeon CPU。每一GPU 104与GPU存储器108相关联。在一些实例中,GPU104可体现在包含GPU芯片以及一或多个存储器芯片的半导体系统单芯片封装中。在一些实例中,GPU芯片可具有内置存储器(built-in memory)。在一些实例中,GPU 104及GPU存储器108可以安装在印刷电路板(例如图形适配器)上,且GPU存储器108及GPU 104通过主机总线电耦合。图式示出多个GPU 104;本发明还可用于具有单个GPU 104的计算系统中。
CPU存储器106还被称作系统存储器或主机存储器,并配置成存储用于操作系统的进程指令或代码以及所述操作系统使用的数据。举例来说,操作系统可为Linux操作系统、
Figure BDA0001711640970000092
macOS操作系统、苹果iOS移动操作系统、
Figure BDA0001711640970000101
操作系统或
Figure BDA0001711640970000102
操作系统。CPU存储器106还可分成用户空间110及核心空间112。用户空间110存储用户应用进程120,例如视频呈现进程、动画呈现进程、图像处理进程、机器学习进程、数学仿真进程、用于控制车辆的应用进程、用于控制机器人的应用进程、大数据应用进程、用于处理财务数据的应用进程、用于处理健康护理数据的应用进程、用于处理医疗数据的应用进程,及/或具有人工智能功能的应用进程。
核心空间112配置成存储操作系统核心进程以及相关联数据,例如操作系统、系统调用(system call)接口、应用进程编程接口、存储驱动器114、文件系统、数据结构116以及GPU驱动器118。GPU驱动器118使得用户应用进程120能够通过(例如)函数调用(functioncall)而存取GPU 104的功能。举例来说,GPU 104可与
Figure BDA0001711640970000103
开发的统一计算架构(compute unified device architecture,
Figure BDA0001711640970000104
)平台兼容,且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核心应用进程编程接口(applicationprogramming 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的互动。CPU102可包含视频控制器,其用于控制与显示设备的互动。
将连接到系统总线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-outputmemory 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包含将虚拟地址转译为物理地址的存储器管理单元(memorymanagement 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存储器映射句柄(mappinghandle)返回到用户应用进程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,其可包含(例如)视频呈现(videorendering)进程、动画呈现(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创建总线地址130并相应地发起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 GPU104的功能的接口。
步骤184:加载可用于创建用来启用存储装置122与GPU存储器108之间的DMA数据传送的结构页面数据结构的gdrdrv驱动器。gdrdrv驱动器创建用于与用户空间应用进程(例如用户应用进程120)通信的字符装置(character device)。对于每一GPU 104,gdrdrv驱动器从NVIDIA驱动器检索PCI装置信息,以保留第一基地址缓存器(base addressregister 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到图5C,提供一种用于启用存储装置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
Figure BDA0001711640970000201
P100GPU之间传送数据来进行大量性能测试。在第一测试中,从固态驱动器传送数据到GPU。当不使用上述DMA传送技术以使得将数据从固态驱动器传送到主机存储器(例如CPU存储器),随后从主机存储器传送到GPU存储器时,数据速率约3598MB/s。当使用上述DMA传送技术以使得将数据直接从固态驱动器传送到GPU存储器而不经由主机存储器时,数据速率约5921MB/s,其显著高于在不使用上述DMA传送技术的情况下的数据速率。在第二测试中,同时执行读取操作以将总共4GB的数据从四个NVMe固态驱动器读取到四个GPU存储器。在不使用DMA时,其花费718ms读取4GB数据。在使用DMA时,其花费341ms读取4GB数据,其显著短于在不使用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 Gen3x16双向通道。此外,连接到PCIe交换器464的任何两个端点之间的通信是完全无阻塞的。在此实例中,CPU 460为Intel Xeon CPU E5-2609v4@1.70GHz,第一GPU 466和第二GPU 468为NVIDIA Tesla P10016G,PCIe交换器464为Falconwitch PS1816,且NVMe固态驱动器470、NVMe固态驱动器472为Intel NVMeP3700PCIe Gen3x4。
参考图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包含CPU302、加速器304以及存储装置306。加速器304可包含一或多个图形处理单元。总线连接和存储器模块在图式中并未示出。在此实例中,训练业务流程处理框架(trainingorchestration framework)318可在CPU 302上执行,而模型训练及验证在加速器304上进行。训练业务流程处理框架318可基于Torch、TensorFlowTM、Caffe及/或Rudra。有标记的训练数据316存储在存储装置306中。通过使用上述DMA技术,有标记的训练数据316可以比常规方法更快地从存储装置306传送到加速器304的存储器。
举例来说,模型可以使用存储在存储装置306上的有标记的训练数据316来训练。相同模型310的数个并行个例可使用训练数据的不同部分来训练,其中模型310的每一个例可具有其自身模型参数。个别模型参数定期合并(例如:步骤312),以使得从训练数据的所有部分获悉的信息可在训练模块当中共享。更新的模型308之参数随后广播回到训练模块(例如:步骤314),并进行验证进程317以定期检查模型的最新版本的精确性以便确保模型训练进程汇聚。在达到模型的所要精确性时停止模型训练进程。
举例来说,模型可用于诸如以下的应用进程中:欺诈检测、电子邮件过滤、网络侵入者检测、光学字符识别、图像辨识、语音识别、面部辨识、产品推荐、医疗诊断、形状检测、顾客区分、股票交易推荐以及计算机视觉。在许多这些应用进程中,模型训练要求处理大量样本数据。当加速器(例如图形处理单元)的计算速度变得更快时,重要的是维持存储装置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。总线协议转译器#1334(或转换器)将数据从遵守系统总线协议的格式转译(或转换)成遵守总线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协议的格式,且反之亦然。总线协议转译器#2380将数据从遵守总线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)达到高数据吞吐量,以通过总线A430、总线协议转译器#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存储器带宽争用问题。
虽然本说明书含有许多特定实施细节,但这些细节不应解释为限制任何发明的范围或可请求的事物的范围,而是应解释为针对特定发明的特定实施例的特征描述。本说明书在单独实施例的上下文中所描述的某些特征也可在单个实施例中以组合方式实施。反之,在单个实施例的上下文中描述的各种特征也可单独地在多个实施例中实施或以任何适合子组合来实施。
类似地,虽然在附图中按特定次序描绘操作,但这不应被理解为要求按所示的特定次序或按循序次序执行此类操作,或执行所有所说明的操作,以实现所要结果。在某些情况下,多重任务处理和并行处理可为有利的。此外,上述实施例中的各种系统组件的分离不应理解成要求在所有实施例中都这样分离。

Claims (57)

1.一种操作计算系统的方法,其特征在于,所述计算系统包括中央处理单元、与所述中央处理单元相关联的CPU存储器、图形处理单元、与所述图形处理单元相关联的GPU存储器、能够进行直接存储器存取的存储装置以及对等主机总线,其中所述CPU存储器的第一部分配置为用户空间且所述CPU存储器的第二部分配置为核心空间,所述用户空间配置成供用户应用进程使用,所述核心空间配置成供操作系统核心模块使用,所述方法包括:
在所述中央处理单元处,针对多个GPU物理存储器区域中的每一个区域,创建表示所述GPU物理存储器区域的数据结构并且将所述数据结构存储在所述核心空间中,其中所述数据结构具备格式,所述格式与由所述计算系统的操作系统使用的格式一致,以用于表示物理存储器的区域;
为用户空间进程分配第一GPU虚拟存储器空间;
在所述图形处理单元处,将所述第一GPU虚拟存储器空间映射到包括GPU物理存储器的至少一个区域的第一GPU物理存储器空间;
基于表示所述GPU物理存储器区域的所述数据结构,将所述第一GPU物理存储器空间映射到与所述用户空间进程相关联的CPU虚拟地址;
使用映射到所述第一GPU物理存储器空间的所述CPU虚拟地址发起在所述存储装置上的直接输入输出操作;
基于表示所述GPU物理存储器区域的所述数据结构,创建对应于映射到所述CPU虚拟地址的所述第一GPU物理存储器空间的至少一个总线地址;以及
通过使用所述存储装置的装置驱动器,基于所述总线地址发起直接存储器存取操作,以在所述存储装置与所述第一GPU物理存储器空间之间通过所述对等主机总线传送数据。
2.根据权利要求1所述的操作计算系统的方法,其特征在于,发起直接存储器存取操作以在所述存储装置与所述第一GPU物理存储器空间之间传送数据包括:发起直接存储器存取操作以在所述存储装置与所述第一GPU物理存储器空间之间传送数据而不将所述数据复制到所述CPU存储器。
3.根据权利要求1所述的操作计算系统的方法,其特征在于,所述计算系统包括多个图形处理单元,其各自具有相关联GPU存储器并且电耦合到所述对等主机总线,以及所述方法包括:发起直接存储器存取操作,以在所述存储装置与所述多个图形处理单元的GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
4.根据权利要求1所述的操作计算系统的方法,其特征在于,所述计算系统包括能够进行直接存储器存取的多个存储装置,其各自电耦合到所述对等主机总线,以及所述方法包括:发起直接存储器存取操作,以在所述多个存储装置与所述图形处理单元的所述GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
5.根据权利要求1所述的操作计算系统的方法,其特征在于,所述计算系统包括能够进行直接存储器存取的多个存储装置,其各自通过所述对等主机总线电耦合到多个图形处理单元,所述多个图形处理单元各具有相关联GPU存储器,以及所述方法包括:发起直接存储器存取操作,以在所述多个存储装置与所述多个图形处理单元的GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
6.根据权利要求1所述的操作计算系统的方法,其特征在于,创建对应于所述第一GPU物理存储器空间的至少一个总线地址的步骤包括:使用所述存储装置的所述装置驱动器来创建对应于所述第一GPU物理存储器空间的至少一个总线地址。
7.根据权利要求1所述的操作计算系统的方法,其特征在于,创建对应于所述第一GPU物理存储器空间的至少一个总线地址的步骤包括:使用所述操作系统核心模块来创建对应于所述第一GPU物理存储器空间的至少一个总线地址。
8.根据权利要求1所述的操作计算系统的方法,其特征在于,所述存储装置包括非挥发性存储器高速存储装置。
9.根据权利要求1所述的操作计算系统的方法,其特征在于,所述存储装置包括固态存储装置、硬盘、光盘、闪存存储装置、电阻式随机存取存储器存储装置、相变存储器存储装置或磁阻式随机存取存储器存储装置中的至少一个。
10.根据权利要求1所述的操作计算系统的方法,其特征在于,所述存储装置包括串行AT连接存储装置、串行连接的SCSI存储装置、通用串行总线存储装置、IEEE1394存储装置或光纤信道存储装置中的至少一个。
11.根据权利要求1所述的操作计算系统的方法,其特征在于,其包括:维持所述第一GPU虚拟存储器空间与所述第一GPU物理存储器空间之间的映射,直到完成所述直接存储器存取操作为止。
12.根据权利要求1所述的操作计算系统的方法,其特征在于,所述图形处理单元包括统一计算架构所支持的图形处理单元,以及所述用户空间进程包括基于CUDA的应用进程。
13.根据权利要求1所述的操作计算系统的方法,其特征在于,所述对等主机总线包括外围组件互连高速、Thunderbolt或NVLink总线中的至少一个。
14.根据权利要求1所述的操作计算系统的方法,其特征在于,使用所述CPU虚拟地址发起所述存储装置上的直接输入输出操作的步骤包括:
打开文件;以及
通过所述用户空间进程将所述CPU虚拟地址传递到读取系统调用、写入系统调用、等效于所述读取系统调用的系统调用或等效于所述写入系统调用的系统调用中的至少一个。
15.根据权利要求1所述的操作计算系统的方法,其特征在于,其包括使用所述用户空间进程进行以下操作:
调用与所述图形处理单元相关联的第一函数以分配第一GPU虚拟存储器空间;
调用与所述图形处理单元相关联的第二函数以将所述第一GPU虚拟存储器空间映射到第一GPU物理存储器空间;以及
基于表示所述GPU物理存储器区域的所述数据结构调用第三函数以将所述第一GPU物理存储器空间映射到与所述用户空间进程相关联的CPU虚拟地址。
16.根据权利要求15所述的操作计算系统的方法,其特征在于,所述第三函数包括确保VM_IO及VM_PFNMAP两者均不会针对所述用户空间进程而设置,其中VM_IO用来标记存储器映射I/O空间,而VM_PFNMAP用来标记无相对应结构页面数据结构的空间。
17.根据权利要求1所述的操作计算系统的方法,其特征在于,所述操作系统包括Linux操作系统,以及所述数据结构包括结构页面或等效于所述结构页面的数据结构。
18.一种操作计算系统的方法,其特征在于,所述计算系统包括中央处理单元、与所述中央处理单元相关联的CPU存储器、协处理器(co-processor)、与所述协处理器相关联的协处理器存储器、能够进行直接存储器存取(DMA)的存储装置以及对等主机总线,其中所述CPU存储器的第一部分配置为用户空间且所述CPU存储器的第二部分配置为核心空间,所述用户空间配置成供用户应用进程使用,所述核心空间配置成供操作系统核心模块使用,所述方法包括:
在所述中央处理单元处,针对多个协处理器物理存储器区域中的每一个区域,创建表示所述协处理器物理存储器区域的数据结构并且将所述数据结构存储在所述核心空间中,其中所述数据结构具备格式,所述格式与由所述计算系统的操作系统使用的格式一致,以用于表示物理存储器的区域;
为用户空间进程分配第一协处理器虚拟存储器空间;
在所述协处理器处,将所述第一协处理器虚拟存储器空间映射到包括协处理器物理存储器的至少一个区域的第一协处理器物理存储器空间;
基于表示所述协处理器物理存储器区域的所述数据结构,将所述第一协处理器物理存储器空间映射到与所述用户空间进程相关联的CPU虚拟地址;
使用映射到所述第一协处理器物理存储器空间的所述CPU虚拟地址发起在所述存储装置上的直接输入输出操作;
基于表示所述协处理器物理存储器区域的所述数据结构,创建对应于映射到所述CPU虚拟地址的所述第一协处理器物理存储器空间的至少一个总线地址;以及
使用所述存储装置的装置驱动器,基于所述总线地址发起直接存储器存取操作,以在所述存储装置与所述第一协处理器物理存储器空间之间通过所述对等主机总线传送数据。
19.根据权利要求18所述的操作计算系统的方法,其特征在于,发起直接存储器存取操作以在所述存储装置与所述第一协处理器物理存储器空间之间传送数据的步骤包括:发起直接存储器存取操作以在所述存储装置与所述第一协处理器物理存储器空间之间传送数据而不将所述数据复制到所述CPU存储器。
20.根据权利要求18所述的操作计算系统的方法,其特征在于,所述计算系统包括多个协处理器,其各自具有相关联协处理器存储器并且电耦合到所述对等主机总线,以及所述方法包括:发起直接存储器存取操作,以在所述存储装置与所述多个协处理器的物理协处理器存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
21.根据权利要求18所述的操作计算系统的方法,其特征在于,所述计算系统包括能够进行直接存储器存取的多个存储装置,其各自电耦合到所述对等主机总线,以及所述方法包括:发起直接存储器存取操作,以在所述多个存储装置与所述协处理器的物理协处理器存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
22.根据权利要求18所述的操作计算系统的方法,其特征在于,所述计算系统包括能够进行直接存储器存取的多个存储装置,其各自通过所述对等主机总线电耦合到多个协处理器,所述协处理器各具有相关联协处理器存储器,以及所述方法包括:发起直接存储器存取操作,以在所述多个存储装置与所述多个协处理器的物理协处理器存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
23.一种计算系统,其特征在于,其包括:
中央处理单元;
与所述中央处理单元相关联的CPU存储器,其中所述CPU存储器的第一部分配置为用户空间以及所述CPU存储器的第二部分配置为核心空间,所述用户空间配置成供用户应用进程使用,所述核心空间配置成供操作系统核心模块使用;
具有多个处理核心的图形处理单元;
与所述图形处理单元相关联的GPU存储器;
能够进行直接存储器存取的存储装置;以及
对等主机总线;
其中所述中央处理单元、所述图形处理单元以及所述存储装置配置成:
在所述CPU存储器的所述用户空间中执行用户进程;
针对多个GPU物理存储器区域中的每一个区域,创建表示所述GPU物理存储器区域的数据结构并且将所述数据结构存储在所述核心空间中,其中所述数据结构具备格式,所述格式与由所述计算系统的操作系统使用的格式一致,以用于表示物理存储器的区域;
分配第一GPU虚拟存储器空间;
将所述第一GPU虚拟存储器空间映射到包括GPU物理存储器的至少一个区域的第一GPU物理存储器空间;
基于表示所述GPU物理存储器区域的所述数据结构,将所述第一GPU物理存储器空间映射到与所述用户进程相关联的CPU虚拟地址;
使用映射到所述第一GPU物理存储器空间的所述CPU虚拟地址发起在所述存储装置上的直接输入输出操作;
基于表示所述GPU物理存储器区域的所述数据结构,创建对应于映射到所述CPU虚拟地址的所述第一GPU物理存储器空间的至少一个总线地址;以及
通过使用所述存储装置的装置驱动器,基于所述总线地址发起直接存储器存取操作,以在所述存储装置与所述第一GPU物理存储器空间之间通过所述对等主机总线传送数据。
24.根据权利要求23所述的计算系统,其特征在于,使用所述CPU虚拟地址发起所述存储装置上的直接输入输出操作包括:
打开文件;以及
将所述CPU虚拟地址传递到读取系统调用、写入系统调用、等效于所述读取系统调用的系统调用或等效于所述写入系统调用的系统调用中的至少一个。
25.根据权利要求24所述的计算系统,其特征在于,打开文件包括以下当中的至少一个:i.打开存储在所述存储装置上的文件或ii.打开对应于所述存储装置的装置文件。
26.根据权利要求24所述的计算系统,其特征在于,所述操作系统核心模块进一步配置成避免复制用户空间与核心空间之间的数据,而替代地使用直接存储器存取在所述GPU存储器与所述存储装置之间直接传送所述数据。
27.根据权利要求26所述的计算系统,其特征在于,所述操作系统核心模块进一步配置成基于所述CPU虚拟地址识别对应于所述第一GPU物理存储器空间的每一数据结构。
28.根据权利要求27所述的计算系统,其特征在于,所述操作系统核心模块进一步配置成向所述存储装置的所述装置驱动器发送至少一个读取请求或至少一个写入请求,所述至少一个读取请求或至少一个写入请求各自具有对应于所述GPU物理存储器空间的至少一个所识别的数据结构。
29.根据权利要求23所述的计算系统,其特征在于,所述中央处理单元配置成执行所述用户进程以进行以下操作:
调用与所述图形处理单元相关联的第一函数以分配所述第一图形处理单元虚拟存储器空间;
调用与所述图形处理单元相关联的第二函数以将所述第一GPU虚拟存储器空间映射到所述第一GPU物理存储器空间;以及
基于表示所述GPU物理存储器区域的所述数据结构调用第三函数以将所述第一GPU物理存储器空间映射到与所述用户进程相关联的CPU虚拟地址。
30.根据权利要求29所述的计算系统,其特征在于,所述第一函数配置成返回指向所述所分配第一GPU虚拟存储器空间的用户空间指标。
31.根据权利要求30所述的计算系统,其特征在于,执行所述用户进程以调用所述第二函数包括将所述用户空间指标传递到所述第二函数。
32.根据权利要求31所述的计算系统,其特征在于,所述第二函数配置成返回与所述第一GPU虚拟存储器空间与所述第一GPU物理存储器空间之间的所述映射相关联的GPU存储器映射句柄。
33.根据权利要求32所述的计算系统,其特征在于,执行所述用户进程以调用所述第三函数包括将所述GPU存储器映射句柄传递到所述第三函数。
34.根据权利要求33所述的计算系统,其特征在于,所述第三函数配置成包括:
通过所述GPU存储器映射句柄识别所述第一GPU物理存储器空间的每一区域;
通过所述对应的数据结构将所述第一GPU物理存储器的每一区域插入到所述用户进程中;以及
返回映射到所述第一GPU物理存储器空间的CPU虚拟地址。
35.根据权利要求34所述的计算系统,其特征在于,多个GPU物理存储器区域中的每一个区域包括多个GPU物理存储器页面中的每一个页面,以及每一数据结构表示GPU物理存储器的页面。
36.根据权利要求35所述的计算系统,其特征在于,所述操作系统包括Linux操作系统,以及所述数据结构包括结构页面或等效于所述结构页面的数据结构。
37.根据权利要求36所述的计算系统,其特征在于,所述第三函数配置成包括确保VM_IO及VM_PFNMAP两者均不会针对所述用户空间进程而设置,其中VM_IO用来标记存储器映射I/O空间,而VM_PFNMAP用来标记无相对应结构页面数据结构的空间。
38.根据权利要求23所述的计算系统,其特征在于,所述中央处理单元配置成执行所述存储装置的所述装置驱动器以创建对应于所述第一GPU物理存储器空间的至少一个总线地址。
39.根据权利要求23所述的计算系统,其特征在于,所述操作系统核心模块配置成创建对应于所述第一GPU物理存储器空间的至少一个总线地址。
40.根据权利要求23所述的计算系统,其特征在于,所述对等主机总线包括外围组件互连高速、Thunderbolt或NVLink总线中的至少一个。
41.根据权利要求23所述的计算系统,其特征在于,所述存储装置包括非挥发性存储器高速存储装置。
42.根据权利要求23所述的计算系统,其特征在于,所述存储装置包括固态存储装置、硬盘、光盘、闪存存储装置、电阻式随机存取存储器存储装置、相变存储器存储装置或磁阻式随机存取存储器存储装置中的至少一个。
43.根据权利要求23所述的计算系统,其特征在于,所述中央处理单元、所述图形处理单元以及所述存储装置配置成发起所述直接存储器存取操作以在所述存储装置与所述第一GPU物理存储器空间之间传送数据,而不将所述数据复制到所述CPU存储器。
44.根据权利要求23所述的计算系统,其特征在于,所述计算系统包括多个图形处理单元,其各自具有相关联GPU存储器并且电耦合到所述对等主机总线,并且所述中央处理单元、所述多个图形处理单元以及所述存储装置配置成发起直接存储器存取操作,以在所述存储装置与所述多个图形处理单元的GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
45.根据权利要求23所述的计算系统,其特征在于,所述计算系统包括能够进行直接存储器存取的多个存储装置,其各自电耦合到所述对等主机总线,并且所述中央处理单元、所述图形处理单元以及所述多个存储装置配置成发起直接存储器存取操作,以在所述多个存储装置与所述图形处理单元的所述GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
46.根据权利要求23所述的计算系统,其特征在于,所述计算系统包括能够进行直接存储器存取的多个存储装置,其各自通过所述对等主机总线电耦合到多个图形处理单元,每一图形处理单元具有相关联GPU存储器,并且所述中央处理单元、所述多个图形处理单元以及所述多个存储装置配置成发起直接存储器存取操作,以在所述多个存储装置与所述多个图形处理单元的GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器。
47.根据权利要求23所述的计算系统,其特征在于,所述图形处理单元包括统一计算架构所支持的GPU,以及所述用户进程包括基于统一计算架构的应用进程。
48.根据权利要求23所述的计算系统,其特征在于,所述图形处理单元包括AMD图形处理单元,以及所述用户进程包括基于ROCm的应用进程。
49.根据权利要求23所述的计算系统,其特征在于,其包括维持所述第一GPU虚拟存储器空间与所述第一GPU物理存储器空间之间的映射,直到完成所述直接存储器存取操作为止。
50.根据权利要求23所述的计算系统,其特征在于,其包括具有机器学习能力的自驾车辆或机器人中的至少一个,其中所述用户进程包括用于控制所述自驾车辆或机器人的操作的应用进程。
51.根据权利要求23所述的计算系统,其特征在于,创建表示所述GPU物理存储器区域的数据结构包括使用操作系统核心模块来创建表示所述GPU物理存储器区域的数据结构。
52.根据权利要求51所述的计算系统,其特征在于,所述操作系统核心模块包括内置模块或可加载模块中的至少一个。
53.一种车辆,其特征在于,包括:
中央处理单元;
与所述中央处理单元相关联的CPU存储器,其中所述CPU存储器的第一部分配置为用户空间以及所述CPU存储器的第二部分配置为核心空间,所述用户空间配置成供用于控制所述车辆的应用进程使用,所述核心空间配置成供操作系统核心模块使用;
至少一个图形处理单元,每一图形处理单元具有多个处理核心以及相关联GPU存储器;
能够进行直接存储器存取的存储装置,所述存储装置存储可用于控制所述车辆的数据;以及
对等主机总线;
其中所述中央处理单元、所述图形处理单元以及所述存储装置配置成:
在所述CPU存储器的所述用户空间中执行车辆应用进程;
针对多个GPU物理存储器区域中的每一个区域,创建表示所述GPU物理存储器区域的数据结构并且将所述数据结构存储在所述核心空间中,其中所述数据结构具备格式,所述格式与由所述车辆的操作系统使用的格式一致,以用于表示物理存储器的区域;
分配第一GPU虚拟存储器空间;
将所述第一GPU虚拟存储器空间映射到包括GPU物理存储器的至少一个区域的第一GPU物理存储器空间;
基于表示所述第一GPU物理存储器区域的所述数据结构,将所述第一GPU物理存储器空间映射到与所述车辆应用进程相关联的CPU虚拟地址;
使用映射到所述第一GPU物理存储器空间的所述CPU虚拟地址发起在所述存储装置上的直接输入输出操作;
基于表示所述GPU物理存储器区域的所述数据结构,创建对应于映射到所述CPU虚拟地址的所述第一GPU物理存储器空间的至少一个总线地址;
通过使用所述存储装置的装置驱动器,基于所述总线地址发起直接存储器存取(DMA)操作,以在所述存储装置与所述第一GPU物理存储器空间之间通过所述对等主机总线传送数据,而不将所述数据复制到所述CPU存储器;
使用所述图形处理单元处理所述数据以创建输出;以及
使用由所述图形处理单元创建的所述输出来控制所述车辆的操作。
54.根据权利要求53所述的车辆,其特征在于,所述车辆应用进程包括车辆自驾应用进程,以及在所述存储装置与所述第一GPU物理存储器空间之间传送数据包括将可用于确定道路状况的数据从所述存储装置传送到所述第一GPU物理存储器空间。
55.一种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令在由计算系统执行时使所述计算系统执行以下操作,其特征在于,所述计算系统包含中央处理单元、与所述中央处理单元相关联的CPU存储器、图形处理单元、与所述图形处理单元相关联的GPU存储器、能够进行直接存储器存取的存储装置以及对等主机总线,其中所述CPU存储器的第一部分配置为用户空间以及所述CPU存储器的第二部分配置为核心空间,所述用户空间配置成供用户应用进程使用,所述核心空间配置成供操作系统核心模块使用:
在所述中央处理单元处,针对多个GPU物理存储器区域中的每一个区域,创建表示所述GPU物理存储器区域的数据结构并且将所述数据结构存储在所述核心空间中,其中所述数据结构的格式与由所述计算系统的操作系统使用的格式一致,以用于表示物理存储器的区域;
为用户空间进程分配第一GPU虚拟存储器空间;
在所述图形处理单元处,将所述第一GPU虚拟存储器空间映射到包括GPU物理存储器的至少一个区域的第一GPU物理存储器空间;
基于表示所述GPU物理存储器区域的所述数据结构,将所述第一GPU物理存储器空间映射到与所述用户空间进程相关联的CPU虚拟地址;
使用映射到所述第一GPU物理存储器空间的所述CPU虚拟地址发起在所述存储装置上的直接输入输出操作;
基于表示所述GPU物理存储器区域的所述数据结构,创建对应于映射到所述CPU虚拟地址的所述第一GPU物理存储器空间的至少一个总线地址;以及
通过使用所述存储装置的装置驱动器,基于所述总线地址发起直接存储器存取操作,以在所述存储装置与所述第一GPU物理存储器空间之间通过所述对等主机总线传送数据。
56.根据权利要求55所述的计算机可读媒体,其特征在于,使用所述CPU虚拟地址发起所述存储装置上的直接输入输出包括:
打开文件;以及
通过所述用户空间进程将所述CPU虚拟地址传递到读取系统调用、写入系统调用、等效于所述读取系统调用的系统调用或等效于所述写入系统调用的系统调用中的至少一个。
57.根据权利要求56所述的计算机可读媒体,其特征在于,打开文件包括以下当中的至少一个:i.打开存储在所述存储装置上的文件或ii.打开对应于所述存储装置的装置文件。
CN201810685923.3A 2017-06-30 2018-06-28 计算系统操作方法、计算系统、车辆及计算机可读媒体 Active CN109062833B (zh)

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
CN109062833A CN109062833A (zh) 2018-12-21
CN109062833B true CN109062833B (zh) 2021-04-20

Family

ID=64738991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810685923.3A Active CN109062833B (zh) 2017-06-30 2018-06-28 计算系统操作方法、计算系统、车辆及计算机可读媒体

Country Status (3)

Country Link
US (1) US10489881B2 (zh)
CN (1) CN109062833B (zh)
TW (1) TWI696919B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
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
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
US11599821B2 (en) 2018-06-27 2023-03-07 Amazon Technologies, Inc. Attached 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
CN115422284B (zh) * 2019-08-22 2023-11-10 华为技术有限公司 存储设备、分布式存储系统以及数据处理方法
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
US11620968B2 (en) 2020-07-31 2023-04-04 Alphascale Technologies, Inc. Apparatus and method for displaying images unto LED panels
US11495195B2 (en) * 2020-07-31 2022-11-08 Alphascale Technologies, Inc. Apparatus and method for data transfer in display 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
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 浪潮电子信息产业股份有限公司 一种图像处理方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103567A (zh) * 2009-12-21 2011-06-22 英特尔公司 在异构处理器之间共享基于虚拟存储器的多版本数据
CN104298621A (zh) * 2008-11-13 2015-01-21 英特尔公司 共享虚拟存储器
CN104471540A (zh) * 2012-08-17 2015-03-25 英特尔公司 通过统一存储器架构的存储器共享
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566537B2 (en) * 2011-03-29 2013-10-22 Intel Corporation Method and apparatus to facilitate shared pointers in a heterogeneous platform
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298621A (zh) * 2008-11-13 2015-01-21 英特尔公司 共享虚拟存储器
CN102103567A (zh) * 2009-12-21 2011-06-22 英特尔公司 在异构处理器之间共享基于虚拟存储器的多版本数据
TW201512856A (zh) * 2009-12-21 2015-04-01 Intel Corp 在具有異質處理器之電腦平台中執行之方法和電腦平台
CN104471540A (zh) * 2012-08-17 2015-03-25 英特尔公司 通过统一存储器架构的存储器共享
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Add a new vm flag to track full pfnmap at mmap;Pallipadi;《https://lkml.org/lkml/2009/3/13/456》;20090313;1 *

Also Published As

Publication number Publication date
CN109062833A (zh) 2018-12-21
US10489881B2 (en) 2019-11-26
TW201905714A (zh) 2019-02-01
TWI696919B (zh) 2020-06-21
US20190005606A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
CN109062833B (zh) 计算系统操作方法、计算系统、车辆及计算机可读媒体
EP2985718B1 (en) Technologies for secure inter-virtual-machine shared memory communication
US10157145B2 (en) Method to share a coherent accelerator context inside the kernel
CN107305534B (zh) 同时进行内核模式访问和用户模式访问的方法
US9875208B2 (en) Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
US11836091B2 (en) Secure memory access in a virtualized computing environment
US9367478B2 (en) Controlling direct memory access page mappings
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US10430327B2 (en) Virtual machine based huge page balloon support
CN109977037B (zh) 一种dma数据传输方法及系统
US9575796B2 (en) Virtual device timeout by memory offlining
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US20220171717A1 (en) Adaptive out of order arbitration for numerous virtual queues
CN117546149A (zh) 用于执行共享存储器操作的系统、装置和方法
CN114003168B (zh) 用于处理命令的存储设备和方法
CN112330229B (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
US20220335109A1 (en) On-demand paging support for confidential computing
WO2021093249A1 (zh) 外部设备访问计算机内存的方法
CN111625281A (zh) 一种数据处理方法、装置、设备及存储介质
JP2008503834A (ja) 並列通信バスを介して割り込みメッセージを伝送するためのコンピュータシステムおよび方法
KR102532099B1 (ko) 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
EP4322011A1 (en) Memory management in a multi-processor environment
JP2023507293A (ja) システムダイレクトメモリアクセスエンジンのオフロード
CN114298892A (zh) 一种应用于分布式处理单元的高速缓存模块和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant