CN111611125A - 用于改善高性能计算应用的性能数据收集的方法与设备 - Google Patents

用于改善高性能计算应用的性能数据收集的方法与设备 Download PDF

Info

Publication number
CN111611125A
CN111611125A CN202010084130.3A CN202010084130A CN111611125A CN 111611125 A CN111611125 A CN 111611125A CN 202010084130 A CN202010084130 A CN 202010084130A CN 111611125 A CN111611125 A CN 111611125A
Authority
CN
China
Prior art keywords
memory address
memory
data
address location
write
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
CN202010084130.3A
Other languages
English (en)
Inventor
D·奥佐加
M·瓦西-乌尔·拉赫曼
J·迪南
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
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111611125A publication Critical patent/CN111611125A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/103Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

公开了用于改善性能数据收集的方法、设备、系统和制品。示例设备包括:源节点的性能数据比较器,用于以轮询频率从主机结构接口收集源节点的应用的性能数据;接口,用于将写回指令传送至主机结构接口,写回指令用于使得数据被写入源节点的存储器的存储器地址位置以触发唤醒模式;和频率选择器,该频率选择器用于:将轮询频率启动为针对睡眠模式的第一轮询频率;并且响应于存储器地址位置中的、标识唤醒模式的数据将轮询频率增加到第二轮询频率。

Description

用于改善高性能计算应用的性能数据收集的方法与设备
技术领域
本公开总体上涉及处理器,并且更具体地,涉及用于改善高性能计算应用的性能数据收集的方法和设备。
背景技术
高性能计算(HPC)用于各种类型的技术以执行复杂的任务。在HPC系统中,可以以多个群集配置各个计算机(例如,节点)。每个计算机可以具有能够运行多个进程的多个核。HPC利用群集中的多个节点一起来解决比单个计算机可以轻松解决的问题更大的问题。HPC系统基于来自HPC应用的指令来运行。HPC应用包括要由HPC系统的节点执行的指令。大多数HPC应用包括在交替的时间执行的计算阶段和通信阶段。在计算阶段期间执行对应于变量的初始化、预处理数据、解析数据、语义分析、词法分析等的指令。在通信阶段期间执行对应于与HPC系统中其他节点的通信的指令。性能分析工具可供HPC软件开发人员使用以收集对应于HPC应用的通信操作的性能数据,以改善应用的性能、标识错误、标识问题等。
附图说明
图1是高性能计算系统的节点中的示例中央处理单元的示例实现方式的框图。
图1A是可以由图1的示例收集器生成的写回指令的示例。
图2是图1的示例收集器的示例实现方式的框图。
图3是图1的示例触发操作电路的示例实现方式的框图。
图4是表示可以被执行以实现图1和/或图2的收集器的示例机器可读指令的流程图。
图5是表示可以被执行以实现图1和/或图3的主机结构接口的示例机器可读指令的流程图。
图6是被构造以执行图4中的指令以实现图1和/或图2中的示例收集器的示例处理器平台的框图。
图7是被构造以执行图5中的指令以实现图1和/或图3中的示例收集器的示例处理器平台的框图。
这些图并未按比例绘制。一般来说,在整个附图和所附书面描述中将使用相同的附图标记来指代相同或相似的部件。
当标识多个元素或组件时,本文使用描述符“第一”、“第二”、“第三”等。除非基于它们的使用上下文另有规定或理解,否则此类描述符并非旨在赋予优先权或时间顺序的任何含义,而仅仅是为了便于理解所公开的示例而分别指代多个元件或组件的标签。在一些示例中,描述符“第一”可以用于指代详细描述中的元素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来引用相同的元素。在此类情况下,应当理解,此类描述符仅用于易于引用多个元素或组件。
具体实施方式
高性能计算(HPC)系统包括多个处理节点,这些节点一起工作以基于HPC应用的指令执行一个或多个任务。如本文所使用的,“节点”被定义为作为HPC集群的一部分的个体计算机(例如,服务、个人计算机、虚拟机等)。节点可以包括一个或多个CPU。每个CPU可以包含一个或多个处理器核。HPC系统的每个节点可以展现出计算阶段(例如,用于本地执行计算)和通信阶段(例如,用于将数据传送至HPC系统中的一个或多个其他节点)。为了实现节点之间的通信操作,HPC节点包括一个或多个基于硬件的主机结构接口(HFI)(例如,网络接口卡(NIC)),这些主机结构接口(HFI)被设计用于将(例如广播)数据传送到HPC系统中的一个或多个其他节点以(例如,使用远程直接存储器访问(RDMA)操作)将数据从第一节点写入一个或多个其他节点的存储器。在已知的系统中,第一节点将指令传送至HFI,以使得将数据立即地传送至(多个)其他节点或在某个(某些)事件发生之后将数据传送至(多个)其他节点。HFI包括用于跟踪特定事件何时发生的硬件事件计数器。因此,当来自第一节点的CPU的指令对应于触发操作(例如,在某个事件发生后传送数据的指令)时,HFI可以监测对应的事件计数器的计数以标识何时将由指令所标识的数据从第一节点的CPU传送至HPC系统中一个或多个其他节点。
已知的HPC系统的一个或多个节点中的一些CPU利用基于软件的收集器或收集器线程来监测在节点中CPU的一个或多个主执行器线程上运行的应用的性能。以此方式,收集器线程可以向用户和/或开发人员提供有用的信息,以改善(例如,优化)应用。收集器可以收集性能数据(例如,从硬件性能计数器拉取数据)以测量和/或改善(例如,优化)一个或多个通信操作的进程。收集器、或其他组件可以处理性能数据,以标识对应于通信操作的任何潜在问题。收集器可以通过在执行时轮询硬件性能计数器来连续测量通信操作的性能。但是,此类轮询会消耗节点中CPU的资源,这对于HPC系统来说是很有价值的商品。因此,此类轮询可能会使整个HPC应用的性能降级。尽管收集器执行的轮询对于测量通信操作的进展很重要(也许可以证明总体性能降级的程度),但如果在应用的计算阶段期间启用了轮询,则可能会使总体性能降级。
一些已知的技术通过响应于应用的运行时行为进行采样或轮询来减少性能数据收集。如果在阈值时间段内没有观察到改变,则可以增加轮询间隔,并且/或者在发生感兴趣的事件时可以减少轮询间隔。此类技术在线调整采样频率以增加(例如,最大化)样本的信息内容,并减少(例如,最小化)低信息样本的收集,以减少与性能监测相关联的开销。然而,此类技术可能会错过在程序阶段开始和/或结束时自发发生的关键事件。另外,由于最佳值取决于各种复杂特性(例如,系统配置、可用资源、应用的动态行为等),因此很难调整轮询参数。另外,此类技术限制了收集器或CPU的其他工具在收集期间可以采取的动作(例如,工具可能无法分配内存、执行捕获样本所需的输入/输出(I/O)操作等)。
本文公开的示例通过利用主机结构接口(HFI)来改善HPC应用的性能数据收集。例如,尽管HFI通常被构造为将数据转发给HPC系统中的其他节点(例如,通过将数据写入其他节点的存储器以用于集体通信操作),但是本文公开的示例指示HFI执行触发放置操作(例如,写入数据操作)以将数据写回至转发数据的节点(即,包括收集器的节点)的存储器,而不是HFI中的另一节点。触发放置操作响应于与将触发收集器唤醒的通信阶段事件相对应的一个或多个条件而发生。以此方式,收集器可以在计算阶段期间进入睡眠模式以减少或停止轮询(例如,以节省CPU资源),同时主机结构接口使用硬件事件计数器跟踪一个或多个事件。触发放置操作使写入操作返回到由收集器指定的存储器地址位置处发起触发放置操作的节点的存储器(例如,用户存储器空间)。以此方式,当发生一个或多个指定用于监测的事件时,主机结构接口标识条件并将其写入由收集器指定的节点的存储器地址位置。在睡眠模式下,收集器监测存储器地址位置以标识主机结构接口何时写入存储器地址位置,从而指示条件已满足(例如,已发生一个或多个触发事件)。响应于收集器标识存储器地址位置中的数据已被更新,收集器唤醒并增加轮询频率并且/或者重新开始轮询过程。因为相比于直接轮询事件计数器,监测一个或多个存储器地址使用更少的CPU资源,所以本文公开的示例显著减少了执行HPC应用的性能数据收集所需的CPU资源量。本文公开的示例使用直接存储器访问(DMA)操作将数据写入源节点的存储器。如本文所使用的,DMA操作对应于将数据写入源节点的存储器的源节点的HFI,并且RDMA操作对应于将数据写入与源节点不同的目的地节点的存储器的源节点的HFI。
图1是高性能计算设备的示例节点100的示例实现方式的框图。HFI 102的另一个名称是网络接口卡(NIC)。在图1的示例中,示例节点100包括用于执行示例应用104的示例CPU 103。应用104是高性能计算应用,该应用104包括示例主执行器线程106和一个或多个收集器线程108。图1的CPU 103还包括示例存储器109。示例用户存储器空间110包括在存储器109中。该示例的CPU 103还包括一个或多个级别的高速缓存120和一个或多个示例处理器核122。尽管分开示出,但是高速缓存中的一些或全部可以位于核122中对应的核中。
图1的示例节点100包括主机结构接口(HFI)102。示例HFI 102包括示例触发操作电路112、示例命令处理器114、示例通信引擎116、和示例事件计数器118。尽管图1图示了具有通信引擎116的事件计数器118,但是事件计数器118可以位于通信引擎116的内部或外部。
图1的示例节点100是作为包括其他节点的HPC群集的一部分的单独的计算设备。在本文所公开的示例中,图1的节点100可以被称为“源节点”,因为它发起要由HFI执行以将源节点上的收集器从睡眠状态唤醒的存储器写回指令。示例节点100包括示例CPU 103和示例存储器109。在一些示例中,节点100可以包括多个CPU。在一些示例中,可以存在经由示例HFI 102与节点100(例如,源节点)通信的多个其他节点。在此类示例中,多个节点可以一起工作以处理数据和/或执行任务以解决比单个计算机可以有效解决的问题更大的问题。
图1的示例CPU 103可以是嵌入式系统、现场可编程门阵列、共享存储器控制器、片上网络、联网系统和/或包括(例如,基于半导体的)硬件处理器、存储器、和/或高速缓存的任何其他电路。示例CPU 103利用处理器资源(例如,示例高速缓存120、(多个)示例处理器核122的(多个)寄存器和/或逻辑电路)来执行指令以实现示例应用104。
图1的示例应用104可以是展现一个或多个计算阶段和/或一个或多个通信阶段以结合其他节点来执行任务的任何HPC应用中的一些或全部。例如,应用104可以包括用于以下操作的指令:在本地执行特定任务和/或经由示例HFI 102将数据传送至一个或多个其他节点和/或经由HFI 102访问从一个或多个节点获得的数据。来自(多个)其他节点的数据可以经由HFI 102被写入存储器,并且在存储器处由节点100访问。
图1的应用的示例主执行器线程106是能够执行异步任务和/或自主管理多个其他线程的软件线程和/或软件对象。示例主执行器线程106可以使用示例CPU 103的处理器资源(例如,示例高速缓存120和/或示例处理器核122)来编译、转换、和/或执行示例应用104的指令。示例主执行器线程106利用用户存储器空间110来存储数据。如上文所述,应用104展现了(多个)计算阶段和(多个)通信阶段。主执行器线程106在通信阶段的一些或全部期间与示例主机结构接口102对接,以将数据传送至一个或多个其他节点。另外,示例主执行线程106可以经由示例用户存储器空间110从一个或多个其他节点获得数据(例如,当HFI102从其他节点接收到用于将数据写入可由主执行器节点访问的用户存储器空间110的指令时)。
图1的示例收集器108是执行用于分析示例应用104的性能的指令的软件线程。例如,收集器108利用示例CPU 103的处理器资源(例如,示例高速缓存120和/或(多个)示例处理器核122)来收集性能数据以测量应用104的通信操作的进展(例如,当应用104利用HFI102传送和/或接收来自其他节点的数据时)。例如,收集器108可以轮询并处理来自示例事件计数器118的事件计数,以分析应用104的通信操作的性能。该示例的收集器108利用一个或多个处理器核、一个或多个寄存器和/或一个或多个其他CPU资源(例如,示例高速缓存120和/或(多个)示例处理器核122)来执行通信操作从而通过轮询事件计数器118来测量通信操作。在高通信活动的时段期间,收集器108可以记录对应于可用于生成报告和/或改善(例如,优化)应用104的通信性能的多个未决操作、数据传输速率等的信息。然而,在计算阶段期间轮询硬件性能计数器(例如,HFI 102的事件计数器118)会消耗显著的CPU资源。因此,当通信操作未被执行时(例如,在计算阶段期间),示例收集器108进入睡眠模式以减少(例如,防止)轮询,而不是连续地监测。为了发起睡眠模式,源节点100的示例收集器108将一个或多个指令(例如,写回指令)传送至示例HFI 102以跟踪对应于通信操作的一个或多个事件,并且响应于发生事件的阈值数量,将值写入可由源节点100的收集器108访问的示例用户存储器空间110的存储器地址位置。图1A图示了示例写回指令。如图1A所示,(多个)写回指令包括:(1)对应于要跟踪的(多个)事件的信息,(2)(多个)阈值唤醒计数(例如,用于触发写回的执行的应该发生的、被跟踪的(多个)事件的数量)和(3)一个或多个放置和/或原子操作指令。在一些示例中,写回指令对应于将数据写入同一存储器地址。因此,在此类示例中,写回指令可以不包括存储器地址(例如,因为预定义的存储器地址总是相同)。在一些示例中,放置操作始终是相同的,并且不包括在写回指令中(例如,放置操作始终对应于相同数量的事件和/或相同的事件组合)。放置操作指令可以包括与要写入用户存储器空间110的数据和/或要将数据写入的位置(例如,存储器地址位置)相对应的信息。当放置操作对应于原子更新时,放置操作指令可以包括对应于多个写回的信息,以递增在同一位置的值(例如,从而在唤醒之前允许收集器等待直到存储器地址位置的计数达到阈值)。事件的阈值数量(例如,(多个)事件的数量和/或类型)可以是用户定义的和/或可以由收集器108选择。在一些示例中,(多个)事件的(多个)类型可对应于通信事件。以此方式,在睡眠模式期间,示例收集器108监测存储器地址位置(例如,一个存储器位置)以标识HFI 102何时将数据写入该存储器地址位置,而不是轮询和处理示例事件计数器118的事件计数,从而消耗处理器资源(例如,源节点的示例高速缓存120和/或(多个)示例处理器核122)。HFI的通信引擎116由写回指令进行编程以仅在已发生了阈值数量的事件时才写入该存储器位置,如下文进一步所述。
相比于轮询来自示例事件计数器118的性能数据,监测特定存储器地址位置的改变利用示例CPU 103的更少的处理器资源。因此,收集器的睡眠模式通过允许将CPU资源(例如核)断电来节省功率。以此方式,CPU可以通过允许其他核以更高的频率运行来改善性能。另外,HFI 102不利用源节点的示例CPU 103的处理器资源。因此,收集器108(其在源节点的CPU 103上执行)可以进入睡眠模式并基于来自HFI 102的触发(例如,数据被写入存储器地址位置)来唤醒,由此利用源节点的示例CPU 103的较少处理器资源,同时在轮询对于维持应用性能是必要的情形下通过轮询来维持总体应用性能检测,并且在轮询对于维持应用性能数据不是必要的情况下防止轮询。由示例收集器108生成的写回指令可以包括与触发放置操作的执行的事件计数器118的(多个)计数相对应的(多个)阈值计数。然而,因为事件计数器118可以连续地操作,所以收集器108可能需要在接收(多个)写回指令时标识事件计数器118的起始(例如,当前)事件计数,以便能够确定何时已经发生了写回指令中标识的多个事件。因此,收集器108将唤醒计数加到当前事件计数以生成阈值计数(例如,阈值计数的满足触发放置操作以被执行)。例如,如果放置操作对应于响应于特定事件发生5次而将数据写入存储器地址位置,则收集器108读取对应于该特定事件的计数器的事件计数(例如100)。在此类示例中,收集器108将5(例如,写回指令中指定的唤醒计数)与100(例如,事件计数器的当前事件计数)相加以生成阈值计数105。下文结合图2进一步描述示例收集器108的示例实现方式。
图1的示例存储器是示例CPU 103的存储器。然而,它可替代地是CPU外部的但可由CPU访问的存储器(例如,片外存储器)。存储器109中的一些可用于读取和/或写入数据。例如,示例存储器109包括示例用户存储器空间110,该示例用户存储器空间110被保留以供应用104使用(例如,读取和/或写入)和/或该示例用户存储器空间110可由应用104访问以使用(例如,读取和/或写入)。用户存储器空间包括用于存储可被写入另一组件和/或可由另一组件读取的数据的存储空间。例如,通信引擎116可以执行直接存储器访问(DMA)和/或远程DMA(RDMA)操作,以将数据写入用户存储器空间110的一个或多个存储器地址位置(例如,存储器地址位置)。
图1的示例的HFI 102促进HPC系统的节点之间的数据的通信。当示例HFI 102从示例收集器108接收(多个)写回指令时,HFI 102处理该(多个)写回指令以(A)标识放置/原子操作及其自变量(例如,要被写入的数据和要被写入的存储器的位置),以及(B)触发条件(例如,要监测的一个或多个事件和/或计数器,和/或需要发生以触发放置操作的执行的(多个)对应事件的数量)。HFI 102将放置操作在本地存储器和/或寄存器中排队,并且监测对应于(多个)写回指令中指定的(多个)事件和/或(多个)计数的(多个)事件计数器。HFI102监测事件计数器,以确定(多个)事件计数何时达到对应于写回指令中指定的(多个)事件的数量(例如,(多个)唤醒计数)的阈值。响应于HFI 102确定(多个)事件计数满足(多个)阈值,放置操作被传送至命令处理器以使放置操作被命令处理器执行。放置操作的执行包括HFI 102的通信引擎116执行DMA/RDMA操作以将数据写入源节点100的用户存储器空间110的存储器地址位置(例如,放置操作中指定的位置)。以此方式,收集器108可以在不需要直接轮询事件计数器的情况下,标识何时已经发生了对应于写回指令的事件的数量。此类事件可以对应于到另一个节点的出站操作的完成、来自另一个节点的消息到达等。
示例HFI 102包括用于接收来自示例收集器108的(多个)写回指令,并用于基于该(多个)写回指令来跟踪一个或多个示例事件计数器118的触发操作电路112。基于写回指令,示例触发操作电路112响应于事件计数器118中的一个或多个的事件计数达到阈值计数而执行动作(例如,传送经排队的放置操作)。例如,收集器108可以将包括操作(例如,触发放置操作、触发原子操作、和/或执行一个或多个此类操作的指令)的(多个)写回指令传送至触发操作电路112。(多个)写回指令进一步指示该操作(例如,读、写等)要响应于一个或多个事件而发生。例如,(多个)写回指令可以标识触发放置操作,该触发放置操作指示和/或使HFI 102的通信引擎116响应于触发事件(例如,多于由事件计数器118所测得的、发生阈值数的(多个)事件)而将数据写入特定的存储器地址位置。触发原子操作在不允许其他中间指令的情况下指示和/或使HFI 102的通信引擎116写入和/或更新特定的存储器地址位置。触发操作电路112使放置操作(例如,对应于存储器地址位置的存储器写入操作)排队(例如,存储在寄存器中),并且监测示例事件计数器118直到事件的阈值数量发生。例如,当触发操作电路112确定已经发生了多于阈值数的特定事件时,经排队的放置操作被释放,从而使触发操作被执行(例如,通过将操作从触发操作电路112的队列中传输至命令处理器114的核来被执行)。
如上文所述,(多个)写回指令可以基于写回指令的(多个)阈值唤醒计数来标识在使得触发操作被执行之前应该发生的事件的数量(例如,唤醒计数)。触发操作电路112监测事件计数器,直到事件计数满足(例如,等于、达到、超过等)阈值计数(例如105)。响应于满足阈值计数,触发操作电路112将经排队的放置操作启动(例如,传送)至示例命令处理器114以被执行以使通信引擎将数据写入源节点处的存储器。在一些示例中,触发操作电路直接设置阈值,而不是将唤醒计数(例如5)加到当前事件计数(例如100)中。
图1的示例的示例命令处理器114是包括逻辑电路的(例如,基于半导体的)硬件处理器,该逻辑电路可以被编程成用于响应于来自示例触发操作电路112的信号和/或数据而执行操作(例如,算术操作、布尔逻辑操作等)。如上文所述,示例触发操作电路112响应于发生阈值数的特定事件,将在触发操作电路112中排队的操作传送到命令处理器114。一旦从触发操作电路112的队列中获得操作,命令处理器114就执行(例如,在其核中的一者上的)触发操作。例如,如果触发操作是放置操作,则命令处理器114处理放置操作以确定要写入的数据和/或存储器位置,并指示通信引擎116(例如,使用直接存储器访问(DMA)或远程DMA(RDMA)操作)对(例如,在触发操作中标识的)特定存储器地址位置执行写入命令。在此类示例中,命令处理器114指示通信引擎116执行DMA或RDMA操作以将数据写入放置操作中指定的存储器地址位置。如上文所述,常规系统利用RDMA操作来写入不同节点的存储器地址。例如,常规地,当源节点(例如,节点100)利用HFI 102时,源节点(例如,节点100)利用HFI 102执行RDMA操作以写入不同节点(例如,不是发出写回指令的源节点100)的存储器地址。然而,本文公开的示例利用DMA操作来写回到发起写回指令的节点100(例如,源节点)的示例用户存储器空间110,以触发源节点100上的示例收集器108的唤醒。然后,收集器108可以开始监测。例如,源节点(例如,节点100)指示HFI 102利用DMA操作来写入源节点的用户存储器空间,以表示源节点的收集器应该唤醒。选择此事件计数,以使收集器的唤醒发生在计算阶段的结束和通信阶段的开始(或恰好在开始之前)。以此方式,收集器108能够在通信阶段期间轮询性能数据,并且在计算阶段期间不进行轮询,从而节省源节点的资源(例如,示例高速缓存120和/或示例处理器核122)并且避免在计算阶段期间加重这些资源的负担。
图1的示例通信引擎116管理示例事件计数器118。例如,示例通信引擎116响应于在HFI内(例如,在通信引擎116内)发生的事件来递增事件计数器118。例如,所监测的事件可以是到另一个节点的出站操作的完成、来自另一个节点的消息到达等。另外,示例通信引擎116传送指令(例如,DMA操作)以使HFI 102的通信引擎116写入节点100的存储器(例如,示例用户存储器空间110)。这些写回操作作为(例如,用于唤醒收集器的)重置指令。示例通信引擎116还可以写入不同节点的存储器(例如,以将数据传输到一个或多个其他节点)。
图1的示例事件计数器118可用于监测宽范围的事件中的任何或全部(例如,输出操作的完成、消息到达、时钟周期、从其他节点传送或接收的字节数等)。事件计数器118可以是寄存器、HFI 102上的存储器、内容可寻址存储器(CAM)结构等。被监测的事件可以由命令处理器114和/或通信引擎116执行。通信引擎116保留用于特定事件的特定事件计数器118。例如,通信引擎116可以针对出站操作的完成递增事件计数器118中的第一计数器,针对消息的到达等递增事件计数器118中的第二计数器。以此方式,触发操作电路112可以基于不同事件计数器118的事件计数来跟踪何时发生不同事件。此外,可以将不同的事件触发阈值应用于不同的计数器(例如,5个出站操作相对于10个消息到达)。而且,仅当满足2个或更多个事件(例如,2个或更多个出站操作以及10个或更多个消息到达)时,才可以发生到源节点的写回。另外或替代地,当满足两个或更多个事件时(例如,当2个或更多个出站操作或10或更多个消息到达时),才可以发生到源节点的示例写回。另外或替代地,可以基于以上的任意组合(例如,(事件A和事件B)或(事件C))来发生到源节点的写回。
图2是图1的收集器108的示例实现方式的框图。图2的示例收集器108包括示例片上接口200、示例性能数据比较器201、示例指令生成器202、示例加法器204、示例频率选择器205、示例存储器监测器206、和示例存储器接口208。
图2的示例片上接口200与图1的示例HFI 102通信。例如,当示例收集器108是苏醒的,示例片上接口200轮询示例事件计数器118以生成示例应用104的通信性能数据。为了发起睡眠模式,示例片上接口200传送写回指令(例如,包括触发放置操作或触发原子操作,触发放置操作或触发原子操作包括写回地址、要被监测的(多个)事件和对应于触发的(多个)事件的(多个)数量),该写回指令使得示例HFI 102的通信引擎116响应于一个或多个事件发生一个或多个阈值数而写入指定的存储器地址位置。如上文所述,在收集器的睡眠模式期间,示例片上接口200停止轮询事件计数器118或降低轮询频率以节省处理器资源。
图2的示例性能数据比较器201比较与示例事件计数器118的事件计数相对应的性能数据。例如,性能数据比较器201可以确定当事件计数器118在阈值持续时间内保持稳定(例如,没有对其进行递增)时,示例收集器108应当进入睡眠模式。阈值持续时间可以基于用户和/或制造商偏好被预设和/或是可定制的。在一些示例中,应用104或另一组件可以指示示例收集器108进入睡眠模式。
响应于确定睡眠模式应该被发起,图2的示例指令生成器202生成对应于收集器108应该如何且何时唤醒的写回指令。例如,指令生成器202生成一个或多个写回指令,诸如图1A的实例,该写回指令指示HFI 102的通信引擎116在阈值数量的事件发生之后写入示例用户存储器空间110的特定存储器地址。因此,指令生成器202生成(多个)写回指令以包括响应于一个或多个事件而被启动的触发操作、与触发唤醒之前一个或多个事件可以发生的次数相对应的(多个)事件计数器的(多个)阈值计数、和/或供HFI的通信引擎116写入的存储器地址位置,从而发出唤醒信号。事件、事件数量和/或存储器地址可以基于用户和/或制造商偏好来被预设和/或是可定制的。示例指令生成器202使用示例加法器205确定用于触发唤醒的(多个)事件计数的(多个)阈值计数。
图2的示例加法器204通过将一个或多个唤醒计数(例如,与触发唤醒所需发生的事件数量相对应的(多个)唤醒计数)加到对应事件计数器的事件计数以生成(多个)阈值计数来确定(多个)阈值计数。例如,指令生成器202可以指示片上接口200标识对应于要被跟踪的一个或多个事件的一个或多个事件计数器的(多个)当前计数。如上文所述,因为事件计数器118跟踪可变数字,因此为了使触发操作电路112确定何时已经满足了写回指令中指定的唤醒计数,该触发操作电路112需要具有针对事件计数器何时将对应于指定的唤醒计数的基线。因此,示例指令生成器202确定对应于预定义事件的事件计数器118的当前事件计数,并且加法器206将该当前事件计数加到对应的唤醒计数。例如,如果唤醒协议对应于与消息到达相关联的唤醒计数“3”,则加法器206将对应于消息到达的事件计数器的事件计数(例如100)加到对应的唤醒计数(例如3)以生成阈值计数(例如103)。
为了进入睡眠模式,图2的示例频率选择器205将轮询频率(例如,收集器108针对性能数据而轮询事件计数器118的频率)从第一频率(例如,对应于苏醒模式频率)调整(例如,减小)到第二频率(例如,对应于睡眠模式频率)。第二频率比第一频率慢,从而节省了示例CPU 103的处理器资源。在一些示例中,第二频率是对应于无轮询的零频率。响应于唤醒触发(例如,示例存储器监测器206确定已经写入所分配的存储器),示例频率选择器205将频率从第二频率增加回到第一频率或比第二频率快的任何其他频率。例如,频率选择器205可以包括电路(例如,(多个)逻辑门、(多个)开关,诸如经由适当的电路(例如电阻器电容器、和/或电感器)从电源正确地偏置的一个或多个晶体管、和/或(多个)多路复用器),以在睡眠模式的频率与苏醒模式的频率之间进行切换。
一旦置于睡眠模式,在已经满足(多个)事件的阈值数量以触发收集器108的唤醒时,示例存储器监测器206监测写回指令中包括的HFI将写入的所选择的存储器地址位置。示例存储器监测器206监测存储在所选择的存储器地址位置中的值,直到该值改变为止。例如,存储器监测器206执行读取操作以(例如,使用示例存储器接口208)访问存储在示例用户存储器空间110的所选择的存储器地址中的数据。响应于值改变(例如,存储在所选择的存储器地址中的数据的读取值与所选择的存储器地址处的初始存储的值不同以及/或者等于由存储器监测器206中的比较器等确定的预定值(例如,逻辑1)),收集器108唤醒(例如,频率选择器205恢复图1的示例事件计数器118的轮询协议和/或增加轮询协议的轮询频率)。在一些示例中,在睡眠模式被发起之前或当睡眠模式正被发起时,存储器监测器206将所选择的存储器地址位置中的数据设置(例如写入)为预设值(例如“0”)。以此方式,存储器监测器206确保被写入所选择的存储器地址位置中以触发唤醒的值与在所选择的存储器地址位置处的初始存储的值不同。
图2的示例存储器接口208访问存储在示例用户存储器空间110中的数据,并将被访问的数据传送至示例存储器监测器206,以确定何时唤醒示例收集器108。另外,在一些示例中,存储器接口208(例如,基于来自存储器监测器206的指令)将数据写入用户存储器空间110的所选择的存储器地址的位置。
图3是图1的触发操作电路112的示例实现方式的框图。图3的示例触发操作电路112包括示例通信接口300、示例指令队列302、示例阈值寄存器308、和示例比较器310。
图3的示例通信接口300从图1的节点100的示例收集器108中获得一个或多个写回指令。如上文所述,(多个)写回指令包括一个或多个操作(例如,(多个)放置操作),该一个或多个操作包括:存储器位置和/或要写入该存储器位置的数据、要监测的一个或多个事件和/或事件计数、和/或要触发放置操作至图1的示例命令处理器114的传输的(多个)阈值计数。另外,响应于来自示例比较器310的触发(例如,对应于当一个或多个事件的数量发生时),通信接口300传送对应于所获得的写回指令的一个或多个放置操作并将其存储在示例指令队列302中。另外,示例通信接口300将(多个)阈值计数存储在(多个)示例阈值计数寄存器308中。
图3的示例指令队列302存储所获得的(多个)写回指令中指定的一个或多个放置操作。在一些示例中,队列302将响应于来自比较器310的触发而释放(例如,弹出、移除等)一个或多个经排队的放置操作。使用示例通信接口300将被释放的放置操作传送至命令处理器114。在一些示例中,如果写回指令对应于多个事件(即,对应于两个或多个事件已经发生时的复合触发),则比较器310可以在全部多个事件已经发生时输出单个触发。作为响应,指令队列302可以弹出所存储的放置操作(其可以是一个或多个指令)的全部以传送至命令处理器114。在其他示例中,如果写回指令对应于多个事件,并且放置操作对应于不同事件,则比较器310可以针对不同的事件输出不同的触发,并且响应于触发中的一个触发,指令队列302可以弹出对应于特定事件的放置操作以传送至命令处理器114。例如,可以存在一个或多个逻辑门和/或其他逻辑电路,该一个或多个逻辑门和/或其他逻辑电路被构建、被编程和/或被固定以确定何时发生多个事件和/或事件的复杂组合来触发来一个或多个放置操作自队列302的释放。在一些示例中,存在对应于多个比较器310的多个指令队列302,该多个比较器310与其他逻辑电路(例如,逻辑门、寄存器、触发器等)和/或被编程用于执行触发操作的处理器相结合,使得(多个)特定比较对应于对应的(多个)队列302的(多个)特定操作的启动。
图3的示例比较器310访问对应于阈值寄存器308的(多个)事件(例如,写回指令中指定的事件)的(多个)事件计数器118的(多个)事件计数,并将(多个)事件计数与存储在阈值寄存器308中的对应的(多个)阈值计数进行比较。当(多个)写回指令对应于一个事件时,比较器310将在一个事件的事件计数满足(例如,大于或等于)对应的阈值计数时将触发信号输出至示例指令队列302,从而触发将(多个)经排队的放置操作传输至示例命令处理器114以被执行。在一些示例中,比较器310包括多个比较器和/或针对写回指令中指定的多个事件执行多个比较。在此类示例中,比较器310可以在对应的事件计数的全部满足对应的阈值计数的全部时输出单个触发,或者比较器310可以在对应的事件计数满足对应的阈值计数时输出对应于特定事件的不同触发。
虽然图2图示了实现图1的示例收集器108的示例方式,但图2所图示的元件、进程和/或设备中的一个或多个可以被组合、被拆分、被重新设置、被省略、被消除和/或以任何方式被实现。进一步地,图1或图2的示例片上接口200、示例性能数据比较器201、示例指令生成器202、示例加法器204、示例频率选择器205、示例存储器监测器206、示例存储器接口208和/或更一般地,示例收集器108可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,图1和/或图2的示例事件计数器118、示例片上接口200、示例性能数据比较器201、示例指令生成器202、示例加法器204、示例频率选择器118、示例存储器监测器206、示例存储器接口208和/或更一般地,示例收集器108中的任何一个可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)图形处理单元(GPU)、(多个)数字信号处理器(DSP)、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)和/或(多个)现场可编程逻辑器件(FPLD)来实现。
虽然图3中图示了实现图1的示例触发操作电路112的示例方式,但是图3所示的元件、过程和/或设备中的一个或多个可以被组合、拆分、重新布置、省略、消除和/或以任何其他方式被实现。进一步地,图1和/或图3的示例通信接口300、示例指令队列302、示例阈值寄存器308、示例比较器310和/或更一般地,示例触发操作电路112和/或图1的示例命令处理器114、示例通信引擎116、示例事件计数器118和/或更一般地,示例HFI 102可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,图1或图3的示例通信接口300、示例指令队列302、示例阈值寄存器308、示例比较器310,和/或更一般地,示例触发操作电路112和/或图1的示例命令处理器114、示例通信引擎116、示例事件计数器118,和/或更一般地,示例HFI 102可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)图形处理单元(GPU)、(多个)数字信号处理器(DSP)、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)和/或(多个)现场可编程逻辑器件(FPLD)来实现。
当阅读涵盖纯软件和/或固件实现方式的本专利的装置或系统权利要求中的任一项时,图1和/或图2的示例事件计数器118、示例片上接口200、示例性能数据比较器201、示例指令生成器202、示例频率选择器205、示例存储器监测器206、示例存储器接口208、示例收集器108和/或图1的示例触发操作电路112、示例命令处理器114、示例通信引擎116、示例事件计数器118、示例HFI 102和/或图3的示例通信接口300、示例指令队列302、示例阈值寄存器308、示例比较器310中的至少一个由此被明确地限定为包括包含软件和/或固件的非暂态计算机可读存储设备或存储盘(诸如存储器、数字多功能盘(DVD)、紧凑盘(CD)、蓝光盘等等)。更进一步说,图2的示例收集器108、图1、图2和/或图3的示例触发操作电路112可包括除图1、图2和/或图3所图示的元件、过程和/或设备之外的一个或多个元件、过程和/或设备或作为图1、图2和/或图3所图示的元件、过程和/或设备的替代的一个或多个元件、过程和/或设备,和/或可包括所图示的元件、过程和/或设备中的任何元件、过程和设备或全部元件、过程和设备中的多于一个。如本文使用的,短语“通信”包括其各种变体,包含直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接物理(例如,有线)通信和/或持续通信,而是附加地包括以周期性间隔、预定间隔、非周期性间隔、和/或一次性事件来进行的选择性通信。
在图4至图5中示出了表示用于实现图1和/或图2和/或图3的示例收集器108和/或示例HFI 102的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是由计算机处理器执行的一个或多个可执行程序或可执行程序的(多个)部分,计算机处理器诸如结合图6和/或图7在下文中所讨论的示例处理器平台600、700中示出的处理器612、712。虽然程序能具体化在存储于与处理器612、712关联的诸如CD-ROM、软盘、硬驱动器、DVD、蓝光盘或存储器之类的非暂态计算机可读存储介质上的软件中,但是全部程序和/或其部分可替代地由除处理器612、712之外的设备执行,和/或具体化在固件或专用硬件中。此外,虽然参考图4至图5中图示的流程图描述了示例程序,但是可替代地使用实现图1和/或图2中的示例收集器108和/或示例HFI 102的许多其他方法。例如,可改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,任何或所有框可以由被构造成在不执行软件或固件的情况下执行对应的操作的一个或多个硬件电路(例如,分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现。
本文中描述的机器可读指令可以以压缩格式、加密格式、分段格式、封装格式等中的一种或多种来存储。本文描述的机器可读指令可以作为可用于创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新分配等中的一项或多项,以使得它们由计算设备和/或其他机器直接可读取和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密并存储在单独的计算设备上,其中,这些部分在解密、解压缩和组合时形成实现如本文所述的程序的一组可执行指令。在另一示例中,机器可读指令可以以它们可被计算机读取的状态存储,但是需要添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用编程接口(API)等,以便在特定的计算设备或其他设备上执行指令。在另一个示例中,在可整体或部分地执行机器可读指令和/或对应的(多个)程序之前,可能需要配置机器可读指令(例如,存储的设置、数据输入、记录的网络地址等)。因此,所公开的机器可读指令和/或对应的(多个)程序旨在包含此类机器可读指令和/或(多个)程序,而不管机器可读指令和/或(多个)程序在存储时或以其他方式处于静态或在传输中时的特定格式或状态如何。
如上文所提及,可使用存储于非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图4至图5的示例过程,非暂态计算机和/或机器可读介质诸如,硬盘驱动器、闪存、只读存储器、紧凑盘、数字多功能盘、高速缓存、随机存取存储器和/或在其中存储信息达任何时长(例如,达延长的时间段、永久地、达简短的实例、用于临时缓冲和/或用于对信息进行高速缓存)的任何其他存储设备或存储盘。如本文中所使用,术语非暂态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。
“包含”和“包括”(及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求将任何形式的“包含”或“包括”(例如,包括、包含、具有等)用作前言或用于任何种类的权利要求叙述内时,要理解的是,附加的要素、项等可以存在而不超出对应权利要求或叙述的范围。如本文所使用的,当短语“至少”被用作例如与权利要求同步使用的过渡术语时是和术语“包含”和“包括”一样的开放式的。当例如以诸如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中的任何一个的实现。
图4是表示示例机器可读指令的示例流程图400,该示例机器可读指令可在示例CPU 103中执行以实现图1和/或图2的示例收集器108以动态地调整性能轮询协议以节省CPU资源(例如,示例高速缓存120和/或(多个)示例处理器核122)。尽管结合图1和/或图2的示例收集器108来描述图4的流程图400,但是可以替代地使用(多个)其他类型的(多个)收集器和/或(多个)其他类型的(多个)处理器。
在框402处,示例性能数据比较器201(例如,经由示例片上接口200)收集示例应用104的性能数据。例如,片上接口200从示例HFI 102的示例事件计数器118中轮询与示例HFI102处发生的通信事件相对应的计数值。因为应用104对应于导致通信事件的指令,所以跟踪事件计数对应于示例应用104的性能。在框404处,示例性能数据比较器201处理所收集的性能数据。示例性能数据比较器201处理所收集的性能数据以确定是否存在低活动(例如,低通信活动)时段。例如,在批量同步HPC应用中周期性地发生低活动时段。如果在持续时间内发生少于阈值数量的通信操作,则示例性能数据比较器201可以确定存在低活动时段。
在框406处,示例性能数据比较器201确定示例收集器108是否应该进入睡眠模式。例如,如果性能数据比较器201基于当前和/或先前经轮询的数据来确定存在低活动时段,则性能数据比较器201确定应该进入睡眠模式。另外或替代地,示例性能数据比较器201可以基于来自示例应用104和/或另一组件的触发信号来确定应该进入睡眠模式。
如果示例性能数据比较器201确定收集器108不应该进入睡眠模式(框406:否),则过程返回到框402,并且示例收集器108继续以对应于唤醒模式的频率轮询性能数据。如果示例性能数据比较器201确定收集器108应进入睡眠模式(框406:是),则示例指令生成器202确定哪些和/或多少个事件对应于唤醒触发(框407)。例如,指令生成器202可以响应于三个消息到达HFI 102、HFI102已经传送了五个消息、和/或HFI 102已经接收了100个字节来确定应该唤醒收集器108。唤醒参数可基于用户和/或制造商偏好。
在框408处,示例指令生成器202(例如,经由示例片上接口200)获得对应于要跟踪的事件的(多个)事件计数器118的(多个)事件计数。例如,如果要跟踪的事件对应于接收到的消息的数量,并且对应的事件计数器当前处于100的计数,则示例指令生成器202将计数标识为100。在框409处,示例加法器204通过将唤醒计数加到对应的事件计数器118的所标识的计数来确定(多个)阈值计数。例如,如果唤醒计数为5,并且对应的事件计数器118的当前计数为100,则示例加法器204确定对应的计数器的阈值计数为105。
在框410处,示例指令生成器202分配示例用户存储器空间110中的(多个)地址以对应于(多个)触发操作。如上文所述,触发操作将指示示例HFI 102响应于发生的所选择的事件的数量而写入用户存储器空间110中的所选择的地址。因此,示例指令生成器202分配存储器空间以能够确定HFI 102何时已写入存储器,从而触发收集器108的唤醒。在框412处,示例存储器监测器206读取存储在(多个)所分配的地址处的初始数据。在一些示例中,存储器监测器206可以(例如,使用示例存储器接口208)将预设的初始值写入(多个)所分配的地址,以确保HFI不写入与初始数据相同的数据。
在框414处,示例片上接口200将写回指令(例如,包括(多个)触发操作、(多个)被分配的存储器地址位置、和唤醒参数(例如,用于触发唤醒的事件类型和/或事件计数器、(多个)阈值计数等)的一个或多个数据分组)传送至示例HFI 102。在框416处,频率选择器205通过将轮询频率从第一频率(例如,苏醒轮询频率)降低到第二频率(例如,睡眠轮询频率)来进入睡眠模式。如上文所述,减少或以其他方式停止性能轮询节省了CPU资源。
在框418处,示例存储器监测器206通过指示存储器接口208读取存储在所分配的地址处的值来读取(多个)所分配的地址处的当前数据。在框420处,示例存储器监测器206确定当前数据(例如,在框418处从(多个)所分配的存储器地址读取的数据)是否与初始数据(例如,在框412处从(多个)所分配的存储器地址读取的数据)相同。如上文所述,如果与触发操作相关联的(多个)事件计数器达到阈值,则示例HFI 102将数据写入用户存储器空间110的所分配的存储器地址。因此,与初始数据不同的当前数据对应于针对收集器108的唤醒触发。
如果示例存储器监测器206确定当前数据与初始数据相同(框420:是),则处理返回到框418以继续监测(多个)所分配的存储器地址中的数据,并且收集器108保持在睡眠模式。如果示例存储器监测器206确定当前数据与初始数据不相同(例如,当前数据与初始数据不同)(框420:否),则示例频率选择器205通过将轮询频率从第二频率增加到第一频率和/或比第二频率快的任何其他频率来唤醒收集器108(框422),并且该过程返回到框402以收集性能数据,从而唤醒收集器108。
图5是表示示例机器可读指令的示例流程图500,该示例机器可读指令可以由图1的示例HFI 102的示例实现来执行以基于来自图1的示例收集器108的指令来执行触发操作。尽管结合图1的示例HFI 102来描述图5的流程图500,但是可以替代地使用(多个)其他类型的(多个)HFI、和/或(多个)其他类型的(多个)处理器。
在框502处,示例触发操作电路112的通信接口300从收集器108获得对应于触发放置操作的写回指令。如上文所述,示例收集器108可以在收集器108进入睡眠模式时传送对应于触发放置操作的写回指令。在框504处,基于所获得的写回指令,一旦(多个)唤醒计数被满足,示例触发操作电路112就确定要被跟踪的(多个)事件、(多个)阈值计数(例如,在执行触发操作以唤醒收集器108之前必须发生的一个或多个事件计数的计数)、和/或供写入的(多个)对应的存储器地址位置。
在框506处,示例触发操作电路112的示例指令队列302存储所获得的(多个)数据分组中指定的(多个)触发操作。如上文所述,指令队列302存储(多个)触发操作(例如,(多个)触发放置操作或(多个)触发原子操作),直到对应于所确定的(多个)事件的(多个)事件计数器118的(多个)计数满足(多个)唤醒计数为止。在框510处,示例阈值寄存器308存储写回指令中所指定的(多个)阈值计数。
在框512处,示例通信引擎116确定是否已经发生了对应于示例事件计数器118中的一者的事件。如果示例通信引擎116确定尚未发生对应于示例事件计数器118中的一者的事件(框512:否),则示例通信引擎116继续监测事件。如果示例通信引擎116确定发生了对应于示例事件计数器118中的一者的事件(框512:是),则示例通信引擎116递增对应的事件计数器118(框514)。
在框516处,触发操作电路112的示例比较器310确定(多个)对应的事件计数器118(例如,对应于在所获得的数据分组中标识的事件的(多个)事件计数器)的当前计数是否达到触发阈值。如果比较器310确定(多个)对应事件计数器118的当前计数不满足(多个)阈值计数(框516:否),则过程返回到框512,直到对应事件计数器118中的一个或多个满足(多个)阈值计数为止。如果比较器310确定(多个)对应事件计数器118的当前计数满足(多个)阈值计数(框516:是),则示例触发操作电路112通过弹出(多个)经排队的放置操作并将该(多个)放置操作传送至示例命令处理器114来启动(多个)示例被排队的操作(框518)。在框520处,示例命令处理器114通过指示示例通信引擎116(例如,使用DMA/RDMA操作)将数据写入示例用户存储器空间110的被分配的(多个)存储器地址(例如,在所获得的写回指令的放置操作中指定的(多个)存储器地址)来执行触发操作。
图6是被构造以执行图4中的指令以实现图1和/或图2中的示例收集器108的示例处理器平台600的框图。处理器平台600可以是例如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、诸如iPadTM之类的平板电脑)或任何其他类型的计算设备。
所图示示例的处理器平台600包括处理器612。所图示示例的处理器612是硬件。例如,处理器612可以由来自任何所需要的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器实现。硬件处理器可以是基于半导体的(例如,硅基)器件。在该示例中,处理器实现示例片上接口200、示例性能数据比较器201、示例指令生成器202、示例频率选择器205、示例存储器监测器206、和示例存储器接口208。
所图示示例的处理器612包括本地存储器613(例如,高速缓存)。在一些示例中,本地存储器613实现了图1的示例高速缓存120。所图示示例的处理器612经由总线618与包括易失性存储器614和非易失性存储器616的主存储器进行通信。易失性存储器614可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、
Figure BDA0002381418300000221
动态随机存取存储器
Figure BDA0002381418300000222
和/或任何其他类型的随机存取存储器设备实现。非易失性存储器616可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器614、主存储器616的访问。在一些示例中,主存储器614、616和/或示例本地存储器613实现图1的示例存储器109。
所图示示例的处理器平台600还包括接口电路620。接口电路620可由任何类型的接口标准实现,诸如以太网接口、通用串行总线(USB)、
Figure BDA0002381418300000223
Figure BDA0002381418300000224
接口、近场通信(NFC)接口和/或PCI快速接口。
在所图示示例中,一个或多个输入设备622被连接至接口电路620。(多个)输入设备622准许用户将数据和/或命令输入至处理器612中。(多个)输入设备可以由例如音频传感器、麦克风、相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标和/或语音识别系统实现。
一个或多个输出设备624也被连接至所图示示例的接口电路620。输出设备624可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、面内切换(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路620典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所示出的示例的接口电路620还包括诸如发射机、接收机、收发机、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络626与外部机器(例如,任何种类的计算设备)交换数据。通信可经由例如以太网连接、数字订户线路(DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。在图6的示例中,接口电路620实现示例片上接口200。
所图示示例的处理器平台600还包括用于存储软件和/或数据的一个或多个大容量存储设备628。此类大容量存储设备628的示例包括软盘驱动器、硬盘驱动器、光盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
图6的机器可执行指令632可以被存储在大容量存储设备628中,存储在易失性存储器614中,存储在非易失性存储器616中,和/或存储在诸如CD或DVD的可移除非暂态计算机可读存储介质上。
图7是被构造用于执行图5中的指令以实现图1的示例HFI 102的示例处理器平台700的框图。处理器平台700可以是例如任何类型的计算设备。
所图示示例的处理器平台700包括处理器712。所图示示例的处理器712是硬件。例如,处理器712可以由来自任何所需要的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器实现。硬件处理器可以是基于半导体的(例如,硅基)器件。在该示例中,处理器实现示例触发操作电路112、示例命令处理器114、示例通信引擎116、和示例事件计数器118。
所图示示例的处理器712包括本地存储器713(例如,高速缓存)。所图示示例的处理器712经由总线718与包括易失性存储器714和非易失性存储器716的主存储器进行通信。易失性存储器714可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、
Figure BDA0002381418300000241
动态随机存取存储器
Figure BDA0002381418300000242
和/或任何其他类型的随机存取存储器设备实现。非易失性存储器716可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器714、主存储器716的访问。
所图示示例的处理器平台700还包括接口电路720。接口电路720可由任何类型的接口标准实现,诸如以太网接口、通用串行总线(USB)、
Figure BDA0002381418300000243
Figure BDA0002381418300000244
接口、近场通信(NFC)接口和/或PCI快速接口。
在所图示示例中,一个或多个输入设备722被连接至接口电路720。(多个)输入设备722准许用户将数据和/或命令输入至处理器712中。(多个)输入设备可以由例如音频传感器、麦克风、相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标和/或语音识别系统实现。
一个或多个输出设备724也被连接至所图示示例的接口电路720。输出设备724可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、面内切换(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路720典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所示出的示例的接口电路720还包括诸如发射机、接收机、收发机、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络726与外部机器(例如,任何种类的计算设备)交换数据。通信可经由例如以太网连接、数字订户线路(DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。
所图示示例的处理器平台700还包括用于存储软件和/或数据的一个或多个大容量存储设备728。此类大容量存储设备728的示例包括软盘驱动器、硬盘驱动器、光盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
图5的机器可执行指令732可以被存储在大容量存储设备728中,存储在易失性存储器714中,存储在非易失性存储器716中,和/或存储在诸如CD或DVD的可移除非暂态计算机可读存储介质上。
本文公开了与主机结构接口协作来收集性能数据收集的示例方法、设备、系统、和制品。进一步的示例和其组合包括以下内容:示例1包括与主机结构接口协作来收集性能数据收集的设备,该设备包括源节点的性能数据比较器,用于以轮询频率从主机结构接口收集源节点的应用的性能数据;接口,用于将写回指令传送至主机结构接口,写回指令用于使得数据被写入源节点的存储器的存储器地址位置以触发唤醒模式;和频率选择器,该频率选择器用于将轮询频率启动为针对睡眠模式的第一轮询频率,并且响应于存储器地址位置中的、标识唤醒模式的数据将轮询频率增加到第二轮询频率。
示例2包括示例1的设备,进一步包括用于生成对应于事件的阈值数量的写回指令的指令生成器。
示例3包括示例2的设备,其中写回指令用于使得主机结构接口响应于事件的阈值数量来将数据写入存储器地址。
示例4包括示例1的设备,其中,存储器可由应用访问。
示例5包括示例1的设备,其中,第一轮询频率为零。
示例6包括示例1的设备,进一步包括用于监测存储器地址位置改变处的数据的存储器监测器。
示例7包括示例6的设备,其中,存储器监测器用于通过以下操作来监测存储器地址位置处的数据:读取存储器地址位置的初始值;读取存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例8包括示例6的设备,其中,存储器监测器用于通过以下操作来监测存储器地址位置:将初始值写入存储器的存储器地址位置;读取存储在存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例9包括一种非暂态计算机可读存储介质,包括指令,当这些指令被执行时,使得处理器至少执行以下操作:以轮询频率收集源节点的应用的性能数据;将写回指令传送至主机结构接口,该写回指令用于使得数据被写入源节点的存储器的存储器地址位置以触发唤醒模式;将轮询频率启动为针对睡眠模式的第一轮询频率;以及响应于存储器地址位置中的、标识唤醒模式的数据将轮询频率增加到第二轮询频率。
示例10包括示例9的非暂态计算机可读存储介质,其中,所述指令使得处理器生成对应于阈值数量的事件的写回指令。
示例11包括示例10的非暂态计算机可读存储介质,其中,写回指令用于使得主机结构接口响应于事件的阈值数量来将数据写入存储器地址位置。
示例12包括示例9的非暂态计算机可读存储介质,其中,该存储器可由应用访问。
示例13包括示例9的非暂态计算机可读存储介质,其中,第一轮询频率为零。
示例14包括示例9的非暂态计算机可读存储介质,其中,所述指令使得处理器监测存储器地址位置中的数据。
示例15包括示例14的非暂态计算机可读存储介质,其中,所述指令使得处理器通过以下操作来监测存储器地址位置处的数据:读取存储器地址位置的初始值;读取存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例16包括示例14的非暂态计算机可读存储介质,其中,所述指令使得处理器通过以下操作来监测存储器地址位置:将初始值写入存储器的存储器地址位置;读取存储在存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例17包括源节点,该源节点包括处理器、存储器、和收集器,该收集器用于:收集对应于要由处理器执行的高性能计算应用的性能数据;将写回指令传送至主机结构接口,该写回指令使得主机结构接口发起对源节点的存储器的存储器地址位置的更新;进入睡眠模式;以及响应于对该存储器地址位置的更新而从睡眠模式中唤醒。
示例18包括示例17的源节点,其中,写回指令用于响应于事件的阈值数量而使得对存储器的存储器地址位置进行写操作。
示例19包括示例17的源节点,其中,收集器用于监测存储器地址位置处的数据的改变。
示例20包括示例19的源节点,其中,监测器用于通过以下操作来监测存储器地址位置处的数据:读取存储器地址位置的初始值;读取存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例21包括示例19的源节点,其中,监测器用于通过以下操作来监测存储器地址位置:将初始值写入存储器的存储器地址位置;读取存储在存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例22包括与主机结构接口协作来收集性能数据收集的设备,该设备包括:用于以轮询频率从主机结构接口收集源节点的应用的性能数据的装置;用于将写回指令传送至主机结构接口的装置,该写回指令用于使得数据被写入源节点的存储器的存储器地址位置以触发唤醒模式;以及用于将轮询频率启动为针对睡眠模式的第一轮询频率,并且响应于存储器地址位置中的、标识唤醒模式的数据将轮询频率增加到第二轮询频率的装置。
示例23包括示例22的设备,进一步包括用于生成对应于事件的阈值数量的写回指令的装置。
示例24包括示例23的设备,其中写回指令用于使得主机结构接口响应于事件的阈值数量来将数据写入存储器地址。
示例25包括示例22的设备,其中存储器可由应用访问。
示例26包括示例22的设备,其中第一轮询频率为零。
示例27包括示例22的设备,进一步包括用于监测存储器地址位置改变处的数据的装置。
示例28包括示例27的设备,其中,用于监测的装置用于通过以下操作来监测存储器地址位置处的数据:读取存储器地址位置的初始值;读取存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
示例29包括示例27的设备,其中,用于监测的装置用于通过以下操作来监测存储器地址位置的装置:将初始值写入存储器的存储器地址位置;读取存储在存储器地址位置的当前值;以及在初始值与当前值不同时标识存储器地址位置中的数据已改变。
从前述内容将理解,本文已经公开了示例方法、设备和制品,以改善高性能计算应用中的性能数据收集。公开的方法、设备和制品通过利用HFI将收集器从睡眠模式唤醒的可能能力来改善HPC应用的性能数据收集。例如,尽管HFI通常被构造和/或编程为通过将数据写入其他节点的存储器中而将数据转发到HPC系统中的其他节点以用于集体通信操作,但是本文公开的示例利用节点的收集器来指示HFI在包括睡眠收集器并请求写回的节点(与HFI中的另一个节点相反)的存储器中发起触发放置操作(例如,写入数据操作)。在睡眠模式下,收集器监测指定的存储器地址位置以标识何时将触发值写入该存储器地址位置,从而对应于条件被满足(例如,发生的一个或多个事件)。响应于收集器标识存储器地址位置中的数据已被更新,收集器随后唤醒并增加轮询频率或重新开始轮询过程。因为相比于直接轮询事件计数器,监测一个或多个存储器地址使用更少的CPU资源,所以本文公开的示例显著减少了执行HPC应用性能数据收集所需的CPU资源量。所公开的方法、装置和制品相应地涉及计算机功能的一个或多个改善。
尽管本文中已公开了某些示例方法、装置和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部方法、装置和制品。

Claims (25)

1.一种用于与主机结构接口协作收集性能数据收集的设备,所述设备包括:
源节点的性能数据比较器,用于以轮询频率从所述主机结构接口收集所述源节点的应用的所述性能数据;
接口,用于将写回指令传送至所述主机结构接口,所述写回指令用于使得数据被写入所述源节点的存储器的存储器地址位置以触发唤醒模式;以及
频率选择器,用于:
将所述轮询频率启动为针对睡眠模式的第一轮询频率;并且
响应于所述存储器地址位置中的、标识所述唤醒模式的数据将所述轮询频率增加到第二轮询频率。
2.如权利要求1所述的设备,进一步包括用于生成对应于事件的阈值数量的写回指令的指令生成器。
3.如权利要求2所述的设备,其特征在于,所述写回指令用于使得主机结构接口响应于所述事件的阈值数量来将所述数据写入所述存储器地址。
4.如权利要求1所述的设备,其特征在于,所述存储器可由所述应用访问。
5.如权利要求1所述的设备,其特征在于,所述第一轮询频率为零。
6.如权利要求1所述的设备,进一步包括用于监测所述存储器地址位置改变处的数据的存储器监测器。
7.如权利要求6所述的设备,其特征在于,所述存储器监测器用于通过以下操作来监测所述存储器地址位置处的所述数据:
读取所述存储器地址位置的初始值;
读取所述存储器地址位置的当前值;以及
在所述初始值与所述当前值不同时标识所述存储器地址位置中的所述数据已改变。
8.如权利要求6所述的设备,其特征在于,所述存储器监测器用于通过以下操作来监测所述存储器地址位置:
将初始值写入所述存储器的所述存储器地址位置;
读取存储在所述存储器地址位置的当前值;以及
在所述初始值与所述当前值不同时标识所述存储器地址位置中的所述数据已改变。
9.一种用于与主机结构接口协作收集性能数据收集的方法,所述方法包括:
以轮询频率从所述主机结构接口收集源节点的应用的所述性能数据;
将写回指令传送至所述主机结构接口,所述写回指令用于使得数据被写入所述源节点的存储器的存储器地址位置以触发唤醒模式;
通过利用处理器执行指令,将所述轮询频率启动为针对睡眠模式的第一轮询频率;以及
通过利用处理器执行指令,响应于所述存储器地址位置中的、标识所述唤醒模式的数据将所述轮询频率增加到第二轮询频率。
10.如权利要求9所述的方法,进一步包括生成对应于事件的阈值数量的写回指令。
11.如权利要求10所述的方法,其特征在于,所述写回指令用于使得主机结构接口响应于所述事件的阈值数量来将所述数据写入所述存储器地址。
12.如权利要求9所述的方法,其特征在于,所述存储器可由所述应用访问。
13.如权利要求9所述的方法,其特征在于,所述第一轮询频率为零。
14.如权利要求9所述的方法,进一步包括监测所述存储器地址位置改变处的数据。
15.如权利要求14所述的方法,其特征在于,监测所述存储器地址位置处的所述数据包括:
读取所述存储器地址位置的初始值;
读取所述存储器地址位置的当前值;以及
在所述初始值与所述当前值不同时标识所述存储器地址位置中的所述数据已改变。
16.如权利要求14所述的方法,其特征在于,监测所述存储器地址位置包括:
将初始值写入所述存储器的所述存储器地址位置;
读取存储在所述存储器地址位置的当前值;以及
在所述初始值与所述当前值不同时标识所述存储器地址位置中的所述数据已改变。
17.一种包括指令的计算机可读存储介质,所述指令在被执行时使得机器至少执行如权利要求9-16所述的方法。
18.一种用于与主机结构接口协作收集性能数据收集的设备,所述设备包括:
用于以轮询频率从所述主机结构接口收集源节点的应用的所述性能数据的装置;
用于将写回指令传送至所述主机结构接口的装置,所述写回指令用于使得数据被写入所述源节点的存储器的存储器地址位置以触发唤醒模式;以及
用于以下操作的装置:
将所述轮询频率启动为针对睡眠模式的第一轮询频率;以及
响应于所述存储器地址位置中的、标识所述唤醒模式的数据将所述轮询频率增加到第二轮询频率。
19.如权利要求18所述的设备,进一步包括用于生成对应于事件的阈值数量的写回指令的装置。
20.如权利要求19所述的设备,其特征在于,所述写回指令用于使得主机结构接口响应于所述事件的阈值数量来将所述数据写入所述存储器地址。
21.如权利要求18所述的设备,其特征在于,所述存储器可由所述应用访问。
22.如权利要求18所述的设备,其特征在于,所述第一轮询频率为零。
23.如权利要求18所述的设备,进一步包括用于监测所述存储器地址位置改变处的数据的装置。
24.如权利要求23所述的设备,其特征在于,所述用于监测的装置用于通过以下操作来监测所述存储器地址位置处的所述数据:
读取所述存储器地址位置的初始值;
读取所述存储器地址位置的当前值;以及
在所述初始值与所述当前值不同时标识所述存储器地址位置中的所述数据已改变。
25.如权利要求23所述的设备,其特征在于,所述用于监测的装置用于通过以下操作来监测所述存储器地址位置:
将初始值写入所述存储器的所述存储器地址位置;
读取存储在所述存储器地址位置的当前值;以及
在所述初始值与所述当前值不同时标识所述存储器地址位置中的所述数据已改变。
CN202010084130.3A 2019-02-26 2020-02-10 用于改善高性能计算应用的性能数据收集的方法与设备 Pending CN111611125A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/286,095 US20190188111A1 (en) 2019-02-26 2019-02-26 Methods and apparatus to improve performance data collection of a high performance computing application
US16/286,095 2019-02-26

Publications (1)

Publication Number Publication Date
CN111611125A true CN111611125A (zh) 2020-09-01

Family

ID=66815979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010084130.3A Pending CN111611125A (zh) 2019-02-26 2020-02-10 用于改善高性能计算应用的性能数据收集的方法与设备

Country Status (4)

Country Link
US (2) US20190188111A1 (zh)
KR (1) KR20200104248A (zh)
CN (1) CN111611125A (zh)
DE (1) DE102020102783A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022061646A1 (zh) * 2020-09-24 2022-03-31 华为技术有限公司 数据处理的装置和方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10594585B2 (en) * 2017-03-20 2020-03-17 Comcast Cable Communications, Llc Methods and systems for polling devices
US11105645B2 (en) * 2019-05-28 2021-08-31 Glazberg, Applebaum & co. Navigation in vehicles and in autonomous cars
US11210089B2 (en) * 2019-07-11 2021-12-28 Hewlett Packard Enterprise Development Lp Vector send operation for message-based communication
US11403110B2 (en) * 2019-10-23 2022-08-02 Texas Instruments Incorporated Storing a result of a first instruction of an execute packet in a holding register prior to completion of a second instruction of the execute packet
US20200241999A1 (en) * 2020-03-25 2020-07-30 Intel Corporation Performance monitoring for short-lived functions
CN113012200B (zh) * 2021-03-23 2023-01-13 北京灵汐科技有限公司 一种运动物体的定位方法、装置、电子设备及存储介质
US20220394023A1 (en) * 2021-06-04 2022-12-08 Winkk, Inc Encryption for one-way data stream
CN114036082A (zh) * 2021-11-04 2022-02-11 北京微纳星空科技有限公司 一种数据传输的方法、装置、电子设备和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115775A (en) * 1996-09-12 2000-09-05 Digital Equipment Corporation Method and apparatus for performing interrupt frequency mitigation in a network node
US6467008B1 (en) * 1999-03-01 2002-10-15 Sun Microsystems, Inc. Method and apparatus for indicating an interrupt in a network interface
US20060034275A1 (en) * 2000-05-03 2006-02-16 At&T Laboratories-Cambridge Ltd. Data transfer, synchronising applications, and low latency networks
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022061646A1 (zh) * 2020-09-24 2022-03-31 华为技术有限公司 数据处理的装置和方法

Also Published As

Publication number Publication date
US20190188111A1 (en) 2019-06-20
DE102020102783A1 (de) 2020-08-27
US20220334948A1 (en) 2022-10-20
KR20200104248A (ko) 2020-09-03

Similar Documents

Publication Publication Date Title
US20220334948A1 (en) Methods and apparatus to improve performance data collection of a high performance computing application
US9053029B2 (en) Multicore computer system with cache use based adaptive scheduling
US8484495B2 (en) Power management in a multi-processor computer system
CN102789305B (zh) 推迟挂起
US9104423B2 (en) Method and system for advance wakeup from low-power sleep states
US9075652B2 (en) Idle time service
US20120297216A1 (en) Dynamically selecting active polling or timed waits
US8522254B2 (en) Programmable integrated processor blocks
EP2972826B1 (en) Multi-core binary translation task processing
US11595456B2 (en) Modifying content streaming based on device parameters
US20210029219A1 (en) Data storage system with processor scheduling using distributed peek-poller threads
US20120254822A1 (en) Processing optimization load adjustment
US20190146699A1 (en) Dynamic configuration of compressed virtual memory
US10671453B1 (en) Data storage system employing two-level scheduling of processing cores
US10127076B1 (en) Low latency thread context caching
CN115934309A (zh) 用于核心特定度量收集的技术
US10884477B2 (en) Coordinating accesses of shared resources by clients in a computing device
US11645115B2 (en) Systems, methods and devices for standby power savings
KR101772547B1 (ko) 컴퓨팅 디바이스에서의 전력 소비 감축
CN117120981A (zh) 用于对齐媒体工作负载的方法和装置
KR101954668B1 (ko) 이종 멀티코어 프로세서를 이용하는 전자장치에서 전력효율을 개선하기 위한 방법 및 장치
CN109983418B (zh) 功率状态管理
US11347544B1 (en) Scheduling work items based on declarative constraints
US20220291733A1 (en) Methods and apparatus to reduce display connection latency
US20240168658A1 (en) System and Method to Reduce Power Consumption When Conveying Data to a Device

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