CN109196484A - 在具有多个存储器的系统中灵活的优化数据处理 - Google Patents
在具有多个存储器的系统中灵活的优化数据处理 Download PDFInfo
- Publication number
- CN109196484A CN109196484A CN201780033234.8A CN201780033234A CN109196484A CN 109196484 A CN109196484 A CN 109196484A CN 201780033234 A CN201780033234 A CN 201780033234A CN 109196484 A CN109196484 A CN 109196484A
- Authority
- CN
- China
- Prior art keywords
- data
- data processing
- application program
- data area
- optimization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
用于优化计算系统的应用程序的方法和系统,所述计算系统具有通过一个或多个通信信道互连的多个不同存储器位置,所述方法包括确定应用程序的数据区域的一个或多个数据处理属性。基于一个或多个数据处理属性,确定数据区域的一个或多个数据处理策略。针对应用程序中的范围确定数据设置成本,该应用程序基于一个或多个数据处理属性在不同的存储器位置中使用数据区域。根据一个或多个数据处理策略和不同存储器位置的数据设置成本来优化应用程序。
Description
背景技术
技术领域
本发明一般涉及数据管理,更具体地说,涉及存储器位置和存储器访问通道的优化。
相关技术的描述
现代计算系统可具有多个不同的可用存储器和存储位置。这在许多范围内都是可能的,包括例如单个设备内的多个存储器,多个分布式计算系统,其每个都具有本地存储器,云计算系统等。当执行可访问多个存储器的软件时,自动或手动确定关于在何处存储特定数据存储器以及如何将所述数据传送到适当的位置的决定。
在一种传统方法中,诸如消息传递接口(MPI)的低级编程技术使程序员手动确定存储器存储位置和通信方法。然而,这个过程容易出错,并且随着系统变得复杂而难以优化。
自动系统也可用,需要很少的程序员输入。然而,这样的系统提供的通用解决方案可能很难调整到特定应用,并且可能具有不必要的高开销。半自动系统通过高级程序员指令控制数据移动,但这仅利用在应用程序的特定点读取或写入的数据区域上的信息,并且不适用于具有细粒度,不规则访问的数据区域。在最坏的情况下,当使用递归的,基于指针的数据结构时,半自动系统转向低级方法。
发明内容
一种用于优化计算系统的应用程序的方法,所述计算机系统具有通过一个或多个通信信道互连的多个不同存储器位置,所述方法包括确定应用程序中的数据区域的一个或多个数据处理属性。基于一个或多个数据处理属性确定数据区域的一个或多个数据处理策略。针对应用程序的范围确定数据设置成本,所述应用程序基于一个或多个数据处理属性在不同的存储器位置使用数据区域。根据一个或多个数据处理策略和不同存储器位置的数据设置成本来优化应用程序。
一种用于优化计算系统的应用程序的方法,所述计算机系统具有通过一个或多个通信信道互连的多个不同存储器位置,所述方法包括确定应用程序中的数据区域的一个或多个数据处理属性。基于一个或多个数据处理属性确定数据区域的一个或多个数据处理策略。针对应用程序的范围确定数据设置成本,所述应用程序基于一个或多个数据处理属性在不同的存储器位置使用数据区域。根据一个或多个数据处理策略和不同存储器位置的数据设置成本来优化应用程序。优化包括选择一个或多个存储器位置,数据区域存储在所述一个或多个存储器位置,以及选择一个或多个通信信道,数据区域通过一个或多个通信信道在存储器位置之间传输。
用于优化计算系统的应用程序的系统,所述系统具有通过一个或多个通信信道互连的多个不同存储器位置,所述系统包括编译器模块,该编译器模块具有处理器,其被配置为确定应用程序中的数据区域的一个或多个数据处理属性,基于一个或多个数据处理属性确定数据区域的一个或多个数据处理策略,针对应用程序中的范围确定数据设置成本,所述应用程序基于一个或多个数据处理属性在不同的存储器位置中使用数据区域,以及根据一个或多个数据处理策略和不同存储器位置的数据设置成本来优化应用程序。
从以下对其说明性实施例的详细描述中,这些和其他特征和优点将变得显而易见,其将结合附图来阅读。
附图的简要说明
本公开将参考以下附图在以下优选实施例的描述中提供详细细节,其中:
图1是根据本发明的具有多个存储器的计算系统的框图。
图2是根据本发明的用于基于数据属性选择数据处理策略的方法的框图/流程图;
图3是根据本发明的用于基于数据属性和数据处理策略优化应用程序代码的方法的框图/流程图;
图4是根据本发明的优化系统的框图;
图5是根据本发明的处理系统的框图;
图6是根据本发明的云计算环境的示意图;和
图7是根据本发明的抽象模型层的框图。
具体实施方式
本发明的实施例使用来自程序员的以程序数据为中心的提示来自动控制数据移动。这些提示指定了有关数据的属性,这些属性实质上有助于后续的自动优化,并导致数据处理的特定策略。
应该事先理解,尽管本公开包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。
现在参考图1,示出了具有多个存储器的通用计算系统100。计算系统100包括多个系统节点102,每个系统节点102具有相应的处理资源104和存储器资源106。应当理解,处理资源104可以包括一个或多个硬件处理器,并且存储器资源106可以包括一个或多个,如下面更详细地讨论的,任何合适类型的存储库。
系统节点102通过若干通信信道108之一彼此通信。通信信道108可以是任何适当形式的数据通信系统,包括例如系统内总线,有线连接,无线连接,通过互联网连接等。每个系统节点102包括一个或多个存储器控制器110,其接收数据请求,从存储器资源106检索所请求的数据,并通过一个或多个通信信道108将所请求的数据传送到请求节点。存储器控制器110还处理向其他节点102的数据复制,以通过例如在将需要它们的节点102处创建本地副本来提高系统性能。
应注意,通信信道108包括硬件和软件方面。硬件机制指的是物理上可用的通信路径,其可以使用例如软件调用的应用程序编程接口(API)直接暴露。两个存储器可以以直接物理互连的形式在它们之间具有多个物理连接,但是也可以通过例如从第一存储器资源106,通过处理资源104到第二存储器资源的数据流的间接物理连接。软件通信机制可以建立在硬件机制之上,并且可以提供附加服务或实施某些策略。硬件机制和软件机制一起构成通信信道108。
存储器控制器110如何确定存储数据的位置以及如何将数据传送到请求节点由在处理资源102上运行的软件程序确定。每个软件程序将具有不同的数据管理需求,因此将具有不同的最佳数据处理策略。对应于正在被使用的特定数据类型。
为了适应这些不同的可能性,软件程序在编译时和运行时根据所讨论数据的已知属性进行优化。数据处理策略在编译时确定,但代码可以进一步使用运行时调用进行编译,这有助于促进策略的实现。运行时调用可能包括应用程序编程接口(API)调用软件通信机制,或者它们可以是调用以查询运行时系统资源或程序数据的状态以便于选择执行路径。
数据属性可以由程序员明确设置,也可以自动发现。可以使用的数据属性包括给定范围内的数据的数据区域的大小,读/写/读写访问状态,覆盖信息,访问频率信息,和数据布局信息。特别是,覆盖信息是指数据区域的多少元素受到访问(例如,几个,全部,大多数或某些固定数量的或可变百分比的数据区域大小),访问频率信息指的是访问数据区域的频率(例如,一次,很少,以规则的间隔,以突发等方式),并且数据布局信息是指访问是否是例如流,随机或跨步(strided)。在优化期间可以考虑的其他标准是传输数据所花费的时间,要传输的数据的量和频率,复制数据的开销,维持连贯性和一致性的成本,系统100的功率和带宽限制,和计算到通信的比率和重叠。
在一个特定实施例中,系统100被实现为云计算系统,其中许多不同的节点102可以在地理上彼此相距很远。在这样的系统中,相对于对该数据执行相关计算的成本,跨越通信信道108将数据从一个节点102传送到另一个节点的成本可能相当高。在这种情况下,优化数据存储和通信信道的效用是显而易见的。
现在参考图2,示出了基于数据属性选择策略的方法。块202修改旨在系统100上运行的应用程序的源代码,以指定数据区域的数据属性。特别考虑的是,块202可以由程序员手动执行,并且包括指定例如上述属性之一的明确指令的输入。然后,块204使用例如静态分析(analysis)和动态分析(profiling)自动检测应用程序的数据区域的属性,以尽可能多地填充属性定义中的间隙。对于具有未分配属性的任何数据区域,块206设置默认值。
框208分析跨应用程序的所有范围的每个数据区域的属性。如这里所使用的,术语“范围”指的是应用程序代码的一部分,其可以基于代码中的句法结构或基于要执行的指令顺序进行划分。分析将取决于系统100的具体配置和应用程序的需要,但是一些示例在下面阐述。通常,框208,通过确定存储数据区域的位置和什么通信信道(硬件和软件机制)用于传输这些数据区域,来尝试优化一个或多个系统度量(例如,应用程序的速度,功率/能量效率或带宽利用率)。鉴于应用程序的需要,此分析可能会考虑硬件和软件限制。基于该分析,框210为每个数据区域选择数据处理属性,包括设置初始数据放置(placement)。
几种不同的数据处理策略中的任何一种都可以应用于软件程序中给定范围内的给定数据区域。通常,策略可以是简单的(例如,两个不同通信信道之间的选择)或者可以更复杂(例如,如果数据位于A则选择X,否则选择Y)。
第一示例性策略是在不同的连贯性/一致性选项之间的选择。举例来说,系统配置可以包括三个不同的存储器位置A,B和C,其中在A和B的硬件中有效地支持连贯性,但是在C中没有。C的连贯性在具有高开销的软件中处理。用于示例性软件的应用程序代码依赖于系统级连贯性,并且具有三个范围,X,Y和Z,它们可以并行执行,所有这些范围都访问相同的数据区域。在计算之前将该数据区域复制到本地存储器A,B和C。然后,如果X,Y和Z都写入数据区域的所有元素,那么(X,Y,Z)可以被映射为在(A,B,C)上以任何顺序执行,而不启用C上的软件连贯性。但是,如果X可能不会写入数据区域的所有元素,那么将X映射到C将需要以高成本处理软件量惯性。在该示例中,策略的选择将考虑这些属性以计算成本并选择计算位置以防止X被映射到C。因此,该策略在支持连贯性的通信信道108和不支持量惯性的通信信道之间进行选择。
第二示例性策略是在不同的支持软件的通信机制(例如,软件通信信道108的选择)之间的选择。示例性系统可以具有主处理器和存储器以及单独的加速器处理器和存储器,其中两个存储器之间的互连是带宽受限的,花费固定时间来传输少量数据但是花费更长的时间传输大于某个阈值的量。两个示例性软件库实现数据传输——一个急切地推送数据(批量传输)和另一个懒惰地拉取数据(多个细粒度传输)。在一个示例性应用程序中,软件访问大数据区域的随机元素。如果访问的元素很少,则多次小传输的时间延迟可能小于传输整个数据区域所需的时间。在此示例中,选择策略将考虑访问频率属性来权衡不同策略的成本和收益。软件库的急切和懒惰版本表示表征不同通信信道108的不同软件机制。
第三示例性策略是在不同的硬件启用机制(例如,硬件机制的选择)之间的选择。如上所述,示例性系统具有主处理器和存储器以及加速器处理器和存储器,其中硬件互连允许加速器直接访问主机存储器和加速器存储器(换句话说,加速器支持使用地址的加载/存储指令映射到主机内存以及映射到加速器内存的地址)。在这种情况下,很少在加速器上访问的数据不需要复制到其本地存储器,而频繁访问的数据仍应复制以提高性能。因此,选择策略将考虑定义访问数据频率的属性。在该示例中,直接访问主机存储器并将数据复制到本地存储器表示不同的通信信道108。
第四示例性策略是如果数据在范围内恰好写入一次则将数据推送到下一个位置。示例性系统可以包括主处理器和存储器以及单独的加速器处理器和存储器,其中两个存储器之间的互连具有高传输等待时间。此外,在该示例性系统中,可以额外的使用两个可用的示例性软件库,实现数据传输——第一库通过复制数据在写访问之后急切地将数据推送到其它位置,并且第二库在数据最后更新于读访问时懒惰地从该位置拉取数据。如果软件只向主机上的数据区域中的元素写入一次,然后在加速器上多次读取,那么使用急切推送库在互连上传输数据区域的元素会更高效,因为读取节省将超过相对较高的写入成本。软件库的急切和懒惰版本表示表征不同通信信道108的不同软件机制。
第五示例性策略指导数据和计算的放置以避免通过通信信道108的远程访问。每个数据区域确定的数据属性可用于自动应用数据亲和性优化(例如,将数据放置在将被访问的计算位置附近)。示例性应用程序可以具有可在并行代码部分中访问的大数据区域。如果将以规则模式(例如,流式传输或跨步数据)访问数据,则可以对数据区域进行分区并将其放置在多个存储器中。然后,可以选择并行代码段的计算位置,使得它们在物理上靠近存储器,所述存储器具有与代码访问的数据相对应的数据区域分区。这可以帮助减少或消除跨通信信道108的数据传输。
现在参考图3,示出了优化应用程序代码的方法。块302从应用程序中的不同范围中选择新范围。块304收集范围中访问的每个数据区域的属性。块304可以重用由图2的流程确定的相同数据属性。然后,块306执行编译器分析,由该信息增强。编译器分析可以包括分析,例如,诸如控制和数据流分析,别名分析和依赖性分析的分析,其有助于确定在代码中访问的数据元素集和访问模式。
块308计算系统100处可用的每个不同计算位置的数据设置成本。对于每个位置,使用关于在代码中访问的数据元素集合,访问模式和数据处理策略的信息,来确定在该计算位置执行范围时所需的数据传输的数量、大小、以及方向。然后,可以为由数据处理策略选择的通信信道108估计所有数据传输的成本。适用的成本度量可以包括被优化的系统参数的任何子集,以包括例如执行时间,功率/能量效率和/或带宽使用。
块310基于计算成本选择范围的计算位置。根据应用程序中的一个或多个需求来选择计算位置。例如,一些计算位置可能缺少应用程序所需的特征,或者可能具有与这些特征相关联的更高成本,使得可以选择不同的计算位置。在另一个示例中,成本可以表征处理的功耗,其中在一些位置处的处理导致更高的功率成本。然后,块312将数据处理策略应用于相关计算位置处的范围。对于范围中的每个数据区域,基于数据区域的数据处理策略和可用于该位置的通信信道108来选择通信信道108。所选择的通信信道108用于对应于该数据区域的元素的范围内的所有数据传输。
块314确定应用程序中是否存在尚未处理的任何额外范围。如果是,则处理返回到框302,其中选择新范围。如果不是,则框316使用所选择的计算位置和数据处理策略生成优化代码。此优化代码考虑了跨范围的应用程序的需求,并且以紧密基于所涉及的数据区域的属性的方式进行,而无需程序员明确放置。结果,当在框318中执行代码时,应用程序以更好的性能运行。
用于确定数据区域的最佳存储器位置的优化标准将取决于所使用的特定应用程序和系统参数。优化标准(即,优化过程要实现的目标)可以包括,例如,数据传输时间的改进,传输的数据的量/频率,数据复制的开销,或维持连贯性/一致性或满足系统中的功率/带宽限制的成本。
本发明可以是系统,方法和/或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质(或介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
说明书中对本原理的“一个实施例”或“实施例”及其其他变型的引用意味着与本实施例相关的描述的特定特征,结构,特性等被包括在本原理的至少一个实施例中。因此,在整个说明书中出现在各个地方的短语“在一个实施例中”或“在实施例中”以及任何其他变型的出现不一定都指代相同的实施例。
应当理解,例如,在“A/B”,“A和/或B”和“A和B中的至少一个”的情况下,使用“/”,“和/或”和“至少一个”中的任意一个旨在包括仅选择第一个列出的选项(A),或仅选择第二个列出的选项(B),或选择两个选项(A和B)。作为另一个例子,在“A,B和/或C”和“A,B和C中的至少一个”的情况下,这种措辞旨在包括仅选择第一个列出的选项(A),或仅选择第二个列出的选项(B),或仅选择第三个列出的选项(C),或仅选择第一个和第二个列出的选项(A和B),或选择仅第一个和第三个列出的选项(A和C),或仅选择第二个和第三个列出的选项(B和C),或选择所有三个选项(A和B和C)。对于所列出的许多项目,如本领域和相关领域的普通技术人员显而易见的,这可以扩展。
现在参考图4,示出了优化系统400。系统400包括硬件处理器402和存储器404。系统400还可包括一个或多个功能模块。功能模块可以实现为存储在存储器404中并由硬件处理器402执行的软件。在备选实施例中,功能模块可以实现为采用例如特定于应用程序的集成芯片或现场可编程门阵列形式的一个或多个分立硬件组件。。
开发者环境406在系统400上运行并且允许程序员对存储在存储器404中的源代码408进行更改。开发者环境406提供手动指定跨源代码408的各种范围的数据区域的属性410的能力。编译器模块414使用数据属性和系统描述412来选择数据处理策略以应用于源代码并选择每个数据区域的计算位置。然后,编译器模块414输出编译的应用程序,以便在具有多个计算和存储器位置的系统100上执行。
现在参考图5,示出了示例性处理系统500,其可表示优化系统400。处理系统500包括经由系统总线502可操作地耦合到其他组件的至少一个处理器(CPU)504。高速缓存506,只读存储器(ROM)508,随机存取存储器(RAM)510,输入/输出(I/O)适配器520,声音适配器530,网络适配器540,用户接口适配器550,显示适配器560可操作地耦合到系统总线502。
第一存储设备522和第二存储设备524由I/O适配器520可操作地耦合到系统总线502。存储装置522和524可以是任何一个磁盘存储设备(例如,磁盘或光盘存储设备),固态磁盘设备等。存储设备522和524可以是相同类型的存储设备或不同类型的存储设备。
一种扬声器532由声音适配器530可操作的耦合到系统总线502。一种收发信机542通过网络适配器540可操作地联接到系统总线502。一种显示设备562由显示适配器560可操作地耦合到系统总线502。
第一用户输入设备552,第二用户输入设备554,和第三用户输入设备556通过用户接口适配器550可操作地耦合到系统总线502。用户输入设备552,554,以及556可以是键盘,鼠标,小键盘,图像捕获装置,运动感测设备,麦克风,具有至少两个前述装置的功能的装置,等等中的任何一个。当然,也可以使用其他类型的输入设备,同时保持本原理的精神。所述用户输入装置552,554,和556可以是相同类型的用户输入设备或不同类型的用户输入设备。所述用户输入装置552,554,和556用于向或从系统500输入和输出信息。
当然,处理系统500还可以包括其他元件(未示出),如易于由本领域技术人员预期的,以及省略某些元素。例如,各种其他输入设备和/或输出设备可以包括在处理系统500中,这取决于如本领域普通技术人员容易理解的同样的特定实现。例如,可以使用各种类型的无线和/或有线输入和/或输出装置。此外,如本领域普通技术人员容易理解的,还可以使用各种配置的附加处理器,控制器,存储器等。本领域普通技术人员容易想到在此处描述的本原理的教导下的处理系统500的这些和其他变体。
现在参考图6,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图7,其中显示了云计算环境50(图6)提供的一组功能抽象层。首先应当理解,图6所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的例子包括:网络应用服务器软件67以及数据库软件68。
虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及源代码优化96。
已经描述了在带有多个存储器的系统中的灵活优化的数据处理的优选实施例(其旨在是说明性的而不是限制性的),应当注意的是本领域技术人员在上述教导下可以做出修改和变形。因此,应该理解,可以在所公开的特定实施例中进行改变,这些改变在所附权利要求所概述的本发明的范围内。已经如此描述了本发明的各方面,具有专利法所要求的细节和特殊性,在所附权利要求中阐述了由专利证书所要求和期望保护的内容。
Claims (17)
1.一种用于优化计算系统的应用程序的方法,所述计算系统具有通过一个或多个通信信道互连的多个不同存储器位置,所述方法包括:
确定应用程序中数据区域的一个或多个数据处理属性;
基于一个或多个数据处理属性确定数据区域的一个或多个数据处理策略;
确定应用程序中的范围的数据设置成本,该应用程序基于一个或多个数据处理属性在不同的存储器位置使用数据区域;和
根据一个或多个数据处理策略和不同存储器位置的数据设置成本,来优化应用程序。
2.如权利要求1所述的方法,其中优化应用程序包括选择一个或多个存储器位置,在所述一个或多个存储器位置中存储数据区域。
3.如权利要求1或2所述的方法,还包括:选择一个或多个通信信道,通过所述通信信道在存储器位置之间传送数据区域。
4.如前述任意一个权利要求所述的方法,其中,数据区域的一个或多个数据处理属性包括覆盖信息。
5.如权利要求4所述的方法,其中,数据区域的一个或多个数据处理属性包括访问频率信息。
6.如权利要求5所述的方法,其中,数据区域的一个或多个数据处理属性包括数据布局信息。
7.如权利要求1所述的方法,其中,一个或多个数据处理属性中的至少一个由程序员设置。
8.如权利要求4、5、6中任意一个所述的方法,其中,应用程序的每个范围由应用程序代码中的部分来定义,所述应用程序代码按照应用程序代码的句法结构或要执行的指令顺序进行划分。
9.一个非暂时性计算机可读存储介质,包括计算机可读程序,用于优化计算系统的应用程序,所述计算机系统具有通过一个或多个通信信道互连的多个不同存储器位置,其中计算机可读程序在计算机上执行时使计算机执行权利要求1的步骤。
10.一种用于优化计算系统的应用程序的系统,所述计算系统具有通过一个或多个通信信道互连的多个不同存储器位置的,所述系统包括:
编译器模块,其包括处理器,所述处理器被配置为确定应用程序中数据区域的一个或多个数据处理属性,
基于一个或多个数据处理属性确定数据区域的一个或多个数据处理策略,
确定应用程序中的范围的数据设置成本,该应用程序基于一个或多个数据处理属性在不同的存储器位置使用数据区域,和根据一个或多个数据处理策略和不同存储器位置的数据设置成本,来优化应用程序。
11.如权利要求10所述的用于优化的系统,其中,编译器模块还被配置为选择一个或多个存储器位置,数据区域存储在所述一个或多个存储器位置中。
12.如权利要求10所述的用于优化的系统,其中,所述编译器模块还被配置为选择一个或多个通信信道,通过所述一个或多个通信信道在存储器位置之间传输数据区域。
13.如权利要求10所述的用于优化的系统,其中,数据区域的一个或多个数据处理属性包括覆盖信息。
14.如权利要求10所述的用于优化的系统,其中,数据区域的一个或多个数据处理属性包括访问频率信息。
15.如权利要求10所述的用于优化的系统,其中,数据区域的一个或多个数据处理属性包括数据布局信息。
16.如权利要求10所述的用于优化的系统,其中,一个或多个数据处理属性中的至少一个由程序员设置。
17.如权利要求10所述的用于优化的系统,其中应用程序中的每个范围由应用程序代码中的部分来定义,所述应用程序代码按照应用程序代码的句法结构或要执行的指令序顺序进行划分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/180,756 | 2016-06-13 | ||
US15/180,756 US10996989B2 (en) | 2016-06-13 | 2016-06-13 | Flexible optimized data handling in systems with multiple memories |
PCT/IB2017/050953 WO2017216646A1 (en) | 2016-06-13 | 2017-02-20 | Flexible optimized data handling in systems with multiple memories |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109196484A true CN109196484A (zh) | 2019-01-11 |
CN109196484B CN109196484B (zh) | 2023-05-16 |
Family
ID=60572751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780033234.8A Active CN109196484B (zh) | 2016-06-13 | 2017-02-20 | 在具有多个存储器的系统中灵活的优化数据处理 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10996989B2 (zh) |
JP (1) | JP6857196B2 (zh) |
CN (1) | CN109196484B (zh) |
DE (1) | DE112017001421T5 (zh) |
GB (1) | GB2568399A (zh) |
WO (1) | WO2017216646A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10996989B2 (en) * | 2016-06-13 | 2021-05-04 | International Business Machines Corporation | Flexible optimized data handling in systems with multiple memories |
US11287982B2 (en) * | 2019-07-12 | 2022-03-29 | International Business Machines Corporation | Associating data management policies to portions of data using connection information |
JP7196052B2 (ja) * | 2019-11-27 | 2022-12-26 | Kddi株式会社 | 情報処理装置及び情報処理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953531A (en) * | 1997-07-25 | 1999-09-14 | International Business Machines Corporation | Method of, system for, and computer program product for minimizing loop execution time by optimizing block/tile sizes |
JP2006085208A (ja) * | 2004-09-14 | 2006-03-30 | Hitachi Ltd | 情報ライフサイクル管理システム及びそのデータ配置決定方法 |
CN1975679A (zh) * | 2005-10-27 | 2007-06-06 | 国际商业机器公司 | 用于优化分段资源分配的方法和设备 |
CN102150409A (zh) * | 2008-07-09 | 2011-08-10 | 波音公司 | 安全高性能多级安全数据库系统和方法 |
US20140130027A1 (en) * | 2012-11-05 | 2014-05-08 | International Business Machines Corporation | Data placement for execution of an executable |
CN104808954A (zh) * | 2009-12-24 | 2015-07-29 | 株式会社日立制作所 | 提供虚拟卷的存储系统及其控制方法 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5954085A (en) | 1994-07-12 | 1999-09-21 | Petro-First, Inc. | Prefabricated modular fuel dispensing system |
US6378066B1 (en) | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
US6889293B1 (en) * | 2000-06-09 | 2005-05-03 | Agere Systems Inc. | Directory-based prediction methods and apparatus for shared-memory multiprocessor systems |
JP2002196960A (ja) * | 2000-12-25 | 2002-07-12 | Hitachi Ltd | ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム |
GB2381886B (en) * | 2001-11-07 | 2004-06-23 | Sun Microsystems Inc | Computer system with virtual memory and paging mechanism |
US6952821B2 (en) * | 2002-08-19 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | Method and system for memory management optimization |
US7200840B2 (en) * | 2002-10-24 | 2007-04-03 | International Business Machines Corporation | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture |
US6954085B2 (en) | 2003-10-13 | 2005-10-11 | International Business Machines Corporation | System and method for dynamically executing a function in a programmable logic array |
JP4842909B2 (ja) | 2004-08-30 | 2011-12-21 | 株式会社日立製作所 | ストレージシステム及びデータ再配置制御装置 |
JP2006107338A (ja) * | 2004-10-08 | 2006-04-20 | Matsushita Electric Ind Co Ltd | プログラム処理装置 |
US8117288B2 (en) * | 2004-10-12 | 2012-02-14 | International Business Machines Corporation | Optimizing layout of an application on a massively parallel supercomputer |
US20060095705A1 (en) * | 2004-10-30 | 2006-05-04 | James Wichelman | Systems and methods for data storage management |
US7574425B2 (en) | 2004-12-03 | 2009-08-11 | International Business Machines Corporation | System and method for query management in a database management system |
US7743366B2 (en) * | 2005-10-03 | 2010-06-22 | Arm Limited | System and method for compiling a computer program |
US20070174411A1 (en) * | 2006-01-26 | 2007-07-26 | Brokenshire Daniel A | Apparatus and method for efficient communication of producer/consumer buffer status |
US8762951B1 (en) * | 2007-03-21 | 2014-06-24 | Oracle America, Inc. | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor |
US7644254B2 (en) * | 2007-04-18 | 2010-01-05 | International Business Machines Corporation | Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list |
US8127273B2 (en) * | 2007-11-09 | 2012-02-28 | International Business Machines Corporation | Node selection for executing a Java application among a plurality of nodes |
US8468510B1 (en) * | 2008-01-16 | 2013-06-18 | Xilinx, Inc. | Optimization of cache architecture generated from a high-level language description |
US8281311B2 (en) * | 2008-04-24 | 2012-10-02 | International Business Machines Corporation | Executing a distributed software application on a plurality of compute nodes according to a compilation history |
JP5999645B2 (ja) | 2009-09-08 | 2016-10-05 | ロンギチュード エンタープライズ フラッシュ エスエイアールエル | ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 |
US8561046B2 (en) * | 2009-09-14 | 2013-10-15 | Oracle America, Inc. | Pipelined parallelization with localized self-helper threading |
US8365186B2 (en) * | 2010-04-14 | 2013-01-29 | International Business Machines Corporation | Runtime optimization of an application executing on a parallel computer |
US8380703B2 (en) | 2010-07-26 | 2013-02-19 | International Business Machines Corporation | Feedback loop between a query optimizer and a cache manager |
US20120047339A1 (en) * | 2010-08-20 | 2012-02-23 | Dan Decasper | Redundant array of independent clouds |
US8713518B2 (en) * | 2010-11-10 | 2014-04-29 | SRC Computers, LLC | System and method for computational unification of heterogeneous implicit and explicit processing elements |
US9471384B2 (en) * | 2012-03-16 | 2016-10-18 | Rackspace Us, Inc. | Method and system for utilizing spare cloud resources |
US9916258B2 (en) * | 2011-03-31 | 2018-03-13 | EMC IP Holding Company LLC | Resource efficient scale-out file systems |
US8893103B2 (en) * | 2012-08-16 | 2014-11-18 | Nec Laboratories America, Inc. | Automatic asynchronous offload to many-core coprocessors |
US9436475B2 (en) * | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
GB2508365A (en) | 2012-11-29 | 2014-06-04 | Ibm | Optimising a compilation parser by identifying a subset of grammar productions |
US9430400B2 (en) * | 2013-03-14 | 2016-08-30 | Nvidia Corporation | Migration directives in a unified virtual memory system architecture |
CN103207786B (zh) | 2013-04-28 | 2016-03-23 | 中国人民解放军信息工程大学 | 渐进式智能回溯向量化代码调优方法 |
JP6018022B2 (ja) * | 2013-06-14 | 2016-11-02 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
US9607036B2 (en) | 2013-08-21 | 2017-03-28 | International Business Machines Corporation | Managing a data set |
GB2519534A (en) * | 2013-10-23 | 2015-04-29 | Ibm | Persistent caching system and method for operating a persistent caching system |
US10223260B2 (en) * | 2014-03-19 | 2019-03-05 | International Business Machines Corporation | Compiler-generated memory mapping hints |
US9716738B2 (en) * | 2014-05-13 | 2017-07-25 | International Business Machines Corporation | Deploying a portion of a streaming application to one or more virtual machines according to cost |
US9274771B1 (en) * | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
JP2016224812A (ja) * | 2015-06-02 | 2016-12-28 | 富士通株式会社 | 並列計算装置、並列処理方法、並列処理プログラムおよびコンパイルプログラム |
JP6432450B2 (ja) * | 2015-06-04 | 2018-12-05 | 富士通株式会社 | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム |
US10249073B2 (en) * | 2015-07-21 | 2019-04-02 | Intel Corporation | Distributed frame buffer and API for scalable parallel rendering |
US10996989B2 (en) * | 2016-06-13 | 2021-05-04 | International Business Machines Corporation | Flexible optimized data handling in systems with multiple memories |
-
2016
- 2016-06-13 US US15/180,756 patent/US10996989B2/en active Active
-
2017
- 2017-02-20 GB GB1819786.3A patent/GB2568399A/en not_active Withdrawn
- 2017-02-20 CN CN201780033234.8A patent/CN109196484B/zh active Active
- 2017-02-20 JP JP2018561000A patent/JP6857196B2/ja active Active
- 2017-02-20 DE DE112017001421.2T patent/DE112017001421T5/de active Pending
- 2017-02-20 WO PCT/IB2017/050953 patent/WO2017216646A1/en active Application Filing
-
2021
- 2021-03-02 US US17/189,856 patent/US11687369B2/en active Active
-
2023
- 2023-04-05 US US18/296,012 patent/US20230244530A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953531A (en) * | 1997-07-25 | 1999-09-14 | International Business Machines Corporation | Method of, system for, and computer program product for minimizing loop execution time by optimizing block/tile sizes |
JP2006085208A (ja) * | 2004-09-14 | 2006-03-30 | Hitachi Ltd | 情報ライフサイクル管理システム及びそのデータ配置決定方法 |
CN1975679A (zh) * | 2005-10-27 | 2007-06-06 | 国际商业机器公司 | 用于优化分段资源分配的方法和设备 |
CN102150409A (zh) * | 2008-07-09 | 2011-08-10 | 波音公司 | 安全高性能多级安全数据库系统和方法 |
JP2011528142A (ja) * | 2008-07-09 | 2011-11-10 | ザ・ボーイング・カンパニー | 安全且つハイパフォーマンスの多重レベルセキュリティデータベースシステム及び方法 |
CN104808954A (zh) * | 2009-12-24 | 2015-07-29 | 株式会社日立制作所 | 提供虚拟卷的存储系统及其控制方法 |
US20140130027A1 (en) * | 2012-11-05 | 2014-05-08 | International Business Machines Corporation | Data placement for execution of an executable |
Also Published As
Publication number | Publication date |
---|---|
DE112017001421T5 (de) | 2018-11-29 |
GB2568399A (en) | 2019-05-15 |
WO2017216646A1 (en) | 2017-12-21 |
US10996989B2 (en) | 2021-05-04 |
US20230244530A1 (en) | 2023-08-03 |
US11687369B2 (en) | 2023-06-27 |
US20210208939A1 (en) | 2021-07-08 |
CN109196484B (zh) | 2023-05-16 |
JP2019526091A (ja) | 2019-09-12 |
GB201819786D0 (en) | 2019-01-23 |
US20170357445A1 (en) | 2017-12-14 |
JP6857196B2 (ja) | 2021-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114253659A (zh) | 网格的编排 | |
US8918439B2 (en) | Data lifecycle management within a cloud computing environment | |
US8719949B1 (en) | Parameter based operation | |
CN112771500A (zh) | 功能即服务网关 | |
US20110276939A1 (en) | Techniques to enhance software production | |
RU2658190C2 (ru) | Управление доступом во время выполнения к интерфейсам прикладного программирования | |
CN109067890A (zh) | 一种基于docker容器的CDN节点边缘计算系统 | |
US11687369B2 (en) | Flexible optimized data handling in systems with multiple memories | |
US20190286830A1 (en) | Parallel access to running eda application | |
US10686678B2 (en) | Device for orchestrating distributed application deployment with end-to-end performance guarantee | |
JP2023545970A (ja) | エンタープライズ・レベルのビッグ・データ・ワークロード向けのクエリ・エンジンの自動スケーリング | |
CN113516507A (zh) | 一种多云管理平台资源计费方法及装置 | |
CN115033340A (zh) | 一种宿主机的选择方法及相关装置 | |
US10140163B2 (en) | Intelligent framework for shared services orchestration | |
WO2022100438A1 (en) | Predictive auto-scaler for a hierarchical computing infrastructure | |
Daigneault et al. | Profit maximization model for the task assignment problem in 2-tier fog/cloud network environments | |
US20220292392A1 (en) | Scheduled federated learning for enhanced search | |
US11410023B2 (en) | Lexicographic deep reinforcement learning using state constraints and conditional policies | |
Metsch et al. | Intent-driven orchestration: Enforcing service level objectives for cloud native deployments | |
JP2022094945A (ja) | コンピュータ実装方法、システム及びコンピュータプログラム(バッチジョブのスケジューリングの最適化) | |
CN117242457A (zh) | 定位神经网络性能热点 | |
US11288046B2 (en) | Methods and systems for program optimization utilizing intelligent space exploration | |
CN113850573A (zh) | 智能合约的执行方法和装置 | |
KR101304565B1 (ko) | 어플리케이션 제공 방법 및 그를 위한 어플리케이션 제공 서버 | |
US10417055B2 (en) | Runtime movement of microprocess components |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |