CN109791507A - 改进分布式gpus的数据局部性的机制 - Google Patents
改进分布式gpus的数据局部性的机制 Download PDFInfo
- Publication number
- CN109791507A CN109791507A CN201780057617.9A CN201780057617A CN109791507A CN 109791507 A CN109791507 A CN 109791507A CN 201780057617 A CN201780057617 A CN 201780057617A CN 109791507 A CN109791507 A CN 109791507A
- Authority
- CN
- China
- Prior art keywords
- data
- processing unit
- working group
- workload
- subregion
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
公开了用于实现改进分布式处理单元的数据局部性的机制的系统、装置和方法。一种系统包括多个分布式处理单元(例如,GPU)和存储器设备。每个处理单元联接到一个或多个本地存储器设备。所述系统基于最大化数据局部性和数据共享来确定如何将工作负载划分成多个工作组。所述系统基于最大化本地存储器访问和最小化远程存储器访问来确定所述多个工作组的哪个子集被调度到所述多个处理单元中的每个处理单元。所述系统还根据所述工作组的数据共享模式确定如何对数据缓冲器进行分区。所述系统将每个处理单元映射到所述数据缓冲器的单独部分,以便最大化本地存储器访问并最小化远程存储器访问。
Description
背景技术
本发明是在政府的支持下根据美国能源部授予的(FastForward-2NodeArchitecture(NA)Project with Lawrence Livermore National Laboratory)基本合同号DE-AC52-07NA27344、分包合同号B609201进行的。政府享有本发明的某些权利。
技术领域
多个分布式处理单元(例如,图形处理单元(GPU))可用于并行执行软件应用。例如,可以通过将多个较小GPU芯片链接在一起来实现大GPU。在每个GPU芯片具有相关联的本地存储器设备的系统中,存储器访问的延迟、带宽和能量根据访问的是本地还是远程存储器设备而不同。虽然实现具有多个较小GPU芯片的大GPU有助于降低制造成本,这归因于较小管芯产量的提高,但是在分布式处理单元上运行现有软件应用可能导致由于频繁的远程存储器访问而增加的存储器访问延迟。
附图说明
通过结合附图参考以下描述,可以更好地理解本文所述的方法和机制的上述优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是计算系统的另一实施方案的框图。
图3是命令处理器的一个实施方案的框图。
图4示出了数据缓冲器和工作组分区的一个实施方案的图。
图5示出了数据缓冲器和工作组分区的另一实施方案的图。
图6是示出用于划分工作负载和数据缓冲器的方法的一个实施方案的概括流程图。
图7是示出用于划分工作负载和数据缓冲器的方法的另一实施方案的概括流程图。
图8是示出用于将工作负载划分成共享阈值数据量的工作组的子集的方法的一个实施方案的概括流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本文所提出的方法和机制的全面理解。然而,本领域普通技术人员应当认识到,各种实施方案可以在没有这些具体细节的情况下实践。在一些情况下,没有详细展示众所周知的结构、部件、信号、计算机程序指令和技术以避免混淆本文所描述的方法。应当理解,为了简单和清楚起见,图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可以相对于其他元件放大。
公开了用于划分工作组和数据以便分发到多个分布式处理单元的各种系统、装置、方法和计算机可读介质。在一个实施方案中,系统被配置为基于最大化数据局部性和数据共享来确定如何将工作负载划分成多个工作组。在一个实施方案中,系统包括多个分布式处理单元和多个存储器设备。在一个实施方案中,多个处理单元中的每个处理单元联接到多个存储器设备中的一个或多个本地存储器设备。在一个实施方案中,分布式处理单元是图形处理单元(GPU)。在另一实施方案中,分布式处理单元是存储器内处理(PIM)设备。在其他实施方案中,分布式处理单元可以是各种其他类型的处理器或计算设备中的任何一种。
在一个实施方案中,系统被配置为基于最大化本地存储器访问和最小化远程存储器访问来确定多个工作组中的哪个子集调度给多个处理单元中的每个处理单元。系统还被配置为基于工作组的数据共享模式和数据访问模式来确定如何划分数据缓冲器。然后,系统将每个处理单元映射到数据缓冲器的单独分区,以便最大化本地存储器访问并最小化远程存储器访问。
在一个实施方案中,系统被配置为基于工作负载的维度将工作负载划分成多个工作组。然后,系统可以将N个连续工作组调度给给定的处理单元,其中N是正整数。在一个实施方案中,N的大小可以通过将工作负载或计算内核中工作组的总数除以系统中处理单元的数量来确定。系统还可以沿着与工作负载相同的维度划分一个或多个缓冲器。
在另一实施方案中,系统被配置为将共享阈值数据量的工作组调度到同一处理单元。如果这些不同的数据集位于相同的数据分区内,系统还可以将访问不同数据集的工作组调度到同一处理单元,即使这些工作组实际上不共享数据或共享阈值数据量。在这个实施方案中,系统分析多个工作组的数据共享模式、数据访问模式和/或数据局部性模式。根据实施方案,数据共享模式、数据访问模式和/或数据局部性模式可以在运行时、在编译时或在执行工作负载之前通过性能分析来确定。在分析各种模式之后,系统可以确定哪些工作组共享阈值数量的数据和/或访问相同的数据分区。然后,系统可以将共享阈值数据量的工作组和/或访问相同数据分区的工作组调度到同一处理单元。
参考图1,示出了计算系统100的一个实施方案的框图。计算系统100包括图形处理单元(GPU)115A-N、存储器125A-N、结构120和CPU 130。计算系统100还可以包括图1中未示出的其他部件以避免模糊附图。GPU 115A-N表示任何数量和类型的处理单元(例如,CPU、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)、特定电路、加速器)。每个GPU 115A-N联接到对应的本地存储器125A-N。GPU 115A-N可以使用各种类型的互连、总线或网络技术(例如,外围组件互连(PCI)总线、PCI扩展(PCI-X)总线、PCIE(PCIExpress)总线)中的任何一种连接在一起。在一个实施方案中,可以将多个GPU 115A-N作为统一处理器来管理。尽管在图1中未明确示出,系统100还可以包括GPU 115A-N和核心135A-N内部的一个或多个高速缓冲存储器。
每个存储器125A-N表示任何数量和类型的存储器设备。在一个实施方案中,每个存储器125A-N是用于与对应的GPU 115A-N一起使用的随机存取存储器(RAM)。实现的RAM可以是静态RAM(SRAM)、动态RAM(DRAM)、电阻RAM(ReRAM)、相变RAM(PCRAM)或任何其他易失性或非易失性RAM。可用于实现每个存储器125A-N的DRAM的类型包括(但不限于)双倍数据速率(DDR)DRAM、DDR2DRAM、DDR3DRAM等。其他类型的存储器125A-N也可用于系统100,包括高密度DRAM、eDRAM、3D堆叠存储器(例如,堆叠DRAM)、基于插入器的集成存储器、多芯片模块(MCM)、磁光存储介质、只读存储器(ROM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDRSDRAM)、相变存储器、自旋转移矩磁RAM、忆阻器、扩展数据输出(EDO)RAM、Rambus RAM、Rambus DRAM、可擦除可编程存储器(EEPROM)、固态存储器、硬盘驱动器、光存储介质等。对于在GPU 115A-N上执行的工作组,可以以相比访问远程存储器的存储器请求较低的延迟和较低的功耗执行访问紧密联接的本地存储器的存储器请求。用于给定GPU 115A-N的远程存储器被定义为联接到其他GPU 115A-N中之一者的存储器设备。
取决于实施方案,结构120可以是任何类型的通信结构或互连。例如,结构120可以是桥、北桥、南桥、背板等。CPU 130包括核心135A-N,所述核心表示任何数量和类型的处理器核心。CPU 130还可以称为系统100的主机。在其他实施方案中,系统100可以包括多于一个CPU,并且因此包括多于一个主机。CPU 130的核心135A-N被配置为执行系统100的主控制软件,例如操作系统。通常,CPU 130在使用期间执行的软件可以控制系统100的其他部件以实现系统100的期望功能。CPU 130还可以执行其他软件,例如应用程序。应用程序可以提供用户功能,并且可以依赖操作系统进行较低级别的设备控制。在一个实施方案中,在CPU130上执行的软件被配置为将工作组调度给GPU 115A-N。另外,在CPU 130上执行的软件被配置为对数据缓冲器进行分区,并将分区映射到GPU 115A-N以最大化在GPU 115A-N上执行的工作组的本地存储器访问并最小化其远程存储器访问。
在一个实施方案中,在CPU 130上执行的软件被配置为控制跨多个分布式GPU115A-N的工作组的调度。在另一实施方案中,在一个或多个其他处理器(例如,GPU 115A-N)上执行的软件被配置为控制跨多个分布式GPU 115A-N的工作组的调度。在另一实施方案中,硬件(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC))被配置为控制跨多个分布式GPU 115A-N的工作组的调度。在其他实施方案中,硬件和/或软件的任何合适的组合被配置为控制跨多个分布式GPU 115A-N的工作组的调度。
在一个实施方案中,系统100的软件和/或硬件被配置为基于工作负载的维度将工作负载划分成多个工作组。例如,对于二维工作负载(即,基于二维域或数据集的工作负载),可以沿着工作负载的一个维度将工作负载划分成工作组,同时保持另一维度固定。因此,对于二维工作负载,可以将工作负载划分成来自同一列的工作组集,或者可以将工作负载划分成来自同一行的工作组集。对于三维工作负载(即,基于三维域或数据集的工作负载),可以将工作负载沿工作负载的一个维度划分成多组工作组,同时保持其他两个维度固定。工作负载消耗的数据缓冲器也可以沿与工作负载相同的维度进行分区。
如本文所用,术语“内核”可以被定义为在程序中声明的函数。“内核”可以在多个处理元件上同时执行。如本文所用,术语“工作负载”被定义为执行包括在n维输入数据上操作的一个或多个功能的代码段所进行的工作总量。如本文所用,术语“工作项”被定义为命令在处理单元上调用的内核的并行执行的集合中之一者。工作项可以由一个或多个处理元件执行,作为在处理单元上执行的工作组的一部分。如本文所用,术语“工作组”被定义为在单个处理单元上执行的相关工作项的集合。
系统100可以对应于各种类型的计算机系统或计算设备中的任何一种,包括但不限于个人计算机系统、台式计算机、膝上型或笔记本计算机、超级计算机、移动设备平板电脑、电话、智能电话、大型计算机系统、手持计算机、工作站、网络计算机、消费者设备、服务器、文件服务器、应用服务器、存储服务器、web服务器、云计算服务器、或通常任何类型的计算系统或设备。应注意,系统100的部件数量可以根据实施方案而变化。每个部件/子部件可以比图1中所示的数量更多或更少。还应注意,系统100可包括图1中未示出的其他部件。另外,在其他实施方案中,系统100可以以除图1中所示之外的其他方式构造。
现在转向图2,示出了计算系统200的另一实施方案的框图。计算系统200是可以实现本文描述的用于改进分布式处理单元的数据局部性的技术的系统的另一示例。如图2所示,系统200包括联接到命令处理器205的多个计算堆叠210A-N。计算堆叠210A-N表示任何数量和类型的计算堆叠。
在一个实施方案中,每个计算堆叠210A-N包括逻辑层和多个存储器层。在一个实施方案中,计算堆叠210A-N的存储器层被实现为管芯堆叠式动态随机存取存储器(DRAM)。在一个实施方案中,每个计算堆叠210A-N包括联接到直接与存储器设备集成的存储器内处理(PIM)设备的一个或多个存储器设备。PIM架构是在存储器中或附近添加计算能力的概念。这个架构的好处包括减少与处理设备和存储器层次结构之间的数据移动相关联的延迟和能量消耗。例如,每个计算堆叠210A-N的计算能力可以在与存储器管芯垂直堆叠的单独逻辑管芯上实现。另外,本文描述的方法和机制也适用于直接在存储器管芯上实现附近存储器计算能力的情况。
在一个实施方案中,每个计算堆叠210A-N是三维集成电路(3D IC),所述三维集成电路包括逻辑芯片上的处理单元,所述处理单元与一个或多个存储器芯片3D堆叠。在某些情况下,与存储器芯片集成的处理单元是完全可编程的处理器。存储器管芯可以包括实现存储器电路的堆叠存储器设备,诸如DRAM、静态随机存取存储器(SRAM)、只读存储器(ROM)等。逻辑管芯可以实现硬连线逻辑和布线逻辑,以用于访问堆叠存储器管芯的存储器电路。可以使用各种3D集成电路制造工艺中的任何一种来制造每个存储器模块。在一个实施方案中,逻辑管芯和存储器管芯可以实现为具有有源器件的单独衬底(例如,体硅)和在有源表面处形成的一个或多个金属布线层,然后堆叠在一起。这种方法可以包括晶片上晶片工艺,由此制造并减薄包括管芯矩阵的晶片,并且通过体硅蚀刻穿硅通孔(TSV)。然后堆叠多个晶片以实现所示的层配置(例如,包括用于三个存储器层的存储器电路管芯的三个晶片的堆叠和包括用于处理器层的逻辑管芯的晶片)、对准,然后经由热压缩连接。将得到的堆叠晶片组单个化以分离单个的3D IC器件。在其他实施方案中,可以使用用于制造计算堆叠210A-N的其他技术。在其他实施方案中,处理单元可以以非堆叠配置联接到一个或多个本地存储器设备。这些和其他实施方案是可能的并且是可预期的。
命令处理器205使用各种类型的互连协议中的任何一种联接到计算堆叠210A-N。另外,计算堆叠210A-N可以使用各种类型的互连协议中的任何一种彼此联接。在一个实施方案中,命令处理器205被配置为将工作负载划分成多个工作组、将工作组调度到分布式计算堆叠210A-N、将数据缓冲器划分成多个数据分区,并将数据分区映射到分布式计算堆叠210A-N。在另一个实施方案中,计算堆叠210A-N中的一个或多个可以被配置为执行代码或包括命令处理器205的逻辑以执行这些功能。
现在参考图3,示出了命令处理器300的一个实施方案的框图。在一个实施方案中,命令处理器300包括调度逻辑310、工作组数据共享模式逻辑315、调度表320、分区逻辑325和查找表330。应注意,可以使用硬件和/或软件的任何组合来实现调度逻辑310、工作组数据共享模式逻辑315和分区逻辑325。还应注意,在其他实施方案中,命令处理器300中示出的两个或更多个逻辑单元可以组合在一起成为单个单元。在一个实施方案中,命令处理器300内所示的逻辑可以包括在图2的命令处理器205中。在另一个实施方案中,命令处理器300内所示的逻辑可以包括在图1的CPU 130中。
在一个实施方案中,分区逻辑325被配置为将工作负载划分成多个工作组。在一个实施方案中,调度逻辑310被配置为将工作组调度给系统的各种分布式处理单元(未示出)(例如,(图1的)系统100、(图2的)系统200)。在一个实施方案中,分布式处理单元是GPU。在另一实施方案中,分布式处理单元是PIM。在其他实施方案中,分布式处理单元可以是其他类型的处理单元。一旦确定了工作组分区,就更新调度表320。在一个实施方案中,调度表320被实现为位向量,以指定哪个工作组ID基于内核映射到哪个处理单元。如果使用与数据无关的工作组分区方案将工作组调度给处理单元,则可以使用数学函数(例如,用于将N个连续工作组调度给每个处理单元的floor(workgroup_ID/N)mod(number_of_processing_units))来代替调度表320。
在一个实施方案中,工作组数据共享模式逻辑315被配置为确定给定内核的各个工作组如何访问和共享由给定内核处理的数据缓冲器。在一个实施方案中,工作组数据共享模式逻辑315分析由每个工作组访问的地址和数据,以识别访问阈值量的共享数据的工作组集。在另一实施方案中,工作组数据共享模式逻辑315识别访问相同数据分区的工作组集合,即使这些工作组集合实际上不共享相同数据。例如,第一工作组可以访问第一数据分区内的第一部分数据,而第二工作组可以访问第一数据分区内的第二部分数据,其中第一部分和第二部分不重叠。但是,如果将第一工作组和第二工作组组合在一起并调度到存储第一数据分区的处理单元,则这将导致对第一工作组和第二工作组执行大量本地存储器访问。在执行分析之后,工作组数据共享模式逻辑315传送应该将哪些工作组组合在一起以调度逻辑310的指示。然后,当工作组访问阈值量的共享数据或访问不同数据但在同一数据分区内时,调度逻辑310可以将工作组调度到同一处理单元。
在一个实施方案中,分区逻辑325被配置为将数据缓冲器划分成可以映射到分布式处理单元的不同处理单元的分区。分区逻辑325可以确定各种工作组如何访问和共享数据缓冲器,然后分区逻辑325可以基于工作组的数据共享、数据访问和数据局部性模式对数据缓冲器进行分区。如果多个内核访问相同的数据缓冲器,则可以使用一个内核的访问模式来确定数据分区。所使用的内核可以随机选择、基于执行时间选择、基于确定数据访问模式的容易性或其他标准来选择。分区逻辑325还被配置为将数据缓冲器的部分映射到不同的处理单元,以便最大化本地存储器访问并最小化远程存储器访问。
在一个实施方案中,在查找表330中维护数据映射信息。在一个实施方案中,当分配新的物理地址并将其映射到特定处理单元的存储器时,操作系统(OS)更新查找表330中的数据映射信息。查找表330可以是集中表,或者每个处理单元可以维护查找表330的本地副本。在一个实施方案中,物理地址的多个位用于索引到查找表330中。所使用的实际位数可以根据实施方案而变化。所使用的特定位也可以根据实施方案而变化,并且可以取决于数据分区粒度,例如高速缓存行、页面大小、多个页面等。如果表访问是未命中(即,被查找的项目确实在表中不存在),可以使用默认地址映射。命中(即,正在查找的项目确实存在于表中)指示所述地址属于由内核访问的数据缓冲器,并且其分区和映射到处理单元对于查找表330是已知的。存储在表条目中的映射信息可用于查找数据位置。查找表330中的每个条目可以包括GPU ID、存储器ID或基于地址的数学函数,以计算映射的GPU ID或存储器ID。
现在转向图4,示出了数据缓冲器和工作组分区的一个实施方案的图。系统(例如,(图1的)系统100、(图2的)系统200)可以包括具有对应本地存储器设备的多个分布式处理单元。在一个实施方案中,分布式处理单元可以被视为单个逻辑处理单元。在图4所示的示例中,假设系统具有8个分布式处理单元。应理解,这表示一个实施方案。在其他实施方案中,系统可以具有其他数量的分布式处理单元。
系统可以执行在一个或多个数据缓冲器405A-B上操作的内核。数据缓冲器405A-B是被分区并映射到不同处理单元的数据缓冲器的示例。如图4所示,假设系统具有8个分布式处理单元,数据缓冲器405A-B被划分成八个分区。在其他实施方案中,取决于系统中的分布式处理单元的数量,数据缓冲器405A-B可以被划分成其他数量的缓冲器分区。另外,在其他实施方案中,可以划分其他数量的数据缓冲器。
工作组410表示任何数量和类型的工作组。一般而言,数据缓冲器405A-B和工作组410可以具有M个分区,其中M是正整数。在一个实施方案中,M等于工作组的总数除以处理单元的数量。系统将处理工作负载划分成工作组410的子集,这些工作组410可以分配给不同的处理单元。系统还将数据缓冲器405A-B划分成数据部分,这些部分可以映射到不同处理单元的本地存储器。如图4所示,数据缓冲器405A-B和工作组410的分区内所示的数字对应于目的地处理单元ID。系统执行分区和映射,由此试图最小化远程存储器访问次数,并最大化在不同分布式处理单元上执行的工作组的本地存储器访问次数。
现在参考图5,示出了工作组分区和数据缓冲器分区的另一实施方案的图。在一个实施方案中,系统可以基于工作组505如何访问和共享数据缓冲器510中的数据来确定如何分区数据缓冲器510。基于分析的数据访问和数据缓冲器510的数据共享模式,数据缓冲器510可以被分区并映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问。在图5所示的示例中,数据缓冲器510是二维(2D)阵列。
考虑工作组505以工作组的每个分区访问数据缓冲器的矩形区域的方式访问数据缓冲器510的情况,并且工作组的后续分区访问不同的这类矩形区域,以列优先顺序遍历缓冲器。在指定了矩形区域以供每个工作组分区访问之后,访问模式重复,工作组的第一个分区访问数据缓冲器的下一个可用矩形区域。在这种情况下,如果数据缓冲器510以行优先方式布置在存储器中,则为数据缓冲器510和工作组505创建M个连续分区的方法将导致数据缓冲器510与工作组505之间的未对准。减轻这种未对准的一种方法是沿着数据缓冲器510的列创建更细粒度的分区,同时保持相同的工作组505分区。根据实施方案,可以以高速缓存行或OS页面粒度或通过使用更大的区域来执行分区。因此,M个工作组分区可以有多于M个数据分区。换句话说,数据缓冲器510可以以比工作组505更精细的粒度进行分区。
如图5所示,数据缓冲器510的每个数据分区的大小是R/4行乘C/4列。对于8个处理单元的8个工作组分区,总共有16个数据分区用于数据缓冲器510。数据缓冲器510中的每个数字0-7指示数据分区由映射到对应于相同数字0-7的处理单元的工作组访问。应注意,将数据缓冲器510划分成具有R/4行×C/4列的分区的示例仅仅是可以执行的划分的一个示例。应理解,在其他实施方案中可以使用其他分区方案。
现在转向图6,示出了用于划分工作负荷和数据缓冲器的方法600的一个实施方案。出于讨论的目的,这个实施方案中的步骤和图7-8中的步骤按顺序显示。应注意,在所描述的方法的各种实施方案中,所描述要素中的一个或多个可以同时执行,与所示不同的顺序执行,或者可以被完全省略。也根据需要执行其他额外要素。本文描述的各种系统或装置中的任何一个均可以被配置来实施方法600。
系统将工作负载划分成多个工作组(框605)。系统包括多个处理单元和多个存储器设备。在一个实施方案中,多个处理单元中的每个处理单元联接到多个存储器设备中的一个或多个本地存储器设备。在一个实施方案中,每个处理单元是GPU。在另一实施方案中,每个处理单元是PIM设备。在其他实施方案中,处理单元可以是其他类型的设备。
接下来,系统将一个或多个数据缓冲器分区为多个数据分区(框610)。然后,系统基于最小化对非本地存储器设备的访问来确定如何将工作组调度给多个处理单元并将数据分区映射到多个存储器设备(框615)。在上面的上下文中,术语“最小化”可以被定义为与不考虑工作负载的维度的标准调度和映射方案相比减少由处理单元生成的远程存储器访问的数量(在图7的方法700中描述),也没有工作组的数据共享模式(在图8的方法800中描述)。在框615之后,方法600结束。
现在参考图7,示出了用于划分工作负载和数据缓冲器的方法700的另一实施方案。在所示的示例中,系统基于工作负载的维度将工作负载划分成多个工作组(框705)。系统包括多个处理单元和多个存储器设备。在一个实施方案中,多个处理单元中的每个处理单元联接到多个存储器设备中的一个或多个本地存储器设备。
系统将M个连续工作组调度给每个处理单元,其中M是正整数(方框710)。在一个实施方案中,M等于工作组的总数除以系统中处理单元的数量。此外,系统沿着与工作负载相同的维度划分一个或多个数据缓冲器,并且将数据分区映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问(框715)。在一个实施方案中,以比工作负载更精细的粒度划分一个或多个数据缓冲器。在框715之后,方法700结束。
现在转向图8,示出了用于将工作负载划分成共享阈值数据量的工作组的子集的方法800的一个实施方案。在所示的示例中,系统确定多个工作组的数据共享模式以识别共享阈值数据量的工作组(框805)。在一个实施方案中,数据共享模式在编译时由编译器确定。在另一实施方案中,数据共享模式在运行时由控制逻辑和/或软件确定。在又一个实施方案中,通过在硬件和/或软件中分析应用程序的性能来确定数据共享模式。在一些实施方案中,系统还可以确定多个工作组的数据访问模式和/或数据局部性模式。接下来,系统基于对数据共享模式的分析来确定将哪个工作组子集调度给每个处理单元(框810)。然后,系统基于数据共享模式的分析确定如何划分一个或多个数据缓冲器(框815)。接下来,系统将数据分区映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问(框820)。应注意,系统还可以在执行框810、815和820时利用数据访问模式和/或数据局部性模式。在框820之后,方法800结束。
在各种实施方案中,使用软件应用的程序指令来实施先前描述的方法和/或机构。程序指令以诸如C的高级编程语言描述硬件的行为。替代地,可以使用硬件设计语言(HDL),例如Verilog。程序指令存储在非暂时性计算机可读存储介质上。许多类型的存储介质是可用的。存储介质在使用期间由计算系统访问,以向计算系统提供程序指令和随附数据以进行程序执行。计算系统包括至少一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。
应强调,上述实施方案仅是实施的非限制性示例。一旦完全理解了上述公开内容,许多变化和修改对于本领域技术人员来说将变得明显。意图将所附权利要求书解释为涵盖全部这类变化和修改。
Claims (20)
1.一种系统,所述系统包括:
多个存储设备;以及
多个处理单元,其中,所述多个处理单元中的每个处理单元联接到所述多个存储器设备中的一个或多个本地存储器设备;
其中,所述系统被配置为:
将工作负载划分成多个工作组;
将一个或多个数据缓冲器划分成多个数据分区;以及
确定如何基于最小化对非本地存储器设备的访问将工作组调度给所述多个处理单元并将数据分区映射到所述多个存储器设备。
2.如权利要求1所述的系统,其中,所述系统还被配置为:
基于所述工作负载的维度将所述工作负载划分成多个工作组;以及
将M个连续工作组调度给每个处理单元,其中,M等于工作组的总数除以处理单元的数量。
3.如权利要求2所述的系统,其中,所述系统还被配置为沿着与所述工作负载相同的维度划分所述一个或多个数据缓冲器,并且将数据分区映射到存储器设备,使得与非本地存储器访问相比工作组,执行增加数量的本地存储器访问。
4.如权利要求3所述的系统,其中,所述一个或多个数据缓冲器以比所述工作负载更细的粒度划分。
5.如权利要求1所述的系统,其中,所述系统还被配置为:
确定所述多个工作组的数据共享模式,以识别共享阈值数据量的工作组;
基于对所述数据共享模式的分析,确定将所述多个工作组的哪个子集调度给所述多个处理单元中的每个处理单元;
确定如何基于所述多个工作组的所述数据共享模式对所述一个或多个数据缓冲器进行分区;以及
将分区映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问。
6.如权利要求1所述的系统,其中,所述系统包括调度表,用于指定哪个工作组标识符(ID)基于内核映射到哪个处理单元。
7.如权利要求1所述的系统,其中,所述系统被配置为:
识别共享阈值数据量的两个或多个工作组;以及
将所述两个或更多工作组调度到第一处理单元。
8.一种方法,其包括:
将工作负载划分成多个工作组;
将一个或多个数据缓冲器划分成多个数据分区;以及
确定如何基于最小化非本地存储器访问将工作组调度到多个处理单元并将数据分区映射到所述多个处理单元的所述本地存储器设备。
9.如权利要求8所述的方法,其还包括:
基于所述工作负载的维度将所述工作负载划分成多个工作组;以及
将M个连续工作组调度给每个处理单元,其中,M等于工作组的总数除以处理单元的数量。
10.如权利要求9所述的方法,其还包括沿着与所述工作负载相同的维度划分所述一个或多个数据缓冲器,并且将数据分区映射到存储器设备,使得与非本地存储器访问相比工作组,执行增加数量的本地存储器访问。
11.如权利要求10所述的方法,还包括以比所述工作负载更细的粒度划分所述一个或多个数据缓冲器。
12.如权利要求8所述的方法,其还包括:
确定所述多个工作组的数据共享模式以识别共享阈值数据量的工作组;
基于对所述数据共享模式的分析,确定将所述多个工作组的哪个子集调度给所述多个处理单元中的每个处理单元;
确定如何基于所述多个工作组的所述数据共享模式对所述一个或多个数据缓冲器进行分区;以及
将分区映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问。
13.如权利要求8所述的方法,其还包括利用调度表来指定哪个工作组标识符(ID)基于内核映射到哪个处理单元。
14.如权利要求8所述的方法,其还包括:
识别共享阈值数据量的两个或多个工作组;以及
将两个或更多个工作组调度到第一处理单元。
15.一种存储程序指令的非暂时性计算机可读存储介质,其中所述程序指令可由处理器执行以:
将工作负载划分成多个工作组;
将一个或多个数据缓冲器划分成多个数据分区;以及
确定如何基于最小化非本地存储器访问将工作组调度到多个处理单元并将数据分区映射到所述多个处理单元的所述本地存储器设备。
16.如权利要求15所述的非暂时性计算机可读存储介质,其中,所述程序指令还可由处理器执行以:
基于所述工作负载的维度将所述工作负载划分成多个工作组;以及
将M个连续工作组调度给每个处理单元,其中,M等于工作组的总数除以处理单元的数量。
17.如权利要求16所述的非临时性计算机可读存储介质,其中,所述程序指令还可由处理器执行,以沿着与所述工作负载相同的维度划分所述一个或多个数据缓冲器,并且将数据分区映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问。
18.如权利要求15所述的非临时性计算机可读存储介质,其中,所述程序指令还可由处理器执行,以便以比所述工作负载更精细的粒度对所述一个或多个数据缓冲器进行分区。
19.如权利要求15所述的非暂时性计算机可读存储介质,其中,所述程序指令还可由处理器执行以:
确定所述多个工作组的数据共享模式,以识别共享阈值数据量的工作组;
基于对所述数据共享模式的分析,确定将所述多个工作组的哪个子集调度给所述多个处理单元中的每个处理单元;
确定如何基于所述多个工作组的所述数据共享模式对所述一个或多个数据缓冲器进行分区;以及
将分区映射到存储器设备,使得与非本地存储器访问相比,工作组执行增加数量的本地存储器访问。
20.如权利要求15所述的非暂时性计算机可读存储介质,其中,所述程序指令还可由处理器执行以:
识别共享阈值数据量的两个或多个工作组;以及
将所述两个或更多工作组调度到第一处理单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/331,002 US20180115496A1 (en) | 2016-10-21 | 2016-10-21 | Mechanisms to improve data locality for distributed gpus |
US15/331,002 | 2016-10-21 | ||
PCT/US2017/047807 WO2018075131A1 (en) | 2016-10-21 | 2017-08-21 | Mechanisms to improve data locality for distributed gpus |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109791507A true CN109791507A (zh) | 2019-05-21 |
Family
ID=59772714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780057617.9A Pending CN109791507A (zh) | 2016-10-21 | 2017-08-21 | 改进分布式gpus的数据局部性的机制 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20180115496A1 (zh) |
EP (1) | EP3529697A1 (zh) |
JP (1) | JP2019537104A (zh) |
KR (1) | KR20190070915A (zh) |
CN (1) | CN109791507A (zh) |
WO (1) | WO2018075131A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG10201507834SA (en) * | 2015-09-21 | 2017-04-27 | Yokogawa Electric Corp | Mobile based on collaborative and interactive operations with smart mobile devices |
US10474600B2 (en) | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
KR102424962B1 (ko) * | 2017-11-15 | 2022-07-25 | 삼성전자주식회사 | 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈 |
US20190332420A1 (en) * | 2018-04-27 | 2019-10-31 | Advanced Micro Devices, Inc. | Feedback guided split workgroup dispatch for gpus |
US11436046B2 (en) | 2018-10-11 | 2022-09-06 | Powerchip Semiconductor Manufacturing Corporation | Electronic device with memory processor-based multiprocessing architecture and operation method thereof |
TWI714003B (zh) * | 2018-10-11 | 2020-12-21 | 力晶積成電子製造股份有限公司 | 可執行人工智慧運算的記憶體晶片及其操作方法 |
US11204819B2 (en) * | 2018-12-21 | 2021-12-21 | Samsung Electronics Co., Ltd. | System and method for offloading application functions to a device |
US10997686B2 (en) * | 2019-01-09 | 2021-05-04 | Intel Corporation | Workload scheduling and distribution on a distributed graphics device |
CN117742901A (zh) * | 2022-09-13 | 2024-03-22 | 安徽寒武纪信息科技有限公司 | 任务调度方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240140A1 (en) * | 2006-02-10 | 2007-10-11 | International Business Machines Corporation | Methods and systems for application load distribution |
US20080028179A1 (en) * | 2006-07-28 | 2008-01-31 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
US8395631B1 (en) * | 2009-04-30 | 2013-03-12 | Nvidia Corporation | Method and system for sharing memory between multiple graphics processing units in a computer system |
CN103608777A (zh) * | 2011-06-20 | 2014-02-26 | 高通股份有限公司 | 图形处理单元中的存储器共享 |
CN103649917A (zh) * | 2011-07-12 | 2014-03-19 | 高通股份有限公司 | 图形处理单元中的指令剔除 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032264A (en) * | 1997-04-22 | 2000-02-29 | Micron Technology, Inc. | Apparatus and method implementing repairs on a memory device |
US6788302B1 (en) * | 2000-08-03 | 2004-09-07 | International Business Machines Corporation | Partitioning and load balancing graphical shape data for parallel applications |
US8719833B2 (en) * | 2010-06-24 | 2014-05-06 | Sap Ag | Adaptive demand-driven load balancing |
JP2013114538A (ja) * | 2011-11-30 | 2013-06-10 | Toshiba Corp | 情報処理装置、情報処理方法及び制御プログラム |
US9032416B2 (en) * | 2012-07-30 | 2015-05-12 | Oracle International Corporation | Load balancing using progressive sampling based on load balancing quality targets |
US9277005B2 (en) * | 2013-01-09 | 2016-03-01 | Edgecast Networks, Inc. | Optimized consistent request distribution for balanced load distribution in a content delivery network |
US9276827B2 (en) * | 2013-03-15 | 2016-03-01 | Cisco Technology, Inc. | Allocating computing resources based upon geographic movement |
US9788210B2 (en) * | 2013-06-11 | 2017-10-10 | Sonus Networks, Inc. | Methods and systems for adaptive buffer allocations in systems with adaptive resource allocation |
US9338234B2 (en) * | 2014-04-16 | 2016-05-10 | Microsoft Technology Licensing, Llc | Functional programming in distributed computing |
US10261661B2 (en) * | 2014-06-25 | 2019-04-16 | Oracle International Corporation | Reference position in viewer for higher hierarchical level |
US9906589B2 (en) * | 2014-11-14 | 2018-02-27 | Facebook, Inc. | Shared management service |
US9965343B2 (en) * | 2015-05-13 | 2018-05-08 | Advanced Micro Devices, Inc. | System and method for determining concurrency factors for dispatch size of parallel processor kernels |
US10229468B2 (en) * | 2015-06-03 | 2019-03-12 | Intel Corporation | Automated conversion of GPGPU workloads to 3D pipeline workloads |
US9965382B2 (en) * | 2016-04-04 | 2018-05-08 | Omni Ai, Inc. | Data composite for efficient memory transfer in a behavioral recognition system |
-
2016
- 2016-10-21 US US15/331,002 patent/US20180115496A1/en not_active Abandoned
-
2017
- 2017-08-21 CN CN201780057617.9A patent/CN109791507A/zh active Pending
- 2017-08-21 KR KR1020197007385A patent/KR20190070915A/ko not_active Application Discontinuation
- 2017-08-21 JP JP2019517274A patent/JP2019537104A/ja active Pending
- 2017-08-21 EP EP17761645.5A patent/EP3529697A1/en not_active Withdrawn
- 2017-08-21 WO PCT/US2017/047807 patent/WO2018075131A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240140A1 (en) * | 2006-02-10 | 2007-10-11 | International Business Machines Corporation | Methods and systems for application load distribution |
US20080028179A1 (en) * | 2006-07-28 | 2008-01-31 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
US8395631B1 (en) * | 2009-04-30 | 2013-03-12 | Nvidia Corporation | Method and system for sharing memory between multiple graphics processing units in a computer system |
CN103608777A (zh) * | 2011-06-20 | 2014-02-26 | 高通股份有限公司 | 图形处理单元中的存储器共享 |
CN103649917A (zh) * | 2011-07-12 | 2014-03-19 | 高通股份有限公司 | 图形处理单元中的指令剔除 |
Also Published As
Publication number | Publication date |
---|---|
US20180115496A1 (en) | 2018-04-26 |
WO2018075131A1 (en) | 2018-04-26 |
KR20190070915A (ko) | 2019-06-21 |
JP2019537104A (ja) | 2019-12-19 |
EP3529697A1 (en) | 2019-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791507A (zh) | 改进分布式gpus的数据局部性的机制 | |
CN109791519B (zh) | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 | |
US9244629B2 (en) | Method and system for asymmetrical processing with managed data affinity | |
CN103959260B (zh) | 标签和数据共同存储在物理行中的dram高速缓存 | |
US10282309B2 (en) | Per-page control of physical address space distribution among memory modules | |
KR102288830B1 (ko) | 텐서 메모리 액세스를 촉진할 수 있는 메모리 디바이스 및 방법 | |
US11101804B2 (en) | Fast memory for programmable devices | |
US11287978B2 (en) | Data storage devices, having scale-out devices to map and control groups on non-volatile memory devices | |
CN107301455A (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
CN109213697A (zh) | 智能存储器数据存储或加载方法和装置 | |
KR20160150451A (ko) | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US20190026037A1 (en) | Access processor | |
CN103218312A (zh) | 文件访问方法及系统 | |
CN105892955A (zh) | 一种管理存储系统的方法及设备 | |
US20210286551A1 (en) | Data access ordering for writing-to or reading-from memory devices | |
US20230393781A1 (en) | Memory centric computational memory system | |
JP2017522645A (ja) | フラッシュメモリベースのストレージデバイスの入力/出力仮想化(iov)ホストコントローラ(hc)(iov−hc) | |
CN105718392B (zh) | 细胞阵列文件存储系统及其文件存储设备与文件存储方法 | |
US10489288B2 (en) | Algorithm methodologies for efficient compaction of overprovisioned memory systems | |
Sun et al. | Performance/thermal-aware design of 3D-stacked L2 caches for CMPs | |
US20230222058A1 (en) | Zoned namespaces for computing device main memory | |
CN106293491B (zh) | 写请求的处理方法和内存控制器 | |
Qian et al. | A study on non-volatile 3d stacked memory for big data applications | |
Seongil et al. | Exploring energy-efficient DRAM array organizations | |
Lee et al. | Excavating the hidden parallelism inside DRAM architectures with buffered compares |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190521 |
|
WD01 | Invention patent application deemed withdrawn after publication |