CN106462426A - 用于图形处理单元的组合计算任务 - Google Patents

用于图形处理单元的组合计算任务 Download PDF

Info

Publication number
CN106462426A
CN106462426A CN201580028448.7A CN201580028448A CN106462426A CN 106462426 A CN106462426 A CN 106462426A CN 201580028448 A CN201580028448 A CN 201580028448A CN 106462426 A CN106462426 A CN 106462426A
Authority
CN
China
Prior art keywords
code
attribute
gpu
working group
instruction
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.)
Granted
Application number
CN201580028448.7A
Other languages
English (en)
Other versions
CN106462426B (zh
Inventor
G·阿维卡罗古拉里
A·K·侃
K·C·崔
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN106462426A publication Critical patent/CN106462426A/zh
Application granted granted Critical
Publication of CN106462426B publication Critical patent/CN106462426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了用于在运行时检查开发者提供的图形代码和属性的方法、系统和设备。设计用于在图形处理单元(GPU)上执行的图形代码利用诸如OpenCL或OpenGL的编码语言,所述编码语言提供用于由驱动器、代码生成器和编译器进行的运行时分析。基于要在其上执行所述代码的GPU的执行能力和性能标准可分析和改变开发者提供的代码和属性。一般来讲,减少开发者限定的工作项目或工作组的数目可相对于要执行的所述工作来减少所述GPU的初始化成本,并实现所述机器代码的总体优化。可添加操纵代码以和展开循环从而改进执行性能相似的方式来调节所提供的代码。

Description

用于图形处理单元的组合计算任务
背景技术
本公开整体涉及有关图形处理单元(GPGPU)的通用计算领域以及如何在开发者定义的工作组特征上执行优化。更具体地讲,但并非加以限制,本公开涉及技术,该技术用于当工作组的大小显得较大时聚结(例如组合)工作组中的工作项目,并且在工作组大小显得过小时混叠工作组以聚结来自不同工作组的工作项目。在一些情况下,可一起使用这两种技术以减少与工作任务相关联的总体开销。
在利用图形处理单元(GPU)的并行计算领域中,有数种计算语言可用。例如,OpenCL和OpenGL是开发者用来与GPU进行交互的标准。GPU可具有并行运行的多个核心以处理名为“内核”的程序,其中每个内核将并行处理大量工作项目。开发者将为其算法定义“最佳”N维索引空间。然后当工作项目被分组到局部工作组中时,由GPU跨工作项目的全局域执行内核。例如全局维度可为1024×1024像素,并通过跨一组32×32局部维度一起执行的多个工作组来表示整个问题空间。即工作定义为划分为一组工作组的全局工作,所述工作组继而被划分为一组工作项目。
要将工作组加载至GPU,需要将与工作组相关联的数据初始化,并加载与每个工作组相关联的功能代码以及与每个工作项目相关联的元数据。该加载(初始化)时间表示实际进行工作组内所有工作项目的工作的开销之外的开销量。由于开发者无法预测在未来运行时对其应用可能可用的技术能力,对于开发者来说,针对给定硬件平台为得到“最佳”参数进行调谐并非始终实用。
发明内容
本公开涉及驱动器、编译器和/或代码生成器如何在运行时为GPU生成可执行的代码。例如,生成内核以在GPU的一个或多个核心和处理元件上执行。更具体地讲,本公开涉及在运行时如何基于编译器和驱动器交互来准备GPU的特定图形内核,该交互考虑了运行时硬件的能力和性能特性。一般来讲,可跨GPU的多个核心并行运行更小的工作组,其中每个工作组在单个核心上运行。另外,可将多个工作项目聚结到单个工作组中以减少加载多个工作项目的开销。由于聚结而增加的操纵代码的增量成本可小于与重复加载元数据相关联的开销,该元数据与多个工作项目相关联。
附图说明
图1示出了根据公开的实施方案的表示多个工作组的全局工作空间。
图2以框图形式示出了根据公开的实施方案的通过将四个工作项目聚结到一个工作项目中的开销减少。
图3示出了根据公开的实施方案的工作组的组合,该组合减少了工作组总数,并由此减少了总计总体开销。
图4示出了根据公开的实施方案的与工作组内工作项目的聚结相关联的成本减少。
图5示出了根据公开的实施方案的与工作组的组合和工作项目的聚结两者相关联的组合成本减少。
图6示出了适合实施本公开构思的硬件的一个示例的框图。
具体实施方式
本公开涉及改善硬件利用的系统、方法和计算机可读介质。一般来讲,公开了用于将多个工作项目组合到单个工作项目中的技术,方式为将代码添加到新形成的单个工作项目以“展开”内核,使得它可跨比开发者限定的实例更多的实例作用。另外,可将多个工作组组合到单个工作组中以减少必须在给定硬件上初始化的工作组总数。更为具体地讲,本文公开的技术可改变工作项目的指定、工作项目的实例以及工作组的总数,以更紧密匹配运行时硬件的性能特征。
在以下描述中,为了解释的目的,阐述了很多具体细节以便提供对发明构思的彻底理解。作为该描述的一部分,本公开的附图中的一些附图以框图形式表示结构和设备,以避免模糊本发明。为了清晰起见,不对实际的具体实施的所有特征进行描述。此外,本公开中所使用的语言已主要被选择用于可读性和指导性目的,并且可能没有被选择为划定或限定本发明的主题,从而诉诸于所必需的权利要求以确定此类发明主题。在本公开中提到“一个实施方案”或“实施方案”意指包括在本发明的至少一个实施方案中的结合该实施方案所述的特定特征、结构或特性,并且多次提到“一个实施方案”或“实施方案”不应被理解为必然地全部参考相同的实施方案。
应当理解,在任何实际具体实施的开发中(如在任何开发项目中那样),必须要作出许多决策以实现开发者的特定目标(如,符合与系统和商务相关的约束条件),并且这些目标可在不同具体实施之间变化。还应当理解,此类开发工作可能是复杂并且耗时的,但尽管如此,对于在受益于本公开而设计图像处理系统的具体实施的那些普通技术人员而言,这仍然是他们的日常工作。
不同的处理芯片对于不同的操作具有不同的开销标准。例如,一些芯片可能具有更高效的存储器访问能力,而其他芯片则可具有更高效的处理具体实施(在其他属性之间)。本公开描述了可在GPU上的图形处理领域中使用的优化技术。具体而言,本公开涉及可在运行时通过运行时硬件的知识改变代码以覆写开发者在开发时限定的特性的方法和系统。如今市面上可购得的多种不同的硬件处理器可让开发者预测任何给定GPU的图形处理工作的最佳分离显得不实用。
参考图1,所显示的框图示出了X维度和Y维度划分为多个工作组120的全局工作空间110。工作组的大小由开发者在代码开发时间限定。如上所述,开发者很可能不了解可影响运行时代码执行的具体硬件。本领域的技术人员应当了解,诸如OpenCL和OpenGL的语言导致在运行时对(例如)驱动器、编译器和代码生成器的调用,以创建实际在GPU上执行的内核或着色器。与工作组的每个工作项目相关联的每个工作组的加载和元数据的加载可具有相关联的开销。通过减少工作组的总数(或工作组内的工作项目),能够获得一些优化。一般来讲,如果工作组过小,则由于基本上相似的信息的冗余加载,需要比可能最有效率时更多的开销来加载。如果工作组过大,则可不利影响可由GPU执行的并行工作量。在下面的示例中,以变量“C”表示执行实际工作的成本、以变量“B”表示执行相关联的元数据的像素加载的成本、以变量“A”表示执行工作组加载/初始化的成本,并且与组合及聚结相关联的操纵成本视情况以M1和M2表示。
参考图2,其示出了将四个工作项目组合到单个工作项目中。工作项目205、210、215和220表示处理4个工作项目时所需的开销和实际工作。每个工作项目具有要加载的开销A。当信息(例如元数据)在性质上相似时,存在将信息组合并添加操纵代码(240)以跨相似元数据在运行时调节的可能性。例如,如果在工作项目205和210之间唯一不同的信息为输出中的像素位置,则可添加偏移计算以考虑所得位置的偏移。这可允许跨工作项目205和210的元数据的组合,使得仅将共有信息上传至GPU一次。另外的成本为操纵代码,该操纵代码在一些情况下可小于开销A并因此实现总体节省。在图2中通过四个工作项目(205、210、215和220)的组合示出了该构思,这增加了操纵代码M1(240)的另外开销,同时减少了3A的开销。实际像素的工作保持恒定(C)。因此处理单个组合的工作项目的总工作可由1A(250)加上操纵代码M1(240)加上实际工作0、1、2和3(四倍C)来表示。
现在参考图3,其示出了不同种类的优化以再减少初始化GPU的开销。在图3中我们有16个工作组,每个工作组5个像素(310)。我们可将工作组组合到一起以减少工作组的总数并增加每个工作组计算的像素数量。在该示例中,我们将每个工作组的像素的数目从5更改到20。结果示出,我们具有4个工作组实例,每个工作组实例20个像素(320)。因此开销成本从16A(初始化每个原始工作组的成本)减少至4A(初始化4个工作组)加上组合工作组时可能需要的操纵代码的成本。该示例实现12A的节省(减去四倍操纵代码M2的开销)。注意,为了组合并生成新的工作组格式而执行的处理可由驱动器和编译器在运行时自动执行,并且不影响开发者或最终用户。
现在参考图4,其示出了四个工作组的示例,每个工作组500个工作项目。开发者提供的信息将导致4个工作组负载以及处理2000个像素负载B和2000个实际工作元素C的成本。在该示例中,我们使用图2的技术以将500个工作项目A聚结到25个工作项目A的组中。由于工作项目的组合,这可将500A的成本减少至80A(500除以25)。增量成本将为与80个聚结的工作项目相关联的操纵代码M1,但是成本减少将为24×4个工作项目负载A的节省。通过消除这96个工作项目实现的总体节省可基本上小于增量成本,并实现更有效的运行时程序。
现在参考图5,其示出了以上相对于图2和3讨论的两种优化的可能组合。图5示出了在500个工作组、每个工作组4个项目的情况下计算2000个像素工作空间的情况。最初与该开发者提供的输入相关联的成本为加载500个工作组A加上2000个像素工作项目负载B加上2000个实际工作元素C的成本。即500A+2000B+2000C。可执行初始步骤分析来确定是否可将多个工作组组合到单个工作组中。在该示例中,我们可将10个原始工作组组合到单个工作组中,实现减少为总共50个工作组(500/10)。增量成本为与工作组的组合相关联的操纵代码(M1)的成本。成本节省可由减少450个工作组负载来表示。一般来讲,M1的开销可计量地小于450个工作组负载的成本。接下来,可执行分析来确定工作组内的多个工作项目(现在每个组合的工作组中有40个工作项目)是否可聚结到单个工作项目中。在该示例中,我们可将20个工作项目组合到单个工作项目中,并添加操纵代码以在运行时进行调节来考虑聚结所需的调节。成本的减少可被视为以系数20减少工作项目负载,从而2000个负载减少为100个(例如,2000/20)。然后组合和聚结代码的总成本可被表示为50(A+M1)+100(B+M2)+2000C,而不是最初的500A+2000B+2000C。如上所述,2000C表示在每个像素上执行的实际工作,并且不受组合和聚结的影响。显然,如果50M1小于450A并且100M2小于1900B,我们就可实现总体的性能改进。
以下示例代码部分可进一步示出上述实施方案。这些代码修改仅为例示性的,并且可在没有外部可见性或开发者或用户的交互的情况下进行,因为它们可自动由如上所述的驱动器、代码生成器和/或编译器执行。
作为示例,在下面的表1中有一个简单的OpenCL内核(将输入数组进行平方并写出到输出数组):
表1.
在该示例中,用户将通过1024×1×1的全局大小以及32×1×1的工作组大小启动上述内核。注意全局大小将匹配输入/输出数组大小。本质上这将并行运行该程序/内核的1024个实例。程序的每个实例将找出其全局ID并查找正确的索引以从输入数组进行加载并执行计算以写出到输出数组。
下面的表2示出了另一个示例(计算3个项的1D卷积,a(x-1)+bx+c(x+1)):
表2.
在表2的示例中,用户可通过4096×1×1的全局大小以及512×1×1的工作组大小启动上述内核。以上工作组允许重新使用来自输入的存储器读取,例如,多个实例将访问同一输入存储器多次。对于该示例,3个全局存储器访问转变为1个全局存储器访问+3个局部存储器访问。本领域的技术人员将理解,在本公开的前提下,诸如2D卷积的更高次项的卷积可实现更多节省。(存在工作组构思的原因在于跨实例利用或分享存储器/计算。)
下面表3的代码示例包括注释,用于解释用于以上代码示例的消除与本公开的实施方案相关的负载开销的构思。
表3.
由于特定硬件的性质,以上注释解释了基本开销可能存在于何处。为了克服硬件的限制,表4的以下代码示例示出了一些可能的修改,这些修改可根据本公开自动进行,以解决运行时硬件的问题。例如,可聚结工作组中的多个工作项目,以摊销每个工作项目的成本。
表4.
表4.
参考图6,其示出了根据一个实施方案的示例性电子设备600的简化功能框图。电子设备600可为,例如移动电话、个人媒体设备、便携式相机或平板电脑、笔记本电脑或台式计算机系统。如图所示,电子设备600可包括处理器605、显示器610、用户界面615、图形硬件620、设备传感器625(例如,接近传感器/环境光传感器、加速度计和/或陀螺仪)、麦克风630、一个或多个音频编解码器635、一个或多个扬声器640、通信电路645、图像捕获电路或单元650、一个或多个视频编解码器655、存储器660、存储装置665和通信总线670。
处理器605可执行必要的指令以实施或控制由设备600所执行的多种功能的操作(例如,诸如根据图1至5生成和/或处理图像)。处理器605可例如驱动显示器610并可从用户界面615接收用户输入。用户界面615可呈现多种形式诸如按钮、小键盘、拨号盘、点击轮、键盘、显示屏和/或触摸屏。处理器605可以是片上系统诸如存在于移动设备中的那些片上系统,并且可包括一个或多个专用图形处理单元(GPU)。处理器605可基于精简指令集计算机(RISC)或复杂指令集计算机(CISC)架构或任何其他合适的架构,并且可包括一个或多个处理内核。图形硬件620可以是用于处理图形和/或辅助处理器605执行计算任务的专用计算硬件。在一个实施方案中,图形硬件620可包括一个或多个可编程图形处理单元(GPU)。
图像捕获电路650可捕获可被处理以生成图像的静止的图像和视频图像。通过以下设备至少部分地可处理来自图像捕获电路650的输出:一个或多个视频编解码器655和/或处理器605和/或图形硬件620、和/或结合在电路650内的专用图像处理单元。由此捕获的图像可存储在存储器660和/或存储装置665中。存储器660可包括由处理器605、图形硬件620和图像捕获电路650使用的一个或多个不同类型的介质以执行设备功能。例如,存储器660可包括存储器高速缓存、只读存储器(ROM),和/或随机存取存储器(RAM)。存储装置665可存储媒体(例如,音频文件、图像文件和视频文件)、计算机程序指令或软件、偏好信息、设备配置文件信息以及任何其他合适的数据。存储装置665可包括一个或多个非暂态存储介质,包括例如磁盘(固定盘、软盘和可移除盘)和磁带、光学介质(诸如CD-ROM和数字视频光盘(DVD))、以及半导体存储设备(诸如电可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM))。存储器660和存储装置665可用于保持被组织成一个或多个模块并以任何所需的计算机编程语言编写的计算机程序指令或代码。例如,在由处理器605执行时,此类计算机程序代码可实现本文所述的方法中的一种或多种。
应当理解,以上描述旨在是示例性的而非限制性的。已呈现材料以使得本领域的任何技术人员能够作出并使用受权利要求保护的发明,并在特定实施方案的上下文中提供该材料,其变化对于本领域的技术人员而言将是显而易见的(例如,可彼此结合使用所公开的实施方案中的一些实施方案)。例如,处理可为根据公开的实施方案的如图2中的聚结工作组中的工作项目,如图3中的将工作组组合到一起以减少工作组总数目,或者如图5中所描述的这两者的组合中的任一者。在一个或多个实施方案中,可省略、重复和/或以不同顺序执行这些步骤中的一个或多个步骤。因此,在该具体实施方式中所述的以及参考图5解释的步骤的具体布置不应理解为限制该技术的范围。因此应当参考所附权利要求以及命名此类权利要求的等同形式的完整范围来确定本发明的范围。在所附权利要求中,术语“包括(including)”和“其中(in which)”被用作相应术语“包括(comprising)”和“其中(wherein)”的通俗的英语等同形式。

Claims (20)

1.一种在将图形代码加载到图形处理单元之前处理所述图形代码的方法,所述方法包括:
获取包含开发者提供的标准的代码和属性的一部分,所述代码和属性描述用于图形处理单元(GPU)的执行参数;
在将编译版本的所述代码和属性加载到所述GPU之前,使用编译器或驱动器中的至少一者分析代码和属性的所述部分;
改变所述代码和属性的至少一部分以基于所述GPU的能力来更改所述开发者提供的标准,以创建改变的代码部分;
编译所述改变的代码部分;以及
加载所编译的改变的代码部分以用于在所述GPU上执行。
2.根据权利要求1所述的方法,其中改变所述代码和属性的所述部分包括在所述代码的所述部分中将来自单个工作组的多个工作项目聚结到单个工作项目中。
3.根据权利要求2所述的方法,其中所述单个工作项目包括操纵代码以在运行时自动调节受所述聚结影响的代码元素。
4.根据权利要求3所述的方法,其中执行所述操纵代码的成本小于执行源自所述聚结的消除的开销的成本。
5.根据权利要求1所述的方法,其中改变所述代码和属性的所述部分包括将多个工作组合并以在所述代码的所述部分中减少开发者指定的工作组的数量。
6.根据权利要求5所述的方法,其中每个合并的工作组包括操纵代码以在运行时自动调节受所述合并影响的代码元素。
7.根据权利要求6所述的方法,其中执行所述操纵代码的成本小于执行源自所述合并的消除的开销的成本。
8.根据权利要求1所述的方法,其中改变所述代码和属性的所述部分包括将多个工作组合并以在所述代码的所述部分中减少开发者指定的工作组的数量以及在所述合并后,将来自合并的工作组的多个工作项目聚结到单个工作项目中。
9.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括存储在其上的指令,所述指令在由处理器执行时使得所述处理器:
获取包含开发者提供的标准的代码和属性的一部分,所述代码和属性描述用于图形处理单元(GPU)的执行参数;
在将编译版本的所述代码和属性加载到所述GPU之前,使用编译器或驱动器中的至少一者分析代码和属性的所述部分;
改变所述代码和属性的至少一部分以基于所述GPU的能力来更改所述开发者提供的标准,以创建改变的代码部分;
编译所述改变的代码部分;以及
加载所编译的改变的代码部分以用于在所述GPU上执行。
10.根据权利要求9所述的非暂态计算机可读介质,其中使得所述处理器改变所述代码和属性的所述部分的所述指令包括使得所述处理器在所述代码的所述部分中将来自单个工作组的多个工作项目聚结到单个工作项目中的指令。
11.根据权利要求10所述的非暂态计算机可读介质,其中所述单个工作项目包括操纵代码以在运行时自动调节受所述聚结影响的代码元素。
12.根据权利要求11所述的非暂态计算机可读介质,其中执行所述操纵代码的成本小于执行源自所述聚结的消除的开销的成本。
13.根据权利要求9所述的非暂态计算机可读介质,其中使得处理器改变所述代码和属性的所述部分的所述指令包括使得所述处理器将多个工作组合并以在所述代码的所述部分中减少开发者指定的工作组的数量的指令。
14.根据权利要求13所述的非暂态计算机可读介质,其中每个合并的工作组包括操纵代码以在运行时自动调节受所述合并影响的代码元素。
15.根据权利要求14所述的非暂态计算机可读介质,其中执行所述操纵代码的成本小于执行源自所述合并的消除的开销的成本。
16.根据权利要求9所述的非暂态计算机可读介质,其中使得所述处理器改变所述代码和属性的所述部分的所述指令包括如下指令:所述指令使得所述处理器将多个工作组合并以在所述代码的所述部分中减少开发者指定的工作组的数量以及在所述合并后,将来自合并的工作组的多个工作项目聚结到单个工作项目中。
17.一种系统,包括:
用于存储指令和数据的存储器;
图形处理单元(GPU);和
中央处理单元,其中所述中央处理单元利用所述指令和数据使得所述中央处理单元:
获取包含开发者提供的标准的代码和属性的一部分,所述代码和属性描述用于所述GPU的执行参数,
在将编译版本的所述代码和属性加载到所述GPU之前,使用编译器或驱动器中的至少一者分析代码和属性的所述部分,
改变所述代码和属性的至少一部分以基于所述GPU的能力来更改所述开发者提供的标准,以创建改变的代码部分,
编译所述改变的代码部分,以及
加载所编译的改变的代码部分以用于在所述GPU上执行。
18.根据权利要求17所述的系统,其中使得所述中央处理单元改变所述代码和属性的所述部分的所述指令和数据包括使得所述中央处理单元在所述代码的所述部分中将来自单个工作组的多个工作项目聚结到单个工作项目中的指令。
19.根据权利要求17所述的系统,其中使得所述中央处理单元改变所述代码和属性的所述部分的所述指令包括使得所述中央处理单元将多个工作组合并以在所述代码的所述部分中减少开发者指定的工作组的数量的指令。
20.根据权利要求17所述的系统,其中使得所述中央处理单元改变所述代码和属性的所述部分的所述指令包括如下指令:所述指令使得所述中央处理单元将多个工作组合并以在所述代码的所述部分中减少开发者指定的工作组的数量以及在所述合并后,将来自合并的工作组的多个工作项目聚结到单个工作项目中。
CN201580028448.7A 2014-05-30 2015-05-27 用于图形处理单元的组合计算任务 Active CN106462426B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462005979P 2014-05-30 2014-05-30
US62/005,979 2014-05-30
US14/448,927 US9442706B2 (en) 2014-05-30 2014-07-31 Combining compute tasks for a graphics processing unit
US14/448,927 2014-07-31
PCT/US2015/032511 WO2015183851A1 (en) 2014-05-30 2015-05-27 Combining compute tasks for a graphics processing unit

Publications (2)

Publication Number Publication Date
CN106462426A true CN106462426A (zh) 2017-02-22
CN106462426B CN106462426B (zh) 2020-03-03

Family

ID=53366317

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580028448.7A Active CN106462426B (zh) 2014-05-30 2015-05-27 用于图形处理单元的组合计算任务

Country Status (4)

Country Link
US (1) US9442706B2 (zh)
EP (1) EP3137993B1 (zh)
CN (1) CN106462426B (zh)
WO (1) WO2015183851A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003934B (zh) * 2014-12-08 2020-12-29 英特尔公司 改进共享本地存储器和系统全局存储器之间的存储器访问性能的装置和方法
CN105183433B (zh) * 2015-08-24 2018-02-06 上海兆芯集成电路有限公司 指令合并方法以及具有多数据通道的装置
CN105302577B (zh) * 2015-11-26 2019-05-07 上海兆芯集成电路有限公司 驱动执行单元的机器码产生方法以及装置
CN109074281B (zh) * 2016-04-28 2022-05-24 华为技术有限公司 图形处理器任务的分配方法和装置
CN109710302B (zh) * 2018-12-12 2021-12-24 中国航空工业集团公司西安航空计算技术研究所 一种染色器软件管理装置和方法
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130014083A1 (en) * 2008-02-19 2013-01-10 International Business Machines Corporation Automated merging in a software development environment
CN103608777A (zh) * 2011-06-20 2014-02-26 高通股份有限公司 图形处理单元中的存储器共享
CN103649917A (zh) * 2011-07-12 2014-03-19 高通股份有限公司 图形处理单元中的指令剔除

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074247A1 (en) * 2000-12-26 2003-04-17 Appareon System, method, and article of manufacture for manipulating the actors in a supply chain system
JP2006127302A (ja) * 2004-10-29 2006-05-18 Internatl Business Mach Corp <Ibm> 情報処理装置、コンパイラ、及びコンパイラプログラム
US8610731B2 (en) * 2009-04-30 2013-12-17 Microsoft Corporation Dynamic graphics pipeline and in-place rasterization
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
KR101613971B1 (ko) * 2009-12-30 2016-04-21 삼성전자주식회사 프로그램 코드의 변환 방법
CA2707916C (en) * 2010-07-14 2015-12-01 Ibm Canada Limited - Ibm Canada Limitee Intelligent timesheet assistance
US8856760B2 (en) * 2010-10-26 2014-10-07 Advanced Micro Devices, Inc. Streaming programming generator
JP5506721B2 (ja) * 2011-03-09 2014-05-28 インターナショナル・ビジネス・マシーンズ・コーポレーション サブクラステスト関数の実行結果を再利用してプログラムを最適化する最適化装置、最適化方法及び最適化プログラム
US9098309B2 (en) * 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US8707314B2 (en) 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US20140019305A1 (en) * 2012-07-12 2014-01-16 Mukesh Shetty Cloud-driven Social-network Platform focused on Pattern Analysis
US8928679B2 (en) 2012-09-14 2015-01-06 Advanced Micro Devices, Inc. Work distribution for higher primitive rates
US9823927B2 (en) * 2012-11-30 2017-11-21 Intel Corporation Range selection for data parallel programming environments
KR101813140B1 (ko) * 2013-05-15 2018-01-30 삼성전자주식회사 코드 실행 장치 및 그 코드 실행 장치를 이용한 코드 실행 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130014083A1 (en) * 2008-02-19 2013-01-10 International Business Machines Corporation Automated merging in a software development environment
CN103608777A (zh) * 2011-06-20 2014-02-26 高通股份有限公司 图形处理单元中的存储器共享
CN103649917A (zh) * 2011-07-12 2014-03-19 高通股份有限公司 图形处理单元中的指令剔除

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YURI DOTSENKO等: "Auto-tuning of Fast Fourier Transform on Graphics Processors", 《ACM SIGPLAN NOTICES-PPOPP’11》 *

Also Published As

Publication number Publication date
CN106462426B (zh) 2020-03-03
US20150347105A1 (en) 2015-12-03
EP3137993B1 (en) 2020-06-17
US9442706B2 (en) 2016-09-13
WO2015183851A1 (en) 2015-12-03
EP3137993A1 (en) 2017-03-08

Similar Documents

Publication Publication Date Title
CN106462426A (zh) 用于图形处理单元的组合计算任务
CN110149802B (zh) 用于在虚拟图像处理器指令集架构(isa)与具有二维移位阵列结构的目标硬件之间进行转译的编译器
CN102576314B (zh) 具有横跨多个处理器的数据并行线程之映射处理逻辑
US8225074B2 (en) Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
Membarth et al. Generating device-specific GPU code for local operators in medical imaging
US20170052764A1 (en) Pluggable components for runtime-image generation
US10180825B2 (en) System and method for using ubershader variants without preprocessing macros
US11036477B2 (en) Methods and apparatus to improve utilization of a heterogeneous system executing software
CN103593221B (zh) 用于动态数据配置的方法和设备
WO2022153290A1 (en) Quantum circuit modeling
KR20160074154A (ko) 컴파일러
Jacob et al. CUDACL: A tool for CUDA and OpenCL programmers
US8433697B2 (en) Flexible metadata composition
US10192344B2 (en) Method and apparatus for generating shader program
US9142184B1 (en) Speed function module and numerical minimization module for an active contour model
CN116611476A (zh) 性能数据预测方法、性能数据预测装置、电子设备及介质
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
Kumar Scheduling of dense linear algebra kernels on heterogeneous resources
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
Kasyanov et al. Visualization of graph representations of dataflow programs
Stratton et al. Optimizing Halide for Digital Signal Processors
CN109947427A (zh) 用于将非串并行控制流图转换为数据流的方法和设备
WO2023071509A1 (zh) 模型编译方法、装置及模型运行系统
US20230131430A1 (en) Compiler device, instruction generation method, program, compiling method, and compiler program
US20230168873A1 (en) Scheduling apparatus, training apparatus, scheduler and generation method

Legal Events

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