CN116382884A - 生成要被卸载到加速器电路的命令列表的方法和装置 - Google Patents

生成要被卸载到加速器电路的命令列表的方法和装置 Download PDF

Info

Publication number
CN116382884A
CN116382884A CN202211625729.9A CN202211625729A CN116382884A CN 116382884 A CN116382884 A CN 116382884A CN 202211625729 A CN202211625729 A CN 202211625729A CN 116382884 A CN116382884 A CN 116382884A
Authority
CN
China
Prior art keywords
kernel
model
circuit
core
circuitry
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
Application number
CN202211625729.9A
Other languages
English (en)
Inventor
席琳·李
尼兰詹·哈萨布尼斯
保罗·彼得森
贾斯汀·戈特施利希
拉梅什·皮尔瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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
Priority claimed from US17/559,556 external-priority patent/US12001382B2/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN116382884A publication Critical patent/CN116382884A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了生成要被卸载到加速器电路的命令列表的方法和装置。一种示例装置包括内核持续时间模型电路,用来基于第一内核的第一源位置、第一名称、第一参量的第一属性、或者占用率,来预测第一内核的执行持续时间。该示例装置包括后续内核模型电路,用来基于先前内核的第二源位置、第二名称、第二参量的第二属性、或者提交时间,来预测第二内核的元组的依赖性。该示例装置包括强化学习模型电路,用来基于第一内核的执行持续时间、第二内核的元组、或者第二内核的依赖性,来确定是否要将第一内核捆绑到命令列表中。

Description

生成要被卸载到加速器电路的命令列表的方法和装置
技术领域
本公开概括而言涉及机器学习,更具体而言,涉及生成要被卸载到加速器电路的命令列表的方法、装置和制品。
背景技术
计算机硬件制造商开发了用于计算机平台的各种组件中的硬件组件。例如,计算机硬件制造商开发主板、主板芯片组、中央处理器单元(central processor unit,CPU)、硬盘驱动(hard disk drive,HDD)、固态驱动(solid state drive,SSD)、以及其他计算机组件。此外,计算机硬件制造商开发了被称为加速器的处理器电路,以加速工作负载的处理。例如,加速器可以是CPU、图形处理器单元(graphics processor unit,GPU)、视觉处理器单元(vision processor unit,VPU)、和/或现场可编程门阵列(field programmable gatearray,FPGA)。
许多计算机硬件制造商开发了程序和/或其他技术,以将计算工作负载的一部分指派或卸载到特定的处理平台。这种程序和/或其他技术可以通过使用机器学习模型来进行。机器学习模型,例如神经网络,是有用的工具,已经证明了它们解决关于模式识别、自然语言处理、自动话音识别等等的复杂问题的价值。
发明内容
本公开的一个方面提供了一种生成要被卸载到加速器电路的命令列表的装置。该装置包括:至少一个存储器;指令;处理器电路,用来执行指令以至少:利用内核持续时间模型,基于第一内核的第一源位置、第一内核的第一名称、第一内核的第一参量的第一属性、或者第一内核的占用率中的至少一者,来预测第一内核的执行持续时间;利用后续内核模型,基于先前内核的第二源位置、先前内核的第二名称、先前内核的第二参量的第二属性、或者先前内核的提交时间中的至少一者,来预测第二内核的元组和第二内核的依赖性;并且利用强化学习模型,基于(a)第一内核的执行持续时间、(b)第二内核的元组、或者(c)第二内核的依赖性中的至少一者,来确定是否要将第一内核捆绑到命令列表中。
本公开的另一方面提供了一种用于生成要被卸载到加速器电路的命令列表的方法。该方法包括:利用内核持续时间模型,基于第一内核的第一源位置、第一内核的第一名称、第一内核的第一参量的第一属性、或者第一内核的占用率中的至少一者,来预测第一内核的执行持续时间;利用后续内核模型,基于先前内核的第二源位置、先前内核的第二名称、先前内核的第二参量的第二属性、或者先前内核的提交时间中的至少一者,来预测第二内核的元组和第二内核的依赖性;并且利用强化学习模型,基于(a)第一内核的执行持续时间、(b)第二内核的元组、或者(c)第二内核的依赖性中的至少一者,来确定是否要将第一内核捆绑到命令列表中。
本公开的另一方面提供了一种生成要被卸载到加速器电路的命令列表的设备。该设备包括:用于执行内核持续时间模型的装置,用来基于第一内核的第一源位置、第一内核的第一名称、第一内核的第一参量的第一属性、或者第一内核的占用率中的至少一者,来预测第一内核的执行持续时间;用于执行后续内核模型的装置,用来基于先前内核的第二源位置、先前内核的第二名称、先前内核的第二参量的第二属性、或者先前内核的提交时间中的至少一者,来预测第二内核的元组和第二内核的依赖性;以及用于执行强化学习模型的装置,来基于(a)第一内核的执行持续时间、(b)第二内核的元组、或者(c)第二内核的依赖性中的至少一者,来确定是否要将第一内核捆绑到命令列表中。
本公开的另一方面还提供了一种机器可读介质。该机器可读介质包括代码,代码当被执行时使得机器执行上述用于生成要被卸载到加速器电路的命令列表的方法。
附图说明
图1是根据本公开的教导的包括示例服务提供者、示例网络和示例用户设备的环境。
图2的框图图示了图1的示例训练电路的示例实现方式。
图3的框图图示了图1的示例模型执行电路的示例实现方式。
图4A的图形图示代表了当实现现有技术时的图形处理器单元利用率。
图4B的图形图示代表了当实现本文公开的示例时的图形处理器单元利用率。
图5是根据本公开的教导的内核元组和预测内核元组的序列的示例图示。
图6的流程图代表了可由处理器电路执行和/或实例化来实现图1和/或图2的训练电路以训练后续内核模型的示例机器可读指令和/或示例操作。
图7的流程图代表了可由处理器电路执行和/或实例化来实现图1和/或图2的训练电路以训练内核持续时间模型的示例机器可读指令和/或示例操作。
图8的流程图代表了可由处理器电路执行和/或实例化来实现图1和/或图3的模型执行电路以生成要被卸载到加速器电路的命令列表的示例机器可读指令和/或示例操作。
图9是包括处理器电路的示例处理平台的框图,该处理器电路被构造来执行图6和/或图7的示例机器可读指令和/或示例操作以实现图1和/或图2的训练电路。
图10是图9的处理器电路的示例实现方式的框图。
图11是图9的处理器电路的另一示例实现方式的框图。
图12是包括处理器电路的示例处理平台的框图,该处理器电路被构造来执行图8的示例机器可读指令和/或示例操作以实现图1和/或图3的模型执行电路。
图13是图12的处理器电路的示例实现方式的框图。
图14是图12的处理器电路的另一示例实现方式的框图。
图15是示例软件分发平台(例如,一个或多个服务器)的框图,该示例软件分发平台用于将软件(例如,与图6、图7和/或图8的示例机器可读指令相对应的软件)分发到与最终用户和/或消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、再销售、许可和/或次级许可)和/或原始设备制造商(OEM)(例如,用于包括在要被分发到例如零售商和/或诸如直接购买客户之类的其他最终用户的产品中)相关联的客户端设备。
一般而言,相同的标号将在在全部(一或多幅)附图和伴随的书面描述的各处被用于指代相同或相似的部件。附图不是按比例的。如本文所使用的,提及连接(例如,附接、耦合、连接、接合)可包括由该连接提及所提及的元素之间的中间构件和/或这些元素之间的相对运动,除非另有指示。因此,提及连接不一定推断出两个元素是直接连接的和/或彼此之间有固定关系。
除非另有具体声明,否则本文使用诸如“第一”、“第二”、“第三”等等之类的描述语,而不输入或以其他方式表明任何优先级、物理顺序、在列表中的排列和/或以任何方式排序的含义,而只是用作标签和/或任意名称来区分元素,以便易于理解所公开的示例。在一些示例中,描述语“第一”在详细描述中可用于提及某一元素,而同一元素在权利要求中可以用不同的描述语来提及,例如“第二”或“第三”。在这种情况下,应当理解,这种描述语仅仅用于明确地识别那些元素,这些元素例如可能在其他情况下共享同一名称。
如本文所使用的,“大约”及其变体指的是由于对值建模时涉及的复杂性而可能不确切的值。如本文所使用的,短语“与……通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
如本文所使用的,“处理器电路”被定义为包括(i)一个或多个专用电气电路,其被构造为执行(一个或多个)特定的操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件),和/或(ii)一个或多个通用的基于半导体的电气电路,其被用指令编程以执行特定操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件)。处理器电路的示例包括编程的微处理器、可实例化指令的现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器单元(Central Processor Unit,CPU)、图形处理器单元(Graphics Processor Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、XPU、或者微控制器和集成电路,例如专用集成电路(Application Specific Integrated Circuit,ASIC)。例如,XPU可以由异构计算系统实现,该计算系统包括多种类型的处理器电路(例如,一个或多个FPGA、一个或多个CPU、一个或多个GPU、一个或多个DSP,等等,和/或这些的组合)以及(一个或多个)应用编程接口(application programming interface,API),这些API可以将(一个或多个)计算任务指派给该多种类型的处理电路中最适于执行该(一个或多个)计算任务的任何一个(或多个)。在一些示例中,ASIC指的是专用集成电路。
具体实施方式
许多计算机硬件制造商开发了被称为加速器的处理器电路,以加速工作负载的处理。在能够处理任何类型的工作负载的同时,加速器被设计为优化特定类型的工作负载。例如,CPU和FPGA可被设计为应对更一般的处理,而GPU可以被设计为改善视频、游戏和/或其他基于物理和数学的计算的处理。此外,VPU可以被设计为改善机器视觉任务的处理。
一些加速器被设计来改善人工智能(artificial intelligence,AI)应用的处理。虽然VPU是一种特定类型的AI加速器,但可以使用许多不同的AI加速器。事实上,许多AI加速器可以由专用集成电路(ASIC)实现。这种基于ASIC的AI加速器可以被设计为改善与特定类型的AI有关的任务的处理,例如机器学习(machine learning,ML)、深度学习(deeplearning,DL)和/或其他基于AI的机器驱动逻辑,包括支持向量机(support vectormachine,SVM)、神经网络(neural network,NN)、递归神经网络(recurrent neuralnetwork,RNN)、卷积神经网络(convolutional neural network,CNN)、长短期记忆(longshort-termmemory,LSTM)、门递归单元(gate recurrent unit,GRU)、强化学习(reinforcement learning,RL),等等。
计算机硬件制造商还开发了异构系统,其中包括多于一种类型的处理器电路。例如,计算机硬件制造商可以将通用处理器电路(例如,CPU)与通用加速器(例如,FPGA)和/或专用加速器(例如,GPU、VPU和/或其他AI加速器)相结合。这种异构系统可以作为片上系统(systems on achip,SoC)来实现。加速器在此被称为加速器电路。
技术的进步增大了对异构硬件的需求,用于卸载计算密集型应用中的计算,例如深度学习和图形处理。一些公司已开发了编程模型来协助异构硬件。例如,
Figure BDA0004004331710000061
oneAPI是一种统一编程模型,它为包括加速器电路体系结构在内的各种硬件体系结构提供共同的开发者体验。oneAPI是用数据并行C++(Data Parallel C++,DPC++)语言构建的,并且纳入了SYCL作为跨平台编程语言。SYCL是一种特定领域的嵌入式语言,其允许了在为异构硬件编程时进行抽象。oneAPI允许了开发者通过将计算内核卸载到各种计算平台(包括CPU、GPU、FPGA,等等),来利用异构硬件系统的并行化机会。
计算内核指的是一种例程,该例程已被编译来由加速器电路执行和/或实例化以实现高吞吐量。计算内核在概念上被视为与主程序分开,但被主程序使用,主程序通常由通用处理器电路(例如,CPU)执行和/或实例化。计算内核在此被称为内核。自动和高效地将内核卸载到异构硬件,对系统开发者而言是一项具有挑战性的任务。这项任务也给机器编程领域带来了挑战,该领域关注的是软件的自动化。
在一些现有的技术中,内核通过遵循命令列表被调度到加速器电路(例如,GPU)上。命令列表是命令(例如,内核)的序列,用于在加速器电路(例如,GPU)的命令队列中执行。命令队列是命令列表被提交给加速器电路执行和/或实例化的通道和上下文。生成和提交命令列表是一项计算成本高昂的任务。
例如,内核卸载是使用SYCL指令来一次一个地描述的,并且内核卸载被运行时调度器打包成命令列表。生成命令列表会招致非同小可的时间成本。此外,当运行时调度器生成命令列表时,加速器电路(例如,GPU)可能是空闲的,从而浪费了计算资源。
另外,异构系统一般必须在第二命令列表可以被调度来卸载到加速器电路(例如,GPU)之前完成与第一命令列表相关联的所有工作。例如,这项工作包括生成命令列表,执行和/或实例化命令列表中的内核,并且销毁命令列表。内核的示例执行和/或实例化涉及存储器分配时间、通用处理器电路和加速器电路之间的数据传送时间、内核执行时间、以及从加速器电路到通用处理器电路的数据传送时间。
朴素设计的内核和命令列表调度可能会为异构系统产生不良的性能。例如,如果过于频繁地生成命令列表,则加速器电路(例如,GPU)的利用率就会降低,因为加速器电路在生成命令列表的频繁时段期间空闲。例如,频繁生成的命令列表倾向于描述较少量的工作。当被提交给大型加速器电路时,命令列表中的总可用工作可能不会使得整个设备饱和。通常,如果命令列表包括单个内核,就会发生不饱和。实现单内核命令列表的异构系统会不断受到被利用来为每个内核创建和提交新的命令列表的计算开销的影响,并且单个内核可能不够大,不足以填充加速器电路。
将多个内核组合在一起可以减少这种问题。通常情况下,命令列表中的一组内核的期望大小是当总并行工作比使加速器电路饱和所需要的多一个小系数(例如,1.1×–2×),并且工作的持续时间是提交更多工作的成本的两倍(例如,2×)或更多时。内核由定义内核的迭代空间的一组工作组组成,每个工作组被指派给设备上的一个处理元件。为了使得加速器电路饱和,工作组的总数目应当比加速器电路上的处理元件的数目大一个小系数。
相反,如果太多的内核被组合到命令列表中(例如,如果命令列表生成的频率太低),则加速器电路可能会变得完全空闲(例如,加速器电路可能已经完成了先前的命令列表,而现在无事可做)。加速器电路不能利用部分构建的命令列表,而必须等待直到命令列表被关闭并且提交给加速器电路为止。
现有的调度内核和命令列表的技术包括一旦内核可用,并且加速器电路空闲,就将内核发送到加速器电路(例如,GPU)。以这种方式,在内核准备好执行的任何时候,加速器电路都被利用。当内核在加速器电路上运行时,所有到达的后续内核都被收集到在加速器电路完成当前内核的处理之后调度的命令列表中。
这种现有的技术很可能有很差的计算利用率和运行效率,特别是当排队的内核可能很小的时候(例如,内核对加速器电路产生低利用率)。因为命令列表在另一个命令列表能够被调度之前被运行到完成,后续内核必须等待第一内核完成后才能被调度到加速器电路上。例如,如果第一内核只占用了GPU上的少量线程,那么在第一内核的整个持续时间期间,GPU利用率很低,并且后续内核必须等待直到GPU完成执行第一内核。
另一种现有的技术将
Figure BDA0004004331710000081
应用映射到异构系统,这是通过使用静态分析器来提取应用的CPU和GPU特征,基于组构对特征进行过滤,然后使用这些特征来训练多类别机器学习模型,该模型可被用于在线预测中来将应用调度到处理器。另外,现有的技术将控制流发散作为特征纳入在学习的分类器中,以在单个CPU和单个GPU之间自动划分
Figure BDA0004004331710000082
工作负载,以改善定时性能。
此外,一种现有的技术在编译期间从
Figure BDA0004004331710000083
程序中静态地提取特征,并且使用学习的模型来预测是否要将内核映射到CPU、GPU,或者在可用的计算设备之间划分内核工作负载。自适应映射是一种现有的技术,用来将计算自动映射到异构系统中的处理器。自适应映射技术的一个实现方式包括一种异构编程系统,该系统为用户提供了一组应用编程接口(API)调用,以编写可并行化的程序。自适应映射技术的这种实现方式然后动态地将程序编译成机器代码,并且自适应地将计算映射到处理元件,使用从先前程序运行中获得的数据来预测先前未见的输入的执行时间。
另一项现有的技术是在适当的粒度上在各计算设备间自动分割单个内核的计算和数据,以实现负载平衡。这种自适应的工作组划分是在没有任何训练的情况下完成的。相反,内核被静态地分析并且变换为参数化的可划分的内核,然后动态的定点迭代被用来尝试收敛于内核在机器间的最优划分上。另外的现有技术包括使用基于强化学习的设备放置模型来优化被放置到多个设备上的
Figure BDA0004004331710000084
计算图的操作子集之间的通信。这种技术试图解决针对神经网络训练和推断的设备放置问题。
现有的技术要么关注将单个内核映射到不同的硬件,要么关注在不同硬件间划分单个内核。然而,现有的技术并没有解决一个更大的问题,即把独立的有序内核集群到命令列表中,以把任务调度到加速器电路上。因此,现有的技术没有考虑最大限度地减少生成和提交命令列表的非平凡成本,以及最大化加速器电路的计算利用率。因此,这种现有的技术导致了加速器电路的不充分利用,这降低了异构处理器电路的效率。
本文公开的示例在确定是否要将当前内核调度到命令列表中时预测未来的内核,以改善加速器电路(例如,GPU)的利用率和减少异构系统中的总运行时间。因此,本文公开的示例在与现有技术不同的调度粒度上操作。因此,本文公开的示例降低了与创建命令列表的现有技术相关联的成本(例如,大量成本)。另外,本文公开的示例改善了异构硬件计算资源的不充分利用。因此,本文公开的示例与现有技术相比减少了运行时,并且改善了在异构系统上执行的端到端应用的性能。
图1是根据本公开的教导的包括示例服务提供者102、示例网络104和示例用户设备106的示例环境100。在图1的示例中,服务提供者102包括示例训练电路108。在图1的示例中,用户设备106包括示例模型执行电路110和示例加速器电路112。在图1的示例中,示例服务提供者102、示例用户设备106和/或一个或多个额外的设备经由示例网络104通信地耦合。
在图1的图示示例中,服务提供者102由处理器电路实现。例如,服务提供者102可以由一个或多个服务器执行和/或实例化指令来实现,以训练一个或多个基于AI的模型(例如,NN、变换器(transformer)模型、RL模型,等等)和/或一个或多个基于AI的模型的一个或多个外围组件。如前所述,AI,包括ML、DL和/或其他基于AI的机器驱动的逻辑,使得机器(例如,计算机、逻辑电路,等等)能够使用一个或多个模型来处理输入数据,以基于(一个或多个)模型先前经由训练过程学习到的模式和/或关联来生成输出。例如,该(一个或多个)模型可以被用数据来训练以识别模式和/或关联,并且在处理输入数据时遵循这种模式和/或关联,从而使得(一个或多个)其他输入产生与所识别的模式和/或关联相一致的(一个或多个)输出。
在图1的图示示例中,服务提供者102向最终用户提供一个或多个服务和/或产品。例如,服务提供者102提供一个或多个经训练的模型供下载,容宿web界面,用户可通过该web界面访问一个或多个模型,等等。在本文公开的示例中,服务提供者102提供一个或多个NN模型、一个或多个变换器模型以及一个或多个RL模型。然而,可以使用其他类型的机器学习模型和/或机器学习体系结构。在图1的示例中,NN模型实现了内核持续时间模型,并且变换器模型实现了后续内核模型。因此,由服务提供者102提供的一个或多个模型包括一个或多个内核持续时间模型、一个或多个后续内核模型、和/或一个或多个RL模型。
使用NN模型来实现内核持续时间模型向模型执行电路110提供了特征选择方面的益处。一般而言,在实现内核持续时间模型时适合使用的机器学习模型/体系结构将是深度神经网络(deep neural network,DNN)。然而,可以额外地或者替代地使用其他类型的机器学习模型,例如随机森林树、支持向量机,等等。
使用变换器模型来实现后续内核模型向模型执行电路110提供了益处,因为它是一种用于序列数据的声誉良好的模型。一般而言,在实现后续内核模型时适合使用的机器学习模型/体系结构将是序列模型。然而,可以额外地或者替代地地使用其他类型的机器学习模型,例如长短期记忆(long short-term memory,LSTM)模型、递归神经网络(recurrentneural network,RNN)、时间卷积网络(temporal convolution network,TCN),等等。
使用RL模型使得模型执行电路110能够在部署期间为内核持续时间模型和后续内核模型实现学习算法。一般而言,适合在本文公开的示例方法中使用的机器学习模型/体系结构(除RL模型外)将是轻量级的(例如,计算上非密集型的),从而允许模型执行电路110在部署期间为内核持续时间模型和后续内核模型实现学习算法的同时减少添加的计算负担。然而,可以额外地或者替代地使用其他类型的机器学习模型,例如Q学习(Q-learning),等等。
在一些示例中,服务提供者102向最终用户提供实现一个或多个模型的插件。以这种方式,最终用户可以在本地(例如,在用户设备106处)实现一个或多个模型。在一些示例中,最终用户可以将一个或多个模型实现为对安装在用户设备106上的集成开发环境(IDE)的插件。在一些示例中,实现一个或多个模型的指令可以被包括在IDE中。在这样的示例中,当最终用户购买、租赁或者以其他方式从IDE的开发者获得和/或访问IDE时,最终用户也获得和/或访问用于实现一个或多个模型的指令。
在图1的图示示例中,网络104是互联网。然而,示例网络104可利用任何(一个或多个)适当的有线和/或无线网络来实现,包括例如一个或多个数据总线、一个或多个局域网(Local Area Network,LAN)、一个或多个无线LAN、一个或多个蜂窝网络、一个或多个私有网络、一个或多个公共网络,等等。在额外的或替代的示例中,网络104是企业网络(例如,在企业、公司等等内)、家庭网络,等等。示例网络104使得服务提供者102(包括训练电路108)和用户设备106(包括模型执行电路110和加速器电路112)能够通信。例如,用户设备106可以发送对于一个或多个经训练的模型116的一个或多个请求114。在这样的示例中,服务提供者102用一个或多个经训练的模型116响应一个或多个请求114,所述模型116包括实现RL模型和/或模型的一个或多个外围组件的指令,如下文进一步描述的。
一般而言,实现ML/AI系统涉及两个阶段:学习/训练阶段和推断阶段。在学习/训练阶段中,使用训练算法来训练模型,以根据基于例如训练数据的模式和/或关联来进行操作。一般而言,(一个或多个)模型包括指导输入数据如何被变换为输出数据的内部参数,例如通过(一个或多个)模型内的一系列节点和连接来将输入数据变换为输出数据。此外,超参数被用作训练过程的一部分,以控制如何执行学习(例如,学习率、(一个或多个)机器学习模型中要使用的层的数目,等等)。超参数被定义为在发起训练过程之前确定的训练参数。
基于ML/AI模型的类型和/或预期输出,可以执行不同类型的训练。例如,监督训练使用输入和相应的预期(例如,标记的)输出来为ML/AI模型选择参数(例如,通过在所选参数的组合上迭代),这些参数会减小模型误差。如本文所使用的,标记(labelling)是指机器学习模型的预期输出(例如,分类、预期输出值,等等)。可替代地,无监督训练(例如,用于深度学习、机器学习的子集等等中)涉及从输入推断模式,以选择ML/AI模型的参数(例如,没有预期的(例如,标记的)输出的益处)。
在本文公开的示例中,内核持续时间ML/AI模型和后续内核ML/AI模型是使用监督学习来训练的。然而,可以额外地或替代地使用任何其他的训练算法。在本文公开的示例中,执行训练,直到内核持续时间ML/AI模型和/或后续内核ML/AI模型满足阈值准确度为止。
如上所述,在图1的图示示例中,服务提供者102包括训练电路108。在图1的示例中,训练电路108由处理器电路实现。在本文公开的示例中,经由训练电路108在服务提供者102处执行内核持续时间ML/AI模型和/或后续内核ML/AI模型的训练。利用控制如何执行学习的超参数(例如,学习率、(一个或多个)机器学习模型中要使用的层的数目,等等)来执行训练。在本文公开的示例中,对内核持续时间ML/AI模型和/或后续的内核ML/AI模型执行重训练。这样的重训练是在部署之后(例如,在模型执行电路110处)执行的,此时新的内核要被卸载到加速器电路(例如,加速器电路112)。
训练电路108和模型执行电路110实现两阶段学习方法。第一阶段可以被称为离线训练阶段,第二阶段可以被称为在线学习和部署阶段。在这两个阶段中,内核持续时间模型、后续内核模型、RL模型和/或一个或多个外围组件处理从通用处理器电路到达的内核输入流,以卸载到加速器电路112。输入流被表示为元组的序列,其中每个到达的内核被表示为元组。内核元组包括标识内核的源位置或名称、内核的参量的属性和/或内核被提交以被卸载到加速器电路时的时间戳的参数。对于内核k,相应的内核元组可以被表示为(Sk,Ak,Tk),其中Sk表示内核的源位置和/或名称,Ak表示内核的参量的属性,并且Tk表示内核被提交以卸载的时间戳。
在示例第一阶段中,训练电路108用从历史执行踪迹(例如,来自程序的先前运行)提取的训练数据离线训练内核持续时间模型和后续内核模型。在本文公开的示例中,训练数据来源于历史执行踪迹。如本文所使用的,执行踪迹指的是代表硬件体系结构上的内核的先前执行的数据。例如,可以通过记录内核最后执行的条件分支的预定数目(例如,8、16,等等)和/或记录预定数量(例如,兆字节量级、千兆字节量级,等等)的条件分支信息和若干(例如,数百万)行指令历史来收集执行踪迹。在一些示例中,执行踪迹是用oneAPI的clintercept程序收集的。
因为使用了监督训练,所以训练数据被标记。标记可被自动应用到训练数据。在一些示例中,训练数据被预处理,以例如确定执行踪迹、被执行的内核的源位置或名称、内核的参量的属性、内核提交的时间、内核执行的持续时间、和/或内核在加速器电路上的占用率。在一些示例中,训练数据被细分为训练集和验证集。
训练数据的数量可以基于ML/AI模型用于的应用而变化。例如,应用一般在(a)提交哪些内核和(b)以什么顺序提交方面是重复性的,只是有一些小的变化。虽然,程序会经历不同行为的阶段,但这些阶段经常会重复,所以ML/AI模型可以学习一般的程序模式,并且使用它们来发挥ML/AI模型的优势。因此,在ML/AI模型处理了一系列内核之后,该ML/AI模型很可能在未来继续看到相同系列的内核。这些重复的模式也往往反映在内核的参量属性中。
在训练完成之后,模型验证电路206部署内核持续时间模型和/或后续内核模型,来作为一个或多个可执行构造使用,该构造处理输入并且基于模型中定义的节点和连接的网络来提供输出。在一个或多个可执行构造中包括用于实现RL模型和/或在内核持续时间模型、后续内核模型和/或RL模型外围的一个或多个组件的指令。用于实现RL模型的指令还定义RL模型据以学习的策略(例如,最大化奖励、最小化奖励、满足目标奖励,等等)。这些模型被存储在用户设备106处。然后,该模型可由模型执行电路110执行。在训练之后,可以在推断阶段中操作部署的(一个或多个)模型以处理数据。
例如,在推断阶段期间,RL模型确定在内核卸载序列中的什么地方插入冲刷调用(flush call)。冲刷调用指的是模型执行电路110把内核卸载计算成命令列表以提交给加速器电路112的点。在命令列表被创建并且提交给加速器电路112之后,有一段延时开销的持续时间,在此期间加速器电路112没有被利用。这个损失的时间被称为时间成本C。RL模型实现的策略试图通过将多个内核组织到同一命令列表中来最小化时间成本。
在本文公开的示例中,在初始训练之后,内核持续时间模型可以预测内核的执行的持续时间和/或内核的占用率。在一些示例中,内核持续时间模型的外围组件预测和/或以其他方式确定内核的占用率。另外,在初始训练之后,后续内核模型可以利用来自先前到达的内核的信息,来预测下一内核的提交时间、源位置和/或名称、参量属性和依赖性。在推断阶段中,要分析的数据(例如,实况数据)被输入到模型,并且模型执行以创建输出。这个推断阶段可以被认为是AI“思考”以基于它从训练中学习到的东西来生成输出(例如,通过执行(一个或多个)模型来将学习到的模式和/或关联应用到实况数据)。
在一些示例中,输入数据在被用作(一个或多个)机器学习模型的输入之前会经历预处理。此外,在一些示例中,输出数据在其由(一个或多个)AI模型生成之后可经历后处理,以将输出变换为有用的结果(例如,数据的显示、要由机器执行的指令,等等)。在额外地或替代的示例中,部署的(一个或多个)模型的输出可被捕捉并被作为反馈来提供。通过分析反馈,模型执行电路110可以不断地调整内核持续时间模型和/或后续内核模型。此外,通过分析反馈,可以确定部署的(一个或多个)模型的准确度。如果反馈表明部署的(一个或多个)模型的准确度低于阈值或其他标准,则可利用反馈和更新后的训练数据集、超参数等等来触发更新后的(一个或多个)模型的训练,以生成更新后的部署的(一个或多个)模型。
在图1的图示示例中,用户设备106是由膝上型计算机实现的。在额外的或者替代的示例中,用户设备106可以由移动电话、平板计算机、桌面型计算机、服务器等等实现。如上所述,用户设备106包括模型执行电路110和加速器电路112。在图1的示例中,模型执行电路110是由处理器电路实现的。示例模型执行电路110执行和/或实例化从服务提供者102取回的一个或多个经训练的模型116和包括在其中的RL模型以及一个或多个外围组件。例如,模型执行电路110执行内核持续时间模型、后续内核模型、RL模型以及一个或多个外围组件。
在图1的图示示例中,模型执行电路110利用后续内核模型预测要被卸载到加速器电路112的未来内核。通过预测未来的内核,模型执行电路110对是否将内核捆绑到命令列表中做出更好的调度决定。例如,除了内核持续时间模型和后续内核模型以外,模型执行电路110还实现了轻量级(例如,计算上非密集型)RL模型,该RL模型使用持续时间、占用率和未来内核预测来选择动作(例如,是否将当前内核和N个先前内核一起捆绑到命令列表中)。强化学习允许了模型执行电路110根据程序中的新信息和变化,以在线方式调适调度策略。
在图1的图示示例中,加速器电路112是由CPU实现的。然而,在额外的或者替代的示例中,加速器电路112可以由一个或多个DSP,或者一个或多个微控制器和集成电路,例如一个或多个专用集成电路(ASIC)实现。在一些示例中,加速器电路112包括一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)GPU、(一个或多个)DSP、(一个或多个)ASIC、(一个或多个)可编程逻辑器件(programmable logic device,PLD)和/或(一个或多个)现场可编程逻辑器件(fieldprogrammable logic device,FPLD)。在图1的示例中,模型执行电路110按照提交的顺序处理内核,并且将内核捆绑到命令列表中,以卸载到加速器电路112的驱动器。在加速器电路112接收到命令列表之后,加速器电路112可以对包括在其中的内核重排序,以获得更好的性能和利用率。其他实现方式也是可能的。
在本文公开的示例中,对每一个或多个GPU实现内核持续时间模型的一个实例、后续内核模型的一个实例和RL模型的一个实例。例如,示例加速器电路112实现单个GPU,并且模型执行电路110实现内核持续时间模型的单个实例、后续内核模型的单个实例、以及RL模型的单个实例。在一些示例中,如果加速器电路112实现两个或更多个GPU,则模型执行电路110为每个GPU实现内核持续时间模型的一个实例、后续内核模型的一个实例、和RL模型的一个实例。然而,其他实现方式也是可能的(例如,对于每个加速器有多个模型实例,对于多个加速器有每个模型的一个实例,等等)。
在图1的图示示例中,用户设备106从服务提供者102订阅、购买和/或租赁产品和/或服务,以访问由训练电路108训练的一个或多个机器学习模型。例如,图1的用户设备106通过从服务提供者102下载一个或多个模型、访问由服务提供者102和/或另一设备容宿的web界面等等技术来访问一个或多个经训练的模型。在一些示例中,用户设备106安装插件以实现机器学习应用。在这样的示例中,该插件实现了内核持续时间模型、后续内核模型和/或RL模型。在一些示例中,用户设备106可以访问上述内核持续时间模型、后续内核模型和/或RL模型。
图2的框图图示了图1的示例训练电路108的示例实现方式,以训练内核持续时间模型和/或后续内核模型。训练电路108包括示例接口电路202、示例后续内核模型电路204、示例模型验证电路206、示例内核占用率确定电路208、示例内核持续时间模型电路210、以及示例历史执行踪迹存储器212。在图2的示例中,图2的训练电路108可以通过诸如中央处理器单元之类的处理器电路执行指令来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。
额外地或者替代地,图2的训练电路108可以由被构造为执行与指令相对应的操作的ASIC或FPGA来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。应当理解,图2的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在在硬件上同时执行和/或在硬件上串行执行的一个或多个线程中被实例化。此外,在一些示例中,图2的一些或所有电路可以由在微处理器上执行的一个或多个虚拟机和/或容器来实现。
在图2的图示示例中,接口电路202耦合到网络104和历史执行踪迹存储器212。在图2的示例中,接口电路202从网络104获得训练数据。例如,接口电路202可以从同意与服务提供者102的所有者分享其数据的一个或多个客户端那里收集执行踪迹。在额外的或者替代的示例中,接口电路202从经由网络104通信的设备(例如,当网络104是企业网络时)收集执行踪迹。在一些示例中,接口电路202从正在由服务提供者102执行的进程收集执行踪迹。
在图2的图示示例中,接口电路202将执行踪迹存储在历史执行踪迹存储器212中。在图2的示例中,接口电路202在将执行踪迹存储在历史执行踪迹存储器212中之前对执行踪迹进行预处理。在图2的示例中,接口电路202将与执行踪迹相关联的内核表示为内核元组(例如,元组(Sk,Ak,Tk)表示内核k)。
在图2的图示示例中,接口电路202确定内核的源位置或名称(Sk)。内核的源位置或名称表明内核的类型。此外,内核元组的参量参数(Ak)的示例属性表示作为参量传递给内核的数据的大小。接口电路202还将训练数据(例如,执行踪迹)划分为训练集和验证集。例如,接口电路202在收集了阈值数目的执行踪迹之后,将训练数据划分(例如,分离、分组,等等)为训练集和验证集。在一些示例中,接口电路202将训练数据划分为第一训练集和第一验证集,以在训练后续内核模型时利用,以及第二训练集和第二验证集,以在训练内核持续时间模型时利用。在其他示例中,接口电路202将训练数据划分为一个训练集和一个验证集,以在训练后续内核模型和内核持续时间模型时利用。
在图2的图示示例中,后续内核模型电路204耦合到历史执行踪迹存储器212和模型验证电路206。在图2的示例中,对于训练集,后续内核模型电路204为当前内核窗口选择元组,包括第一内核(k)和先前的w个内核。例如,后续内核模型电路204选择以下表达式1中说明的以下内核:
[(Sk-w,Ak-w,Tk-w),...,(Sk-1,Ak-1,Tk-1),(Sk,Ak,Tk)]
表达式1
在图2的示例中,后续内核模型电路204基于内核的源位置或名称、参量的属性以及当前内核窗口中包括的内核的提交时间来预测下一内核元组和下一内核的依赖性。例如,后续内核模型电路204预测将到达的下一内核的源位置或名称(Sk+1)、将到达的下一内核的参量属性(Ak+1)、将到达的下一内核的提交时间(Tk+1)、以及下一内核k+1是否依赖于当前等待被捆绑到命令列表中的任何内核[m,k],其中m是等待被捆绑的内核的列表中的第一内核。预测的下一内核元组被表示为(Sk+1,Ak+1,Tk+1)’,并且预测的下一内核的依赖性被表示为dependencyk+1’。
在图2的示例中,后续内核模型电路204确定训练集中是否有额外的内核元组。如果后续内核模型电路204确定在训练集中有额外的内核元组,则后续内核模型电路204为下一内核窗口选择元组,包括下一内核和先前的w个内核(例如,(Sk+1-w,Ak+1-w,Tk+1-w))并且预测将跟随该内核窗口的内核元组(例如,后续内核元组)和下一内核的依赖性。
在图2的图示示例中,后续内核模型电路204继续移动内核窗口经过训练集并且预测后续内核元组和后续内核的依赖性,直到训练集中没有额外的内核元组为止。在图2的示例中,后续内核模型电路204从验证集中选择内核窗口,并且预测后续内核和关联的依赖性。后续内核模型电路204将内核窗口滑过整个验证集,直到验证集中没有额外的内核元组为止。
在图2的图示示例中,模型验证电路206耦合到后续内核模型电路204、内核持续时间模型电路210、历史执行踪迹存储器212和接口电路202。在图2的示例中,模型验证电路206基于预测值和实际值之间的误差来调整内核持续时间模型或者后续内核模型中的一个或多个。例如,对于后续内核模型,模型验证电路206基于实际的下一内核的执行踪迹,确定训练集中的预测的下一内核元组和预测的下一内核的依赖性的误差。响应于后续内核模型电路204确定在训练集中对于后续内核模型没有额外的元组,模型验证电路206通过后续内核模型反向传播与训练集相关联的每个预测的下一内核元组和每个预测的下一内核的依赖性的误差。例如,模型验证电路206针于后续内核模型的损失函数,从最后一层开始,确定后续内核模型的每一层的权重的梯度。然后,模型验证电路206针对损失函数实现随机梯度下降。
在图2的图示示例中,模型验证电路206基于实际的下一内核的执行踪迹,确定验证集中的预测的下一内核元组和预测的下一内核的依赖性的误差。在图2的示例中,响应于后续内核模型电路204确定验证集中没有额外的元组,模型验证电路206确定后续内核模型是否满足预测的下一内核元组和预测的下一内核的依赖性的阈值准确度。响应于模型验证电路206确定后续内核模型不满足预测的下一内核元组和预测的下一内核的依赖性的阈值准确度,模型验证电路206调整后续内核模型的参数以满足阈值准确度。响应于模型验证电路206确定后续内核模型满足预测的下一内核元组和预测的下一内核的依赖性的阈值准确度,模型验证电路206部署后续内核模型。例如,模型验证电路206使得(经由接口电路202)将后续内核模型传输到模型执行电路110。
在图2的图示示例中,对于内核持续时间模型,模型验证电路206基于内核的执行踪迹确定训练集中的内核的预测执行持续时间的误差。响应于内核占用率确定电路208确定在训练集中对于内核持续时间模型没有额外的元组,模型验证电路206通过内核持续时间模型反向传播训练集中的每个内核的预测执行持续时间的误差。
在图2的图示示例中,模型验证电路206基于内核的执行踪迹,确定验证集中的内核的预测执行持续时间的误差。在图2的示例中,响应于内核占用率确定电路208确定在验证集中对于内核持续时间模型没有额外的元组,模型验证电路206确定内核持续时间模型是否满足针对内核持续时间模型的验证集中的每个内核的预测持续时间的阈值准确度。响应于模型验证电路206确定内核持续时间模型不满足验证集中的每个内核的预测持续时间的阈值准确度,模型验证电路206调整内核持续时间模型的参数以满足阈值准确度。响应于模型验证电路206确定内核持续时间模型满足验证集中的每个内核的预测执行持续时间的阈值准确度,模型验证电路206部署内核持续时间模型。例如,模型验证电路206使得(经由接口电路202)将内核持续时间模型传输到模型执行电路110。
在图2的图示示例中,内核占用率确定电路208耦合到历史执行踪迹存储器212和内核持续时间模型电路210。在图2的示例中,内核占用率确定电路208为训练集的当前内核选择第一内核元组。内核占用率确定电路208基于所选内核的参量的属性来确定所选内核的占用率。例如,当内核k到达要被卸载时,内核占用率确定电路208预测该内核在加速器电路上的占用率。内核k的预测占用率被表示为Qk。由于内核的占用率(Qk)是内核的参量(Ak)的属性的静态属性,所以内核占用率确定电路208经由函数g来确定占用率(Qk),该函数对内核的参量(Ak)的属性进行操作以确定内核k将请求多少加速器(例如,Qk=g(Ak))。
在图2的示例中,内核占用率确定电路208确定训练集中是否有额外的内核元组。如果内核占用率确定电路208确定在训练集中有额外的内核元组,则内核占用率确定电路208选择下一元组并且基于下一内核的参量的属性确定下一内核的占用率。
在图2的图示示例中,内核占用率确定电路208继续在整个训练集和内核的占用率上移动(例如,迭代、解析,等等),直到训练集中没有额外的内核元组为止。在图2的示例中,内核占用率确定电路208从验证集中选择内核元组并且确定内核占用率。内核占用率确定电路208在整个验证集上迭代,直到验证集中没有额外的内核元组为止。
在图2的图示示例中,内核持续时间模型电路210耦合到历史执行踪迹存储器212、内核占用率确定电路208和模型验证电路206。在图2的示例中,内核持续时间模型电路210取回和/或获得由内核占用率确定电路208确定的内核占用率(Qk)。对于训练集和验证集两者,示例内核持续时间模型电路210基于内核的源位置或名称、内核的参量的属性、和内核的占用率来预测内核的执行持续时间。预测的执行持续时间被表示为Dk’。
执行持续时间(Dk)是可以利用某种静态分析来近似的复杂属性。例如,矩阵乘法内核可能会有O(A3)的运行时复杂度。在这样的示例中,如果内核的输入数据的大小是两个字节,那么内核将执行八个操作。然而,执行持续时间(Dk)可能会基于运行时条件、实现细节和使用的值而变化(例如,稀疏矩阵(具有的零值比非零值多)将有可能比密集矩阵(例如,具有的非零值比零值多)在更短量的时间中运行)。加速器电路的占用率也会影响执行持续时间(Dk)。因此,内核持续时间模型电路210经由函数f预测执行持续时间,该函数对内核的源位置或名称(Sk)、内核的参量的属性(Ak)和内核占用率(Qk)进行操作(例如,Dk’=f(Sk,Ak,Qk))。
在图2的图示示例中,历史执行踪迹存储器212存储训练数据中包括的执行踪迹。历史执行踪迹存储器212可以由易失性存储器(例如,同步动态随机访问存储器(Synchronous Dynamic Random-Access Memory,SDRAM)、动态随机访问存储器(DynamicRandom-Access Memory,DRAM)、RAMBUS动态随机访问存储器(RAMBUS Dynamic Random-Access Memory,RDRAM),等等)和/或非易失性存储器(例如,闪存)来实现。历史执行踪迹存储器212可以额外地或替代地由一个或多个双倍数据速率(double data rate,DDR)存储器来实现,例如DDR、DDR2、DDR3、DDR4、DDR5、移动DDR(mDDR)、DDR SDRAM,等等。历史执行踪迹存储器212可以额外地或者替代地由一个或多个大容量存储设备来实现,例如(一个或多个)硬盘驱动器(hard disk drive,HDD)、(一个或多个)致密盘(compact disk,CD)驱动器、(一个或多个)数字多功能光盘(digital versatile disk,DVD)驱动器、(一个或多个)固态盘(solid-state disk,SSD)驱动器、(一个或多个)安全数字(Secure Digital,SD)卡、(一个或多个)CompactFlash(CF)卡,等等。虽然在图示的示例中,历史执行踪迹存储器212被图示为单个数据库,但历史执行踪迹存储器212可由任意数目和/或类型的数据库实现。此外,存储在历史执行踪迹存储器212中的数据可采取任何数据格式,例如,二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(structured query language,SQL)结构,等等。
在一些示例中,训练电路108包括用于接口的装置。例如,用于接口的装置可以由接口电路202实现。在一些示例中,接口电路202可以由处理器电路实例化,例如图9的示例处理器电路912。例如,接口电路202可以通过图10的示例通用微处理器电路1000执行机器可执行指令来实例化,例如由至少图6的块602和604和/或至少图7的块702和704实现的机器可执行指令。在一些示例中,接口电路202可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图11的ASIC或FPGA电路1100来实现。额外地或者替代地,接口电路202可以由硬件、软件和/或固件的任何其他组合来实例化。例如,接口电路202可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,训练电路108包括用于执行后续内核模型的装置。例如,用于执行后续内核模型的装置可以由后续内核模型电路204实现。在一些示例中,后续内核模型电路204可以由处理器电路来实例化,例如图9的示例处理器电路912。例如,后续内核模型电路204可以通过图10的示例通用处理器电路1000执行机器可执行指令来实例化,例如由至少图6的块606、608、612、614、618、620、624和626实现的机器可执行指令。在一些示例中,后续内核模型电路204可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图11的ASIC或FPGA电路1100来实现。额外地或者替代地,后续内核模型电路204可以由硬件、软件和/或固件的任何其他组合来实例化。例如,后续内核模型电路204可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,训练电路108包括用于验证一个或多个机器学习模型的装置。例如,用于验证一个或多个机器学习模型的装置可以由模型验证电路206实现。在一些示例中,模型验证电路206可以由处理器电路来实例化,例如图9的示例处理器电路912。例如,模型验证电路206可以通过图10的示例通用微处理器电路1000执行机器可执行指令来实例化,例如由至少图6的块610、616、622、628、630和632和至少图7的块712、718、726、732、734和736实现的。在一些示例中,模型验证电路206可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图11的ASIC或FPGA电路1100来实现。额外地或者替代地,模型验证电路206可以由硬件、软件和/或固件的任何其他组合来实例化。例如,模型验证电路206可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,训练电路108包括用于确定内核占用率的装置。例如,用于确定内核占用率的装置可以由内核占用率确定电路208实现。在一些示例中,内核占用率确定电路208可以由处理器电路来实例化,例如图9的示例处理器电路912。例如,内核占用率确定电路208可以通过图10的示例通用处理器电路1000执行机器可执行指令来实例化,例如由至少图7的块706、708、714、716、720、722、728和730实现的机器可执行指令。在一些示例中,内核占用率确定电路208可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图11的ASIC或FPGA电路1100来实现。额外地或者替代地,内核占用率确定电路208可以由硬件、软件和/或固件的任何其他组合来实例化。例如,内核占用率确定电路208可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,训练电路108包括用于执行内核持续时间模型的装置。例如,用于执行内核持续时间模型的装置可以由内核持续时间模型电路210实现。在一些示例中,内核持续时间模型电路210可以由处理器电路实例化,例如图9的示例处理器电路912。例如,内核持续时间模型电路210可以通过图10的示例通用微处理器电路1000执行机器可执行指令来实例化,例如由至少图7的块710和724实现的机器可执行指令。在一些示例中,内核持续时间模型电路210可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图11的ASIC或FPGA电路1100来实现。额外地或者替代地,内核持续时间模型电路210可以由硬件、软件和/或固件的任何其他组合来实例化。例如,内核持续时间模型电路210可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
图3的框图图示了图1的示例模型执行电路110的示例实现方式,来生成要被卸载到加速器电路112的命令列表。模型执行电路110包括示例卸载控制电路302、示例内核占用率确定电路304、示例内核持续时间模型电路306、示例后续内核模型电路308、示例强化学习(RL)模型电路310、以及示例先前执行踪迹存储器312。在图3的示例中,图3的模型执行电路110可以通过诸如中央处理器单元之类的处理器电路执行指令来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。
额外地或者替代地,图3的模型执行电路110可以由被构造为执行与指令相对应的操作的ASIC或FPGA来实例化(例如,创建其实例,使其在任何长度的时间中存在,具体化,实现,等等)。应当理解,图3的一些或所有电路可以在相同或不同时间被实例化。一些或所有电路可以例如在在硬件上同时执行和/或在硬件上串行执行的一个或多个线程中被实例化。此外,在一些示例中,图3的一些或所有电路可以由在微处理器上执行的一个或多个虚拟机和/或容器来实现。
在图3的图示示例中,卸载控制电路302与在通用处理器电路(例如,CPU)上执行程序的一些部分的主机和先前执行踪迹存储器312耦合。在图3的示例中,卸载控制电路302获得要被卸载到加速器电路112的内核。在一些示例中,卸载控制电路302对内核进行预处理以生成元组(例如,(Sk,Ak,Tk))。
在图3的图示示例中,内核占用率确定电路304耦合到卸载控制电路302、内核持续时间模型电路306、和先前执行踪迹存储器312。在图3的示例中,内核占用率确定电路304基于内核的参量的属性来确定要被卸载的内核的占用率。
例如,当内核k到达要被卸载时,内核占用率确定电路304预测该内核在加速器电路112上的占用率。内核k的预测占用率被表示为Qk。为了确定内核的占用率(Qk),内核占用率确定电路304执行和/或实例化函数g,该函数对内核的参量(Ak)的属性进行操作以确定内核k将请求多少加速器(例如,Qk=g(Ak))。例如,内核占用率确定电路304可以实现内核持续时间模型和后续内核模型的一个或多个可执行构造中包括的指令。
在图3的图示示例中,内核持续时间模型电路306耦合到卸载控制电路302、内核占用率确定电路304、RL模型电路310和加速器电路112。在图3的示例中,内核持续时间模型电路306执行和/或实例化由训练电路108训练的内核持续时间模型。在图3的示例中,内核持续时间模型电路306取回和/或获得由内核占用率确定电路304确定的内核占用率(Qk)。示例内核持续时间模型电路306基于内核的源位置或名称、内核的参量的属性和内核的占用率来预测内核的执行持续时间。预测的执行持续时间被表示为Dk’。
在图3的图示示例中,在第一内核在加速器电路112上完成执行之后,内核持续时间模型电路306取回和/或获得第一内核的实际执行持续时间。例如,内核持续时间模型电路306确定第一内核的实际执行持续时间与第一内核的预测执行持续时间之间的差异(例如,持续时间差异)。基于该持续时间差异,内核持续时间模型电路306调整内核持续时间模型的一个或多个参数。例如,内核持续时间模型电路306基于持续时间差异生成损失值,并且实现反向传播以调整内核持续时间模型,以从新的运行时数据点中学习。
在图3的图示示例中,后续内核模型电路308耦合到卸载控制电路302、RL模型电路310、和先前执行踪迹存储器312。在图3的示例中,对于要被卸载到加速器电路112的内核(例如,当前内核),后续内核模型电路308获得包括当前内核和先前w个内核的内核窗口(例如,当前内核窗口)的元组。
在图3的示例中,后续内核模型电路308基于内核的源位置或名称、参量的属性以及当前内核窗口中包括的内核的提交时间来预测下一内核元组和下一内核的依赖性。例如,后续内核模型电路204预测将到达的下一内核的源位置或名称(Sk+1)、将到达的下一内核的参量属性(Ak+1)、将到达的下一内核的提交时间(Tk+1)、以及下一内核k+1是否依赖于当前等待被捆绑到命令列表中的任何内核[m,k],其中m是等待被捆绑的内核列表中的第一内核。预测的下一内核元组被表示为(Sk+1,Ak+1,Tk+1)’,并且预测的下一内核的依赖性被表示为dependencyk+1’。
在图3的示例中,当后续内核模型电路308从卸载控制电路302取回和/或获得下一内核元组时,后续内核模型电路308确定实际下一内核元组(例如,下一内核的实际元组)和预测的下一内核元组之间的差异,以及下一内核的实际依赖性和下一内核的预测依赖性之间的差异。基于这些差异,后续内核模型电路308调整后续内核模型的一个或多个参数。例如,后续内核模型电路308基于差异生成损失值,并且实现反向传播以调整后续内核模型,以从新的运行时数据点中学习。例如,模型验证电路206针于后续内核模型的损失函数,从最后一层开始,确定后续内核模型的每一层的权重的梯度。然后,模型验证电路206针对损失函数实现随机梯度下降。
在图3的图示示例中,RL模型电路310耦合到内核持续时间模型电路306、后续内核模型电路308和加速器电路112。在图3的示例中,RL模型电路310利用内核持续时间模型和后续内核模型的可执行构造来实现用于所包括的RL模型的指令。例如,RL模型电路310实现计算上非密集型(例如,轻量级)在线RL模型,以决定是将内核捆绑到命令列表中以发送到加速器电路112的驱动器(例如,GPU驱动器),还是保持命令列表开放。
在图3的图示示例中,通过实现计算上非密集型的RL模型,虽然在部署期间实现了学习算法,但模型执行电路110的计算资源消耗被减少(例如,最小化)。以这种方式,模型执行电路110可以维持计算资源消耗和时间成本的净减小。在图3的图示示例中,RL模型电路310基于(i)当前内核的预测执行时间,(ii)下一内核的预测元组,和/或(iii)下一内核的预测依赖性,来确定是否将(a)正被评估的当前内核和(b)自从上次冲刷调用以来任何先前接收到的内核捆绑到命令列表中。
在图3的图示示例中,在捆绑决定之后,RL模型电路310获得与捆绑决定相关联的负时间成本。在图3的示例中,RL模型电路310(例如,强化学习模型电路)实现奖励策略,该奖励策略反映关于是将先前内核捆绑到命令列表中还是保持命令列表开放以积累更多内核的决定的负时间成本。因此,RL模型电路310捕捉从内核提交时间(Tk)到内核从加速器电路112返回的时间的延时。RL模型的奖励政策可以被初始化为用户确定的政策。基于负时间成本,RL模型电路310根据奖励策略调整RL模型的一个或多个参数。因此,可以认为奖励政策被初始化为RL模型随着时间的推移而调适的“起始者”政策。
在图3的示例中,预测的下一内核元组、预测的下一内核的依赖性、和/或预测的下一内核的执行持续时间协助RL模型决定是捆绑(例如,发出冲刷调用)并且发送命令列表还是在捆绑之前等待未来的内核。例如,当在部署期间捆绑内核以卸载到加速器电路112时,内核之间的依赖性或者手动用户发出的冲刷命令可能使得加速器电路112强制冲刷(例如,分发、部署,等等)等待被捆绑到命令列表中的现有内核。例如,如果对第一内核的输入包括第二内核的输出,则第一内核必须等待第二内核完成执行,然后第一内核才能开始执行。因此,在这样的示例中,可以强制冲刷。如果传入的内核是强制现有内核的冲刷的依赖性的一部分,那么可以通过捆绑现有内核(例如,已经到达的内核)来改善性能,而不是等待捆绑动作被后来到达的内核所强制。这样做,RL模型可以优化下一命令列表的安排,同时维持内核依赖性之间的冲刷。决定(a)保持命令列表开放或者(b)关闭命令列表是RL模型在操作期间学习的调度试探的一部分。如果决定是关闭命令列表,则当RL模型遇到依赖时,RL模型电路310将命令列表发送到加速器电路112的驱动器。
在图3的图示示例中,先前执行踪迹存储器312存储先前在加速器电路112上执行的内核的执行踪迹。先前执行踪迹存储器312可以由易失性存储器(例如,同步动态随机访问存储器(Synchronous Dynamic Random-Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random-Access Memory,DRAM)、RAMBUS动态随机访问存储器(RAMBUS DynamicRandom-Access Memory,RDRAM),等等)和/或非易失性存储器(例如,闪存)来实现。先前执行踪迹存储器312可以额外地或替代地由一个或多个双倍数据速率(double data rate,DDR)存储器来实现,例如DDR、DDR2、DDR3、DDR4、DDR5、移动DDR(mDDR)、DDR SDRAM,等等。先前执行踪迹存储器312可以额外地或者替代地由一个或多个大容量存储设备来实现,例如(一个或多个)硬盘驱动(hard disk drive,HDD)、(一个或多个)致密盘(compact disk,CD)驱动、(一个或多个)数字多功能光盘(digital versatile disk,DVD)驱动、(一个或多个)固态盘(solid-state disk,SSD)驱动、(一个或多个)安全数字(Secure Digital,SD)卡、(一个或多个)CompactFlash(CF)卡,等等。虽然在图示的示例中,先前执行踪迹存储器312被图示为单个数据库,但先前执行踪迹存储器312可由任意数目和/或类型的数据库实现。此外,存储在先前执行踪迹存储器312中的数据可采取任何数据格式,例如,二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(structured query language,SQL)结构,等等。
在一些示例中,模型执行电路110包括用于控制内核卸载的装置。例如,用于控制内核卸载的装置可以由卸载控制电路302实现。在一些示例中,卸载控制电路302可以由处理器电路实例化,例如图12的示例处理器电路1212。例如,卸载控制电路302可以通过图13的示例通用微处理器电路1300执行机器可执行指令来实例化,例如由至少图8的块802、814和826实现的机器可执行指令。在一些示例中,卸载控制电路302可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图14的ASIC或FPGA电路1400来实现。额外地或者替代地,卸载控制电路302可以由硬件、软件和/或固件的任何其他组合来实例化。例如,卸载控制电路302可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,模型执行电路110包括用于确定内核占用率的装置。例如,用于确定内核占用率的装置可以由内核占用率确定电路304实现。在一些示例中,内核占用率确定电路304可以由处理器电路来实例化,例如图12的示例处理器电路1212。例如,内核占用率确定304可以通过图13的示例通用微处理器电路1300执行机器可执行指令来实例化,例如由至少图8的块804实现的机器可执行指令。在一些示例中,内核占用率确定电路304可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图14的ASIC或FPGA电路1400来实现。额外地或者替代地,内核占用率确定电路304可以由硬件、软件和/或固件的任何其他组合来实例化。例如,内核占用率确定电路304可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,模型执行电路110包括用于执行内核持续时间模型的装置。例如,用于执行内核持续时间模型的装置可以由内核持续时间模型电路306实现。在一些示例中,内核持续时间模型电路306可以由处理器电路实例化,例如图12的示例处理器电路1212。例如,内核持续时间模型电路306可以通过图13的示例通用微处理器电路1300执行机器可执行指令来实例化,例如由至少图8的块806、820、822和824实现的机器可执行指令。在一些示例中,内核持续时间模型电路306可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图14的ASIC或FPGA电路1400来实现。额外地或者替代地,内核持续时间模型电路306可以由硬件、软件和/或固件的任何其他组合来实例化。例如,内核持续时间模型电路306可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,模型执行电路110包括用于执行后续内核模型的装置。例如,用于执行后续内核模型的装置可以由后续内核模型电路308实现。在一些示例中,后续内核模型电路308可以由处理器电路来实例化,例如图12的示例处理器电路1212。例如,后续内核模型电路308可以通过图13的示例通用处理器电路1300执行机器可执行指令来实例化,例如由至少图8的块808、810、828和830实现的机器可执行指令。在一些示例中,后续内核模型电路308可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图14的ASIC或FPGA电路1400来实现。额外地或者替代地,后续内核模型电路308可以由硬件、软件和/或固件的任何其他组合来实例化。例如,后续内核模型电路308可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,模型执行电路110包括用于执行强化学习(RL)模型的装置。例如,用于执行RL模型的装置可以由RL模型电路310实现。在一些示例中,RL模型电路310可以由处理器电路实例化,例如图12的示例处理器电路1212。例如,RL模型电路310可以通过图13的示例通用微处理器电路1300执行机器可执行指令来实例化,例如由至少图8的块812、816和818实现的机器可执行指令。在一些示例中,RL模型电路310可以由硬件逻辑电路来实例化,该硬件逻辑电路可以由被构造为执行与机器可读指令相对应的操作的图14的ASIC或FPGA电路1400来实现。额外地或者替代地,RL模型电路310可以由硬件、软件和/或固件的任何其他组合来实例化。例如,RL模型电路310可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
图4A的图形图示400代表了当实现现有技术时的GPU利用率。图形图示400包括占用率轴和时间轴。在图4A的示例中,第一内核402、第二内核404和第三内核406被调度到GPU上。在图4A的示例中,现有技术由于一个长持续和低占用率的内核而实现了不良的GPU利用率。例如,第一内核402的执行持续时间比第二内核404和第三内核406长得多。此外,第三内核406的利用率比第一内核402和第二内核404高得多。因此,图4A的命令列表是非最优捆绑的,因为一个长时间和低占用率的计算内核主导了GPU处的执行。
图4B的图形图示408代表了当实现本文公开的示例时的GPU利用率。图形图示408包括占用率轴和时间轴。在图4B的示例中,第一内核410、第二内核412、第三内核414、第四内核416、第五内核418和第六内核420被调度到GPU上。图4B图示了如本文所公开而实现的更优化的捆绑。在图4B的示例中,命令列表包括更多的内核,从而使得GPU具有更大的利用率。
如上所述,给定内核的执行持续时间和GPU占用率在确定如何捆绑内核时可能是有用的,因为尽可能多地保持GPU活跃和被利用在计算上是有益的。此外,GPU一般必须在开始下一个之前完成一个命令列表。因此,本文公开的示例力求使得命令列表具有足够的容量,以使得GPU有足够的任务来保持其自身被占用,但被适当地创建,从而对于任何给定的内核,该内核的提交时间和GPU返回内核的时间之间的延时被减少和/或适当地最小。
此外,本文公开的示例在每次命令列表被创建和提交给GPU时招致的时间成本C期间避免了过度的GPU空闲。本文公开的示例将内核调度到命令列表中,从而使得独立的内核可以在加速器电路的不同线程上并行运行,比现有技术利用加速器电路(例如,GPU)的更多占用率。本文公开的示例还调度了命令列表,以在大约相同的时间完成并行内核,从而使得少数长期运行的任务不会迫使加速器电路(例如,GPU)在其等待命令列表完成的同时以降低的利用率操作。
图5是根据本公开的教导的内核元组和预测内核元组502的序列500的示例图示。例如,后续内核模型电路308基于在上次冲刷调用512之后接收到的第一元组504、第二元组506、第三元组508和第四元组510预测预测内核元组502。
虽然在图2中图示了实现图1的训练电路108的示例方式,但图2中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。虽然在图3中图示了实现图1的模型执行电路110的示例方式,但图3中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。另外,示例接口电路202、示例后续内核模型电路204、示例模型验证电路206、示例内核占用率确定电路208、示例内核持续时间模型电路210、示例历史执行踪迹存储器212,和/或更概括而言,图1和/或图2的示例训练电路108,和/或示例卸载控制电路302、示例内核占用率确定电路304、示例内核持续时间模型电路306、示例后续内核模型电路308、示例RL模型电路310、示例先前执行踪迹存储器312,和/或更概括而言,图1和/或图3的示例模型执行电路110,可以由硬件单独实现,或者由硬件与软件和/或固件相结合来实现。从而,例如,示例接口电路202、示例后续内核模型电路204、示例模型验证电路206、示例内核占用率确定电路208、示例内核持续时间模型电路210、示例历史执行踪迹存储器212、和/或更概括而言图1和/或图2的示例训练电路108、和/或示例卸载控制电路302、示例内核占用率确定电路304、示例内核持续时间模型电路306、示例后续内核模型电路308、示例RL模型电路310、示例先前执行踪迹存储器312、和/或更概括而言图1和/或图3的示例模型执行电路110中的任何一者,可以由处理器电路、(一个或多个)模拟电路、(一个或多个)数字电路、(一个或多个)逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程微控制器、(一个或多个)图形处理器单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(PLD)和/或(一个或多个)现场可编程逻辑器件(FPLD)(例如现场可编程门阵列(FPGA))来实现。此外,图1的示例训练电路108可包括除了图2中所示的那些以外或者取代图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。此外,图1的示例模型执行电路110可包括除了图3中所示的那些以外或者取代图3中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。
在图6和/或图7中示出了代表用于实现图1和/或图2的训练电路108的示例硬件逻辑电路、机器可读指令、硬件实现状态机和/或这些的任意组合的流程图。机器可读指令可以是供处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述处理器电路例如是下文联系图9论述的示例处理器平台900中所示的处理器电路912和/或下文联系图10和/或图11论述的示例处理器电路。在图8中示出了代表用于实现图1和/或图3的模型执行电路110的示例硬件逻辑电路、机器可读指令、硬件实现状态机和/或这些的任意组合的流程图。机器可读指令可以是供处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述处理器电路例如是下文联系图12论述的示例处理器平台1200中所示的处理器电路1212和/或下文联系图12和/或图13论述的示例处理器电路。该程序可以体现在存储于与位于一个或多个硬件设备中的处理器电路相关联的一个或多个非暂态计算机可读存储介质上的软件中,所述一个或多个非暂态计算机可读存储介质例如是致密盘(compact disk,CD)、软盘、硬盘驱动(hard disk drive,HDD)、固态驱动器(solid-state drive,SSD)、数字多功能盘(digital versatile disk,DVD)、蓝光盘、易失性存储器(例如,任何类型的随机访问存储器(Random Access Memory,RAM),等等)或者非易失性存储器(例如,电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)、闪存、HDD、SSD,等等),但整个程序和/或其一部分可替代地由除了处理器电路以外的一个或多个硬件设备执行和/或体现在固件或专用硬件中。机器可读指令可以分布在多个硬件设备上和/或由两个或更多个硬件设备(例如,服务器和客户端硬件设备)执行。例如,客户端硬件设备可以由端点客户端硬件设备(例如,与用户相关联的硬件设备)或中间客户端硬件设备(例如,可促进服务器和端点客户端硬件设备之间的通信的无线电接入网络(radio access network,RAN)网关)实现。类似地,非暂态计算机可读存储介质可包括位于一个或多个硬件设备中的一个或多个介质。另外,虽然是参考图6和/或图7中所示的流程图来描述示例程序的,但可替代地使用实现示例训练电路108的许多其他方法。此外,虽然是参考图8中所示的流程图来描述示例程序的,但可替代地使用实现示例模型执行电路110的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或者组合。额外地或者替代地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。处理器电路可以分布在不同的网络位置中和/或在以下项的本地:单个机器中的一个或多个硬件设备(例如,单核处理器(例如,单核中央处理器单元(CPU))、多核处理器(例如,多核CPU),等等)、分布在服务器机架的多个服务器上的多个处理器、分布在一个或多个服务器机架上的多个处理器、位于同一封装中(例如,同一集成电路(IC)封装或者两个或更多个单独的外壳中,等等)的CPU和/或FPGA。
可以按以下格式中的一个或多个来存储本文描述的机器可读指令:压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式,等等。如本文所述的机器可读指令可被存储为可被利用来创建、制造和/或产生机器可执行指令的数据或数据结构(例如,作为指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分段并被存储在位于网络或者网络集合的相同或不同位置的一个或多个存储设备和/或计算设备(例如,服务器)上(例如,在云中、在边缘设备中,等等)。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密和/或存储在分开的计算设备上,其中这些部分当被解密、解压缩和/或组合时,形成实现可一起形成例如本文所述那种的程序的一个或多个操作的一组机器可执行指令。
在另一示例中,机器可读指令可被以如下状态存储:在该状态中,它们可被处理器电路读取,但要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发套件(software development kit,SDK)、应用编程接口(application programminginterface,API)等等,以便在特定的计算设备或其他设备上执行这些机器可读指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,本文使用的机器可读介质可包括机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在静止或在途时的特定格式或状态如何。
本文描述的机器可读指令可由任何过去、当前或将来的指令语言、脚本语言、编程语言等等来表示。例如,可利用以下语言的任何一者来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超本文标记语言(HyperText Markup Language,HTML)、结构化查询语言(Structured Query Language,SQL)、Swift,等等。
如上所述,可利用存储在一个或多个非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图6、图7和/或图8的示例操作,所述介质例如是光存储设备、磁存储设备、HDD、闪存、只读存储器(read-only memory,ROM)、CD、DVD、缓存、任何类型的RAM、寄存器、和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、用于简短实例、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。如本文所使用的,术语非暂态计算机可读介质和非暂态计算机可读存储介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为前序部分或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。如本文所使用的,当短语“至少”在例如权利要求的前序部分中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如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。就本文在描述结构、组件、项目、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。
如本文所使用的,单数指代(例如,“一”、“一个”、“第一”、“第二”,等等)并不排除多数。如本文所使用的,术语“一”或“一个”物体指的是一个或多个该物体。术语“一”(或“一个”)、“一个或多个”和“至少一个”在本文中是可互换使用的。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如同一实体或物体来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
图6的流程图代表了可由处理器电路执行和/或实例化来实现图1和/或图2的训练电路108以训练后续内核模型的示例机器可读指令和/或示例操作600。图6的机器可读指令和/或操作600开始于块602,在该块处,接口电路202获得训练数据。在块604,接口电路202将训练数据划分(例如,分割、分组,等等)为训练集和验证集。
在图6的图示示例中,在块606,后续内核模型电路204从训练集中为包括第一内核和先前的w个内核的当前内核窗口选择元组。在块608,后续内核模型电路204基于内核的源位置或名称、参量的属性、和/或当前内核窗口中包括的内核的提交时间来预测下一内核元组和下一内核的依赖性。
在图6的示例中,在块610,模型验证电路206基于实际的下一内核的执行踪迹,确定训练集中的预测的下一内核元组的第一误差和预测的下一内核的依赖性的第二误差。在块612,后续内核模型电路204确定训练集中是否有额外的内核元组。响应于后续内核模型电路204确定在训练集中有额外的内核元组(块612:“是”),机器可读指令和/或操作600进行到块614。在块614,后续内核模型电路204为包括下一内核和先前的w个内核的下一内核窗口选择元组(例如,(Sk+1-w,Ak+1-w,Tk+1-w))。
在图6的图示示例中,响应于后续内核模型电路204确定训练集中没有额外的元组(块612:“否”),机器可读指令和/或操作600进行到块616。在块616,模型验证电路206通过后续内核模型反向传播与训练集相关联的预测的下一内核元组和预测的下一内核的依赖性的误差。在块618,后续内核模型电路204从验证集中为包括第一内核和先前的w个内核的当前内核窗口选择元组。在块620,后续内核模型电路204基于内核的源位置或名称、参量的属性以及当前内核窗口中包括的内核的提交时间来预测下一内核元组和下一内核的依赖性。
在图6的示例中,在块622,模型验证电路206基于实际的下一内核的执行踪迹,确定验证集中的预测的下一内核元组的第一误差和预测的下一内核的依赖性的第二误差。在块624,后续内核模型电路204确定验证集中是否有额外的内核元组。响应于后续内核模型电路204确定在验证集中有额外的内核元组(块624:“是”),机器可读指令和/或操作600进行到块626。在块626,后续内核模型电路204为包括下一内核和先前的w个内核的下一内核窗口选择元组(例如,(Sk+1-w,Ak+1-w,Tk+1-w))。
在图6的图示示例中,响应于后续内核模型电路204确定在验证集中没有额外的元组(块624:“否”),机器可读指令和/或操作600进行到块628。在块628,模型验证电路206确定后续内核模型是否满足预测的下一内核元组和预测的下一内核的依赖性的阈值准确度。例如,模型验证电路206基于预测的下一内核元组的第一误差来确定后续内核模型是否满足预测的下一内核元组的阈值准确度。此外,例如,模型验证电路206基于预测的下一内核的依赖性的第二误差,确定后续内核模型是否满足预测的下一内核的依赖性的阈值准确度。响应于模型验证电路206确定后续内核模型不满足预测的下一内核元组和预测的下一内核的依赖性的阈值准确度(块628:“否”),机器可读指令和/或操作600进行到块630。在块630,模型验证电路206调整后续内核模型的一个或多个参数以满足阈值准确度。例如,对于后续内核模型,模型验证电路206基于试探来调整与层数目、层的大小、学习率、方向性、漏失率、正规化层和/或通过后续内核模型传播信息的方向(例如,前向和/或后向)相关联的一个或多个超参数,以满足阈值准确度。
在图6的图示示例中,响应于模型验证电路206确定后续内核模型满足预测的下一内核元组和预测的下一内核的依赖性的阈值准确度(块628:“是”),机器可读指令和/或操作600进行到块632。在块632,模型验证电路206部署后续内核模型。机器可读指令和/或操作600随后终止。
图7的流程图代表了可由处理器电路执行和/或实例化来实现图1和/或图2的训练电路108以训练内核持续时间模型的示例机器可读指令和/或示例操作700。图7的机器可读指令和/或操作700开始于块702,在该块处,接口电路202获得训练数据。在块704,接口电路202将训练数据(例如,执行踪迹)划分(例如,分割、分组,等等)为训练集和验证集。
在图7的图示示例中,在块706,内核占用率确定电路208选择训练集的第一内核。在块708,内核占用率确定电路208基于所选内核的参量的属性来确定所选内核的占用率。在块710,内核持续时间模型电路210基于当前内核的源位置或名称、当前内核的参量的属性和/或当前内核的占用率来预测当前内核的执行持续时间。在块712,模型验证电路206基于当前内核的执行踪迹,确定训练集中的当前内核的预测执行持续时间的误差。
在图7的图示示例中,在块714,内核占用率确定电路208确定训练集中是否有额外的内核元组。响应于内核占用率确定电路208确定在训练集中有额外的内核元组(块714:“是”),机器可读指令和/或操作700进行到块716。在块716,内核占用率确定电路208选择下一元组。
在图7的图示示例中,响应于内核占用率确定电路208确定在训练集中没有额外的元组(块714:“否”),机器可读指令和/或操作700进行到块718。在图7的示例中,在块718,模型验证电路206通过内核持续时间模型反向传播每个内核的预测执行持续时间的误差。在块720,内核占用率确定电路208选择验证集的第一内核。
在图7的图示示例中,在块722,内核占用率确定电路208基于所选内核的参量的属性来确定所选内核的占用率。在块724,内核持续时间模型电路210基于源位置、当前内核的名称、当前内核的参量的属性和/或当前内核的占用率来预测当前内核的执行持续时间。在块726,模型验证电路206基于当前内核的执行踪迹,确定验证集中的当前内核的预测执行持续时间的误差。
在图7的图示示例中,在块728,内核占用率确定电路208确定在验证集中是否有额外的内核元组。响应于内核占用率确定电路208确定在验证集中有额外的内核元组(块728:“是”),机器可读指令和/或操作700进行到块730。在块730,内核占用率确定电路208选择下一元组。
在图7的图示示例中,响应于内核占用率确定电路208确定在验证集中没有额外的元组(块728:“否”),机器可读指令和/或操作700进行到块732。在图7的示例中,在块732,模型验证电路206确定内核持续时间模型是否满足验证集中的每个内核的预测执行持续时间的阈值准确度。例如,模型验证电路206基于验证集中的内核的预测执行持续时间的误差,确定内核持续时间模型是否满足内核的预测持续时间的阈值准确度。响应于模型验证电路206确定内核持续时间模型不满足验证集中的每个内核的预测执行持续时间的阈值准确度(块732:“否”),机器可读指令和/或操作700进行到块734。
在图7的图示示例中,在块734,模型验证电路206调整内核持续时间模型的一个或多个参数以满足阈值准确度。例如,对于内核持续时间模型,模型验证电路206基于试探来调整与层数目、层的大小、学习率、方向性、漏失率和/或正规化层相关联的一个或多个超参数,以满足阈值准确度。响应于模型验证电路206确定内核持续时间模型满足验证集中的每个内核的预测执行持续时间的阈值准确度(块732:“是”),机器可读指令和/或操作700进行到块726。在块736,模型验证电路206部署内核持续时间模型。在块736之后,机器可读指令和/或操作700终止。
图8的流程图代表了可由处理器电路执行和/或实例化来实现图1和/或图3的中央处理器单元以生成要被卸载到加速器电路的命令列表的示例机器可读指令和/或示例操作800。图8的机器可读指令和/或操作800开始于块802,在该块处,卸载控制电路302获得要被卸载到加速器电路112的内核,即第一内核。在块804,内核占用率确定电路304基于第一内核的参量的属性确定第一内核的占用率。
在图8的图示示例中,在块806,内核持续时间模型电路306基于第一内核的源位置或名称、第一内核的参量的属性、以及第一内核的占用率来预测第一内核的执行持续时间。在块808,后续内核模型电路308获得当前内核元组和先前w个内核的元组。在块810,后续内核模型电路308基于内核的源位置或名称、参量的属性、以及当前内核窗口中包括的内核的提交时间来预测下一内核元组和下一内核的依赖性。
在图8的示例中,在块812,RL模型电路310基于第一内核的预测执行持续时间、下一内核的预测元组、和下一内核的预测依赖性,确定是否捆绑第一内核和自从上次冲刷调用以来接收到的先前内核。在块814,卸载控制电路302确定是否有额外的内核要被卸载到加速器电路112。响应于卸载控制电路302确定没有要被卸载的额外内核(块814:“否”),机器可读指令和/或操作800终止。
在图8的示例中,响应于卸载控制电路302确定存在要被卸载的额外内核(块814:“是”),机器可读指令和/或操作800进行到块816。在块816,RL模型电路310获得与是否捆绑第一内核或者等待额外内核的决定相关联的负时间成本。在块818,基于负时间成本,RL模型电路310根据RL模型的奖励策略调整RL模型的一个或多个参数。
在图8的图示示例中,在块820,在第一内核在加速器电路112上完成执行之后,内核持续时间模型电路306获得第一内核的实际执行持续时间。在块822,内核持续时间模型电路306确定第一内核的实际执行持续时间与第一内核的预测执行持续时间之间的差异。在块824,基于该持续时间差异,内核持续时间模型电路306调整内核持续时间模型的一个或多个参数。
在图8的图示示例中,在块826,卸载控制电路302获得下一内核元组。在块828,后续内核模型电路308确定实际的下一内核元组和预测的下一内核元组之间的差异,以及下一内核的实际依赖性和下一内核的预测依赖性之间的差异。在块830,基于这些差异,后续内核模型电路308调整后续内核模型的一个或多个参数。在块830之后,机器可读指令和/或操作800返回到块804。
图9是示例处理器平台900的框图,该处理器平台900被构造来执行和/或实例化图6的机器可读指令和/或操作600和/或图7的机器可读指令和/或操作700以实现图1和/或图2的训练电路108。处理器平台900可以例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(personal digital assistant,PDA)、互联网家电、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机(例如,增强现实(augmentedreality,AR)耳机、虚拟现实(virtual reality,VR)耳机,等等)或其他可穿戴设备、或者任何其他类型的计算设备。
图示示例的处理器平台900包括处理器电路912。图示示例的处理器电路912是硬件。例如,处理器电路912可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU、DSP和/或微控制器来实现。处理器电路912可以由一个或多个基于半导体(例如,基于硅)的器件来实现。在这个示例中,处理器电路912实现了示例接口电路202、示例后续内核模型电路204、示例模型验证电路206、示例内核占用率确定电路208、和/或示例内核持续时间模型电路210。
图示示例的处理器电路912包括本地存储器913(例如,缓存、寄存器,等等)。图示示例的处理器电路912通过总线918与包括易失性存储器914和非易失性存储器916的主存储器进行通信。易失性存储器914可由同步动态随机访问存储器(Synchronous DynamicRandom Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、
Figure BDA0004004331710000421
动态随机访问存储器(/>
Figure BDA0004004331710000422
Dynamic Random AccessMemory,/>
Figure BDA0004004331710000423
)和/或任何其他类型的RAM设备实现。非易失性存储器916可以由闪存和/或任何其他期望类型的存储器设备实现。对图示示例的主存储器914、916的访问受存储器控制器917控制。
图示示例的处理器平台900还包括接口电路920。接口电路920可以根据任何类型的接口标准由硬件实现,例如以太网接口、通用串行总线(universal serial bus,USB)接口、
Figure BDA0004004331710000424
接口、近场通信(near field communication,NFC)接口、外围组件互连(Peripheral Component Interconnect,PCI)接口、和/或外围组件互连快速(Peripheral Component Interconnect Express,PCIe)接口。
在图示示例中,一个或多个输入设备922连接到接口电路920。(一个或多个)输入设备922允许用户向处理器电路912中输入数据和/或命令。(一个或多个)输入设备922可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint设备和/或语音识别系统实现。
一个或多个输出设备924也连接到图示示例的接口电路920。(一个或多个)输出设备924可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organic light emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、就地切换(in-place switching,IPS)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器实现。图示示例的接口电路920从而通常包括图形驱动器卡、图形驱动器芯片和/或图形处理器电路,比如GPU。
图示示例的接口电路920还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,来促进通过网络926与外部机器(例如,任何种类的计算设备)的数据交换。通信可通过例如以太网连接、数字订户线(digital subscriberline,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光学连接等等进行。
图示示例的处理器平台900还包括一个或多个大容量存储设备928来存储软件和/或数据。这种大容量存储设备928的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disk,RAID)系统、固态存储设备(比如闪存设备和/或SSD)、以及DVD驱动器。在这个示例中,一个或多个大容量存储设备928实现了示例历史执行踪迹存储器212。
可由图6和/或图7的机器可读指令实现的机器可执行指令932可被存储在大容量存储设备928中、易失性存储器914中、非易失性存储器916中、和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
图10是图9的处理器电路912的示例实现方式的框图。在这个示例中,图9的处理器电路912由通用微处理器电路1000实现。通用微处理器电路1000执行图6和/或图7的流程图的机器可读指令的一部分或全部,以有效地将图2的电路实例化为逻辑电路,来执行与这些机器可读指令相对应的操作(例如,与指令相对应的操作)。在一些这样的示例中,图2的电路是由微处理器电路1000的硬件电路结合指令来实例化的。例如,微处理器电路1000可以实现多核硬件电路,例如CPU、DSP、GPU、XPU,等等。虽然它可包括任意数目的示例核心1002(例如,1个核心),但此示例的微处理器电路1000是包括N个核心的多核半导体设备。微处理器电路1000的核心1002可以独立操作,或者可以合作来执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可被核心1002之一执行,或者可被核心1002中的多个核心在相同或不同时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序相对应的机器代码被分割成线程并且被核心1002中的两个或更多个并行执行。该软件程序可以对应于图6和/或图7的流程图所表示的机器可读指令和/或操作的一部分或全部。
核心1002可以通过第一示例总线1004进行通信。在一些示例中,第一总线1004可以实现通信总线,以实现与核心1002中的一个(或多个)相关联的通信。例如,第一总线1004可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(SerialPeripheral Interface,SPI)总线、PCI总线或者PCIe总线中的至少一者。额外地或者替代地,第一总线1004可以实现任何其他类型的计算或电气总线。核心1002可以通过示例接口电路1006从一个或多个外部设备获得数据、指令和/或信号。核心1002可以通过接口电路1006向一个或多个外部设备输出数据、指令和/或信号。虽然此示例的核心1002包括示例本地存储器1020(例如,可被分割成L1数据缓存和L1指令缓存的第1级(L1)缓存),但微处理器电路1000也包括可由核心共享的示例共享存储器1010(例如,第2级(L2缓存)),用于高速访问数据和/或指令。可以通过向共享存储器1010写入和/或从共享存储器1210读取来传送(例如,共享)数据和/或指令。每个核心1002的本地存储器1020和共享存储器1010可以是包括多级缓存存储器和主存储器(例如,图9的主存储器914、916)的存储设备的层次体系的一部分。通常,该层次体系中的较高级别的存储器与较低级别的存储器相比表现出更低的访问时间并且具有更小的存储容量。缓存层次体系的各种级别的变化由缓存一致性策略来管理(例如,协调)。
每个核心1002可被称为CPU、DSP、GPU,等等,或者任何其他类型的硬件电路。每个核心1002包括控制单元电路1014、算术和逻辑(arithmetic and logic,AL)电路(有时称为算术逻辑单元(arithmetic logic unit,ALU)、算术和逻辑电路,等等)1016、多个寄存器1018、L1缓存1020、以及第二示例总线1022。其他结构也可以存在。例如,每个核心1002可包括向量单元电路、单指令多数据(single instruction multiple data,SIMD)单元电路、加载/存储单元(load/store unit,LSU)电路、分支/跳跃单元电路、浮点单元(floating-point unit,FPU)电路,等等。控制单元电路1014(有时称为控制电路)包括基于半导体的电路,其被构造为控制(例如,协调)相应核心1002内的数据移动(例如,协调数据移动)。AL电路1016包括基于半导体的电路,其被构造为对相应核心1002内的数据执行一个或多个数学和/或逻辑操作。一些示例中的AL电路1016执行基于整数的操作。在其他示例中,AL电路1016也执行浮点操作。在另外一些示例中,AL电路1016可包括执行基于整数的操作的第一AL电路和执行浮点操作的第二AL电路。在一些示例中,AL电路1016可被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器1018是基于半导体的结构,用来存储数据和/或指令,例如由相应核心1002的AL电路1016执行的一个或多个操作的结果。例如,寄存器1018可包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)片段寄存器、(一个或多个)机器专用寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器,等等。寄存器1018可以如图10所示被安排为库组(bank)。可替代地,寄存器1018可以按任何其他安排、格式或结构被组织,包括分布在整个核心1002中以缩短访问时间。第二总线1022可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者。
每个核心1002和/或更概括而言微处理器电路1000可包括作为以上所示出和描述的附加和/或替代的结构。例如,可以存在一个或多个时钟电路、一个或多个电力供应源、一个或多个电力门、一个或多个缓存归属代理(cache home agent,CHA)、一个或多个聚合/通用网挡(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路。微处理器电路1000是半导体设备,它被制造为包括许多相互连接的晶体管,以在一个或多个封装中包含的一个或多个集成电路(IC)中实现上述的结构。处理器电路可包括一个或多个加速器和/或与一个或多个加速器合作。在一些示例中,加速器由逻辑电路实现,以比通用处理器更快速和/或高效地执行某些任务。加速器的示例包括ASIC和FPGA,例如本文论述的那些。GPU或其他可编程设备也可以是加速器。加速器可以在处理器电路的板上,在与处理器电路相同的芯片封装中,和/或在与处理器电路分开的一个或多个封装中。
图11是图9的处理器电路912的另一示例实现方式的框图。在这个示例中,处理器电路912由FPGA电路1100实现。例如,FPGA电路1100可用于例如执行否则可通过图10的示例微处理器电路1000执行相应的机器可读指令而执行的操作。然而,在被配置之后,FPGA电路1100用硬件来实例化机器可读指令,从而,执行操作的速度经常可以比执行相应软件的通用微处理器的执行速度更快。
更具体而言,与上文描述的图10的微处理器电路1000(它是通用设备,可以被编程来执行图6和/或图7的流程图所表示的机器可读指令的一部分或全部,但其互连和逻辑电路在被制造出来之后就固定了)相对比,图11的示例的FPGA电路1100包括互连和逻辑电路,这些互连和逻辑电路可以在制造之后以不同方式被配置和/或互连,以实例化例如由图6和/或图7的流程图所表示的机器可读指令的一部分或全部。具体地,FPGA电路1100可以被认为是逻辑门、互连和开关的阵列。开关可以被编程以改变逻辑门被互连所互连的方式,有效地形成一个或多个专用的逻辑电路(除非和直到FPGA电路1100被重编程为止)。配置的逻辑电路使得逻辑门能够以不同方式合作,以对输入电路接收的数据执行不同的操作。这些操作可以对应于图6和/或图7的流程图所表示的软件的一部分或全部。因此,FPGA电路1100可被构造为有效地将图6和/或图7的流程图的机器可读指令的一部分或全部实例化为专用逻辑电路,来以类似于ASIC的专用方式执行与这些软件指令相对应的操作。因此,FPGA电路1100执行与图6和/或图7的机器可读指令的一部分或全部相对应的操作的速度可以比通用微处理器执行这些指令的速度更快。
在图11的示例中,FPGA电路1100被构造为由最终用户通过硬件描述语言(hardware description language,HDL)(例如Verilog)进行编程(和/或一次或多次重编程)。图11的FPGA电路1100包括示例输入/输出(I/O)电路1102,以从示例配置电路1104和/或外部硬件(例如,外部硬件电路)1106获得和/或向其输出数据。例如,配置电路1104可以实现接口电路,该接口电路可以获得机器可读指令,以配置FPGA电路1100,或者其(一个或多个)部分。在一些这样的示例中,配置电路1104可以从用户、机器(例如,可以实现人工智能/机器学习(Artificial Intelligence/Machine Learning,AI/ML)模型以生成指令的硬件电路(例如,编程的或专用的电路))等等获得机器可读指令。在一些示例中,外部硬件1106可以实现图10的微处理器电路1000。FPGA电路1100还包括示例逻辑门电路1108的阵列、多个示例可配置互连1110、以及示例存储电路1112。逻辑门电路1108和互连1110可被配置为实例化与图6和/或图7的机器可读指令中的至少一些相对应的一个或多个操作,和/或其他期望的操作。图11所示的逻辑门电路1108是按组或按块制造的。每个块包括基于半导体的电气结构,这些电气结构可被配置成逻辑电路。在一些示例中,电气结构包括为逻辑电路提供基本构建块的逻辑门(例如,与门、或门、或非门,等等)。在每个逻辑门电路1108内存在可电控的开关(例如,晶体管),以便能够配置电气结构和/或逻辑门,来形成电路以执行期望的操作。逻辑门电路1108可包括其他电气结构,例如查找表(look-up table,LUT)、寄存器(例如,触发器或锁存器)、多路复用器,等等。
图示示例的互连1110是导电通路、迹线、通孔之类的,它们可包括可电控开关(例如,晶体管),这些开关的状态可通过编程(例如,使用HDL指令语言)被改变,以激活或停用一个或多个逻辑门电路1108之间的一个或多个连接,来编程期望的逻辑电路。
图示示例的存储电路1112被构造为存储由相应逻辑门执行的一个或多个操作的(一个或多个)结果。存储电路1112可以由寄存器之类的实现。在图示示例中,存储电路1112分布在逻辑门电路1108之间,以促进访问并且提高执行速度。
图11的示例FPGA电路1100还包括示例专用操作电路1114。在这个示例中,专用操作电路1114包括专用电路1116,该专用电路可被调用来实现常用功能,以避免需要在现场对这些功能进行编程。这种专用电路1116的示例包括存储器(例如,DRAM)控制器电路、PCIe控制器电路、时钟电路、收发器电路、存储器、以及乘法器-累加器电路。其他类型的专用电路也可存在。在一些示例中,FPGA电路1100还可包括示例通用可编程电路1118,例如示例CPU 1120和/或示例DSP 1122。其他通用可编程电路1118可以额外地或者替代地存在,例如GPU、XPU,等等,它们可被编程以执行其他操作。
虽然图10和图11图示了图9的处理器电路912的两个示例实现方式,但也设想了许多其他方法。例如,如上所述,现代FPGA电路可包括板载CPU,例如图11的一个或多个示例CPU 1120。因此,图9的处理器电路912可以额外地通过组合图10的示例微处理器电路1000和图11的示例FPGA电路1100来实现。在一些这样的混合示例中,由图6和/或图7的流程图表示的机器可读指令的第一部分可以由图10的一个或多个核心1002执行,由图6和/或图7的流程图表示的机器可读指令的第二部分可以由图11的FPGA电路1100执行,并且/或者由图6和/或图7的流程图表示的机器可读指令的第三部分可以由ASIC执行。应当理解,图2的一些或所有电路从而可以在相同或不同时间被实例化。一些或所有电路可以例如在同时和/或串行执行的一个或多个线程中被实例化。此外,在一些示例中,图2的一些或所有电路可以在微处理器上执行的一个或多个虚拟机和/或容器内实现。
在一些示例中,图9的处理器电路912可以在一个或多个封装中。例如,图10的微处理器电路1000和/或图11的FPGA电路1100可以在一个或多个封装中。在一些示例中,XPU可以由图9的处理器电路912实现,该处理器电路可以在一个或多个封装中。例如,XPU可包括在一个封装中的CPU、在另一个封装中的DSP、在又一个封装中的GPU、以及在再一个封装中的FPGA。
图12是示例处理器平台1200的框图,该处理器平台1200被构造来执行和/或实例化图8的机器可读指令和/或操作800以实现图1和/或图2的模型执行电路110。处理器平台1200可以例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(personal digitalassistant,PDA)、互联网家电、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机(例如,增强现实(augmented reality,AR)耳机、虚拟现实(virtual reality,VR)耳机,等等)或其他可穿戴设备、或者任何其他类型的计算设备。
图示示例的处理器平台1200包括处理器电路1212。图示示例的处理器电路1212是硬件。例如,处理器电路1212可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU、DSP和/或微控制器来实现。处理器电路1212可以由一个或多个基于半导体(例如,基于硅)的器件来实现。在这个示例中,处理器电路1212实现了示例卸载控制电路302、示例内核占用率确定电路304、示例内核持续时间模型电路306、示例后续内核模型电路308、和/或示例RL模型电路310。
图示示例的处理器电路1212包括本地存储器1213(例如,缓存、寄存器,等等)。图示示例的处理器电路1212通过总线1218与包括易失性存储器1214和非易失性存储器1216的主存储器进行通信。易失性存储器1214可由同步动态随机访问存储器(SynchronousDynamic Random Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random AccessMemory,DRAM)、
Figure BDA0004004331710000501
动态随机访问存储器(/>
Figure BDA0004004331710000502
Dynamic Random AccessMemory,/>
Figure BDA0004004331710000503
)和/或任何其他类型的RAM设备实现。非易失性存储器1216可以由闪存和/或任何其他期望类型的存储器设备实现。对图示示例的主存储器1214、1216的访问受存储器控制器1217控制。
图示示例的处理器平台1200还包括接口电路1220。接口电路1220可以根据任何类型的接口标准由硬件实现,例如以太网接口、通用串行总线(universal serial bus,USB)接口、
Figure BDA0004004331710000504
接口、近场通信(near field communication,NFC)接口、外围组件互连(Peripheral Component Interconnect,PCI)接口、和/或外围组件互连快速(Peripheral Component Interconnect Express,PCIe)接口。
在图示示例中,一个或多个输入设备1222连接到接口电路1220。(一个或多个)输入设备1222允许用户向处理器电路1212中输入数据和/或命令。(一个或多个)输入设备1222可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint设备和/或语音识别系统实现。
一个或多个输出设备1224也连接到图示示例的接口电路1220。(一个或多个)输出设备1224可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organic light emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、就地切换(in-place switching,IPS)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器实现。图示示例的接口电路1220从而通常包括图形驱动器卡、图形驱动器芯片和/或图形处理器电路,比如GPU。
图示示例的接口电路1220还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,来促进通过网络1226与外部机器(例如,任何种类的计算设备)的数据交换。通信可通过例如以太网连接、数字订户线(digitalsubscriber line,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光学连接等等进行。
图示示例的处理器平台1200还包括一个或多个大容量存储设备1228来存储软件和/或数据。这种大容量存储设备1228的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disk,RAID)系统、固态存储设备(比如闪存设备和/或SSD)、以及DVD驱动器。在这个示例中,一个或多个大容量存储设备1228实现了示例先前执行踪迹存储器312。
可由图8的机器可读指令实现的机器可执行指令1232可被存储在大容量存储设备1228中、易失性存储器1214中、非易失性存储器1216中、和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
图13是图12的处理器电路1212的示例实现方式的框图。在这个示例中,图12的处理器电路1212由通用微处理器电路1300实现。通用微处理器电路1300执行图8的流程图的机器可读指令的一部分或全部,以有效地将图3的电路实例化为逻辑电路,来执行与这些机器可读指令相对应的操作(例如,与指令相对应的操作)。在一些这样的示例中,图3的电路是由微处理器电路1300的硬件电路结合指令来实例化的。例如,微处理器电路1300可以实现多核硬件电路,例如CPU、DSP、GPU、XPU,等等。虽然它可包括任意数目的示例核心1302(例如,1个核心),但此示例的微处理器电路1300是包括N个核心的多核半导体设备。微处理器电路1300的核心1302可以独立操作,或者可以合作来执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可被核心1302之一执行,或者可被核心1302中的多个核心在相同或不同时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序相对应的机器代码被分割成线程并且被核心1302中的两个或更多个并行执行。该软件程序可以对应于图8的流程图所表示的机器可读指令和/或操作的一部分或全部。
核心1302可以通过第一示例总线1004进行通信。在一些示例中,第一总线1304可以实现通信总线,以实现与核心1302中的一个(或多个)相关联的通信。例如,第一总线1304可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(SerialPeripheral Interface,SPI)总线、PCI总线或者PCIe总线中的至少一者。额外地或者替代地,第一总线1304可以实现任何其他类型的计算或电气总线。核心1302可以通过示例接口电路1306从一个或多个外部设备获得数据、指令和/或信号。核心1302可以通过接口电路1306向一个或多个外部设备输出数据、指令和/或信号。虽然此示例的核心1302包括示例本地存储器1320(例如,可被分割成L1数据缓存和L1指令缓存的第1级(L1)缓存),但微处理器电路1300也包括可由核心共享的示例共享存储器1310(例如,第2级(L2缓存)),用于高速访问数据和/或指令。可以通过向共享存储器1310写入和/或从共享存储器1210读取来传送(例如,共享)数据和/或指令。每个核心1302的本地存储器1320和共享存储器1310可以是包括多级缓存存储器和主存储器(例如,图12的主存储器1214、1216)的存储设备的层次体系的一部分。通常,该层次体系中的较高级别的存储器与较低级别的存储器相比表现出更低的访问时间并且具有更小的存储容量。缓存层次体系的各种级别的变化由缓存一致性策略来管理(例如,协调)。
每个核心1302可被称为CPU、DSP、GPU,等等,或者任何其他类型的硬件电路。每个核心1302包括控制单元电路1314、算术和逻辑(arithmetic and logic,AL)电路(有时称为算术逻辑单元(arithmetic logic unit,ALU)、算术和逻辑电路,等等)1316、多个寄存器1318、L1缓存1320、以及第二示例总线1322。其他结构也可以存在。例如,每个核心1302可包括向量单元电路、单指令多数据(single instruction multiple data,SIMD)单元电路、加载/存储单元(load/store unit,LSU)电路、分支/跳跃单元电路、浮点单元(floating-point unit,FPU)电路,等等。控制单元电路1314(有时称为控制电路)包括基于半导体的电路,其被构造为控制(例如,协调)相应核心1302内的数据移动(例如,协调数据移动)。AL电路1316包括基于半导体的电路,其被构造为对相应核心1302内的数据执行一个或多个数学和/或逻辑操作。一些示例中的AL电路1316执行基于整数的操作。在其他示例中,AL电路1316也执行浮点操作。在另外一些示例中,AL电路1316可包括执行基于整数的操作的第一AL电路和执行浮点操作的第二AL电路。在一些示例中,AL电路1316可被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器1318是基于半导体的结构,用来存储数据和/或指令,例如由相应核心1302的AL电路1316执行的一个或多个操作的结果。例如,寄存器1318可包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)片段寄存器、(一个或多个)机器专用寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器,等等。寄存器1318可以如图13所示被安排为库组。可替代地,寄存器1318可以按任何其他安排、格式或结构被组织,包括分布在整个核心1302中以缩短访问时间。第二总线1322可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者。
每个核心1302和/或更概括而言微处理器电路1300可包括作为以上所示出和描述的附加和/或替代的结构。例如,可以存在一个或多个时钟电路、一个或多个电力供应源、一个或多个电力门、一个或多个缓存归属代理(cache home agent,CHA)、一个或多个聚合/通用网挡(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路。微处理器电路1300是半导体设备,它被制造为包括许多相互连接的晶体管,以在一个或多个封装中包含的一个或多个集成电路(IC)中实现上述的结构。处理器电路可包括一个或多个加速器和/或与一个或多个加速器合作。在一些示例中,加速器由逻辑电路实现,以比通用处理器更快速和/或高效地执行某些任务。加速器的示例包括ASIC和FPGA,例如本文论述的那些。GPU或其他可编程设备也可以是加速器。加速器可以在处理器电路的板上,在与处理器电路相同的芯片封装中,和/或在与处理器电路分开的一个或多个封装中。
图14是图12的处理器电路1212的另一示例实现方式的框图。在这个示例中,处理器电路1212由FPGA电路1400实现。例如,FPGA电路1400可用于例如执行否则可通过图13的示例微处理器电路1300执行相应的机器可读指令而执行的操作。然而,在被配置之后,FPGA电路1400用硬件来实例化机器可读指令,从而,执行操作的速度经常可以比执行相应软件的通用微处理器的执行速度更快。
更具体而言,与上文描述的图13的微处理器电路1300(它是通用设备,可以被编程来执行图8的流程图所表示的机器可读指令的一部分或全部,但其互连和逻辑电路在被制造出来之后就固定了)相比,图14的示例的FPGA电路1400包括互连和逻辑电路,这些互连和逻辑电路可以在制造之后以不同方式被配置和/或互连,以实例化例如由图8的流程图表示的机器可读指令的一部分或全部。具体地,FPGA电路1400可以被认为是逻辑门、互连和开关的阵列。开关可以被编程以改变逻辑门被互连所互连的方式,有效地形成一个或多个专用的逻辑电路(除非和直到FPGA电路1400被重编程为止)。配置的逻辑电路使得逻辑门能够以不同方式合作,以对输入电路接收的数据执行不同的操作。这些操作可以对应于图8的流程图所表示的软件的一部分或全部。因此,FPGA电路1400可被构造为有效地将图8流程图的机器可读指令的一部分或全部实例化为专用逻辑电路,来以类似于ASIC的专用方式执行与这些软件指令相对应的操作。因此,FPGA电路1400执行与图8的机器可读指令的一部分或全部相对应的操作的速度可以比通用微处理器执行这些指令的速度更快。
在图14的示例中,FPGA电路1400被构造为由最终用户通过硬件描述语言(hardware description language,HDL)(例如Verilog)进行编程(和/或一次或多次重编程)。图14的FPGA电路1400包括示例输入/输出(I/O)电路1402,以从示例配置电路1404和/或外部硬件(例如,外部硬件电路)1406获得和/或向其输出数据。例如,配置电路1404可以实现接口电路,该接口电路可以获得机器可读指令,以配置FPGA电路1400,或者其(一个或多个)部分。在一些这样的示例中,配置电路1404可以从用户、机器(例如,可以实现人工智能/机器学习(Artificial Intelligence/Machine Learning,AI/ML)模型以生成指令的硬件电路(例如,编程的或专用的电路))等等获得机器可读指令。在一些示例中,外部硬件1406可以实现图13的微处理器电路1300。FPGA电路1400还包括示例逻辑门电路1408的阵列、多个示例可配置互连1410、以及示例存储电路1412。逻辑门电路1408和互连1410可被配置为实例化与图8的机器可读指令中的至少一些相对应的一个或多个操作,和/或其他期望操作。图14所示的逻辑门电路1408是按组或按块制造的。每个块包括基于半导体的电气结构,这些电气结构可被配置成逻辑电路。在一些示例中,电气结构包括为逻辑电路提供基本构建块的逻辑门(例如,与门、或门、或非门,等等)。在每个逻辑门电路1408内存在可电控的开关(例如,晶体管),以便能够配置电气结构和/或逻辑门,来形成电路以执行期望的操作。逻辑门电路1408可包括其他电气结构,例如查找表(look-up table,LUT)、寄存器(例如,触发器或锁存器)、多路复用器,等等。
图示示例的互连1410是导电通路、迹线、通孔之类的,它们可包括可电控开关(例如,晶体管),这些开关的状态可通过编程(例如,使用HDL指令语言)被改变,以激活或停用一个或多个逻辑门电路1408之间的一个或多个连接,来编程期望的逻辑电路。
图示示例的存储电路1412被构造为存储由相应逻辑门执行的一个或多个操作的(一个或多个)结果。存储电路1412可以由寄存器之类的实现。在图示示例中,存储电路1412分布在逻辑门电路1408之间,以促进访问并且提高执行速度。
图14的示例FPGA电路1400还包括示例专用操作电路1414。在这个示例中,专用操作电路1414包括专用电路1416,该专用电路可被调用来实现常用功能,以避免需要在现场对这些功能进行编程。这种专用电路1416的示例包括存储器(例如,DRAM)控制器电路、PCIe控制器电路、时钟电路、收发器电路、存储器、以及乘法器-累加器电路。其他类型的专用电路也可存在。在一些示例中,FPGA电路1400还可包括示例通用可编程电路1418,例如示例CPU 1420和/或示例DSP 1422。其他通用可编程电路1418可以额外地或者替代地存在,例如GPU、XPU,等等,它们可被编程以执行其他操作。
虽然图13和图14图示了图12的处理器电路1212的两个示例实现方式,但也设想了许多其他方法。例如,如上所述,现代FPGA电路可包括板载CPU,例如图14的一个或多个示例CPU 1420。因此,图12的处理器电路1212可以额外地通过组合图13的示例微处理器电路1300和图14的示例FPGA电路1400来实现。在一些这样的混合示例中,由图8的流程图表示的机器可读指令的第一部分可以由图13的一个或多个核心1302执行,由图8的流程图表示的机器可读指令的第二部分可以由图14的FPGA电路1400执行,并且/或者由图8的流程图表示的机器可读指令的第三部分可以由ASIC执行。应当理解,图3的一些或所有电路从而可以在相同或不同时间被实例化。一些或所有电路可以例如在同时和/或串行执行的一个或多个线程中被实例化。此外,在一些示例中,图3的一些或所有电路可以在微处理器上执行的一个或多个虚拟机和/或容器内实现。
在一些示例中,图12的处理器电路1212可以在一个或多个封装中。例如,图13的微处理器电路1300和/或图14的FPGA电路1400可以在一个或多个封装中。在一些示例中,XPU可以由图12的处理器电路1212实现,该处理器电路可以在一个或多个封装中。例如,XPU可包括在一个封装中的CPU、在另一个封装中的DSP、在又一个封装中的GPU、以及在再一个封装中的FPGA。
在图15中图示了图示出用于向由第三方拥有和/或操作的硬件设备分发诸如图9的示例机器可读指令932和/或图12的机器可读指令1232之类的软件的示例软件分发平台1505的框图。示例软件分发平台1505可由能够存储软件并且将其传输到其他计算设备的任何计算机服务器、数据设施、云服务等等实现。第三方可以是拥有和/或操作该软件分发平台1505的实体的客户。例如,拥有和/或操作软件分发平台1505的实体可以是软件(例如图9的示例机器可读指令932和/或图12的示例机器可读指令1232)的开发者、销售者和/或许可人。第三方可以是购买和/或许可该软件以供使用和/或再销售和/或分许可的消费者、用户、零售商、OEM,等等。
在图15的图示示例中,软件分发平台1505包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令932,这些指令可对应于如上所述的图6的示例机器可读指令和/或示例操作600和/或图7的示例机器可读指令和/或示例操作700。存储设备还存储机器可读指令1232,这些指令可对应于图8的示例机器可读指令和/或示例操作。示例软件分发平台1505的一个或多个服务器与网络1510通信,该网络可对应于互联网和/或上述的示例网络104中的任何一个或多个。
在一些示例中,作为商业交易的一部分,一个或多个服务器响应将软件传输给请求方的请求。对软件的交付、销售和/或许可的支付可由软件分发平台的一个或多个服务器处理和/或由第三方支付实体来处理。这些服务器使得购买者和/或许可人能够从软件分发平台1505下载机器可读指令932和/或机器可读指令1232。例如,可与图6的示例机器可读指令和/或示例操作600和/或图7的示例机器可读指令和/或示例操作700相对应的软件可被下载到示例处理器平台900,该平台将执行机器可读指令932以实现训练电路108。此外,例如,可与图8的示例机器可读指令和/或示例操作800相对应的软件可被下载到示例处理器平台1200,该平台要执行机器可读指令1232以实现模型执行电路110。在一些示例中,软件分发平台1505的一个或多个服务器周期性地提供、传输和/或强制更新软件(例如,图9的示例机器可读指令932和/或图12的示例机器可读指令1232),以确保改进、补丁、更新等等被分发并且在终端用户设备处被应用于软件。
从上述内容将会明白,已公开了生成要被卸载到加速器电路的命令列表的示例系统、方法、装置和制品。本文公开的示例包括用于生成用于加速器电路(例如,GPU)卸载的命令列表的学习到的内核调度试探。本文公开的示例创建了一种调度试探,该试探比现有的朴素蛮力技术更优化,用于为加速器电路(例如,GPU)上的执行队列创建卸载的内核的命令列表。本文公开的示例系统、方法、装置和制品改善了加速器电路(例如,GPU)利用率,并且减少了异构系统中的总运行时。所公开的系统、方法、装置和制品通过减少创建命令列表的计算成本来改善使用计算设备的效率。另外,本文公开的示例改善了异构硬件计算资源的不充分利用。因此,本文公开的示例减少了运行时,并且改善了在异构系统上执行的端到端应用的性能。所公开的系统、方法、装置和制品因此针对诸如计算机或其他电子和/或机械设备之类的机器的操作的一个或多个改进。
本文公开了生成要被卸载到加速器电路的命令列表的示例方法、装置、系统和制品。进一步的示例及其组合包括以下示例:
示例1包括一种生成要被卸载到加速器电路的命令列表的装置,该装置包括卸载控制电路,用来获得要被卸载到所述加速器电路的第一内核的第一元组,以及处理器电路,该处理器电路包括以下各项中的一个或多个:中央处理器单元(CPU)、图形处理器单元(GPU)、或者数字信号处理器(DSP)中的至少一者,所述CPU、所述GPU或者所述DSP中的至少一者具有:控制电路,用来控制数据在所述处理器电路内的移动,算术和逻辑电路,用来执行与指令相对应的一个或多个第一操作,以及一个或多个寄存器,用来存储所述一个或多个第一操作的第一结果,所述指令在所述装置中,现场可编程门阵列(FPGA)电路,所述FPGA电路包括第一逻辑门电路、多个可配置互连、以及存储电路,所述第一逻辑门电路和互连执行一个或多个第二操作,所述存储电路存储所述一个或多个第二操作的第二结果,或者专用集成电路(ASIC),包括第二逻辑门电路,用来执行一个或多个第三操作,所述处理器电路执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,来实例化以下项:内核持续时间模型电路,用来基于所述第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间,后续内核模型电路,用来基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的第二元组和所述第二内核的依赖性,以及强化学习模型电路,用来基于(a)所述第一内核的执行持续时间、(b)所述第二内核的第二元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
示例2包括如示例1所述的装置,其中,所述处理器电路执行所述第一操作、所述第二操作、或者所述第三操作中的至少一者,来实例化内核占用率确定电路,以基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
示例3包括如示例1或2中的任一项所述的装置,其中,所述先前内核的提交时间是第一提交时间,并且所述第一元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
示例4包括如示例1、2或3中的任一项所述的装置,其中,所述处理器电路执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,来实例化所述强化学习(RL)模型电路,用来基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述RL模型。
示例5包括如示例1、2、3或4中的任一项所述的装置,其中,所述处理器电路执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,来实例化所述内核持续时间模型电路,用来确定所述第一内核的实际执行持续时间和来自所述内核持续时间模型电路的所述第一内核的预测执行持续时间之间的差异,并且基于所述差异来调整所述内核持续时间模型。
示例6包括如示例1、2、3、4或5中的任一项所述的装置,其中,所述处理器电路执行所述第一操作、所述第二操作或者所述第三操作中的至少一者,来实例化所述后续内核模型电路,用来确定所述第二内核的实际元组和来自所述后续内核模型电路的所述第二内核的预测第二元组之间的第一差异,确定所述第二内核的实际依赖性和来自所述后续内核模型电路的所述第二内核的预测依赖性之间的第二差异,并且基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
示例7包括如示例1、2、3、4、5或6中的任一项所述的装置,其中,所述GPU是第一GPU,并且所述加速器电路包括第二GPU。
示例8包括一种非暂态计算机可读介质,该介质包括机器可读指令,所述指令当被执行时,使得处理器电路利用内核持续时间模型,基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间,所述第一内核要被卸载到加速器电路,利用后续内核模型,基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性,并且利用强化学习模型,基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
示例9包括如示例8所述的非暂态计算机可读介质,其中,所述指令使得所述处理器电路基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
示例10包括如示例8或9中的任一项所述的非暂态计算机可读介质,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
示例11包括如示例8、9或10中的任一项所述的非暂态计算机可读介质,其中,所述指令使得所述处理器电路基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述强化学习模型。
示例12包括如示例8、9、10或11中的任一项所述的非暂态计算机可读介质,其中,所述指令使得所述处理器电路确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异,并且基于所述差异来调整所述内核持续时间模型。
示例13包括如示例8、9、10、11或12中的任一项所述的非暂态计算机可读介质,其中,所述指令使得所述处理器电路确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异,确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异,并且基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
示例14包括如示例8、9、10、11、12或13中的任一项所述的非暂态计算机可读介质,其中,所述加速器电路包括图形处理器单元。
示例15包括一种生成要被卸载到加速器电路的命令列表的装置,该装置包括至少一个存储器,指令,处理器电路,用来执行所述指令以至少利用内核持续时间模型,基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间,利用后续内核模型,基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性,并且利用强化学习模型,基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
示例16包括如示例15所述的装置,其中,所述处理器电路基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
示例17包括如示例15或16中的任一项所述的装置,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
示例18包括如示例15、16或17中的任一项所述的装置,其中,所述处理器电路基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述强化学习模型。
示例19包括如示例15、16、17或18中的任一项所述的装置,其中,所述处理器电路确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异,并且基于所述差异来调整所述内核持续时间模型。
示例20包括如示例15、16、17、18或19中的任一项所述的装置,其中,所述处理器电路确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异,确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异,并且基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
示例21包括如示例15、16、17、18、19或20中的任一项所述的装置,其中,所述加速器电路包括图形处理器单元。
示例22包括一种用于生成要被卸载到加速器电路的命令列表的方法,该方法包括利用内核持续时间模型,基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间,利用后续内核模型,基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性,并且利用强化学习模型,基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
示例23包括如示例22所述的方法,还包括基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
示例24包括如示例22或23中的任一项所述的方法,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
示例25包括如示例22、23或24中的任一项所述的方法,还包括基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述强化学习模型。
示例26包括如示例22、23、24或25中的任一项所述的方法,还包括确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异,并且基于所述差异来调整所述内核持续时间模型。
示例27包括如示例22、23、24、25或26中的任一项所述的方法,还包括确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异,确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异,并且基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
示例28包括如示例22、23、24、25、26或27中的任一项所述的方法,其中,所述加速器电路包括图形处理器单元。
示例29包括一种生成要被卸载到加速器电路的命令列表的设备,该设备包括用于执行内核持续时间模型的装置,用来基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间,用于执行后续内核模型的装置,用来基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性,以及用于执行强化学习模型的装置,用来基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
示例30包括如示例29所述的设备,还包括用于确定内核占用率的装置,用来基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
示例31包括如示例29或30中的任一项所述的设备,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
示例32包括如示例29、30或31中的任一项所述的设备,其中,用于执行强化学习(RL)模型的装置基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述RL模型。
示例33包括如示例29、30、31或32中的任一项所述的设备,其中,所述用于执行内核持续时间模型的装置用来:确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异,并且基于所述差异来调整所述内核持续时间模型。
示例34包括如示例29、30、31、32或33中的任一项所述的设备,其中,所述用于执行后续内核模型的装置用来:确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异,确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异,并且基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
示例35包括如示例29、30、31、32、33或34中的任一项所述的设备,其中,所述加速器电路包括图形处理器单元。
特此通过这种引用将所附权利要求并入到该具体实施方式部分中。虽然本文公开了某些示例系统、方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有系统、方法、装置和制品。

Claims (22)

1.一种生成要被卸载到加速器电路的命令列表的装置,该装置包括:
至少一个存储器;
指令;
处理器电路,用来执行所述指令以至少:
利用内核持续时间模型,基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间;
利用后续内核模型,基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性;并且
利用强化学习模型,基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
2.如权利要求1所述的装置,其中,所述处理器电路基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
3.如权利要求1所述的装置,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
4.如权利要求1所述的装置,其中,所述处理器电路基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述强化学习模型。
5.如权利要求1所述的装置,其中,所述处理器电路:
确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异;并且
基于所述差异来调整所述内核持续时间模型。
6.如权利要求1所述的装置,其中,所述处理器电路:
确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异;
确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异;并且
基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
7.如权利要求1、2、3、4、5或6中任一项所述的装置,其中,所述加速器电路包括图形处理器单元。
8.一种用于生成要被卸载到加速器电路的命令列表的方法,该方法包括:
利用内核持续时间模型,基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间;
利用后续内核模型,基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性;并且
利用强化学习模型,基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
9.如权利要求8所述的方法,还包括基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
10.如权利要求8所述的方法,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
11.如权利要求8所述的方法,还包括基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述强化学习模型。
12.如权利要求8所述的方法,还包括:
确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异;并且
基于所述差异来调整所述内核持续时间模型。
13.如权利要求8所述的方法,还包括:
确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异;
确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异;并且
基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
14.如权利要求8、9、10、11、12或13任一项所述的方法,其中,所述加速器电路包括图形处理器单元。
15.一种生成要被卸载到加速器电路的命令列表的设备,该设备包括:
用于执行内核持续时间模型的装置,用来基于第一内核的第一源位置、所述第一内核的第一名称、所述第一内核的第一参量的第一属性、或者所述第一内核的占用率中的至少一者,来预测所述第一内核的执行持续时间;
用于执行后续内核模型的装置,用来基于先前内核的第二源位置、所述先前内核的第二名称、所述先前内核的第二参量的第二属性、或者所述先前内核的提交时间中的至少一者,来预测第二内核的元组和所述第二内核的依赖性;以及
用于执行强化学习模型的装置,用来基于(a)所述第一内核的执行持续时间、(b)所述第二内核的元组、或者(c)所述第二内核的依赖性中的至少一者,来确定是否要将所述第一内核捆绑到命令列表中。
16.如权利要求15所述的设备,还包括用于确定内核占用率的装置,用来基于所述第一内核的第一参量的第一属性来确定所述第一内核的占用率。
17.如权利要求15所述的设备,其中,所述第二内核的元组是第一元组,所述先前内核的提交时间是第一提交时间,并且所述第一内核的第二元组包括:(a)所述第一内核的第一参量的第一属性、(b)所述第一内核的第二提交时间、以及(c)所述第一内核的第一源位置或者所述第一内核的第一名称中的至少一者。
18.如权利要求15所述的设备,其中,用于执行强化学习(RL)模型的装置基于与将所述第一内核捆绑到所述命令列表中相关联的时间成本来调整所述RL模型。
19.如权利要求15所述的设备,其中,所述用于执行内核持续时间模型的装置用来:
确定所述第一内核的实际执行持续时间和所述第一内核的预测执行持续时间之间的差异;并且
基于所述差异来调整所述内核持续时间模型。
20.如权利要求15所述的设备,其中,所述用于执行后续内核模型的装置用来:
确定所述第二内核的实际元组和所述第二内核的预测元组之间的第一差异;
确定所述第二内核的实际依赖性和所述第二内核的预测依赖性之间的第二差异;并且
基于所述第一差异或所述第二差异中的至少一者来调整所述后续内核模型。
21.如权利要求15、16、17、18、19或20中任一项所述的设备,其中,所述加速器电路包括图形处理器单元。
22.一种机器可读介质,包括代码,所述代码当被执行时,使得机器执行如权利要求8、9、10、11、12、13或14中任一项所述的方法。
CN202211625729.9A 2021-12-22 2022-12-02 生成要被卸载到加速器电路的命令列表的方法和装置 Pending CN116382884A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/559,556 2021-12-22
US17/559,556 US12001382B2 (en) 2021-12-22 Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry

Publications (1)

Publication Number Publication Date
CN116382884A true CN116382884A (zh) 2023-07-04

Family

ID=81079202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211625729.9A Pending CN116382884A (zh) 2021-12-22 2022-12-02 生成要被卸载到加速器电路的命令列表的方法和装置

Country Status (2)

Country Link
CN (1) CN116382884A (zh)
DE (1) DE102022130788A1 (zh)

Also Published As

Publication number Publication date
DE102022130788A1 (de) 2023-06-22
US20220114137A1 (en) 2022-04-14

Similar Documents

Publication Publication Date Title
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
CN116266229A (zh) 确定用于软件漏洞检测和纠正的细化上下文的方法和装置
EP4109345A1 (en) Methods and apparatus to load data within a machine learning accelerator
US20220114495A1 (en) Apparatus, articles of manufacture, and methods for composable machine learning compute nodes
CN117581201A (zh) 增加乘法与累加(mac)操作的数据重用的方法、装置和制品
CN115410023A (zh) 为神经网络分类器实现并行体系结构的方法和装置
CN116339704A (zh) 用于机器学习引导的编译器优化的方法和装置
US20220114451A1 (en) Methods and apparatus for data enhanced automated model generation
CN116266119A (zh) 生成依赖于使用的代码嵌入的方法、装置和制品
US12001382B2 (en) Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry
US20220114137A1 (en) Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
WO2024065826A1 (en) Accelerate deep learning with inter-iteration scheduling
US20230244525A1 (en) Methods and apparatus for an xpu-aware dynamic compute scheduling framework
US20230325185A1 (en) Methods and apparatus to accelerate matrix operations using direct memory access
EP4109344A1 (en) Methods, systems, articles of manufacture and apparatus to improve algorithmic solver performance
US20220116284A1 (en) Methods and apparatus for dynamic xpu hardware-aware deep learning model management
US20220335285A1 (en) Methods, apparatus, and articles of manufacture to improve performance of an artificial intelligence based model on datasets having different distributions
US20230100152A1 (en) Federated learning accelerators and related methods
US20230136365A1 (en) Methods and apparatus to allocate accelerator usage
WO2023155136A1 (en) Dynamic triplet convolution for convolutional neural networks
US20240169094A1 (en) Mitigating private data leakage in a federated learning system
US20220012062A1 (en) Methods and apparatus to increase boot performance
US20220114136A1 (en) Methods, systems, and apparatus to reconfigure a computer

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication