CN112148570A - 改进在异构系统上执行的软件的运行时性能的方法和设备 - Google Patents
改进在异构系统上执行的软件的运行时性能的方法和设备 Download PDFInfo
- Publication number
- CN112148570A CN112148570A CN202010231584.9A CN202010231584A CN112148570A CN 112148570 A CN112148570 A CN 112148570A CN 202010231584 A CN202010231584 A CN 202010231584A CN 112148570 A CN112148570 A CN 112148570A
- Authority
- CN
- China
- Prior art keywords
- performance
- runtime
- heterogeneous system
- processing element
- compiled version
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3428—Benchmarking
-
- 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
本申请涉及改进在异构系统上执行的软件的运行时性能的方法和设备。公开了方法、设备、系统和制品以改进在异构系统上执行的软件的运行时性能。一种示例设备包括:反馈接口,用于在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据指定所述经编译版本在所述异构系统上的成功执行的函数来执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;性能分析器,用于基于所述性能特性和所述函数来确定性能差别;以及机器学习建模器,用于在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
Description
技术领域
本公开一般地涉及处理,并且更具体地涉及改进在异构系统上执行的软件的运行时性能的方法和设备。
背景技术
计算机硬件制造商开发用于在计算机平台的各种组件中使用的硬件组件。例如,计算机硬件制造商开发母板、母板用芯片组、中央处理单元(CPU)、图形处理单元(GPU)、视觉处理单元(VPU)、现场可编程门阵列(FPGA)、硬盘驱动器(HDD)、固态驱动器(SSD)和其他计算机组件。许多计算机硬件制造商开发用于编译要在具体处理平台上运行的算法和/或其他代码的程序和/或其他方法。
发明内容
根据本申请的一方面,提供了一种用于改进在异构系统上执行的软件的运行时性能的设备,所述设备包括:反馈接口,所述反馈接口用于在第一运行时收集与代码块的经编译版本相关联的所述异构系统的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;性能分析器,所述性能分析器用于基于所述性能特性和所述函数来确定性能差别;以及机器学习建模器,所述机器学习建模器用于在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
根据本申请的一方面,提供了一种包括指令的计算机可读存储介质,所述指令当被执行时,使至少一个处理器至少用于:在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;基于所述性能特性和所述函数来确定性能差别;并且在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
根据本申请的一方面,提供了一种用于改进在异构系统上执行的软件的运行时性能的设备,所述设备包括:用于收集的装置,所述用于收集的装置用于在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;用于分析的装置,所述用于分析装置用于基于所述性能特性和所述函数来确定性能差别;以及用于生成模型的装置,所述用于生成模型的装置用于在第二运行时之前基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
根据本申请的一方面,提供了一种用于改进在异构系统上执行的软件的运行时性能的方法,所述方法包括:在第一运行时收集所述异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;基于所述性能特性和所述函数来确定性能差别;以及在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
附图说明
图1是图示示例异构系统的框图。
图2是图示包括第一软件调整系统和第二软件调整系统的示例网络的框图,所述第一软件调整系统用于训练示例机器学习/人工智能模型。
图3是图示可以用于实现图2的第一软件调整系统和/或第二软件调整系统的示例软件调整系统的框图。
图4是图示图3的变体(variant)生成器的示例实施方案的框图。
图5是表示可以被执行来在训练阶段中实现图3和图4的变体生成器的机器可读指令500的流程图。
图6是表示可以被执行来在推理阶段期间实现图3和图4的变体生成器的机器可读指令的流程图。
图7是表示可以被执行来实现图3的可执行文件的机器可读指令的流程图。
图8是被构造为执行图5和图6的指令以实现图3和图4的变体生成器的示例处理平台的框图。
图9是被构造为执行图7的指令以实现图3的可执行文件的示例处理平台的框图。
各图未按比例绘制。通常,将在(一个或多个)附图和所附书面描述中自始至终使用相同的附图标记来指代相同或相似的部分。除非另外指示,否则连接参考(例如,被附接、被耦合、被连接和被接合)将被广义地解释,并且可以包括元件的合集之间的中间构件和元件之间的相对移动。因此,连接参考不一定推理两个元件被直接地连接并且彼此成固定关系。
当识别可以被单独地提及的多个元素或组件时,在本文中使用描述符“第一”、“第二”、“第三”等。除非基于其使用上下文另外指定或理解,否则此类描述符不旨在赋予列表中的优先级、物理顺序或布置或在时间上排序的任何含义,而是被仅仅用作为了理解所公开的示例的容易而单独地提及多个元素或组件的标签。在一些示例中,描述符“第一”可以用于指代详细描述中的元素,然而可以在权利要求中用诸如“第二”或“第三”的不同描述符来提及同一元素。在此类情况下,应该理解的是,仅仅为了容易引用多个元素或组件而使用此类描述符。
具体实施方式
如先前提及的,许多计算机硬件制造商和/或其他提供商开发用于编译要在具体处理平台上运行的算法和/或其他代码的程序和/或其他方法。例如,一些计算机硬件制造商开发用于编译要在GPU、VPU、CPU或FPGA上运行的算法和/或其他代码的程序和/或其他方法。此类程序和/或其他方法使用域特定语言(DSL)来起作用。DSL(例如,Halide、OpenCL等)利用所关心的分离原理来使如何编写算法(例如,程序、代码块等)与如何执行算法分开。例如,许多DSL允许开发人员用高级功能语言表示算法而不用担心到底层硬件的性能映射,并且还允许开发人员实现并探索将算法映射到硬件的高级策略(例如,通过称作调度表规范的过程)以获得性能实施方案。
例如,可以定义算法来使图像模糊(例如,如何编写算法),并且开发人员可能期望算法在CPU、VPU、GPU和FPGA上有效地运行。为了在各种类型的处理元件(例如,CPU、VPU、GPU、FPGA、异构系统等)上有效地运行算法,将生成调度表(schedule)。为了生成调度表,以取决于特定处理元件的不同方式对算法进行变换。已开发了使算法的编译时间调度自动化的许多方法。例如,编译自动调度可以包括自动调谐、启发式搜索和混合调度。
自动调谐包括以随机方式编译算法、执行该算法、测量处理元件的性能以及重复过程直到已满足性能阈值(例如,功耗、执行速度等)。然而,为了实现期望的性能阈值,可能要求大量的编译时间,并且编译时间随着算法的复杂度增加而加重。
启发式搜索包括(1)应用定义将改进性能以满足性能阈值的算法变换的类型的规则,以及(2)应用定义将不改进性能以满足性能阈值的算法变换的类型的规则。然后,基于规则,能够基于成本模型来定义和搜索搜索空间。然而,成本模型通常特定于特定处理元件。复杂的现代硬件(例如,一个或多个处理元件)难以凭经验建模,并且通常仅对硬件加速器进行建模。类似地,成本模型难以针对任意算法来定义。例如,成本模型适用于预定条件,但是对于复杂和随机条件,成本模型通常失败。
混合调度包括利用人工智能(AI)来识别用于通用处理元件的成本模型。成本模型能够对应于表示、预测和/或以其他方式确定用于执行代码的一部分的一个或多个处理元件的计算成本以方便一个或多个工作负载的处理。例如,包括机器学习(ML)、深度学习(DL)和/或其他人工机器驱动的逻辑的人工智能,使得机器(例如,计算机、逻辑电路等)能够使用模型来处理输入数据,以基于由模型经由训练过程先前学习的模式和/或关联来生成输出。例如,可以用数据来训练模型以辨识模式和/或关联并且在处理输入数据时遵循此类模式和/或关联,使得(一个或多个)其他输入产生与所辨识的模式和/或关联一致的(一个或多个)输出。
存在许多不同类型的机器学习模型和/或机器学习架构。一些类型的机器学习模型包括例如支持向量机(SVM)、神经网络(NN)、递归神经网络(RNN)、卷积神经网络(CNN)、长短期记忆(LSTM)、门控递归单元(GRU)等。
通常,实现ML/AI系统涉及两个阶段:学习/训练阶段和推理阶段。在学习/训练阶段中,训练算法用于基于例如训练数据训练模型以依照模式和/或关联来操作。通常,模型包括内部参数,所述内部参数指导如何将输入数据变换成输出数据,诸如通过模型内的一系列节点和连接来将输入数据变换成输出数据。附加地,超参数作为训练过程的一部分被用于控制学习如何被执行(例如,学习速率、要在机器学习模型中使用的层数等)。超参数被定义为在发起训练过程之前确定的训练参数。
可以基于ML/AI模型的类型和/或预期输出来执行不同类型的训练。例如,有监督训练使用输入和对应的预期(例如,所标记的)输出来为ML/AI模型选择减小模型误差的参数(例如,通过在选择参数的组合之上迭代)。如本文所使用的,标记指代机器学习模型的预期输出(例如,分类、预期输出值等)。可替代地,无监督训练(例如,被用在深度学习、机器学习的子集等中)涉及根据输入来推理模式,以为ML/AI模型选择参数(例如,而没有预期(例如,所标记的)输出的好处)。
使用训练数据来执行训练。一旦训练完成,模型就被部署以用作基于模型中定义的节点和连接的网络来处理输入并提供输出的可执行结构。
一旦经训练,就可以在推理阶段中操作所部署的模型以处理数据。在推理阶段中,要分析的数据(例如,实况数据)被输入到模型,并且模型执行以创建输出。此推理阶段可被认为是基于它从训练中学习到的东西来生成输出AI“思考”(例如,通过执行模型以将所学习到的模式和/或关联应用于实况数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前经历预处理。此外,在一些示例中,输出数据在它由AI模型生成之后可以经历后处理以将输出变换成有用的结果(例如,数据的显示、循环变换、要由机器执行的指令序列等)。
在一些示例中,可以捕获所部署的模型的输出并将其作为反馈来提供。通过分析反馈,能够确定所部署的模型的准确性。如果反馈指示所部署的模型的准确性小于阈值或其他准则,则能够使用反馈和更新的训练数据集、超参数等来触发对更新的模型的训练,以生成更新的部署的模型。
不管被使用的ML/AI模型如何,一旦ML/AI模型被训练,ML/AI模型就为通用处理元件生成成本模型。该成本模型然后被自动调谐器利用来为算法生成调度表。一旦生成了调度表,就将该调度表与算法规范组合以生成可执行文件(用于提前(Ahead of Time)或及时(Just in Time)范例)。
可执行文件包括许多不同的可执行段,其中每个可执行段可由具体处理元件执行,并且可执行文件被称为胖二进制文件(fat binary)。例如,如果开发人员正在开发要在包括GPU、CPU、VPU和FPGA的异构处理平台上使用的代码,则关联的胖二进制文件将包括分别针对GPU、CPU、VPU和FPGA的可执行段。在此类示例中,运行时调度器可以根据异构系统的物理特性以及环境因素而利用胖二进制文件来在GPU、CPU、VPU和FPGA中的至少一个上执行算法。针对执行定义成功的函数(例如,指定算法在异构系统上的成功执行的函数)。例如,这样的成功函数可以对应于执行函数以满足和/或以其他方式满足功耗阈值。在其他示例中,成功函数可以对应于在阈值时间量内执行函数。然而,运行时调度器在确定如何经由胖二进制文件在异构系统上执行算法时可以利用任何适合的成功函数。
虽然自动调谐、启发式搜索和基于AI的混合方法可以是编译期间可接受的调度方法,但是此类调度方法未考虑异构系统的个别处理元件的负载和实时性能。例如,当开发成本模型时,开发人员或AI系统做出关于特定处理元件(例如,GPU、CPU、FPGA或VPU)如何被构造的假定。此外,开发人员或AI系统可以做出有关特定计算元件、存储器子系统、互连结构和/或特定处理元件的其他组件的假定。然而,特定处理元件的这些组件是易变的,对负载和环境条件敏感,包括细微的硬件设计细节,具有有问题的驱动程序/编译器,并且/或者包括违背预期性能的性能行为。
例如,当异构系统将一个或多个计算任务(例如,工作负载、计算工作负载等)卸载到GPU时,存在未将足够的计算卸载到GPU的特定分支(ramification)。更具体地,如果不足量的计算任务被卸载到GPU,则GPU的一个或多个硬件线程可能停止并使GPU的一个或多个执行单元停机,从而限制GPU的处理能力。这样的分支的示例效果可能是卸载到GPU的大小为X的工作负载可以具有与卸载到GPU的大小为0.5X的工作负载相同或基本上类似的处理时间。
此外,甚至数据从一个处理元件到另一处理元件的移动也可能引起复杂化。例如,运行时调度器可以利用GPU的纹理采样器来在工作负载中处理图像。为了将工作负载卸载到GPU,图像被从由CPU支持的线性格式转换为由GPU支持的块片格式。这样的转换在CPU上引发计算成本,并且虽然它可能更快,但是为了在GPU上处理图像,在CPU上转换图像的格式的总体操作和GPU上的后续处理可能比在CPU上简单地处理图像要长。
附加地,许多编译器利用自动矢量化来触发自动矢量化功能性,所述自动矢量化依靠人类开发人员对变换和其他调度技术的知识。因此,不知道这些技术的开发人员将具有不太令人满意的可执行文件。
本文公开的示例包括改进在异构系统上执行的软件的运行时性能的方法和设备。与用于编译调度的一些方法相反,本文公开的示例不单单依靠对处理元件的理论理解、开发人员对算法变换和其他调度技术的知识以及用于编译调度的一些方法的其他陷阱。
本文公开的示例收集实际性能特性以及期望性能(例如,成功函数)与所获得的实际性能之间的差异。本文公开的示例提供一种设备,所述设备包括:反馈接口,该反馈接口用于在第一运行时收集与代码块的经编译版本相关联的异构系统的性能特性,所述经编译版本根据指定所述经编译版本在所述异构系统上的成功执行的函数来执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;性能分析器,该性能分析器用于基于所述性能特性和所述函数来确定性能差别(performance delta);以及机器学习建模器,所述机器学习建模器用于在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,经调整的成本模型引起所述性能差别减少以改进所述异构系统的运行时性能。
图1是图示示例异构系统100的框图。在图1的示例中,异构系统100包括示例CPU102、示例存储装置104、示例FPGA 106、示例VPU108和示例GPU 110。示例存储装置104包括示例可执行文件105。可替代地,存储装置104可以包括不止一个可执行文件。在图1中,异构系统100是片上系统(SOC)。可替代地,异构系统100可以是任何其他类型的计算或硬件系统。
在本文公开的示例中,CPU 102、存储装置104、FPGA 106、VPU108和GPU 110中的每一个均与异构系统100的其他元件通信。例如,CPU 102、存储装置104、FPGA 106、VPU 108和GPU 110经由通信总线进行通信。在本文公开的一些示例中,CPU 102、存储装置104、FPGA106、VPU 108和GPU 110可以经由任何适合的有线和/或无线通信方法进行通信。附加地,在本文公开的一些示例中,CPU 102、存储装置104、FPGA 106、VPU 108和GPU 110中的每一个均可以经由任何适合的有线和/或无线通信方法与在异构系统100外部的任何组件通信。
在图1的示例中,CPU 102是执行指令(例如,被包括在可执行文件105中和/或以其他方式对应于可执行文件105的机器可读指令)以执行、实现和/或辅助实现与计算机或计算装置相关联的操作的完成的处理元件。在图1的示例中,CPU 102是用于异构系统100的主要处理元件并且包括至少一个核心。可替代地,CPU 102可以是协主要处理元件(例如,在利用了不止一个CPU的示例中),然而在其他示例中,CPU102可以是辅助处理元件。
在图1中图示的示例中,存储装置104是包括可执行文件105的存储器。附加地或可替代地,可执行文件105可以被存储在CPU 102、FPGA 106、VPU 108和/或GPU中110。在图1中,存储装置104是CPU 102、FPGA 106、VPU 108和GPU 110中的至少一个之间的共享存储装置。在图1的示例中,存储装置104是异构系统100本地的物理存储装置;然而,在其他示例中,存储装置104可以在异构系统100外部和/或否则相对于异构系统100是远程的。在进一步的示例中,存储装置104可以是虚拟存储装置。在图1的示例中,存储装置104是持久性存储装置(例如,只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)等)。在其他示例中,存储装置104可以是持久性基本输入/输出系统(BIOS)或闪速存储装置。在进一步的示例中,存储装置104可以是易失性存储器。
在所图示的图1的示例中,FPGA 106、VPU 108和GPU 110中的一个或多个是可以被在异构系统100上执行的程序用于计算任务(诸如,硬件加速)的处理元件。例如,FPGA 106是能够被用于可计算的操作或过程的通用可编程处理元件。在其他示例中,VPU 108是包括处理资源的处理元件,所述处理资源被设计和/或以其他方式配置或构造为改进用于AI的处理机器视觉任务的处理速度和总体性能。在其他一些示例中,GPU 110是被设计来改进处理计算机图形和/或图像处理的处理速度和总体性能的处理元件。虽然FPGA 106、VPU 108和GPU 110包括用于支持具体处理任务的功能性,但是FPGA 106、VPU 108和/或GPU110中的一个或多个可以对应于支持可以在按需基础上从CPU 102卸载的一般处理任务的处理元件。
虽然图1的异构系统100包括CPU 102、存储装置104、FPGA 106、VPU 108和GPU110,但是在一些示例中,异构系统100可以包括任何数量的处理元件,其包括专用指令集处理器(ASIP)、物理处理单元(PPU)、数字信号处理器(DSP)、图像处理器、协处理器、浮点单元、网络处理器、多核心处理器和前端处理器。
图2是图示示例网络200的框图,所述示例网络200包括示例管理员装置202、示例第一软件调整系统204、示例网络206、示例数据库208和示例第二软件调整系统210。
在图2的示例中,管理员装置202是台式计算机。在其他示例中,管理员装置202可以是任何适合的计算系统,诸如移动电话、平板计算机、工作站、膝上型计算机或服务器。在图2的示例中,管理员可以经由管理员装置202训练第一软件调整系统204。例如,管理员可以经由管理员装置202生成训练数据。在本文公开的示例中,训练数据源自随机生成的算法,该算法随后被第一软件调整系统204利用。例如,管理员可以使用管理员装置202来生成大量(例如,成千上万)的算法并将这些算法发送到第一软件调整系统204以训练第一软件调整系统204。管理员装置202经由有线连接与第一软件调整系统204通信。然而,在其他示例中,管理员装置202可以经由任何适合的有线和/或无线连接与第一软件调整系统204通信。
在图2中所图示的示例中,第一软件调整系统204和第二软件调整系统210中的每一个均生成并改进异构系统(例如,异构系统100)上的应用的执行。第一软件调整系统204和第二软件调整系统210中的每一个均利用ML/AI技术来基于接收到的算法和处理元件的性能来生成应用。
在图2的示例中,第一软件调整系统204经由有线连接与管理员装置202通信,然而,在其他示例中,第一软件调整系统204可以经由任何适合的有线和/或无线连接与管理员装置202通信。附加地,第一软件调整系统204经由网络206与数据库208和第二软件调整系统210通信。第一软件调整系统204可以经由任何适合的有线和/或无线连接与网络206通信。
在所图示的图2的示例中,第一软件调整系统204训练ML/AI模型以生成训练后的ML/AI模型,所述训练后的ML/AI模型能够被利用来开发用于在异构系统上执行的代码和/或其他算法。第一软件调整系统204发送经训练后的ML/AI模型。例如,第一软件调整系统204经由网络206将经训练后的ML/AI模型发送到数据库208。附加地或可替代地,第一软件调整系统204将经训练后的ML/AI模型发送到第二软件调整系统210。
在图2的示例中,第二软件调整系统210利用经训练后的ML/AI模型来在异构系统上执行代码和/或其他算法。第二软件调整系统210可以从第一软件调整系统204、数据库208获得经训练后的ML/AI模型,或者第二软件调整系统210可以生成经训练后的ML/AI模型。第二软件调整系统210附加地收集与异构系统和异构系统的系统范围的成功函数相关联的数据。在收集数据之后,第二软件调整系统210将数据发送到第一软件调整系统204和/或数据库208。第二软件调整系统210可以按照将结合图3进一步讨论的各种方式对数据进行格式化。
在所图示的图2的示例中,网络206是连接第一软件调整系统204、数据库208和第二软件调整系统210中的一个或多个的网络。例如,网络206可以是局域网(LAN)、广域网(WAN)、无线局域网(WLAN)、因特网或任何其他适合的网络。网络200包括数据库208以记录和/或以其他方式存储数据(例如,异构系统性能数据、系统范围的成功函数、经训练后的ML/AI模型214等)。可以通过易失性存储器(例如,同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)等)和/或非易失性存储器(例如,闪速存储器)来实现数据库208。可以附加地或可替代地通过一个或多个双倍数据速率(DDR)存储器(诸如DDR、DDR2、DDR3、DDR4、移动DDR(mDDR)等)来实现数据库208。可以附加地或可替代地通过一个或多个大容量存储装置(诸如(一个或多个)硬盘驱动器、(一个或多个)紧致盘驱动器、(一个或多个)数字通用盘驱动器、(一个或多个)固态磁盘驱动器等)来实现数据库208。虽然在所图示的示例中数据库208被图示为单个数据库,但是可以通过任何数量和/或类型的数据库来实现数据库208。此外,存储在数据库208中的数据可以是任何数据格式,诸如例如二进制数据、逗号分隔的数据、制表符分隔的数据、结构化查询语言(SQL)结构等。在图2中,数据库208是存储在可电子地访问的计算系统上的数据的组织合集。例如,数据库208可以被存储在服务器、台式计算机、HDD、SSD或任何其他适合的计算系统上。
图3是图示可以用于实现图2的第一软件调整系统204和/或第二软件调整系统210的示例软件调整系统300的框图。示例软件调整系统300包括两个操作阶段:训练阶段和推理阶段。
在图3的示例中,软件调整系统300包括示例变体生成器302、示例异构系统304和示例存储装置306。示例存储装置306包括示例可执行文件308。示例可执行文件308包括示例变体库310、示例跳转表库312和示例运行时调度器314。示例异构系统304包括示例CPU316、示例FPGA 318、示例VPU 320和示例GPU 322。在图3的示例中,示例异构系统304类似于图1的异构系统100,其中存储装置306在异构系统304内部。然而,在其他示例中,存储装置306可以在异构系统304外部。在图3中图示的示例中,变体生成器302可以位于远程设施处(例如,相对于异构系统304是远程的),并且变体生成器302可以是计算机的集群(例如,服务器机房)。
在所图示的图3的示例中,变体生成器302被耦合到一个或多个外部装置、图2的数据库208、存储装置306、变体库310、跳转表库312和运行时调度器314。变体生成器302可以从外部装置接收算法和/或机器学习模型。例如,在示例训练阶段中,变体生成器302可以从外部装置接收和/或以其他方式获得随机算法。当在示例推理阶段中时,变体生成器302可以从一个或多个外部装置接收和/或以其他方式获得用户生成的算法和/或训练后的ML/AI模型。
在图3的示例中,变体生成器302是将从外部装置接收到的算法编译成包括算法的许多变体的可执行应用的装置。附加地或可替代地,变体生成器302生成经训练后的ML/AI模型,该模型与生成要在异构系统上运行的应用相关联。例如,如果从外部装置接收到的算法是用C/C++编写的,则变体生成器302将算法编译成可执行应用以供存储在存储装置306中。在本文公开的示例中,由变体生成器302编译的可执行应用是胖二进制文件。然而,在其他示例中,由变体生成器302编译的可执行应用可以是任何适合的可执行文件。
在图3的示例中,变体生成器302利用ML/AI技术。在本文公开的示例中,变体生成器302利用深度神经网络(DNN)模型。通常,将监督适合于在本文公开的示例方法中使用的机器学习模型/架构。然而,其他示例可以包括利用无监督学习的机器学习模型/架构。在本文公开的示例中,使用梯度下降(gradient descent)来训练ML/AI模型。在本文公开的示例中,被利用来训练ML/AI模型的超参数控制梯度下降的移动平均值的指数衰减速率。通过例如遍历(iterate through)超参数的网格直到超参数满足可接受的性能值为止来选择此类超参数。然而,可以附加地或可替代地使用任何其他训练算法。
在图3中图示的示例中,在训练阶段期间,变体生成器302用来生成训练后的ML/AP模型,所述训练后的ML/AP模型能够生成可执行应用,所述可执行应用包括能够在各种处理元件上运行的算法的多个变体。当在训练阶段中时,变体生成器302选择处理元件(例如,CPU 316、FPGA 318、VPU 320或GPU 322),变体生成器302将为所述处理元件开发一个或多个变体和对应的可执行应用。在选择处理元件(例如FPGA 318)时,变体生成器302当在训练阶段时选择处理元件的一方面来优化。例如,变体生成器302选择算法在FPGA 318上的执行速度来优化。
在图3的示例中,在选择要优化的处理元件的一方面之后,变体生成器302利用机器学习模型(例如,DNN)来生成处理元件的成本模型。变体生成器302然后利用自动调谐技术来开发调度表以将算法映射到所选处理元件,使得它将改进所选方面。例如,变体生成器302利用自动调谐技术来开发调度表以将算法映射到FPGA 318,使得将算法映射到FPGA318将改进算法在FPGA 318上的执行速度。
在所图示的图3的示例中,在为特定处理元件开发特定调度表之后,变体生成器302根据该调度表将算法编译成变体。此编译与可执行应用的编译不同,因为变体生成器302将算法编译成能够被可执行应用(例如,可执行文件308)调用的方法、类或对象。在对变体进行编译之后,变体生成器302当在训练阶段时将变体发送到存储装置306中的可执行文件308。例如,可执行文件308是存储在存储装置306中的胖二进制文件,并且变体生成器302将变体存储在变体库310中。附加地,变体生成器302当在训练阶段时将变体符号发送到存储装置306中的可执行文件308。变体符号是与变体在变体库310中的位置相对应的数据元素。
在图3的示例中,随后在异构系统304上执行变体。在异构系统304上执行变体之后,变体生成器302收集与所选处理元件(例如,FPGA 318)相关联的性能特性。当在训练模式下时的性能特性是所选处理元件(例如,FPGA 318)的特性,包括例如所选处理元件的功耗、要在所选处理元件上运行的时间以及与所选处理元件相关联的其他性能特性。
在图3的示例中,变体生成器302分析所收集的数据并且确定所使用的变体是否满足性能阈值。在本文公开的示例中,执行训练直到满足性能阈值为止。例如,性能阈值对应于针对所选方面实现的可接受的L2(最小二乘回归)误差量。一旦已经满足性能阈值,变体生成器302就确定是否存在要优化的后续方面。如果存在要优化的后续方面,则变体生成器302为所选处理元件生成附加变体(例如,FPGA 318的功耗)。如果不存在要优化的后续方面,则变体生成器302确定是否存在要为其生成一个或多个变体的后续处理元件(例如,与针对FPGA 318的变体不同地,为CPU 316、VPU 320或GPU 322生成的变体)。
在图3的示例中,在变体生成器302为异构系统304的所有处理元件生成变体之后,变体生成器302确定是否存在要为其生成变体的附加算法。如果是这样的话,则变体生成器302针对处理元件中的每一个的任何选择的和/或任意方面来为异构系统304的每个处理元件生成附加算法的变体。如果不存在附加算法,则变体生成器302输出经训练后的ML/AI模型。例如,变体生成器302可以输出一个或多个文件,所述一个或多个文件包括与异构系统304的每个处理元件的成本模型相关联的权重。模型可以被存储在存储装置306、数据库208和/或附加变体生成器处。然后可以通过变体生成器302在后续执行或附加变体生成器上执行模型。
在图3的示例中,在输出经训练后的ML/AI模型之后,变体生成器302监视任何附加输入数据。例如,输入数据可以是与由经训练后的ML/AI模型生成的应用在目标平台(例如,异构系统304)上的执行相关联的数据。由变体生成器302获得的具体数据指示目标平台在执行期望的工作负载时的性能并且反映在负载下的实际系统而不是测试系统。在接收和/或以其他方式获得输入数据时,变体生成器302识别异构系统304的成功函数。基于成功函数,变体生成器302确定通过成功函数所定义的期望性能(例如,性能阈值)与在推理阶段期间执行算法期间实现的实际性能之间的差异。
在图3的示例中,在变体生成器302确定要作为目标的总体系统(例如,异构系统304)的成功函数和相关方面以及与成功函数相关联的性能差别之后,变体生成器302更新和/或以其他方式调整与异构系统304的各个处理元件相关联的成本模型,以说明异构系统304的实时特性和负载。经更新的和/或以其他方式调整的成本模型有效地减少(例如,引起减少)异构系统304的性能特性与总体成功函数之间的性能差别。将在图4中进一步地讨论与异构系统的各个处理元件相关联的成本模型的更新和其他调整。
在图3中图示的示例中,变体库310是与可执行文件308相关联的数据结构,所述数据结构存储可执行文件308执行的算法的不同变体。例如,变体库310是胖二进制文件的数据段,其包括与特定算法相关联的不同变体,诸如与异构系统的各个处理元件相关联的变体。对于每个处理元件,变体库310可以附加地包括以各个处理元件的性能的不同方面为目标的变体。此外,变体库310被链接到示例跳转表库312和/或运行时调度器314。变体库310是可执行文件308的执行期间的静态库,但是可以在可执行文件308的执行之间用新的或更改的变体来更新。
在图3的示例中,跳转表库312是与可执行文件308相关联的数据结构,所述数据结构存储包括变体符号的跳转表,变体符号指向各个变体在变体库312中的位置。例如,跳转表库312是可执行文件308的数据段,所述数据段包括使各种变体符号(例如,指针)与位于变体库310中的各个变体相关联的跳转表。跳转表库312在可执行文件308的执行期间不改变,然而,可以访问跳转表库312以调用要加载到异构系统的处理元件中的一个或多个中的相应变体。
在图3中图示的示例中,运行时调度器314是虚拟机,所述虚拟机确定如何在异构系统的运行时期间执行工作负载(例如,一个算法和/或多个算法)。例如,运行时调度器314确定是否应该将工作负载从一个处理元件卸载到另一处理元件以便实现与总体异构系统相关联的性能目标。在图3的示例中,在可执行文件308的执行期间,运行时调度器314监视异构系统304并且基于性能特性来描绘异构系统304的性能轮廓,并将工作负载从一个处理元件卸载到另一处理元件。例如,在异构系统304的运行时期间,可执行文件308由CPU 316执行。在一些示例中,CPU 316执行来自存储装置306的可执行文件308,而在其他示例中CPU316在CPU 316上在本地执行可执行文件308。
在一些示例中,示例运行时调度器314实现用于工作负载的运行时调度的示例装置。运行时调度装置通过诸如由至少图7的框702-728实现的可执行指令来实现,可以在诸如图9的示例中示出的示例处理器912的至少一个处理器上执行所述可执行指令。在其他示例中,运行时调度装置通过硬件逻辑、硬件实现的状态机、逻辑电路系统、和/或硬件、软件和/或固件的任何其他组合来实现。
在图3的示例中,在由CPU 316执行可执行文件308时,运行时调度器314确定成功函数。例如,在训练阶段期间,成功函数与正在训练ML/AI模型所针对的特定处理元件(例如,GPU 322)相关联。运行时调度器314当在训练阶段中操作时为特定处理元件确定成功函数,而当在推理阶段中操作时,运行时调度器314确定系统范围的成功函数。例如,系统范围的成功函数可以与阈值量功率的消耗相关联,而另一系统范围的成功函数可以与尽可能快地执行与可执行应用相关联的算法相关联。系统范围的成功函数可以基于异构系统304的总体状态。例如,如果异构系统304位于处于低功率模式下的膝上型计算机上,则系统范围的成功函数可以与保存功率相关联,而在膝上型计算机的正常操作条件下,系统范围的成功函数可以与算法的执行速度相关联。
在图3的示例中,成功函数可以附加地特定于异构系统304的硬件。例如,成功函数可以与以下各项相关联:利用GPU 322超过阈值量;防止CPU 316线程之间的竞争;或利用VPU 320的高速存储器超过阈值量。成功函数可以是较简单的成功函数的合成物,诸如异构系统304每瓦特的总体性能。
在所图示的图3的示例中,在识别成功函数之后,运行时调度器314基于由ML/AI模型生成的变体来执行可执行文件308。例如,在训练阶段期间,不训练生成了变体的ML/AI模型,并且运行时调度器314考虑用来训练ML/AI模型的处理元件的具体性能。然而,在推理阶段期间,训练生成了变体的ML/AI模型,并且运行时调度器314考虑作为整体的异构系统304的具体性能。例如,在推理阶段期间,运行时调度器314可收集与异构系统304相关联的具体性能特性,并且存储和/或发送这些性能特性以供将来使用。
在图3的示例中,在推理阶段期间,运行时调度器314收集性能特性,所述性能特性包括与可执行文件308中所包括的每个变体相关联的元数据和度量信息。例如,此类元数据和度量信息包括:用于工作负载的标识符(例如,算法的名称)、与异构系统304的驱动器和其他硬件相关联的兼容性约束条件、用于生成变体的成本模型的版本、算法执行尺寸、以及确保工作负载(例如,变体)在每个处理元件上的执行之间的兼容性并向运行时调度器314通知卸载决定的其他数据。由运行时调度器314在推理阶段期间收集的性能特性可以进一步包括:变体在每个处理元件上的平均执行时间、每个处理元件在运行时期间的平均占用率、失速率(stall rates)、个别处理元件的功耗、由处理单元利用的计算周期计数、当卸载工作负载时的存储器延迟、将工作负载从一个处理元件卸载到另一处理元件的风险、系统范围的电池寿命、所利用的存储器量、与各种处理元件之间的通信总线相关联的度量、以及与异构系统304的存储器(例如,存储装置306)相关联的度量。
在图3的示例中,运行时调度器314在推理阶段期间附加地收集与涉及异构系统304的负载和环境条件的状态转变数据相关联的数据(例如,运行时调度器314为什么访问跳转表库312以及运行时调度器314在何处/为什么卸载了工作负载)。状态转变数据包括例如与异构系统304的热和功率特性相关联的运行时调度规则以及与可能扰乱(例如,影响)异构系统304的性能的任何其他条件相关联的运行时调度规则。
在所图示的图3的示例中,在监视性能特性之后,运行时调度器314基于异构系统304的成功函数来调整异构系统304的配置。周期性地,在运行时调度器314的整个操作中,在推理阶段期间,运行时调度器314可以存储和/或发送性能特性以供变体生成器302将来使用。为了这样做,运行时调度器314识别异构系统304是否包括持久性存储装置(例如,ROM、PROM、EPROM等)、持久性BIOS或闪速存储装置。
在图3的示例中,如果异构系统304包括持久性存储装置,则运行时调度器314将写入到可执行文件308(例如,胖二进制文件)中的数据段以存储性能特性。性能特性被存储在可执行文件308中以避免跨可执行文件308的不同执行的历史丢失的可能性。为了存储性能特性,在CPU 316上作为可执行文件308的映像执行的运行时调度器314将性能特性存储在存储装置306中存储的可执行文件308中。如果异构系统304不包括持久性存储装置,而是相反包括闪速存储装置或持久性BIOS,则可以实现将性能特性存储在可执行文件308中的类似方法。
在图3的示例中,如果不存在持久性存储装置、持久性BIOS或闪速存储装置的形式(例如,如果存储装置306是易失性存储器),则运行时调度器314可以可替代地利用通信端口来将所收集的性能特性发送到外部装置。例如,运行时调度器314可以利用USB、以太网、串行或任何其他适合的通信接口来将所收集的性能特性发送到外部装置。外部装置可以是例如数据库208和/或变体生成器302。
在所图示的图3的示例中,不管在推理阶段期间由运行时调度器314利用来存储性能特性的方法如何,在异构系统304上执行可执行文件308之后,运行时调度器314发送性能特性以及与系统范围的成功函数相关联的性能差别。性能差别可以指示例如期望性能与所实现的性能之间的差异。
在图3的示例中,在可执行文件308的后续执行时,运行时调度器314可以访问所存储的性能特性以及经调整的和/或以其他方式改进的ML/AI模型,以改进卸载变体的处理。例如,运行时调度器314可以访问的所存储的性能特性和经调整的ML/AI模型包括:负载下的总线业务、由操作系统在异构系统上采取的抢占式(preemptive)动作、与视频和音频处理相关联的解码延迟、以及能够帮助通知卸载决定的任何其他数据。例如,如果运行时调度器314遇到包括对视频进行解码和卸载的算法,则视频解码可以在GPU 322上开始。尽管运行时调度器314可具有针对由其支配的另一处理元件(例如,VPU 320)的变体,该变体将比在GPU 322上执行的变体更快地独立处理视频解码,但是由于与将工作负载从GPU 322移动到另一处理元件相关联的存储器移动延迟而导致在GPU 322上执行视频解码可能更快。
图4是图示图3的变体生成器302的示例实施方案的框图。变体生成器302包括示例变体管理器402、示例成本模型学习器404、示例权重存储装置406、示例编译自动调度器408、示例变体编译器410、示例跳转表412、示例应用编译器414、示例反馈接口416和示例性能分析器418。
在本文公开的示例中,变体管理器402、成本模型学习器404、权重存储装置406、编译自动调度器408、变体编译器410、跳转表412、应用编译器414、反馈接口416和性能分析器418中的每一个均与变体生成器302的其他元件通信。例如,变体管理器402、成本模型学习器404、权重存储装置406、编译自动调度器408、变体编译器410、跳转表412、应用编译器414、反馈接口416和性能分析器418经由通信总线进行通信。
在本文公开的一些示例中,变体管理器402、成本模型学习器404、权重存储装置406、编译自动调度器408、变体编译器410、跳转表412、应用编译器414、反馈接口416和性能分析器418可以经由任何适合的有线和/或无线通信方法进行通信。
附加地,在本文公开的一些示例中,变体管理器402、成本模型学习器404、权重存储装置406、编译自动调度器408、变体编译器410、跳转表412、应用编译器414、反馈接口416和性能分析器418中的每一个均可以经由任何适合的有线和/或无线通信方法与在变体生成器302外部的任何组件进行通信。
在图4的示例中,变体管理器402分析从在变体生成器302外部的装置(例如,数据库208和/或管理员装置202)接收到的通信并进行管理。例如,变体管理器402从外部装置接收和/或以其他方式获得算法。例如,在训练阶段期间,变体管理器402获得被利用来训练变体管理器402的一系列任意算法中的任意算法。附加地或可替代地,在推理阶段期间,变体管理器402获得与要在异构系统上执行的工作负载相关联的算法。
在一些示例中,变体管理器402实现用于管理变体生成器302要生成变体所针对的算法的示例装置。管理装置通过诸如由至少图5的框502、504、506、518、520、522和524以及图6的框602、604、606、618、620和626所实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,管理装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4的示例中,在从外部装置检索到算法之后,变体管理器402选择要生成成本模型和/或变体所针对的处理元件。例如,处理元件可以是CPU 316、FPGA 318、VPU 320或GPU 322中的一个。变体管理器402可以附加地选择所选处理元件的一个方面以成功函数为目标。例如,在训练阶段期间,变体管理器402可以选择GPU 322的功耗以与GPU322相关联的成功函数为目标。在推理阶段期间,变体管理器402可以选择与由用户(例如,开发人员)提供的预定成功函数相关联的方面;然而,变体管理器402可以附加地选择要作为目标的多个方面,以便给运行时调度器(例如,运行时调度器314)提供要基于异构系统的性能特性从中选取的各种变体。
在图4的示例中,一旦已生成了变体并且变体满足与成功函数相关联的性能阈值,变体管理器402就可以确定是否存在要作为目标的所选处理元件的任何附加方面、是否存在要生成变体所针对的附加处理元件、和/或是否存在用来训练成本模型学习器404的任何附加算法。如果存在附加方面、附加处理元件和/或附加算法,则变体管理器402可以重复执行以上动作。然而,如果没有附加方面、附加处理元件和附加算法,则变体管理器402可以输出与各个训练后的ML/AI模型相关联的权重,这些模型对应于异构系统的相应处理元件。
在图4的示例中,成本模型学习器404实现ML/AI技术以生成训练后的ML/AI模型,该模型与生成要在异构系统上运行的应用相关联。例如,成本模型学习器404可以是机器学习建模器。在本文公开的示例中,成本模型学习器404实现有监督DNN以学习与处理元件相关联的改进的成本模型。然而,在其他示例中,成本模型学习器404可以用有监督和/或无监督学习来实现任何适合的ML/AI模型。在本文公开的示例中,成本模型学习器404实现用于异构系统的每个处理元件的DNN。
在一些示例中,示例成本模型学习器404实现用于生成与生成要在异构系统上运行的应用相关联的训练后的ML/AI模型的示例装置。该生成装置通过诸如由至少图5的框508和图6的框608实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该生成装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4的示例中,权重存储装置406是存储器,其中权重与用于异构系统的相应处理元件的一个或多个成本模型相关联。权重被存储在文件结构中,其中每个成本模型有相应的权重文件。可以在编译自动调度事件期间并且在变体管理器402输出经训练后的ML/AI模型时读取权重文件。附加地,可以在成本模型学习器404生成成本模型之后将权重写入到权重文件。
在图4中图示的示例中,编译自动调度器408基于由成本模型学习器404生成的成本模型(例如,权重文件)来生成与用于所选处理元件的算法相关联的调度表。在本文公开的示例中,编译自动调度器408通过使用自动调谐来生成调度表。在其他示例中,可以使用任何适合的自动调度方法来生成与用于所选处理元件的算法相关联的调度表。
在一些示例中,示例编译自动调度器408实现用于基于成本模型来调度用于所选处理元件的算法的示例装置。该调度装置通过诸如由至少图5的框510和图6的框610实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该调度装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4的示例中,变体编译器410编译由编译自动调度器408生成的调度表。例如,变体编译器410将算法编译成能够被可执行应用调用的方法、类或对象。在编译变体之后,变体编译器410将变体发送到要编译的应用。附加地,由变体编译器410编译的变体被发送到跳转表412。
在一些示例中,示例变体编译器410实现用于变体编译以编译由编译自动调度器生成的调度表的示例装置。该变体编译装置通过诸如由至少图5的框512和图6的框612、614和616实现的可执行指令来实现,可以在诸如图8中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该变体编译装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4的示例中,跳转表412使由变体编译器410生成的不同变体与各个变体将位于可执行应用(例如,胖二进制文件)中的位置相关联。例如,跳转表412经由指向各个变体在可执行应用中的位置的变体符号(例如,指针)使不同的变体与它们在可执行应用中的相应位置相关联。
在一些示例中,示例跳转表412实现用于变体符号存储以使不同的变体与各个变体将位于可执行应用中的位置相关联的示例装置。该变体符号存储装置通过诸如由至少图6的框622实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该变体符号存储装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4的示例中,应用编译器414将算法、各个变体、变体符号和运行时调度器(例如,运行时调度器314)编译成可执行应用以进行存储。应用编译器414将算法、各个变体和运行时调度器编译为由变体生成器302接收的原始算法(例如,代码)的经编译版本。例如,如果算法是用C/C++编写的,则应用编译器414将算法、各个变体、变体符号和运行时调度器编译成可执行的C/C++应用,其包括用它们相应的语言编写以便在各个处理元件上执行的变体。在本文公开的示例中,由应用编译器414编译的可执行应用是胖二进制文件。然而,在其他示例中,由应用编译器414编译的可执行应用可以是任何适合的可执行文件。
在一些示例中,示例应用编译器414实现用于将算法、变体、相应变体符号和运行时调度器编译成可执行应用以进行存储的示例装置。该编译装置通过诸如由至少图6的框624实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该编译装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4中图示的示例中,反馈接口416是在异构系统上运行的可执行应用(例如,胖二进制文件)和/或存储设施(例如,数据库208)之间对接的装置。例如,反馈接口416可以是网络接口、USB端口接口、以太网端口接口或串行端口接口。在训练阶段期间,反馈接口416收集与选择的处理元件相关联的性能特性。在训练阶段中,所收集的性能特性对应于所选处理元件的功耗、要在所选处理元件上运行的时间以及与所选处理元件相关联的其他性能特性。
在一些示例中,示例反馈接口416实现用于在异构系统上运行的可执行应用(例如,胖二进制文件)和/或存储设施之间对接的示例装置。该接口装置通过诸如由至少图5的框514、526和528实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该接口装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在图4的示例中,在推理阶段期间,反馈接口416被配置为收集性能特性和与系统范围的成功函数相关联的性能差别。反馈接口416可以直接地从在异构系统上执行的应用和/或从在异构系统外部的存储装置收集性能特性。
在图4的示例中,性能分析器418识别并分析接收到的数据(例如,性能特性)。在训练阶段期间,性能分析器418确定所选变体是否满足性能阈值。此外,在训练阶段期间,性能分析器418分析处理元件的性能以满足成功函数。在初始训练阶段期间,性能分析器418独立分析个别处理元件的性能,而不考虑异构系统中的处理元件的总体上下文。此分析被反馈到成本模型学习器404中以帮助DNN分析并为特定处理元件开发更准确的成本模型。
在一些示例中,示例性能分析器418实现用于分析接收到的和/或以其他方式获得的数据的示例装置。该分析装置通过诸如由至少图5的框516、530和532实现的可执行指令来实现,可以在诸如图8的示例中示出的示例处理器812的至少一个处理器上执行所述可执行指令。在其他示例中,该分析装置通过硬件逻辑、硬件实现的状态机、逻辑电路和/或硬件、软件和/或固件的任何其他组合来实现。
在输出经训练后的模型以供使用(例如,由开发人员使用)之后,性能分析器418在接收到关于已接收到输入数据(例如,在负载下的异构系统上的运行时特性)的指示(例如,来自反馈接口416的指示)之后,性能分析器418基于系统的成功函数和性能特性来识别要作为目标的异构系统的一方面。附加地,性能分析器418确定通过成功函数定义的期望性能(例如,性能阈值)与在推理阶段期间执行算法期间实现的实际性能之间的差异。
在图4的示例中,在后续训练阶段期间,可以将由反馈接口416获得并由性能分析器418利用的附加经验数据重新插入到成本模型学习器404中,以基于总体上与系统相关联的上下文数据(例如,性能特性,诸如运行时负载和环境特性)来调整个别处理元件的成本模型。
在所图示的图4的示例中,基于此数据,成本模型学习器404可以针对各个处理元件采取与不同成本模型相关联的各种动作。例如,基于所收集的经验数据,成本模型学习器404可以调整各个处理元件的成本模型,使得编译自动调度器408将利用经调整的成本模型来生成调度表,所述调度表将以更期望的方式执行指定的工作负载。附加地,如果性能特性指示特定变体被不频繁地选择,则这将向性能分析器418指示以与该变体相关联的特定方面为目标的变体不是在运行时期间进行工作负载卸载的令人满意的候选。基于此信息,性能分析器418可以向变体管理器402指示不为相关联的方面和/或关联的处理元件生成变体。这最终节省由应用编译器414生成的应用(例如,胖二进制文件)上的空间,并且减少由应用当被存储在存储器中时消耗的存储器。
在图4的示例中,当利用所收集的经验数据时,成本模型学习器404可以附加地利用附加DNN来生成与具体处理元件相关联的多个成本模型。每个成本模型可以集中于具体处理元件的具体方面,并且在运行时,运行时调度器(例如,运行时调度器314)能够从要在异构系统上使用的各种变体中选取。例如,如果总体系统成功函数与保存电力相关联,则运行时调度器将通常在所有处理元件上使用以降低功耗为目标的变体。然而,当理解运行时执行下的总体系统性能(例如,通过收集经验数据)时,成本模型学习器404可以生成以至少降低功耗并改进速度为目标的多个变体。在运行时,实现本文公开的示例的运行时调度器可以确定即使执行以改进速度为目标的变体也仍在与保存电力相关联的成功函数的界限内。这改进总体异构系统的性能,同时仍维持满足所期望的成功函数的功能性。
虽然在图4中图示了实现图3的变体生成器302的示例方式并且在图3中示出了实现可执行文件308的示例方式,但是可以以任何其他方式组合、划分、重新布置、省略、消除和/或实现图3和图4中图示的元件、过程和/或装置中的一个或多个。进一步地,可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现示例变体管理器402、示例成本模型学习器404、示例权重存储装置406、示例编译自动调度器408、示例变体编译器410、示例跳转表412、示例应用编译器414、示例反馈接口416、示例性能分析器418和/或更一般地图3的示例变体生成器302和/或示例变体库310、示例跳转表库312、示例运行时调度器314和/或更一般地图3的示例可执行文件308。因此,例如,能通过(一个或多个)模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(PLD)和/或(一个或多个)现场可编程逻辑器件(FPLD)来实现示例变体管理器402、示例成本模型学习器404、示例权重存储406、示例编译自动调度器408、示例变体编译器410、示例跳转表412、示例应用编译器414、示例反馈接口416、示例性能分析器418和/或更一般地示例变体生成器302和/或示例变体库310、示例跳转表库312、示例运行时调度器314和/或更一般地图3的示例可执行文件308中的任一个。当将此专利的设备或系统权利要求中的任一个解读为涵盖纯软件和/或固件实施方案时,示例变体管理器402、示例成本模型学习器404、示例权重存储装置406、示例编译自动调度器408、示例变体编译器410、示例跳转表412、示例应用编译器414、示例反馈接口416、示例性能分析器418和/或更一般地示例变体生成器302和/或示例变体库310、示例跳转表库312、示例运行时调度器314和/或更一般地图3的示例可执行文件308中的至少一个特此被明确地定义为包括非暂时性计算机可读存储装置或存储盘,诸如包括软件和/或固件的存储器、数字通用盘(DVD)、紧致盘(CD)、蓝光盘等。再进一步地,图3的示例变体生成器302和/或示例可执行文件308可以包括除了图3和图4中图示的那些之外或代替图3和图4中图示的那些的一个或多个元件、过程和/或装置,并且/或者可以包括所图示的元件、过程和装置中的任一个或全部中的不止一个。如本文所使用的,短语“在通信中”(包括其变体)包含直接通信和/或通过一个或多个中间组件的间接通信,并且不要求直接物理(例如,有线)通信和/或恒定通信,而是相反附加地包括按周期性间隔、预定间隔、非周期性间隔和/或一次性事件的选择性通信。
在图5和图6中示出了表示用于实现图3的变体生成器302的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是用于由诸如在下面结合图8讨论的示例处理器平台800中示出的处理器812的计算机处理器执行的一个或多个可执行程序或可执行程序的(一个或多个)部分。程序可以用存储在非暂时性计算机可读存储介质(诸如CD-ROM、软盘、硬盘驱动器、DVD、蓝光盘或与处理器812相关联的存储器)上的软件加以具体实现,但是整个程序和/或其部分能可替代地由除处理器812以外的装置执行和/或用固件或专用硬件加以具体实现。此外,尽管参考图5和图6中图示的流程图描述了示例程序,但是可以可替代地使用实现示例变体生成器302的许多其他方法。例如,可以改变框的执行顺序,并且/或者可以改变、去除或组合所描述的框中的一些。附加地或可替代地,可以通过被构造为在不用执行软件或固件的情况下执行所对应的操作的一个或多个硬件电路(例如,分立和/或集成模拟和/或数字电路系统、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现这些框中的任一个或全部。
附加地,在图7中示出了表示用于实现图3的可执行文件308的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是用于由诸如在下面结合图9讨论的示例处理器平台900中示出的处理器912的计算机处理器执行的一个或多个可执行程序或可执行程序的(一个或多个)部分。程序可以用存储在非暂时性计算机可读存储介质(诸如,CD-ROM、软盘、硬盘驱动器、DVD、蓝光盘或与处理器912相关联的存储器)上的软件加以具体实现,但是整个程序和/或其部分能可替代地由除处理器912以外的装置执行和/或用固件或专用硬件加以具体实现。进一步地,尽管参考图7中图示的流程图描述了示例程序,但是可以可替代地使用实现示例可执行文件308的许多其他方法。例如,可以改变框的执行顺序,并且/或者可以改变、去除或组合所描述的框中的一些。附加地或可替代地,可以通过被构造为在不用执行软件或固件的情况下执行所对应的操作的一个或多个硬件电路(例如,分立和/或集成模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现这些框中的任一个或全部。
本文描述的机器可读指令可以被以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等中的一种或多种存储。可以将如本文所描述的机器可读指令存储为可以被用来创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码的表示等)。例如,机器可读指令可以被分段并存储在一个或多个存储装置和/或计算装置(例如,服务器)上。机器可读指令可要求安装、修改、适配、更新、组合、补充、配置、解密、解压、解包、分发、重新指派、编译等中的一种或多种,以便使它们变得直接地可由计算装置和/或其他机器读取、解释和/或执行。例如,机器可读指令可以被存储在多个部分中,所述多个部分被单独地压缩、加密并存储在单独的计算装置上,其中,这些部分当被解密、解压和组合时形成实现程序(诸如本文描述的程序)的一组可执行指令。
在另一示例中,机器可读指令可以被存储在一种状态下,在该状态下它们可以被计算机读取,但是要求添加库(例如,动态链接库(DLL))、软件开发套件(SDK)、应用编程接口(API)等以便在特定计算装置或其他装置上执行指令。在另一示例中,在可整体地或部分地执行机器可读指令和/或所对应的(一个或多个)程序之前,可能需要配置机器可读指令(例如,所存储的设置、所输入的数据、所记录的网络地址等)。因此,不管机器可读指令和/或(一个或多个)程序在被存储或以其他方式静止或在运输中时的特定格式或状态如何,所公开的机器可读指令和/或对应的(一个或多个)程序都旨在包含此类机器可读指令和/或(一个或多个)程序。
可以通过任何过去、现在或将来的指令语言、脚本语言、编程语言等来表示本文描述的机器可读指令。例如,可以使用以下语言中的任一种来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、Swift等。
如上面所提及的,可以使用存储在非暂时性计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图5、图6和图7的示例过程,所述非暂时性计算机和/或机器可读介质例如是磁盘驱动器、闪速存储器、只读存储器、紧致盘、数字通用盘、高速缓存、随机存取存储器和/或存储有信息持续任何持续时间(例如,持续延长时间段、永久地、持续短时刻、用于暂时缓冲和/或用于信息的缓存)的任何其他存储装置或存储盘。如本文所使用的,术语非暂时性计算机可读介质被明确地定义为包括任何类型的计算机可读存储装置和/或存储盘并且排除传播信号而且排除传输介质。
“包括有”和“包含有”(及其所有形式和时态)在本文中用于作开放式术语。因此,每当权利要求采用任何形式的“包括”或“包含”(例如,包含、包括、包含有、包括有、具有等)作为前序或在任何种类的权利要求叙述内时,应当理解的是,在不落在对应权利要求或叙述的范围外的情况下,可以存在附加元素、术语等。如本文所使用的,当短语“至少”在例如权利要求的前序中被用作过渡术语时,它以与术语“包含有”和“包括有”为开放式相同的方式是开放式的。术语“和/或”当被例如以诸如A、B和/或C的形式使用时,指代A、B、C的任何组合或子集,诸如(1)仅A、(2)仅B、(3)仅C、(4)A与B一起、(5)A与C一起、(6)B与C一起以及(7)A与B及与C一起。如在本文中在描述结构、组件、物品、对象和/或事物的上下文中使用的,短语“A和B中的至少一个”旨在指代包括以下各项中的任一种的实施方案:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。类似地,如在本文中在描述结构、组件、物品、对象和/或事物的上下文中使用的,短语“A或B中的至少一个”旨在指代包括以下各项中的任一种的实施方案:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。如在本文中在描述过程、指令、动作、活动和/或步骤的执行或实行的上下文中使用的,短语“A和B中的至少一个”旨在指代包括以下各项中的任一种的实施方案:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。类似地,如在本文中在描述过程、指令、动作、活动和/或步骤的执行或实行的上下文中使用的,短语“A或B中的至少一个”旨在指代包括以下各项中的任一种的实施方案:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。
如本文所使用的,单数引用(例如,“一”、“一个”、“第一”、“第二”等)不排除多个。如本文所使用的术语“一”或“一个”实体指代该实体的一个或多个。可在本文中互换地使用术语“一”(或“一个”)、“一个或多个”和“至少一个”。此外,尽管被单独地列举,然而多个装置、元素或方法动作可以由例如单个单元或处理器实现。附加地,尽管单独的特征可以被包括在不同的示例或权利要求中,然而这些可能也许被组合,并且包括在不同的示例或权利要求中不暗示特征的组合是不可行的和/或不利的。
图5是表示可以被执行来在训练阶段中实现图3和图4的变体生成器302的机器可读指令500的流程图。机器可读指令500在框502处开始,在框502处变体管理器402从外部装置获得算法。例如,外部装置是管理员装置202并且算法是一组任意算法中的任意算法。
在图5的示例中,在框504处,变体管理器402选择要开发算法所针对的特定处理元件。例如,变体生成器302可以正在开发用于在包括四个处理元件的异构系统上使用的变体。在这样的场景中,变体管理器402选择要生成变体所针对的处理元件中的一个。在框506处,变体管理器402选择处理元件的一方面以所选处理元件的成功函数为目标。例如,变体管理器402可以选择要以所获得的算法在FPGA上的执行速度为目标。
在所图示的图5的示例中,在框508处,成本模型学习器404为要作为目标的所选处理元件和所选方面生成成本模型。例如,在初始运行时,成本模型学习器404利用针对DNN的通用权重来生成成本模型。在框510处,编译自动调度器408生成用于在所选处理元件上利用与所选方面相关联的成功函数来实现所获得的算法的调度表。在框512处,变体编译器410根据由编译自动调度器408生成的调度表来编译变体。然后,将经编译的变体加载到由应用编译器414编译为可执行文件(例如,二进制文件)的应用中。
在图5的示例中,在框514处,在随后在训练系统(例如,训练异构系统)上执行变体之后,反馈接口416收集与变体在所选处理元件上的性能相关联的性能特性。在框516处,性能分析器418确定变体的执行是否满足性能阈值。如果变体的执行不满足性能阈值(例如,期望的性能水平)(框516:否),则机器可读指令500进行到框508,其中所收集的性能特性被反馈到成本模型学习器404中。如果变体的执行满足性能阈值(框516:是),则机器可读指令500进行到框518。
在所图示的图5的示例中,在框518处,变体管理器402确定是否存在要以用于所选处理元件的成功函数为目标的任何其他方面。如果存在要以成功函数为目标的后续方面(框:518:是),则机器可读指令500进行到框506。如果不存在要以成功函数为目标的后续方面(框:518:否),则机器可读指令500进行到框520。
在所图示的图5的示例中,在框520处,变体管理器402确定是否存在要开发一个或多个变体所针对的任何其他处理元件。如果存在后续处理元件(框:520:是),则机器可读指令500进行到框504。如果不存在后续处理元件(框:520:否),则机器可读指令500进行到框522。
在图5中图示的示例中,在框522处,变体管理器402确定是否存在附加算法。如果存在附加算法(框:522:是),则机器可读指令500进行到框502。如果不存在附加算法(框:522:否),则机器可读指令500进行到框524。对于要在以m个不同方面为目标的n个处理元件上执行的a个算法,变体生成器302生成a*n*m个DNN以生成并分析各种成本模型。
在图5的示例中,在框524处,变体管理器402输出与异构系统的各个处理元件相对应的各个经训练后的DNN模型(例如,权重文件)以供使用。例如,变体管理器402将经训练后的DNN模型输出到数据库、另一变体生成器和/或现场的异构系统。在框526处,反馈接口416监视输入数据。例如,反馈接口416监视数据库、现场的异构系统或可以提供凭经验收集的性能特性的其他数据源。
在图5的示例中,在框528处,反馈接口416确定是否已接收到和/或以其他方式获得了输入数据。如果反馈接口416确定尚未接收到输入数据(框528:否),则机器可读指令500进行到框526。如果反馈接口416确定已接收到输入数据(框528:是),则机器可读指令500进行到框530。
在所图示的图5的示例中,在框530处,性能分析器418基于系统的成功函数和性能特性来识别要作为目标的异构系统的一个方面。在框532处,性能分析器418确定通过成功函数定义的期望性能(例如,性能阈值)与在推理阶段期间执行算法期间实现的实际性能之间的差异。在框530之后,机器可读指令500进行到框508,其中经验数据被重新插入到成本模型学习器404中以基于总体上与系统相关联的上下文数据(例如,性能特性,诸如运行时负载和环境特性)来调整个别处理元件的成本模型。
图6是表示可以被执行来在推理阶段期间实现图3和图4的变体生成器302的机器可读指令600的流程图。机器可读指令600在框602处开始,在框602处变体管理器402从外部装置获得算法。例如,外部装置是程序开发人员的膝上型计算机。
在图6的示例中,在框604处,变体管理器402选择要开发算法所针对的特定处理元件。例如,变体生成器302可以正在开发用于在包括四个处理元件的异构系统上使用的变体。在这样的场景中,变体管理器402选择要生成变体所针对的处理元件中的一个。在框606处,变体管理器402选择处理元件的一个方面以所选处理元件的成功函数为目标。例如,变体管理器402可以选择要以所获得的算法在GPU上执行的功耗为目标。
在图6的示例中,在框608处,成本模型学习器404利用经训练后的DNN模型来生成算法用于在异构系统的至少一个处理元件上执行的至少一个成本模型。在框610处,编译自动调度器408生成用于在所选处理元件上利用与所选方面相关联的成功函数来实现所获得的算法的调度表。在框612处,变体编译器410根据由编译自动调度器408生成的调度表来编译变体。
在图6的示例中,在框614处,变体编译器410将变体添加到要编译的应用的变体库。在框616处,变体编译器410通过将变体发送到跳转表412来将变体符号(例如,指针)添加到跳转表412,所述跳转表412生成与变体在要编译的应用的变体库中的位置相关联的对应符号。
在所图示的图6的示例中,在框618处,变体管理器402确定是否存在要以所选处理元件的成功函数为目标的任何其他方面。如果存在要以成功函数为目标的后续方面(框:618:是),则机器可读指令600进行到框606。如果不存在要以成功函数为目标的后续方面(框:618:否),则机器可读指令600进行到框620。
在所图示的图6的示例中,在框620处,变体管理器402确定是否存在要开发一个或多个变体所针对的任何其他处理元件。如果存在后续处理元件(框:620:是),则机器可读指令600进行到框604。如果不存在后续处理元件(框:620:否),则机器可读指令600进行到框622。
在图6的示例中,在框622处,跳转表412将跳转表412的当前状态添加到要编译的应用的跳转表库。在框624处,应用编译器414将变体库中的用于各个处理元件的不同变体、跳转表库中的变体符号、和运行时调度器编译成可执行应用。
在图6中图示的示例中,在框626处,变体管理器402确定是否存在附加算法。如果存在附加算法(框:626:是),则机器可读指令600进行到框602。如果不存在附加算法(框:626:否),则机器可读指令600结束。
图7是表示可以被执行来实现图3的可执行文件308的机器可读指令700的流程图。机器可读指令700在框702处开始,在框702处运行时调度器314确定用于异构系统的系统范围的成功函数。在框704处,运行时调度器314根据由训练后的ML/AI模型生成的变体在异构系统上执行算法。在框706处,运行时调度器314监视异构系统在负载和环境条件下的性能特性。
在图7的示例中,在框708处,运行时调度器314调整异构系统的配置以满足系统范围的成功函数。例如,基于性能特性,运行时调度器314可以将在CPU 316上执行的工作负载卸载到GPU 322。为了这样做,运行时调度器314访问被存储在变体库310中的用于与GPU322相对应的工作负载的具体算法的变体。运行时调度器314通过从跳转表库312访问各个变体符号来将变体加载到GPU 322上。
在图7中图示的示例中,在框710处,运行时调度器314确定异构系统是否包括持久性存储装置。如果运行时调度器314确定异构系统确实包括持久性存储装置(框710:是),则机器可读指令700进行到框712,其中运行时调度器314将所监视的数据周期性地存储在持久性存储装置上的可执行文件(例如,胖二进制文件)中。在框712之后,机器可读指令700进行到框724。如果运行时调度器314确定异构系统不包括持久性存储装置(框710:否),则机器可读指令700进行到框714。
在图7的示例中,在框714处,运行时调度器314确定异构系统是否包括闪速存储装置。如果运行时调度器314确定异构系统确实包括闪速存储装置(框714:是),则机器可读指令700进行到框716,其中运行时调度器314周期性地将所监视的数据存储在闪速存储装置上的可执行文件(例如,胖二进制文件)中。在框716之后,机器可读指令700进行到框724。如果运行时调度器314确定异构系统不包括闪速存储装置(框714:否),则机器可读指令700进行到框718。
在图7中图示的示例中,在框718处,运行时调度器314确定异构系统是否包括持久性存储装置。如果运行时调度器314确定异构系统确实包括持久性BIOS(框718:是),则机器可读指令700进行到框720,其中运行时调度器314周期性地将所监视的数据存储在持久性BIOS上的可执行文件(例如,胖二进制文件)中。在框720之后,机器可读指令700进行到框724。如果运行时调度器314确定异构系统不包括持久性存储装置(框718:否),则机器可读指令700进行到框722。
在图7的示例中,在框722处,运行时调度器314将所监视的数据(例如,经验性能特性)发送到外部存储设备(例如,数据库208)。在框724处,运行时调度器314确定算法是否已完成执行。如果运行时调度器314确定算法尚未完成执行(框724:否),则机器可执行指令700进行到框706。如果运行时调度器314确定算法已完成执行(框724:是),则机器可执行指令700进行到框726。
在图7的示例中,在框726处,运行时调度器314将所监视的数据(例如,经验性能特性)发送到外部装置(例如,数据库208、变体生成器302等)。在框728处,运行时调度器314确定是否存在附加算法。如果存在附加算法(框:728:是),则机器可读指令700进行到框702。如果不存在附加算法(框:728:否),则机器可读指令700结束。
图8是被构造为执行图5和图6的指令以实现图3和图4的变体生成器302的示例处理器平台800的框图。处理器平台800可以是例如服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动装置(例如,手机、智能电话、诸如iPadTM的平板设备)、个人数字助理(PDA)、因特网器具、DVD播放器、CD播放器、数字视频录像机、蓝光播放器、游戏机、个人视频录像机、机顶盒、头戴式耳机或其他可穿戴装置或任何其他类型的计算装置。
所图示的示例的处理器平台800包括处理器812。所图示的示例的处理器812是硬件。例如,能够通过来自任何期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器来实现处理器812。硬件处理器可以是基于半导体的(例如,基于硅的)设备。在此示例中,处理器实现示例变体管理器402、示例成本模型学习器404、示例权重存储装置406、示例编译自动调度器408、示例变体编译器410、示例跳转表412、示例应用编译器414、示例反馈接口416和示例性能分析器418。
所图示的示例的处理器812包括本地存储器813(例如,高速缓存)。所图示的示例的处理器812经由总线818与包括易失性存储器814和非易失性存储器816的主存储器通信。可以通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器和/或任何其他类型的随机存取存储器装置来实现易失性存储器814。可以通过闪速存储器和/或任何其他期望类型的存储器设备来实现非易失性存储器816。对主存储器814、816的访问由存储器控制器来控制。
所图示的示例的处理器平台800还包括接口电路820。可以通过任何类型的接口标准来实现接口电路820,所述接口标准诸如以太网接口、通用串行总线(USB)、接口、近场通信(NFC)接口和/或PCI Express接口。
在所图示的示例中,一个或多个输入装置822被连接到接口电路820。(一个或多个)输入装置822允许用户将数据和/或命令送入到处理器812中。能够通过例如音频传感器、麦克风、相机(静止或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、等点装置(isopoint)和/或语音辨识系统来实现(一个或多个)输入装置。
一个或多个输出装置824也被连接到所图示的示例的接口电路820。可以例如通过显示装置(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、就地开关(IPS)显示器、触摸屏等)、触觉输出装置、打印机和/或扬声器来实现输出装置824。因此,所图示的示例的接口电路820通常包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所图示的示例的接口电路820还包括诸如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口的通信装置以方便经由网络826与外部机器(例如,任何种类的计算装置)交换数据。通信能够经由例如以太网连接、数字用户线(DSL)连接、电话线连接、同轴电缆系统、卫星系统、站点线无线系统、蜂窝电话系统等。
所图示的示例的处理器平台800还包括用于存储软件和/或数据的一个或多个大容量存储装置828。此类大容量存储装置828的示例包括软盘驱动器、硬盘驱动器、紧致盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字通用盘(DVD)驱动器。
图5和图6的机器可执行指令832可以被存储在大容量存储装置828中,被存储在易失性存储器814中,被存储在非易失性存储器816中,并且/或者被存储在诸如CD或DVD的可移除非暂时性计算机可读存储介质上。
图9是被构造为执行图7的指令以实现图3的可执行文件308的示例处理器平台900的框图。处理器平台900可以是例如服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动装置(例如,手机、智能电话、诸如iPadTM的平板设备)、个人数字助理(PDA)、因特网器具、DVD播放器、CD播放器、数字视频录像机、蓝光播放器、游戏机、个人视频录像机、机顶盒、头载式耳机或其他可穿戴装置或任何其他类型的计算装置。
所图示的示例的处理器平台900包括处理器912。所图示的示例的处理器912是硬件。例如,可以通过来自任何期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器来实现处理器912。硬件处理器可以是基于半导体的(例如,基于硅的)装置。附加地,处理器平台900可以包括附加处理元件,诸如示例CPU 316、示例FPGA318、示例VPU 320和示例GPU 322。
所图示的示例的处理器912包括本地存储器913(例如,缓存)。在此示例中,本地存储器913包括示例变体库310、示例跳转表库312、示例运行时调度器314、和/或更一般地示例可执行文件308。所图示的示例的处理器912经由总线918与包括易失性存储器914和非易失性存储器916的主存储器通信。可以通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器和/或任何其他类型的随机存取存储器设备来实现易失性存储器914。可以通过闪速存储器和/或任何其他期望类型的存储器设备来实现非易失性存储器916。对主存储器914、916的访问由存储器控制器来控制。
所图示的示例的处理器平台900还包括接口电路920。可以通过任何类型的接口标准来实现接口电路920,所述接口标准诸如以太网接口、通用串行总线(USB)、接口、近场通信(NFC)接口和/或PCI Express接口。
在所图示的示例中,一个或多个输入装置922被连接到接口电路920。(一个或多个)输入装置922允许用户将数据和/或命令送入到处理器912中。可以通过例如音频传感器、麦克风、相机(静止或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、等点装置和/或/语音辨识系统来实现(一个或多个)输入装置。
一个或多个输出装置924也被连接到所图示的示例的接口电路920。能够例如通过显示装置(例如,发光二极管(LED)、有机发光二极管(OLED),液晶显示器(LCD)、阴极射线管显示器(CRT)、就地开关(IPS)显示器、触摸屏等)、触觉输出装置、打印机和/或扬声器来实现输出装置924。因此,所图示的示例的接口电路920通常包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所图示的示例的接口电路920还包括诸如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口的通信装置以方便经由网络926与外部机器(例如,任何种类的计算装置)交换数据。通信能够经由例如以太网连接、数字用户线(DSL)连接、电话线连接、同轴电缆系统、卫星系统、站点线无线系统、蜂窝电话系统等。
所图示的示例的处理器平台900还包括用于存储软件和/或数据的一个或多个大容量存储装置928。此类大容量存储装置928的示例包括软盘驱动器、硬盘驱动器、紧致盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字通用盘(DVD)驱动器。
图7的机器可执行指令932可以被存储在大容量存储装置928中,被存储在易失性存储器914中,被存储在非易失性存储器916中,并且/或者被存储在诸如CD或DVD的可移除非暂时性计算机可读存储介质上。
根据前文,应领会的是,已公开了示例方法、设备和制品,本文公开的示例不单独依靠对处理元件的理论理解、开发人员关于算法变换和其他调度技术的知识、以及用于编译调度的一些方法的其他陷阱。本文公开的示例收集经验性能特性以及所期望的性能(例如,成功函数)与所获得的实际性能之间的差异。附加地,本文公开的示例允许在没有开发人员干预的情况下实现异构系统的连续且自动的性能改进。所公开的方法、设备和制品通过至少减少在计算装置上执行的算法的功耗、提高计算装置上的算法的执行速度、以及提高计算系统的各种处理元件的使用率来改进使用计算装置的效率。所公开的方法、设备和制品因此致力于计算机的功能方面的一种或多种改进。
本文公开了用于改进在异构系统上执行的软件的运行时性能的示例方法、设备、系统和制品。进一步的示例及其组合包括下列示例:示例1包括一种用于改进在异构系统上执行的软件的运行时性能的设备,所述设备包含:反馈接口,所述反馈接口用于在第一运行时收集所述异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据指定所述经编译版本在所述异构系统上的成功执行的函数来执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;性能分析器,所述性能分析器用于基于所述性能特性和所述函数来确定性能差别;以及机器学习建模器,所述机器学习建模器用于在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
示例2包括根据示例1所述的设备,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,所述机器学习建模器将在所述第二运行时之前基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
示例3包括根据示例1所述的设备,其中,所述经编译版本是第一经编译版本,所述设备进一步包括:编译器,所述编译器用于在所述第二运行时之前将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
示例4包括根据示例1所述的设备,其中,所述反馈接口将从运行时调度器以胖二进制文件的方式收集所述性能特性。
示例5包括根据示例4所述的设备,其中,所述性能特性被存储在所述胖二进制文件的数据段中。
示例6包括根据示例1所述的设备,其中,所述性能特性包括与所述代码块的经编译版本的执行相关联的元数据和度量信息。
示例7包括根据示例1所述的设备,其中,所述性能分析器将所述性能差别确定为在所述第一运行时实现的性能与由所述函数定义的性能之间的差异,所述函数指定所述经编译版本在所述异构系统上的成功执行。
示例8包括一种非暂时性计算机可读存储介质,其包含指令,所述指令当被执行时,使至少一个处理器至少用于:在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据指定所述异构系统上所述经编译版本的成功执行的函数来执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;基于所述性能特性和所述函数来确定性能差别;并且在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
示例9包括根据示例8所述的非暂时性计算机可读存储介质,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,并且其中,所述指令当被执行时,使所述至少一个处理器在所述第二运行时之前基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
示例10包括根据示例8所述的非暂时性计算机可读存储介质,其中,所述经编译版本是第一经编译版本,并且其中,所述指令当被执行时,使所述至少一个处理器在所述第二运行时之前将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
示例11包括根据示例8所述的非暂时性计算机可读存储介质,其中,所述指令当被执行时使所述至少一个处理器从运行时调度器以胖二进制文件的方式收集所述性能特性。
示例12包括根据示例11所述的非暂时性计算机可读存储介质,其中,所述性能特性被存储在所述胖二进制文件的数据段中。
示例13包括根据示例8所述的非暂时性计算机可读存储介质,其中,所述性能特性包括与所述代码块的经编译版本的执行相关联的元数据和度量信息。
示例14包括根据示例8所述的非暂时性计算机可读存储介质,其中,所述指令当被执行时,使所述至少一个处理器将所述性能差别确定为在所述第一运行时实现的性能与由所述函数定义的性能之间的差异,所述函数指定所述经编译版本在所述异构系统上的成功执行。
示例15包括一种用于改进在异构系统上执行的软件的运行时性能的设备,所述设备包含:用于收集的装置,所述用于收集的装置用于在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据指定所述经编译版本在所述异构系统上的成功执行的函数来执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;用于分析的装置,所述用于分析的装置用于基于所述性能特性和所述函数来确定性能差别;以及用于生成模型的装置,所述用于生成模型的装置用于在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
示例16包括根据示例15所述的设备,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,并且其中,所述用于生成模型的装置将在所述第二运行时之前基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
示例17包括根据示例15所述的设备,其中,所述经编译版本是第一经编译版本,所述设备进一步包括用于编译的装置,所述用于编译的装置用于在所述第二运行时之前将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
示例18包括根据示例15所述的设备,其中,所述用于收集的装置将从运行时调度器以胖二进制文件的方式收集所述性能特性。
示例19包括根据示例18所述的设备,其中,所述性能特性被存储在所述胖二进制文件的数据段中。
示例20包括根据示例15所述的设备,其中,所述性能特性包括与所述代码块的经编译版本的执行相关联的元数据和度量信息。
示例21包括根据示例15所述的设备,其中,所述用于分析的装置将所述性能差别确定为在所述第一运行时处实现的性能与由所述函数定义的性能之间的差异,所述函数指定所述经编译版本在所述异构系统上的成功执行。
示例22包括一种用于改进在异构系统上执行的软件的运行时性能的方法,所述方法包含:在第一运行时收集所述异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据指定所述经编译版本在所述异构系统上的成功执行的函数来执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;基于所述性能特性和所述函数来确定性能差别;以及在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
示例23包括根据示例22所述的方法,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,所述方法进一步包括:在所述第二运行时之前,基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
示例24包括根据示例22所述的方法,其中,所述经编译版本是第一经编译版本,所述方法进一步包括:在所述第二运行时之前,将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
示例25包括根据示例22所述的方法,其中,所述性能特性是从运行时调度器以胖二进制文件的方式收集的。
尽管已在本文中公开了某些示例方法、设备和制品,然而本专利的覆盖范围不限于此。相反地,本专利涵盖完全落入本专利的权利要求的范围内的所有方法、设备和制品。
所附权利要求特此通过引用并入到此具体实施方式中,其中每个权利要求独立地作为本公开的单独的实施方式。
Claims (25)
1.一种用于改进在异构系统上执行的软件的运行时性能的设备,所述设备包括:
反馈接口,所述反馈接口用于在第一运行时收集与代码块的经编译版本相关联的所述异构系统的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;
性能分析器,所述性能分析器用于基于所述性能特性和所述函数来确定性能差别;以及
机器学习建模器,所述机器学习建模器用于在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
2.根据权利要求1所述的设备,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,所述机器学习建模器用于在所述第二运行时之前基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
3.根据权利要求1所述的设备,其中,所述经编译版本是第一经编译版本,所述设备进一步包括:编译器,所述编译器用于在所述第二运行时之前将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
4.根据权利要求1所述的设备,其中,所述反馈接口用于从运行时调度器以胖二进制文件的方式收集所述性能特性。
5.根据权利要求4所述的设备,其中,所述性能特性被存储在所述胖二进制文件的数据段中。
6.根据权利要求1所述的设备,其中,所述性能特性包括与所述代码块的所述经编译版本的执行相关联的元数据和度量信息。
7.根据权利要求1所述的设备,其中,所述性能分析器用于将所述性能差别确定为在所述第一运行时实现的性能与由所述函数定义的性能之间的差异,所述函数指定所述经编译版本在所述异构系统上的成功执行。
8.一种包括指令的计算机可读存储介质,所述指令当被执行时,使至少一个处理器至少用于:
在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;
基于所述性能特性和所述函数来确定性能差别;并且
在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
9.根据权利要求8所述的计算机可读存储介质,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,并且其中,所述指令当被执行时使所述至少一个处理器在所述第二运行时之前基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
10.根据权利要求8所述的计算机可读存储介质,其中,所述经编译版本是第一经编译版本,并且其中,所述指令当被执行时使所述至少一个处理器在所述第二运行时之前将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
11.根据权利要求8所述的计算机可读存储介质,其中,所述指令当被执行时使所述至少一个处理器从运行时调度器以胖二进制文件的方式收集所述性能特性。
12.根据权利要求11所述的计算机可读存储介质,其中,所述性能特性被存储在所述胖二进制文件的数据段中。
13.根据权利要求8所述的计算机可读存储介质,其中,所述性能特性包括与所述代码块的所述经编译版本的执行相关联的元数据和度量信息。
14.根据权利要求8所述的计算机可读存储介质,其中,所述指令当被执行时使所述至少一个处理器将所述性能差别确定为在所述第一运行时实现的性能与由所述函数定义的性能之间的差异,所述函数指定所述经编译版本在所述异构系统上的成功执行。
15.一种用于改进在异构系统上执行的软件的运行时性能的设备,所述设备包括:
用于收集的装置,所述用于收集的装置用于在第一运行时收集异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;
用于分析的装置,所述用于分析装置用于基于所述性能特性和所述函数来确定性能差别;以及
用于生成模型的装置,所述用于生成模型的装置用于在第二运行时之前基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
16.根据权利要求15所述的设备,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,并且其中,所述用于生成模型的装置用于在所述第二运行时之前基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
17.根据权利要求15所述的设备,其中,所述经编译版本是第一经编译版本,所述设备进一步包括用于编译的装置,所述用于编译的装置用于在所述第二运行时之前将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
18.根据权利要求15所述的设备,其中,所述用于收集的装置用于从运行时调度器以胖二进制文件的方式收集所述性能特性。
19.根据权利要求18所述的设备,其中,所述性能特性被存储在所述胖二进制文件的数据段中。
20.根据权利要求15所述的设备,其中,所述性能特性包括与所述代码块的所述经编译版本的执行相关联的元数据和度量信息。
21.根据权利要求15所述的设备,其中,所述用于分析的装置用于将所述性能差别确定为在所述第一运行时实现的性能与由所述函数定义的性能之间的差异,所述函数指定所述经编译版本在所述异构系统上的成功执行。
22.一种用于改进在异构系统上执行的软件的运行时性能的方法,所述方法包括:
在第一运行时收集所述异构系统的与代码块的经编译版本相关联的性能特性,所述经编译版本根据函数来执行,所述函数指定所述经编译版本在所述异构系统上的成功执行,所述异构系统包括第一处理元件和与所述第一处理元件不同的第二处理元件;
基于所述性能特性和所述函数来确定性能差别;以及
在第二运行时之前,基于所述性能差别来调整所述第一处理元件的成本模型,调整后的成本模型使得所述性能差别减少以改进所述异构系统的运行时性能。
23.根据权利要求22所述的方法,其中,所述成本模型是基于第一神经网络而生成的第一成本模型,所述方法进一步包括:在所述第二运行时之前,基于所述性能差别来调整所述第二处理元件的第二成本模型,所述第二成本模型是基于第二神经网络而生成的。
24.根据权利要求22所述的方法,其中,所述经编译版本是第一经编译版本,所述方法进一步包括:在所述第二运行时之前,将所述代码块编译成所述代码块的第二经编译版本,所述第二经编译版本将在所述异构系统上执行。
25.根据权利要求22所述的方法,其中,所述性能特性是从运行时调度器以胖二进制文件的方式收集的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/455,486 | 2019-06-27 | ||
US16/455,486 US20190317880A1 (en) | 2019-06-27 | 2019-06-27 | Methods and apparatus to improve runtime performance of software executing on a heterogeneous system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148570A true CN112148570A (zh) | 2020-12-29 |
Family
ID=68161636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010231584.9A Pending CN112148570A (zh) | 2019-06-27 | 2020-03-27 | 改进在异构系统上执行的软件的运行时性能的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190317880A1 (zh) |
CN (1) | CN112148570A (zh) |
DE (1) | DE102020114218A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626017A (zh) * | 2021-07-06 | 2021-11-09 | 曙光信息产业(北京)有限公司 | 异构程序的分析方法、装置、计算机设备和存储介质 |
CN115309402A (zh) * | 2022-07-13 | 2022-11-08 | 国网江苏省电力有限公司信息通信分公司 | 一种可量化差异的异构执行程序集合构成方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10977075B2 (en) * | 2019-04-10 | 2021-04-13 | Mentor Graphics Corporation | Performance profiling for a multithreaded processor |
US11036477B2 (en) | 2019-06-27 | 2021-06-15 | Intel Corporation | Methods and apparatus to improve utilization of a heterogeneous system executing software |
US11269639B2 (en) | 2019-06-27 | 2022-03-08 | Intel Corporation | Methods and apparatus for intentional programming for heterogeneous systems |
US11144290B2 (en) * | 2019-09-13 | 2021-10-12 | Huawei Technologies Co., Ltd. | Method and apparatus for enabling autonomous acceleration of dataflow AI applications |
US11733981B2 (en) * | 2019-11-25 | 2023-08-22 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to automatically optimize software programs |
US11163592B2 (en) * | 2020-01-10 | 2021-11-02 | International Business Machines Corporation | Generation of benchmarks of applications based on performance traces |
US11138094B2 (en) | 2020-01-10 | 2021-10-05 | International Business Machines Corporation | Creation of minimal working examples and environments for troubleshooting code issues |
US11060504B1 (en) * | 2020-02-07 | 2021-07-13 | General Electric Company | Systems and methods for continuous machine learning based control of wind turbines |
US11669491B2 (en) | 2020-04-09 | 2023-06-06 | Samsung Electronics Co., Ltd. | Processor, system on chip including heterogeneous core, and operating methods thereof for optimizing hot functions for execution on each core of a heterogeneous processor |
US11649804B2 (en) | 2021-06-07 | 2023-05-16 | General Electric Renovables Espana, S.L. | Systems and methods for controlling a wind turbine |
US11860759B2 (en) * | 2021-07-12 | 2024-01-02 | Capital One Services, Llc | Using machine learning for automatically generating a recommendation for a configuration of production infrastructure, and applications thereof |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9800466B1 (en) * | 2015-06-12 | 2017-10-24 | Amazon Technologies, Inc. | Tunable parameter settings for a distributed application |
US10007520B1 (en) * | 2016-02-25 | 2018-06-26 | Jpmorgan Chase Bank, N.A. | Systems and methods for using alternate computer instruction sets |
US20180082212A1 (en) * | 2016-09-20 | 2018-03-22 | Intel Corporation | Optimizing machine learning running time |
US10713213B2 (en) * | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
US10187252B2 (en) * | 2016-12-27 | 2019-01-22 | Cisco Technology, Inc. | Configuring heterogeneous computing environments using machine learning |
-
2019
- 2019-06-27 US US16/455,486 patent/US20190317880A1/en not_active Abandoned
-
2020
- 2020-03-27 CN CN202010231584.9A patent/CN112148570A/zh active Pending
- 2020-05-27 DE DE102020114218.8A patent/DE102020114218A1/de not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626017A (zh) * | 2021-07-06 | 2021-11-09 | 曙光信息产业(北京)有限公司 | 异构程序的分析方法、装置、计算机设备和存储介质 |
CN113626017B (zh) * | 2021-07-06 | 2023-10-31 | 曙光信息产业(北京)有限公司 | 异构程序的分析方法、装置、计算机设备和存储介质 |
CN115309402A (zh) * | 2022-07-13 | 2022-11-08 | 国网江苏省电力有限公司信息通信分公司 | 一种可量化差异的异构执行程序集合构成方法及装置 |
CN115309402B (zh) * | 2022-07-13 | 2023-10-24 | 国网江苏省电力有限公司信息通信分公司 | 一种可量化差异的异构执行程序集合构成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20190317880A1 (en) | 2019-10-17 |
DE102020114218A1 (de) | 2020-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148570A (zh) | 改进在异构系统上执行的软件的运行时性能的方法和设备 | |
US11941400B2 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
US10908884B2 (en) | Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system | |
US11334399B2 (en) | Methods and apparatus to manage power of deep learning accelerator systems | |
US11816561B2 (en) | Methods, systems, articles of manufacture and apparatus to map workloads | |
US11036477B2 (en) | Methods and apparatus to improve utilization of a heterogeneous system executing software | |
US11829279B2 (en) | Systems, apparatus, and methods to debug accelerator hardware | |
US20200133725A1 (en) | Methods, systems, articles of manufacture, and apparatus to optimize thread scheduling | |
CN112148282A (zh) | 用于推荐指令适配以改善计算性能的方法和装置 | |
EP3779778A1 (en) | Methods and apparatus to enable dynamic processing of a predefined workload | |
US20220114451A1 (en) | Methods and apparatus for data enhanced automated model generation | |
US20220114136A1 (en) | Methods, systems, and apparatus to reconfigure a computer | |
US20220222177A1 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
US20230237384A1 (en) | Methods and apparatus to implement a random forest | |
US20220116284A1 (en) | Methods and apparatus for dynamic xpu hardware-aware deep learning model management | |
US20220318595A1 (en) | Methods, systems, articles of manufacture and apparatus to improve neural architecture searches | |
WO2024039923A1 (en) | Method of compile-time optimization for nested parallel for-loops for deep learning neural network computation | |
CN116382884A (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 |