CN107783782B - 用于节点装置基于gpu的并行处理的编译 - Google Patents

用于节点装置基于gpu的并行处理的编译 Download PDF

Info

Publication number
CN107783782B
CN107783782B CN201710647374.6A CN201710647374A CN107783782B CN 107783782 B CN107783782 B CN 107783782B CN 201710647374 A CN201710647374 A CN 201710647374A CN 107783782 B CN107783782 B CN 107783782B
Authority
CN
China
Prior art keywords
task
gpu
data set
node apparatus
task routine
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.)
Active
Application number
CN201710647374.6A
Other languages
English (en)
Other versions
CN107783782A (zh
Inventor
H·G·V·贝凯
H·陈
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.)
SAS Institute Inc
Original Assignee
SAS Institute Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/422,285 external-priority patent/US9760376B1/en
Application filed by SAS Institute Inc filed Critical SAS Institute Inc
Publication of CN107783782A publication Critical patent/CN107783782A/zh
Application granted granted Critical
Publication of CN107783782B publication Critical patent/CN107783782B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/5044Allocation 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 hardware capabilities
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • 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
    • 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]
    • 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/5055Allocation 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 software capabilities, i.e. software resources associated or available to the machine
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

本申请涉及用于节点装置基于GPU的并行处理的编译。一种设备可包含处理器以及用以存储指令的存储装置,所述指令致使所述处理器执行包含以下各项的操作:响应于节点装置的GPU可用的确定,确定任务例程是否可经编译以产生用于由所述GPU执行的GPU任务例程,以致使所述任务例程的任务的多个实例至少部分地并行执行而其间不具有相依性;以及响应于所述任务例程能够经编译以产生所述GPU任务例程的确定:采用转换规则以将所述任务例程转换为所述GPU任务例程;编译所述GPU任务例程以用于由所述GPU执行;以及将所述任务关于数据集分区的执行指派于所述节点装置以实现所述多个实例关于所述数据集分区由所述GPU的执行。

Description

用于节点装置基于GPU的并行处理的编译
相关申请的交叉参考
本申请案依据35 U.S.C.§119(e)要求2016年2月1日申请的第62/289,484号美国临时申请案、2016年8月25日申请的第62/379,512号美国临时申请案以及2016年9月14日申请的第62/394,411号美国临时申请案的优先权,以上申请案中的每一者的全文以引用的方式并入本文中。本申请案是2017年2月1日与此同时申请的第15/422,154号美国专利申请案的接续案且依据35 U.S.C.§120要求所述美国专利申请案的优先权,所述美国专利申请案的全文以引用的方式并入本文中。
技术领域
本发明涉及对大数据集的分析,且特定来说涉及跨越多个节点装置并行地对大数据集的分析。
背景技术
使用许多节点装置的网格以分布式方式执行大数据集(例如,通常被称为“大数据”)的分析已经变得越来越常见,其中至少部分地跨越所述节点装置中的多个选定节点装置并行地执行分析例程的任务。在操作这些网格时,在将分析例程的任务指派到节点装置中常常存在竞争的目标,包含尽可能实现每一节点装置的处理资源的完全且不间断使用的目标,以及使每一节点装置的处理和存储资源以及所述网格的网络带宽资源的使用更有效的目标。通过使多个分析例程的任务由网格的节点装置同时执行而共享网格资源的惯例使得解决这些竞争目标的复杂性增加。指派任务的传统方法是将待执行的下一任务简单地指派给作为将具有可用处理资源的下一节点装置的任何一个节点装置。然而,此传统方法表示一种允许存储和网络带宽资源使用中的相当大的低效率的决策。
发明内容
本发明内容并不希望仅识别所描述主题的关键特征或基本特征,也并不希望单独用于确定所描述主题的范围。主题应参考此专利的整个说明书的适当部分、任何或所有图式以及每一权利要求来理解。
一种设备可包含处理器以及用以存储指令的存储装置,所述指令在由所述处理器执行时致使所述处理器针对多个节点装置中的每一节点装置导出第一任务关于第一数据集的执行的指派,其中:所述第一数据集可划分为多个分区;所述多个节点装置中的第一节点装置经指派于关于所述第一数据集的所述多个分区中的第一分区执行所述第一任务;且所述多个节点装置中的第二节点装置经指派于关于所述第一数据集的所述多个分区中的第二分区执行所述第一任务。可致使所述处理器发射所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示,以致使所述第一任务关于所述第一分区由所述第一节点装置执行且致使所述第一分区的至少一些在所述第一节点装置的易失性存储装置内的存储;发射所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示,以致使所述第一任务关于所述第二分区由所述第二节点装置执行且致使所述第二分区的至少一些在所述第二节点装置的易失性存储装置内的存储;从所述第一节点装置接收所述第一任务关于所述第一分区由所述第一节点装置执行的完成的指示以使得所述第一节点装置可用于指派于执行另一任务;在接收到所述第一任务关于所述第一分区由所述第一节点装置执行的完成的指示之后延迟所述第二分区上的第二任务的执行对所述第一节点装置的指派多达预定时间周期,而不管将对所述第二分区执行的所述第二任务的就绪,且不管由于第一任务关于所述第一分区的执行的完成所致的所述第一节点的可用性;以及确定是否在所述预定时间周期内从所述第二节点装置接收到所述第一任务关于所述第二分区由所述第二节点装置的执行完成以使得所述第二节点装置可用于指派于执行另一任务的指示。响应于在所述预定时间周期内所述第一任务关于所述第二分区由所述第二节点装置完成的指示,可致使处理器将所述第二任务在第二分区上的执行指派于所述第二节点装置以实现对所述第二节点装置的易失性存储装置内的第二分区的至少一些的存取;以及发射所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示以避免所述第一节点装置对所述第二分区的检索。响应于在所述预定时间周期内未接收到所述第一任务关于所述第二分区由所述第二节点装置完成的指示,可致使所述处理器将所述第二任务在所述第二分区上的执行指派于所述第一节点装置;以及发射所述第二任务在所述第二分区上的执行对所述第一节点装置的指派的指示以致使所述第一节点装置对所述第二分区的检索。
可致使所述处理器执行包含如下的操作:从在对所述多个节点装置中的节点装置的执行所述第一任务的指派的发射与从所述节点装置接收到所述第一任务的执行完成的指示之间的时间量的至少一个测量值导出所述预定时间周期。
可致使所述处理器执行包含如下的操作:确定所述多个节点装置中可用于执行所述第一任务的节点装置的数量;以及基于所述节点装置的数量以及描述所述第一数据集经组织的方式的元数据而导出所述第一数据集成为所述第一数据集的所述多个分区的划分。所述第一数据集可存储于一或多个存储装置内;可致使所述处理器执行包含从所述一或多个存储装置检索所述元数据的操作;所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置从所述一或多个存储装置检索所述第一分区;且所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置从所述一或多个存储装置检索所述第二分区。
所述设备可包含耦合到所述处理器的至少一个易失性存储组件,且可致使所述处理器执行包含如下的操作:为所述处理器指派所述第一任务关于所述第一数据集的所述多个分区中的第三分区的执行;将所述第三分区的至少一些存储于所述至少一个易失性存储组件内;以及关于所述第三分区执行所述第一任务。
可致使所述处理器执行包含如下的操作:针对所述多个节点装置的子组中的每一节点装置,导出指派以从一或多个存储装置检索且存储所述第一数据集的所述多个分区中的一者以实现所述子组中的每一节点装置用作备份节点装置以响应于所述多个节点装置中的所述节点装置中的一者的失效,其中:所述多个节点装置中的第三节点装置经指派于关于所述第一数据集的所述多个分区中的第三分区执行所述第一任务;且所述第三节点经指派于从所述一或多个存储装置检索且存储所述第二分区以实现所述第三节点装置用作备份节点装置以响应于所述第二节点装置的失效。可致使所述处理器在所述预定时间周期期间从所述第三节点装置接收所述第一任务关于所述第三分区由所述第三节点装置执行的完成的指示,以使得所述第三节点装置可用于指派于执行另一任务。响应于在所述预定时间周期期间接收到所述第一任务关于所述第三分区由所述第三节点装置完成的指示,且响应于在所述预定时间周期内未接收到所述第一任务关于所述第二分区由所述第二节点装置完成的指示,可致使所述处理器将所述第二任务在所述第二分区上的执行指派于所述第三节点装置;以及发射所述第二任务在所述第二分区上的执行对所述第三节点装置的指派的指示。
所述第一任务关于所述第一和第二分区的执行可包含:使用所述第一和第二分区作为对所述第一任务的执行的输入以产生第二数据集的对应分区;且所述第二任务在所述第二分区上的执行可包含使用所述第二分区作为对所述第二任务的执行的输入以产生第三数据集的对应分区。所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置:从一或多个存储装置检索所述第一分区;使用存储于所述第一节点装置的易失性存储装置内的所述第一分区的至少一些作为对所述第一任务由所述第一节点装置的执行的输入;以及在所述第一分区的至少一些保持存储于所述第一节点装置的易失性存储装置内的同时发射所述第一任务关于所述第一分区的执行完成的指示。所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置:从一或多个存储装置检索所述第二分区;使用存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第一任务由所述第二节点装置的执行的输入;以及在所述第二分区的至少一些保持存储于所述第二节点装置的易失性存储装置内的同时发射所述第一任务关于所述第二分区的执行完成的指示。所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置使用仍存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第二任务由所述第二节点装置的执行的输入,以最小化对存储于所述第二节点装置的非易失性存储装置内的所述第二分区的存取。
所述第一任务关于所述第一和第二分区的执行可包含执行所述第一任务以使用第二数据集的对应分区作为输入而产生所述第一和第二分区作为所述第一任务的输出;且所述第二任务在所述第二分区上的执行可包含使用所述第二分区作为对所述第二任务的执行的输入以产生第三数据集的对应分区。所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置:产生所述第一分区作为所述第一任务由所述第一节点装置的执行的输出;以及在所述第一分区的至少一些保持存储于所述第一节点装置的易失性存储装置内的同时发射所述第一任务关于所述第一分区的执行完成的指示。所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置:产生所述第二分区作为所述第一任务由所述第二节点装置的执行的输出;以及在所述第二分区的至少一些保持存储于所述第二节点装置的易失性存储装置内的同时发射所述第一任务关于所述第二分区的执行完成的指示。所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置使用仍存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第二任务由所述第二节点装置的执行的输入,以最小化对存储于所述第二节点装置的非易失性存储装置内的所述第二分区的存取。
一种有形地体现于非暂时性机器可读存储媒体中的计算机程序产品,所述计算机程序产品包含可操作以致使处理器执行包含如下的操作的指令:针对多个节点装置中的每一节点装置导出第一任务关于第一数据集的执行的指派,其中:所述第一数据集可划分为多个分区;所述多个节点装置中的第一节点装置经指派于关于所述第一数据集的所述多个分区中的第一分区执行所述第一任务;且所述多个节点装置中的第二节点装置经指派于关于所述第一数据集的所述多个分区中的第二分区执行所述第一任务。可致使所述处理器执行包含如下的操作:发射所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示,以致使所述第一任务关于所述第一分区由所述第一节点装置执行且致使所述第一分区的至少一些在所述第一节点装置的易失性存储装置内的存储;发射所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示,以致使所述第一任务关于所述第二分区由所述第二节点装置执行且致使所述第二分区的至少一些在所述第二节点装置的易失性存储装置内的存储;从所述第一节点装置接收所述第一任务关于所述第一分区由所述第一节点装置执行的完成的指示以使得所述第一节点装置可用于指派于执行另一任务;在接收到所述第一任务关于所述第一分区由所述第一节点装置执行的完成的指示之后延迟所述第二分区上的第二任务的执行对所述第一节点装置的指派多达预定时间周期,而不管将对所述第二分区执行的所述第二任务的就绪,且不管由于第一任务关于所述第一分区的执行的完成所致的所述第一节点的可用性;以及确定是否在所述预定时间周期内从所述第二节点装置接收到所述第一任务关于所述第二分区由所述第二节点装置的执行完成以使得所述第二节点装置可用于指派于执行另一任务的指示。响应于在所述预定时间周期内所述第一任务关于所述第二分区由所述第二节点装置完成的指示,可致使处理器将所述第二任务在第二分区上的执行指派于所述第二节点装置以实现对所述第二节点装置的易失性存储装置内的第二分区的至少一些的存取;以及发射所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示以避免所述第一节点装置对所述第二分区的检索。响应于在所述预定时间周期内未接收到所述第一任务关于所述第二分区由所述第二节点装置完成的指示,可致使所述处理器将所述第二任务在所述第二分区上的执行指派于所述第一节点装置;以及发射所述第二任务在所述第二分区上的执行对所述第一节点装置的指派的指示以致使所述第一节点装置对所述第二分区的检索。
可致使所述处理器执行包含如下的操作:从在对所述多个节点装置中的节点装置的执行所述第一任务的指派的发射与从所述节点装置接收到所述第一任务的执行完成的指示之间的时间量的至少一个测量值导出所述预定时间周期。
致使所述处理器执行包含如下的操作:确定所述多个节点装置中可用于执行所述第一任务的节点装置的数量;以及基于所述节点装置的数量以及描述所述第一数据集经组织的方式的元数据而导出所述第一数据集成为所述第一数据集的所述多个分区的划分。所述第一数据集可存储于一或多个存储装置内;可致使所述处理器执行包括从所述一或多个存储装置检索所述元数据的操作;所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置从所述一或多个存储装置检索所述第一分区;且所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置从所述一或多个存储装置检索所述第二分区。
致使所述处理器执行包含如下的操作:为所述处理器指派所述第一任务关于所述第一数据集的所述多个分区中的第三分区的执行;将所述第三分区的至少一些存储于耦合到所述处理器的至少一个易失性存储组件内;以及关于所述第三分区执行所述第一任务。
可致使所述处理器执行包含如下的操作:针对所述多个节点装置的子组中的每一节点装置,导出指派以从一或多个存储装置检索且存储所述第一数据集的所述多个分区中的一者以实现所述子组中的每一节点装置用作备份节点装置以响应于所述多个节点装置中的所述节点装置中的一者的失效,其中:所述多个节点装置中的第三节点装置经指派于关于所述第一数据集的所述多个分区中的第三分区执行所述第一任务;且所述第三节点经指派于从所述一或多个存储装置检索且存储所述第二分区以实现所述第三节点装置用作备份节点装置以响应于所述第二节点装置的失效。可致使所述处理器在所述预定时间周期期间从所述第三节点装置接收所述第一任务关于所述第三分区由所述第三节点装置执行的完成的指示,以使得所述第三节点装置可用于指派于执行另一任务。可致使所述处理器响应于在所述预定时间周期期间接收到所述第一任务关于所述第三分区由所述第三节点装置完成的指示,且响应于在所述预定时间周期内未接收到所述第一任务关于所述第二分区由所述第二节点装置完成的指示:将所述第二任务在所述第二分区上的执行指派于所述第三节点装置;以及发射所述第二任务在所述第二分区上的执行对所述第三节点装置的指派的指示。
所述第一任务关于所述第一和第二分区的执行可包含:使用所述第一和第二分区作为对所述第一任务的执行的输入以产生第二数据集的对应分区;且所述第二任务在所述第二分区上的执行可包含使用所述第二分区作为对所述第二任务的执行的输入以产生第三数据集的对应分区。所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置:从一或多个存储装置检索所述第一分区;使用存储于所述第一节点装置的易失性存储装置内的所述第一分区的至少一些作为对所述第一任务由所述第一节点装置的执行的输入;以及在所述第一分区的至少一些保持存储于所述第一节点装置的易失性存储装置内的同时发射所述第一任务关于所述第一分区的执行完成的指示。所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置:从一或多个存储装置检索所述第二分区;使用存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第一任务由所述第二节点装置的执行的输入;以及在所述第二分区的至少一些保持存储于所述第二节点装置的易失性存储装置内的同时发射所述第一任务关于所述第二分区的执行完成的指示。所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置使用仍存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第二任务由所述第二节点装置的执行的输入,以最小化对存储于所述第二节点装置的非易失性存储装置内的所述第二分区的存取。
所述第一任务关于所述第一和第二分区的执行可包含执行所述第一任务以使用第二数据集的对应分区作为输入而产生所述第一和第二分区作为所述第一任务的输出;且所述第二任务在所述第二分区上的执行可包含使用所述第二分区作为对所述第二任务的执行的输入以产生第三数据集的对应分区。所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置:产生所述第一分区作为所述第一任务由所述第一节点装置的执行的输出;以及在所述第一分区的至少一些保持存储于所述第一节点装置的易失性存储装置内的同时发射所述第一任务关于所述第一分区的执行完成的指示。所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置:产生所述第二分区作为所述第一任务由所述第二节点装置的执行的输出;以及在所述第二分区的至少一些保持存储于所述第二节点装置的易失性存储装置内的同时发射所述第一任务关于所述第二分区的执行完成的指示。所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置使用仍存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第二任务由所述第二节点装置的执行的输入,以最小化对存储于所述第二节点装置的非易失性存储装置内的所述第二分区的存取。
一种计算机实施的方法可包含针对多个节点装置中的每一节点装置在协调装置处导出第一任务关于第一数据集的执行的指派,其中所述第一数据集可划分为多个分区,且所述导出可包含:导出所述多个节点装置中的第一节点装置关于所述第一数据集的所述多个分区中的第一分区执行所述第一任务的第一指派;以及导出所述多个节点装置中的第二节点装置经指派于关于所述第一数据集的所述多个分区中的第二分区执行所述第一任务的第二指派。所述方法可包含:发射所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示,以致使所述第一任务关于所述第一分区由所述第一节点装置执行且致使所述第一分区的至少一些在所述第一节点装置的易失性存储装置内的存储;发射所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示,以致使所述第一任务关于所述第二分区由所述第二节点装置执行且致使所述第二分区的至少一些在所述第二节点装置的易失性存储装置内的存储;在所述协调装置处从所述第一节点装置接收所述第一任务关于所述第一分区由所述第一节点装置执行的完成的指示以使得所述第一节点装置可用于指派于执行另一任务;在接收到所述第一任务关于所述第一分区由所述第一节点装置执行的完成的指示之后延迟所述第二分区上的第二任务的执行对所述第一节点装置的指派多达预定时间周期,而不管将对所述第二分区执行的所述第二任务的就绪,且不管由于第一任务关于所述第一分区的执行的完成所致的所述第一节点的可用性;以及在所述协调装置处确定是否在所述预定时间周期内从所述第二节点装置接收到所述第一任务关于所述第二分区由所述第二节点装置的执行完成以使得所述第二节点装置可用于指派于执行另一任务的指示。所述方法可包含响应于在所述预定时间周期内所述第一任务关于所述第二分区由所述第二节点装置完成的指示:将所述第二任务在第二分区上的执行指派于所述第二节点装置以实现对所述第二节点装置的易失性存储装置内的第二分区的至少一些的存取;以及发射所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示以避免所述第一节点装置对所述第二分区的检索。
所述方法可包含在所述协调装置处从在对所述多个节点装置中的节点装置的执行所述第一任务的指派的发射与从所述节点装置接收到所述第一任务的执行完成的指示之间的时间量的至少一个测量值导出所述预定时间周期。
所述方法可包含:在所述协调装置处确定所述多个节点装置中可用于执行所述第一任务的节点装置的数量;以及在所述协调装置处基于所述节点装置的数量以及描述所述第一数据集经组织的方式的元数据而导出所述第一数据集成为所述第一数据集的所述多个分区的划分。所述第一数据集存储于一或多个存储装置内;所述方法可包含由所述协调装置从所述一或多个存储装置检索所述元数据;所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置从所述一或多个存储装置检索所述第一分区;且所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置从所述一或多个存储装置检索所述第二分区。
所述方法可包含:向所述协调装置指派所述第一任务关于所述第一数据集的所述多个分区中的第三分区的执行;将所述第三分区的至少一些存储于所述协调装置的至少一个易失性存储组件内;以及在所述协调装置处关于所述第三分区执行所述第一任务。所述方法可包含响应于在所述预定时间周期内未接收到所述第一任务关于所述第二分区由所述第二节点装置完成的指示:将所述第二任务在所述第二分区上的执行指派于所述第一节点装置;以及发射所述第二任务在所述第二分区上的执行对所述第一节点装置的指派的指示以致使所述第一节点装置对所述第二分区的检索。
所述第一任务关于所述第一和第二分区的执行可包含:使用所述第一和第二分区作为对所述第一任务的执行的输入以产生第二数据集的对应分区;且所述第二任务在所述第二分区上的执行可包含使用所述第二分区作为对所述第二任务的执行的输入以产生第三数据集的对应分区。所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置:从一或多个存储装置检索所述第一分区;使用存储于所述第一节点装置的易失性存储装置内的所述第一分区的至少一些作为对所述第一任务由所述第一节点装置的执行的输入;以及在所述第一分区的至少一些保持存储于所述第一节点装置的易失性存储装置内的同时发射所述第一任务关于所述第一分区的执行完成的指示。所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置:从一或多个存储装置检索所述第二分区;使用存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第一任务由所述第二节点装置的执行的输入;以及在所述第二分区的至少一些保持存储于所述第二节点装置的易失性存储装置内的同时发射所述第一任务关于所述第二分区的执行完成的指示。所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置使用仍存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第二任务由所述第二节点装置的执行的输入,以最小化对存储于所述第二节点装置的非易失性存储装置内的所述第二分区的存取。
所述第一任务关于所述第一和第二分区的执行可包含执行所述第一任务以使用第二数据集的对应分区作为输入而产生所述第一和第二分区作为所述第一任务的输出;且所述第二任务在所述第二分区上的执行包括使用所述第二分区作为对所述第二任务的执行的输入以产生第三数据集的对应分区。所述第一任务关于所述第一分区的执行对所述第一节点装置的指派的指示的发射可致使所述第一节点装置:产生所述第一分区作为所述第一任务由所述第一节点装置的执行的输出;以及在所述第一分区的至少一些保持存储于所述第一节点装置的易失性存储装置内的同时发射所述第一任务关于所述第一分区的执行完成的指示。所述第一任务关于所述第二分区的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置:产生所述第二分区作为所述第一任务由所述第二节点装置的执行的输出;以及在所述第二分区的至少一些保持存储于所述第二节点装置的易失性存储装置内的同时发射所述第一任务关于所述第二分区的执行完成的指示。所述第二任务在所述第二分区上的执行对所述第二节点装置的指派的指示的发射可致使所述第二节点装置使用仍存储于所述第二节点装置的易失性存储装置内的所述第二分区的至少一些作为对所述第二任务由所述第二节点装置的执行的输入,以最小化对存储于所述第二节点装置的非易失性存储装置内的所述第二分区的存取。
一种设备可包含处理器以及用以存储指令的存储装置,所述指令在由所述处理器执行时致使所述处理器执行包括以下各项的操作:分析多个节点装置中的至少一个节点装置的资源的当前状态以确定所述至少一个节点装置的至少一个图形处理单元(GPU)经指派于执行分析例程的第一任务的可用性,其中:所述多个节点装置的操作经协调以至少部分并行地执行分析例程的任务;所述分析例程经产生以用于由所述至少一个节点的至少一个中央处理单元(CPU)执行;且所述至少一个节点装置的所述资源是选自由所述至少一个CPU、所述至少一个GPU以及所述至少一个节点装置的至少一个存储装置内的存储空间组成的群组。响应于所述至少一个GPU可用于经指派于执行所述分析例程的所述第一任务的确定,所述处理器可执行包含如下的操作:分析所述分析例程的第一任务例程以确定所述第一任务例程是否能够经编译以产生用于由所述至少一个GPU执行的GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第一任务的多个实例,而所述第一任务的所述多个实例的输入和输出之间不具有相依性,其中:所述第一任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的所述第一任务;且所述第一任务例程是否能够经编译以产生所述GPU任务例程的所述确定包括所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令的确定以及所述第一任务例程的输入和输出是否经界定为不需要所述相依性的确定。响应于所述第一任务例程能够经编译以产生所述GPU任务例程的确定,所述处理器可执行包含如下的操作:将数据集的多个数据集分区中的数据集分区指派于所述至少一个节点装置以实现由所述至少一个GPU对所述数据集分区的存取;采用转换规则以将所述第一任务例程的至少一个指令转换为所述GPU任务例程的至少一个对应指令;编译所述GPU任务例程的所述至少一个对应指令以用于由所述至少一个GPU执行;以及将所述分析例程的所述第一任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第一任务的所述多个实例关于所述数据集分区由所述至少一个GPU的执行。
为了确定所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令,可致使所述处理器进行以下操作:确定所述第一任务例程的所述指令是否包含在无法转换为能够由所述至少一个GPU执行的至少一个指令的指令集中;以及响应于所述第一任务例程的所述指令不包含在所述指令集中的确定,确定所述第一任务例程的所述指令是否在所述第一任务例程中以阻止转换为能够由所述至少一个GPU执行的至少一个指令的方式使用。为了将所述第一任务例程的所述至少一个指令转换为所述GPU任务例程的所述至少一个对应指令,可致使所述处理器根据所述转换规则将所述第一任务例程的所述至少一个指令从第一编程语言转换为第二编程语言中的所述至少一个对应指令。所述至少一个节点装置的所述至少一个存储装置可包含以通信方式耦合到所述至少一个CPU的第一易失性存储装置以及以通信方式耦合到所述至少一个GPU的第二易失性存储装置;将所述数据集分区指派于所述至少一个节点装置以实现所述数据集分区由所述至少一个GPU的存取可包含致使将所述数据集分区存储于所述第二易失性存储装置内;且响应于所述至少一个GPU不可用于经指派于执行所述分析例程的所述第一任务的确定,可致使所述处理器执行包含以下各项的操作:制止分析所述第一任务例程以确定所述第一任务例程是否能够经编译以产生所述GPU任务例程;将所述数据集分区指派于所述至少一个节点装置以致使所述数据集分区存储于所述第一易失性存储装置内以实现所述数据集分区由所述至少一个CPU的存取;编译所述第一任务例程以用于由所述至少一个CPU执行;以及将所述分析例程的所述第一任务关于所述数据集分区的所述执行指派于所述至少一个节点装置以实现所述第一任务关于所述数据集分区由所述至少一个CPU的执行。
所述设备可包含协调所述多个节点装置的所述操作的协调装置;可致使所述处理器从所述多个节点装置中的每一节点装置重复接收对所述当前状态的更新;且为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,可致使所述处理器识别所述多个节点装置中并入有由所述当前状态指示为可用的GPU的节点装置。为了将所述数据集的所述数据集分区指派于所述至少一个节点装置,可致使所述处理器执行包含以下各项的操作:分析指示所述数据集的结构特征的元数据以识别所述数据集能够划分成所述多个数据集分区的方式中的限制,其中所述限制选自由所述数据集内的数据的最小原子单元的指示以及分割方案的规范组成的群组;以及至少部分地基于所述限制而导出所述数据集成为所述多个数据集分区的划分。可致使所述处理器执行包含以下各项的操作:从所述数据集存储于的至少一个存储装置检索所述元数据;以及发射所述数据集分区对所述至少一个节点装置或所述至少一个存储装置的所述指派的指示以致使所述数据集分区从所述至少一个存储装置发射到所述至少一个节点装置。
所述设备可包含所述至少一个节点装置中的节点装置;所述节点装置可包含所述至少一个GPU中的GPU;所述处理器可包含所述至少一个CPU中的CPU;且为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,可致使所述CPU确定所述节点装置的所述GPU是否由所述当前状态指示为可用的。致使所述处理器执行包含以下各项的操作:分析所述分析例程的第二任务例程以确定所述第二任务例程是否能够经编译以产生用于由所述至少一个GPU执行的另一GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第二任务的多个实例,而所述第二任务的所述多个实例的输入和输出之间不具有相依性,其中所述第二任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的第二任务。响应于所述第二任务例程不能够经编译以产生所述另一GPU任务例程的确定,所述处理器可执行包含如下的操作:编译所述第二任务例程以用于由所述至少一个CPU执行;以及将所述分析例程的所述第二任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第二任务关于所述数据集分区由所述至少一个CPU的执行。
所述转换规则可选自由以下各项组成的群组:在存在于所述第一任务例程内的情况下各自阻止所述第一任务例程的编译产生所述GPU任务例程的指令集的规范;在存在于所述第一任务例程内的情况下各自将不阻止所述第一任务例程的编译产生所述GPU任务例程的指令集的规范;在阻止所述第一任务例程的编译产生所述GPU任务例程的指令的使用方式发生于所述第一任务例程内的情况下所述指令的所述使用方式的规范,其中所述指令在所述第一任务例程内的存在原本不阻止所述第一任务例程的编译产生所述GPU任务例程;用以将所述第一任务例程中将由所述至少一个CPU在循环中执行的指令转换为所述GPU任务例程的将由所述至少一个GPU在比所述循环少的迭代的对应循环中并行执行的对应指令的程序的规范;用以将所述第一任务例程中将由所述至少一个CPU在循环中执行的指令转换为所述GPU任务例程的将由所述至少一个GPU并行执行且不在循环中的对应指令的程序的规范;以及用以将所述第一任务例程中界定包括将在所述第一任务例程由所述至少一个CPU的执行期间循序存取的条目的数据结构的指令转换为所述GPU任务例程的界定包括将在所述GPU任务例程由所述至少一个GPU的执行期间并行存取的条目的对应数据结构的对应指令的程序的规范。
一种有形地体现于非暂时性机器可读存储媒体中的计算机程序产品,所述计算机程序产品包含可操作以致使处理器执行包含以下各项的操作的指令:分析多个节点装置中的至少一个节点装置的资源的当前状态以确定所述至少一个节点装置的至少一个图形处理单元(GPU)经指派于执行分析例程的第一任务的可用性,其中:所述多个节点装置的操作经协调以至少部分并行地执行所述分析例程的任务;所述分析例程经产生以用于由所述至少一个节点的至少一个中央处理单元(CPU)执行;且所述至少一个节点装置的所述资源是选自由所述至少一个CPU、所述至少一个GPU以及所述至少一个节点装置的至少一个存储装置内的存储空间组成的群组。响应于所述至少一个GPU可用于经指派于执行所述分析例程的所述第一任务的确定,可致使所述处理器执行包含如下的操作:分析所述分析例程的第一任务例程以确定所述第一任务例程是否能够经编译以产生用于由所述至少一个GPU执行的GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第一任务的多个实例,而所述第一任务的所述多个实例的输入和输出之间不具有相依性,其中:所述第一任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的所述第一任务;且所述第一任务例程是否能够经编译以产生所述GPU任务例程的所述确定包括所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令的确定以及所述第一任务例程的输入和输出是否经界定为不需要所述相依性的确定。响应于所述第一任务例程能够经编译以产生所述GPU任务例程的确定,可致使所述处理器执行包含如下的操作:将数据集的多个数据集分区中的数据集分区指派于所述至少一个节点装置以实现由所述至少一个GPU对所述数据集分区的存取;采用转换规则以将所述第一任务例程的至少一个指令转换为所述GPU任务例程的至少一个对应指令;编译所述GPU任务例程的所述至少一个对应指令以用于由所述至少一个GPU执行;以及将所述分析例程的所述第一任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第一任务的所述多个实例关于所述数据集分区由所述至少一个GPU的执行。
为了确定所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令,可致使所述处理器进行以下操作:确定所述第一任务例程的所述指令是否包含在无法转换为能够由所述至少一个GPU执行的至少一个指令的指令集中;以及响应于所述第一任务例程的所述指令不包含在所述指令集中的确定,确定所述第一任务例程的所述指令是否在所述第一任务例程中以阻止转换为能够由所述至少一个GPU执行的至少一个指令的方式使用。为了将所述第一任务例程的所述至少一个指令转换为所述GPU任务例程的所述至少一个对应指令,可致使所述处理器根据所述转换规则将所述第一任务例程的所述至少一个指令从第一编程语言转换为第二编程语言中的所述至少一个对应指令。所述至少一个节点装置的所述至少一个存储装置包括以通信方式耦合到所述至少一个CPU的第一易失性存储装置以及以通信方式耦合到所述至少一个GPU的第二易失性存储装置;将所述数据集分区指派于所述至少一个节点装置以实现所述数据集分区由所述至少一个GPU的存取可包含致使将所述数据集分区存储于所述第二易失性存储装置内;且响应于所述至少一个GPU不可用于经指派于执行所述分析例程的所述第一任务的确定,致使所述处理器执行包含以下各项的操作:制止分析所述第一任务例程以确定所述第一任务例程是否能够经编译以产生所述GPU任务例程;将所述数据集分区指派于所述至少一个节点装置以致使所述数据集分区存储于所述第一易失性存储装置内以实现所述数据集分区由所述至少一个CPU的存取;编译所述第一任务例程以用于由所述至少一个CPU执行;以及将所述分析例程的所述第一任务关于所述数据集分区的所述执行指派于所述至少一个节点装置以实现所述第一任务关于所述数据集分区由所述至少一个CPU的执行。
所述处理器可以是协调所述多个节点装置的所述操作的协调装置的组件;可致使所述处理器从所述多个节点装置中的每一节点装置重复接收对所述当前状态的更新;以及为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,可致使所述处理器识别所述多个节点装置中并入有在所述当前状态中经指示为可用的GPU的节点装置。为了将所述数据集的所述数据集分区指派于所述至少一个节点装置,致使所述处理器执行包含以下各项的操作:分析指示所述数据集的结构特征的元数据以识别所述数据集能够划分成所述多个数据集分区的方式中的限制,其中所述限制选自由所述数据集内的数据的最小原子单元的指示以及分割方案的规范组成的群组;以及至少部分地基于所述限制而导出所述数据集成为所述多个数据集分区的划分。可致使所述处理器执行包含以下各项的操作:从所述数据集存储于的至少一个存储装置检索所述元数据;以及发射所述数据集分区对所述至少一个节点装置或所述至少一个存储装置的所述指派的指示以致使所述数据集分区从所述至少一个存储装置发射到所述至少一个节点装置。
所述处理器可包含所述至少一个CPU中的CPU;所述CPU可以是所述至少一个节点装置中的节点装置的组件;所述节点装置可包含所述至少一个GPU中的GPU;且为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,可致使所述CPU确定所述节点装置的所述GPU是否由所述当前状态指示为可用的。可致使所述处理器执行包含以下各项的操作:分析所述分析例程的第二任务例程以确定所述第二任务例程是否能够经编译以产生用于由所述至少一个GPU执行的另一GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第二任务的多个实例,而所述第二任务的所述多个实例的输入和输出之间不具有相依性,其中所述第二任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的第二任务。响应于所述第二任务例程不能够经编译以产生所述另一GPU任务例程的确定,可致使所述处理器:编译所述第二任务例程以用于由所述至少一个CPU执行;以及将所述分析例程的所述第二任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第二任务关于所述数据集分区由所述至少一个CPU的执行。所述至少一个GPU可支持所述GPU任务例程的所述至少一个对应指令跨越至少一千个执行线程并行的执行。
一种计算机实施的方法可包含:分析多个节点装置中的至少一个节点装置的资源的当前状态以确定所述至少一个节点装置的至少一个图形处理单元(GPU)经指派于执行分析例程的第一任务的可用性,其中:所述多个节点装置的操作经协调以至少部分并行地执行分析例程的任务;所述分析例程经产生以用于由所述至少一个节点的至少一个中央处理单元(CPU)执行;且所述至少一个节点装置的所述资源是选自由所述至少一个CPU、所述至少一个GPU以及所述至少一个节点装置的至少一个存储装置内的存储空间组成的群组。所述方法可包含响应于所述至少一个GPU可用于经指派于执行所述分析例程的所述第一任务的确定:分析所述分析例程的第一任务例程以确定所述第一任务例程是否能够经编译以产生用于由所述至少一个GPU执行的GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第一任务的多个实例,而所述第一任务的所述多个实例的输入和输出之间不具有相依性,其中:所述第一任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的所述第一任务;且所述第一任务例程是否能够经编译以产生所述GPU任务例程的所述确定包括所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令的确定以及所述第一任务例程的输入和输出是否经界定为不需要所述相依性的确定。所述方法可包含响应于所述第一任务例程能够经编译以产生所述GPU任务例程的确定:将数据集的多个数据集分区中的数据集分区指派于所述至少一个节点装置以实现由所述至少一个GPU对所述数据集分区的存取;采用转换规则以将所述第一任务例程的至少一个指令转换为所述GPU任务例程的至少一个对应指令;编译所述GPU任务例程的所述至少一个对应指令以用于由所述至少一个GPU执行;以及将所述分析例程的所述第一任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第一任务的所述多个实例关于所述数据集分区由所述至少一个GPU的执行。
确定所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令可包含:确定所述第一任务例程的所述指令是否包含在无法转换为能够由所述至少一个GPU执行的至少一个指令的指令集中;以及响应于所述第一任务例程的所述指令不包含在所述指令集中的确定,确定所述第一任务例程的所述指令是否在所述第一任务例程中以阻止转换为能够由所述至少一个GPU执行的至少一个指令的方式使用。将所述第一任务例程的所述至少一个指令转换为所述GPU任务例程的所述至少一个对应指令可包含根据所述转换规则将所述第一任务例程的所述至少一个指令从第一编程语言转换为第二编程语言中的所述至少一个对应指令。
所述至少一个节点装置的所述至少一个存储装置可包含以通信方式耦合到所述至少一个CPU的第一易失性存储装置以及以通信方式耦合到所述至少一个GPU的第二易失性存储装置;将所述数据集分区指派于所述至少一个节点装置以实现所述数据集分区由所述至少一个GPU的存取可包含致使将所述数据集分区存储于所述第二易失性存储装置内;且响应于所述至少一个GPU不可用于经指派于执行所述分析例程的所述第一任务的确定,所述方法可包含:制止分析所述第一任务例程以确定所述第一任务例程是否能够经编译以产生所述GPU任务例程;将所述数据集分区指派于所述至少一个节点装置以致使所述数据集分区存储于所述第一易失性存储装置内以实现所述数据集分区由所述至少一个CPU的存取;编译所述第一任务例程以用于由所述至少一个CPU执行;以及将所述分析例程的所述第一任务关于所述数据集分区的所述执行指派于所述至少一个节点装置以实现所述第一任务关于所述数据集分区由所述至少一个CPU的执行。
协调装置可协调所述多个节点装置的所述操作;所述协调装置可从所述多个节点装置中的每一节点装置重复接收对所述当前状态的更新;且分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性可包含在所述协调装置处识别所述多个节点装置中并入有在所述当前状态中经指示为可用的GPU的节点装置。将所述数据集的所述数据集分区指派于所述至少一个节点装置可包含:在所述协调装置处分析指示所述数据集的结构特征的元数据以识别所述数据集能够划分成所述多个数据集分区的方式中的限制,其中所述限制选自由所述数据集内的数据的最小原子单元的指示以及分割方案的规范组成的群组;以及至少部分地基于所述限制而导出所述数据集成为所述多个数据集分区的划分。所述方法可包含:从所述数据集存储于的至少一个存储装置检索所述元数据;以及发射所述数据集分区对所述至少一个节点装置或所述至少一个存储装置的所述指派的指示以致使所述数据集分区从所述至少一个存储装置发射到所述至少一个节点装置。
分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性可包含由节点装置的CPU分析所述节点装置的当前状态是否所述节点装置的GPU当前可用,其中:所述至少一个CPU可包含所述CPU;所述至少一个节点装置可包含所述节点装置;且所述至少一个GPU可包含所述GPU。
技术方案21所述的方法可包含:分析所述分析例程的第二任务例程以确定所述第二任务例程是否能够经编译以产生用于由所述至少一个GPU执行的另一GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第二任务的多个实例,而所述第二任务的所述多个实例的输入和输出之间不具有相依性,其中所述第二任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的第二任务。所述方法可包含响应于所述第二任务例程不能够经编译以产生所述另一GPU任务例程的确定:编译所述第二任务例程以用于由所述至少一个CPU执行;以及将所述分析例程的所述第二任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第二任务关于所述数据集分区由所述至少一个CPU的执行。所述方法可包含分析所述分析例程以确定所述分析例程的任务次序,其中所述任务次序包括所述第一和第二任务的相对次序。
在参考以下说明书、权利要求书以及附图之后,前述内容连同其它特征和实施例将变得更显而易见。
附图说明
结合附图描述本发明:
图1说明根据本发明技术的一些实施例的提供计算系统的硬件组件的图示的框图。
图2说明根据本发明技术的一些实施例的包含在交换系统上且经由网络彼此通信的装置的实例集合的实例网络。
图3说明根据本发明技术的一些实施例的通信协议系统的概念模型的表示。
图4说明根据本发明技术的一些实施例的包含多种控制节点和工作者节点的通信网格计算系统。
图5说明根据本发明技术的一些实施例的展示用于在节点失效之后调整通信网格或通信网格中的工作项目的实例过程的流程图。
图6说明根据本发明技术的一些实施例的包含控制节点和工作者节点的通信网格计算系统的一部分。
图7说明根据本发明技术的一些实施例的展示用于执行数据分析或处理项目的实例过程的流程图。
图8说明根据本发明技术的实施例的包含事件流处理引擎(ESPE)的组件的框图。
图9说明根据本发明技术的一些实施例的展示包含由事件流处理引擎执行的操作的实例过程的流程图。
图10说明根据本发明技术的实施例的介接于发布装置与多个事件预订装置之间的ESP系统。
图11A和11B各自说明分布式处理系统的实例实施例。
图12说明页调换的实例实施例。
图13A和13B各自说明将分析例程的任务执行指派于分布式处理系统的节点装置的实例实施例。
图14A、14B和14C共同说明数据集分区和任务的指派的实例实施例。
图15A和15B共同说明节点装置的实例实施例对经指派任务的执行的实例。
图16说明数据集分区和任务的指派的另一实例实施例。
图17A、17B和17C共同说明数据集分区和任务的指派中的延迟的实例实施例。
图18A、18B和18C共同说明数据集分区和任务的指派中的延迟的另一实例实施例。
图19说明通过协调装置的任务例程分析和任务指派的再一实例实施例。
图20说明节点装置对任务例程的分析和编译的再一实例实施例。
图21说明协调装置对任务的初始和后续指派的再一实例实施例。
图22说明用于在任务的后续指派中使用的延迟时间周期的导出的再一实例实施例。
图23说明协调装置对任务的经延迟指派的再一实例实施例。
具体实施方式
本文所描述的各种实施例大体上是针对用于改善节点装置的网格内的处理、存储和网络带宽资源的有效使用以使得能够在较少时间中完成个别分析例程的技术。各种实施例还大体上针对用于改善由网格的至少一些处理器提供的多线程支持的容易利用的技术。节点装置的网格的每一节点装置可包含提供对数据和例程的较快存取的易失性存储装置,以及提供较高存储容量但具有比易失性存储装置慢的存取的非易失性存储装置。并且,所述网格的每一节点可包含一或多个中央处理单元(CPU),或可包含一或多个CPU与一或多个图形处理单元(GPU)的组合,其中的每一者可较好地适合于执行分析例程的不同类型的任务。分析例程的数据集分区和任务对节点装置的初始指派可基于节点装置内的资源的可用性和/或基于分析例程内的任务例程的自动分析以识别能够被转换且编译以用于由GPU而不是CPU执行的任务例程。此分析可与导出初始指派结合而执行,或作为编译任务例程中的每一者以用于由CPU和/或GPU执行的部分而执行。随后,在分析例程的任务例程的执行期间,在一个节点装置变成可用以使得其可被指派关于特定数据集分区将执行的下一任务时,可以将对所述一个节点装置的此指派延迟预定时间周期以允许仍在执行关于所述特定数据集分区的先前任务的另一节点装置有机会变为可用且被指派以执行关于所述特定数据集分区的所述下一任务。此指派的延迟可使得能够利用另一节点装置的易失性存储装置内的特定数据集分区的时间有限存储,以进而使得能够更快地关于特定数据集分区执行下一任务。此指派的延迟还可避免带来与将特定数据集分区发射到所述一个节点装置相关联的潜在较大延迟。
节点装置的网格的协调装置可从节点装置网格的节点中的每一者重复接收节点数据,从而提供每一者内的各种处理、存储和/或网络接入资源的可用性程度的重复更新的指示。所述协调装置还可接收分析例程,其包含用于关于至少一个数据集将执行的多个任务的多个任务例程的可执行指令,且指定所述任务将执行的次序。所述协调装置可进一步接收指示至少所述一个数据集的各种结构特征的元数据。从所述节点数据、元数据和/或分析例程,所述协调装置可导出至少所述一个数据集的数据集分区对所述节点装置中的选定节点装置的初始指派以及由选定节点装置将执行的任务的初始指派。所述协调装置接着可将初始指派的指示发射到选定节点装置。作为这些初始指派的部分,至少所述一个数据集的多个数据集分区可在选定节点装置之间分布以使得选定节点装置能够至少部分地关于其对应数据集分区并行地执行相同任务。所述协调装置可另外向存储数据集的单个存储装置或存储装置网格发射将对选定节点装置作出的数据集分区分布的指示作为初始指派的部分,以使得初始任务的执行能够开始。在一些实施例中,选定节点装置中的每一者可从存储装置中的一或多者检索数据集分区中的一或多者。在其它实施例中,数据集分区中的一或多者可由存储装置中的一或多者发射到选定节点装置中的每一者。
关于协调装置可重复接收关于其的节点数据的处理资源,除了并入一或多个CPU之外或者代替于并入一或多个CPU,节点装置中的每一者可以并入一或多个GPU。所述一或多个CPU可采用被认为良好适合于任务例程的串行处理的内部处理架构,所述任务例程包含调节不同指令集对各种确定结果的执行的各种输入/输出操作和/或分支操作。所述一或多个CPU可各自包含一或多个处理核心,其可各自支持相对有限数量的执行线程上的相对有限程度的并行指令执行。相比之下,所述一或多个GPU可采用被认为良好适合于任务例程的并行处理的内部处理架构,所述任务例程包含相对有限多种计算和/或逐位运算。在一些实施例中,所述一或多个GPU可能够支持跨越相对大数量的执行线程的任务的相对大数量的实例的并行处理,其中所述任务的实例之间不存在相依性(有时称为“完美并行”)。实际上,对于相对有限多种任务,单个节点装置内的单个GPU可能够进行与许多单独节点装置的CPU相同的工作,但更快且更便宜。因此,存在并入有能够以此速度增加来执行此有限多种任务的一或多个GPU的节点装置的至少一个子集可为有利的,且在此有限多种的分析例程中能够自动识别任务可为有利的。
在其中一些但非所有节点装置并入了这些GPU的节点装置网格的实施例中,分析例程是否包含用于适合作为完美并行任务由GPU比CPU更迅速地执行的一或多个任务的任务例程可以致使协调装置确定是否对指派并入GPU的节点装置或未并入GPU的节点装置执行所述分析例程的任务给出优先级。所述协调装置可分析分析例程的任务例程以识别以指令实施且以避免相依性的方式对数据起作用的任务,这致使那些任务适于经编译以用于作为完美并行任务跨越大量线程由一或多个GPU执行。如果此分析未找到此任务例程,那么可编译所述分析例程的全部以用于单独由CPU执行。并且,可对指派所述分析例程的任务由未并入GPU和/或并入一或多个CPU以及一或多个GPU的节点装置执行给出优先级。可实现此优先级区分以使尽可能多的并入一或多个GPU的节点可用于被指派另一分析例程的任务,其中在一或多个任务例程中关于数据的指令和/或交互可修正为经编译以用于作为完美并行任务由GPU执行。
然而,应注意,虽然分析分析例程的任务例程的结果可能对选择何种节点装置用于任务指派施加一些影响,但在一些实施例中,在可用的节点装置当中何种处理资源可用的指示可以对所述任务例程是否经分析和/或经编译用于由GPU执行施加一些影响。更具体来说,在其中并入GPU的节点装置当前都不可用于被指派任何任务(例如,并入GPU的所有节点装置被指派于执行另一且完全不相关分析例程的任务)的实施例中,协调装置可制止执行任务例程的任何分析以确定任务例程中的任一者是否适于经编译用于由GPU执行,因为没有GPU当前可用于进行此操作。
在执行任务例程内的指令的分析的情况下,此分析可必然伴有用于每一任务例程的指令与各自已知的指令的列表的比较以至少不阻止其对应任务作为完美并行任务由GPU执行,和/或与各自已知的指令的列表的比较以使任务不能作为完美并行任务由GPU执行。另外,在发现任务例程不包含使其相应任务不能作为完美并行任务由GPU执行的指令的情况下,可以分析所述任务例程内的指令所使用的方式以确定任何指令所使用的方式是否使对应任务不能作为完美并行任务由GPU执行。举例来说,如果这些指令用于以将在任务例程的实例当中产生相依性以使得那些实例无法真正并行地执行的方式对数据执行操作,那么所述任务例程的任务可能不适于作为完美并行任务执行。如果任务例程的指令以及那些指令所使用的方式经确定为不阻止对应任务作为完美并行任务由GPU执行,那么编译所述任务例程的指令用于由一或多个GPU的此执行可以是默认动作过程。在节点装置网格包含并入有不共享指令集的不同GPU的节点装置的情况下,任务例程的编译以用于由一或多个GPU的此执行可必然伴有任务例程的多次编译以支持不同GPU中的每一者。
在一些实施例中,用于执行经确定为适于作为完美并行任务由GPU执行的任务任务例程的编译可必然伴有将任务例程的并非经产生以致使任务由GPU的此完美并行执行的指令转换为经产生以致使任务的此执行的指令。用以执行此转换的编译器可采用编译规则的集合,所述编译规则各自与任务例程的指令当中可能存在的一或多个特定指令相关联,且致使将所述一或多个特定指令转换为实现由GPU的完美并行执行的一或多个其它指令。在这些编译规则当中可以是如下规则:所述规则各自致使将特定类型的指令循环转换为较适于由GPU的完美并行执行的另一类型的循环(例如,具有减少的迭代数量的循环),和/或致使特定类型的指令循环被以不必然伴有循环的使用的完美并行方式用于由GPU执行的一或多个其它指令代替。也可以存在编译规则的集合,所述编译规则各自与可由任务例程的指令具现化或另外采用的特定类型的数据结构相关联,且致使所述数据结构转换为更适用于由GPU的完美并行执行的另一数据结构。
通过一或多个任务例程的指令的这些转换的使用,编写分析例程的任务例程的指令的人员可具备利用并入到节点装置中的至少一些节点装置中的一或多个GPU的完美并行处理能力的机会,而不需要编写具体用于由GPU的完美并行执行的任务例程的指令。换句话说,这些人员能够不需要获取构造及编写以经设计用于由GPU的完美并行执行的方式实施分析例程的任务的指令的技能。另外,在节点装置网格包含并入有不共享指令集的不同GPU的节点装置的情况下,这些人员进一步不需要构造及编写任务例程的指令的不同版本以解决由不同GPU中的每一者的完美并行执行的不同特异性。
关于协调装置可重复接收关于其的节点数据的存储资源,节点装置中的每一者可并入有被实施为易失性和非易失性存储装置的组合的存储能力。易失性存储装置可借助采用存储技术的一或多个存储组件实施,所述存储技术实现对数据和/或例程的相对快速存取,但不能够在无电力连续供应的情况下保持存储于其中的数据和/或例程。这些技术包含且不限于多种类型的随机存取存储器(RAM)中的任一者。非易失性存储器可借助采用存储技术的一或多个存储组件实施,所述存储技术能够无论是否持续提供电力都保持存储于其中的数据和/或例程,但不能够提供与易失性存储装置可基于的各种易失性存储技术所提供的速度一样快的存取。用于非易失性存储装置的这些技术包含且不限于多种铁磁性和/或光学存储媒体中的任一者的使用。
由于与非易失性存储装置相比由易失性存储装置提供的更快存取,因此在由并入到每一节点装置中的一或多个CPU和/或一或多个GPU执行的过程中的指令可存储于易失性存储装置内,在此它们能够被更快地读取、写入和/或修改。然而,由于与易失性存储组件相比非易失性存储组件的常常更低的成本和/或更高的存储密度,因此在节点装置中的每一者内,非易失性存储装置可实施为具有比易失性存储装置更高的存储容量。虽然可存在大小充分小和/或在充分大数量的节点装置当中分布的数据集以致使数据集的经分布到节点装置的每一数据集分区充分小以完全可存储于易失性存储装置内,但是设想大部分数据集的数据集分区更可能各自都太大而无法这么做。
因此,在每一节点装置内,正由一或多个CPU和/或一或多个GPU执行的例程和/或正由它们存取的数据的页可以从非易失性存储装置调换到易失性存储装置中。如所属领域的技术人员可能熟悉,可使用多种算法中的任一种来选择例程和/或数据的页以调换到易失性存储装置中,和/或选择将保持于易失性存储装置内的页而将其它页调换回到非易失性存储装置,包含且不限于多种基于需求的和/或预测性的算法中的任一种。在一或多个实施例中,节点装置中的一或多者可执行包含分页组件的操作系统(OS),所述分页组件执行例程和/或数据的均匀设定大小的页的此调换。取决于各种因数,例如执行的操作的类型、对例程和/或数据的各种页做出的存取的频率和/或正并行执行的例程的数目,例程和/或数据的页可保持于易失性存储装置内达较长或较短时间周期,然后将其调换回到非易失性存储装置以释放易失性存储装置内的空间以用于例程和/或数据的不同页。因此,节点装置中的每一者内的易失性存储装置内的例程和/或数据页的存储可为时间受限的。
在并入有一或多个CPU和一或多个GPU的节点装置中,可存在用于所述一或多个CPU的一个易失性存储装置以及用于所述一或多个GPU的另一易失性存储装置。然而,可存在单个非易失性存储装置,且例程和/或数据的页可以在所述单个非易失性存储装置与所述两个易失性存储装置中的每一者之间调换。在一些实施例中,所述一或多个GPU的操作可至少部分地由所述一或多个CPU控制以使得所述一或多个GPU可能不可完全自主于所述一或多个CPU而操作。在此类实施例中,与所述一或多个GPU相关联的易失性存储装置也可以对所述一或多个CPU为可存取的,且由所述一或多个CPU执行以执行用于所述一或多个CPU的例程和/或数据页的调换的存储装置页管理例程也可以执行用于所述一或多个GPU的例程和/或数据页的此调换。如所属领域的技术人员可能熟悉,由所述一或多个CPU代表所述一或多个GPU进行的此调换可能由于如下需要而产生:一或多个驱动器例程由所述一或多个CPU执行以实现对非易失性存储装置的存取和/或利用用于存储数据和/或例程的文件系统作为非易失性存储装置的文件。因此,无论选定节点装置中的每一者被提供数据集分区的确切方式如何,此所接收数据集分区都可初始地完全存储于每一节点装置内的非易失性存储装置内。在此接收和存储后,接着可按需要将所接收数据集分区的页调换到所述一或多个CPU和/或一或多个GPU的易失性存储装置中,以支持关于所述数据集分区的分析例程的一或多个任务的执行。
关于协调装置可重复接收关于其的节点数据的网络接入资源,节点装置中的每一者可并入有到网络的网络接口,其由节点装置网格采用以用通信方式使节点装置耦合到彼此、耦合到协调装置和/或耦合到一或多个存储装置(例如,存储装置网格)。由CPU和/或GPU执行以执行分析例程的任务的任务例程可以由协调装置经由网络分布到节点装置。并且,关于其执行任务的数据集分区可以从所述一或多个存储装置经由网络发射到节点装置,且在节点内导出的数据集分区可发射回到所述一或多个存储装置。如所属领域的技术人员可能熟悉,在一些实施例中,节点装置的一或多个GPU可能不能够直接操作节点装置的网络接口以实现与任务由所述一或多个GPU的执行相关联的例程和/或数据的交换。实际上,以类似于易失性与非易失性存储装置之间与一或多个GPU相关联的页的调换的方式,节点装置的一或多个CPU可因此代表一或多个GPU来操作所述网络接口。再次,由一或多个CPU代表一或多个GPU进行的此动作可能因一或多个驱动器例程由所述一或多个CPU执行以实现对网络接口的接入的需要而成为必要。
正因为获得对存储于节点装置的非易失性存储装置内的例程和/或数据的存取可能比获得对易失性存储装置内的例程和/或数据的存取显著地慢,所以经由网络获得对另一装置内的例程和/或数据的存取可能要显著地更慢。此外,在一些实施例中,经由网络获得对存储于非易失性存储装置内或另一装置内的例程和/或数据的存取对于一或多个GPU可能甚至更慢,这是因为GPU依赖于节点装置的一或多个CPU以采取行动来代表一或多个GPU实现此类存取。因此,可视为合乎需要的是,只要有可能,在仍存储于与进行那些存取的CPU和/或GPU相关联的易失性存储装置内时最大化对例程和/或数据进行的存取,并在存储于非易失性存储装置内和/或其它装置内时最小化对例程和/或数据进行的存取,使得存取必须经由网络。这可引起允许节点装置网格的一些节点装置变得在各种时间段内空闲,以等待用于执行对于特定数据集分区的特定任务的特定节点装置的可用性,而非立刻将任务指派到变得可供用于执行任务的每一节点,节点装置已在其存储装置内具有特定数据集分区,而不管任务如何。换句话说,对下一任务的指派可延迟某一时间段,以允许其中存储特定数据集分区的特定节点装置变得再次可用,来被指派涉及对特定数据集分区的使用的下一任务,而非立刻将下一任务指派给特定数据集分区将必须发射到的另一节点装置。此外,当存在待通过能够使用GPU来执行的特定分区执行的多个任务时,延迟指派那些多个任务中的下一个以允许有机会将那些任务中的下一个指派到并入有GPU且已存储特定数据集分区的节点装置可避免以下情形:将下一任务立刻指派到下一可用节点装置可引起对不并入有GPU的节点装置的指派,进而引起对那些任务中的下一个的更慢执行。
因此,举例来说,参与执行对数据集的第一数据集分区的分析的第一任务的第一节点装置完成其对关于第一数据集分区的第一任务的执行,且借此变得可用使得其可被指派以执行对数据集的第二数据集分区的分析的第二任务,协调装置可停止指派第一节点装置以因此在预定时间段内执行关于第二数据集分区的第二任务。可选择预定时间段以为参与执行对第二数据集分区的第一任务的第二节点装置提供以下机会:完成其对第二数据集分区的第一任务的执行,以使得第二节点装置变得能够被指派以执行关于第二数据集分区的第二任务。然而,如果第二节点装置不变得可用以被指派来执行关于第二数据集分区的第二任务,那么可向其中未存储第二数据集分区的另一节点装置(例如,第一节点装置)指派那个执行。替代地,在其它实施例中,如果仍存在也存储了第二数据集分区以准备响应于执行关于第二数据集分区的任务的节点装置的失效而使用另一节点装置作为备份,且如果第二节点装置不变得可用以被指派来执行关于第二数据集分区的第二任务,且如果另一此节点装置目前可用以被如此指派,那么可如此指派另一此节点装置。
以此方式,可利用以下事实:第二数据集分区已存储于第二节点装置的易失性存储装置和/或非易失性存储装置内,使得第二数据集分区不必在装置之间交换以实现通过另一节点装置执行关于第二数据集分区的第二任务。换句话说,如果关于第二数据集分区的第二任务的执行已指派给第一节点装置,那么第二数据集分区将需要从第二节点装置或从一或多个存储装置发射到第一节点装置。除了消耗至少第一节点装置的网络和网络接口的可用带宽以外,第一节点装置对关于第二数据集分区的第二任务的执行将必要地延迟,直到至少足够的第二数据集分区将由第一节点装置接收来实现开始执行为止。
借助于另一实例,第一节点装置(其参与执行分析例程的产生数据集的第一数据集分区的第一任务)和第二节点装置(其参与执行产生数据集的第二数据集分区的第二任务)中的每一个都可完成其对第一任务的执行。然而,虽然第一节点装置可以是可用的以被指派另一任务,但是第二节点装置(由于多个不相关分析当中的节点装置的共享)可参与执行不相关分析例程的任务,使得第二节点装置尚未可能可用以被指派以执行对第二节点装置自身产生的第二数据集分区的分析例程的第二任务。同样,协调装置可停止指派第一节点装置以在预定时间段内执行关于第二数据集分区的第二任务。可选择预定时间段以为第二节点装置提供以下机会:完成其对不相关分析例程的任务的执行,以使得第二节点装置第二节点装置变得可用以被指派来执行关于第二数据集分区的第二任务。同样,以此方式,可利用以下事实:第二数据集分区已存储于第二节点装置的易失性存储装置和/或非易失性存储装置内,使得第二数据集分区不必在装置之间交换以实现通过另一节点装置执行关于第二数据集分区的第二任务。
大体上参看本文所使用的符号和命名法,可根据由机器或多个网络化机器的处理器执行的程序进程而呈现以下实施方式的部分。这些过程化描述和表示由所属领域的技术人员使用以最有效地将其工作主旨传达给所属领域的其它技术人员。在本文中,且一般将进程构想为产生所要结果的操作的自洽序列。这些操作为是需要物理量的物理操纵的操作。通常但不一定,这些量呈能够被存储、传送、组合、比较并另外操纵的电、磁或光通信的形式。主要出于常用的原因,已证实将所传达内容称作位、值、元件、符号、字符、术语、编号等等有时是便利的。然而,应注意,所有这些和类似术语与适当物理量相关联,并且仅仅是应用于那些量的便利标记。
此外,常常明确地指代此等操控,例如添加或比较,添加或比较通常与由操作人员执行的心理操作相关联。然而,在本文中所描述的形成一或多个实施例的部分的任一操作中,操作人员具备此类能力并不是必需或在大多数情况下合乎需要的。实际上,这些操作是机器操作。用于执行各种实施例的操作的有用机器包含通过根据本文中的教示编写的存储于内部的例程选择性地激活或配置的机器,和/或包含出于所需目的专门建构的设备。各种实施例还涉及用于执行这些操作的设备或系统。这些设备可出于所需目的而专门建构,或可包含通用计算机。将从给出的描述中呈现多种这些机器的所需结构。
现在参考图式,其中在整个图式中类似参考标号用以指类似元件。在以下描述中,出于解释的目的,阐述许多特定细节以便提供对实施例的彻底理解。然而,可显而易见的是,可在没有这些具体细节的情况下实践新颖实施例。在其它情况下,以框图形式展示熟知的结构和装置以有助于描述熟知的结构和装置。目的是将所有修改、等效物和替代方案涵盖于申请专利范围的范围内。
一些图中所描绘的系统可以各种配置提供。在一些实施例中,系统可经配置为分布式系统,在分布式系统中系统的一或多个组件跨越云端计算系统和/或雾端计算系统中的一或多个网络分布。
图1是提供对根据本发明技术的实施例的数据发射网络100的硬件组件的说明的框图。数据发射网络100是可用于处理大量数据的专用计算机系统,其中需要大量计算机处理周期。
数据发射网络100还可包含计算环境114。计算环境114可以是专用计算机或处理在数据发射网络100内接收到的数据的其它机器。数据发射网络100还包含一或多个网络装置102。网络装置102可包含尝试与计算环境114通信的客户端装置。举例来说,网络装置102可向计算环境114发送待处理的数据,可向计算环境114发送控制计算环境或其正在处理的数据的不同方面,以及其它目的。网络装置102可通过数个方式(例如,经由一或多个网络108)与计算环境114交互。如图1中所展示,计算环境114可包含一或多个其它系统。举例来说,计算环境114可包含数据库系统118和/或通信网格120。
在其它实施例中,网络装置可经由网络108将大量数据提供到计算环境114,一次全部提供或在(例如,使用事件流处理(ESP),关于图8到10进一步描述)一段时间内流式传输。举例来说,网络装置102可包含网络计算机、传感器、数据库或可发射或以其它方式向计算环境114提供数据的其它装置。举例来说,网络装置可包含局域网装置,例如路由器、集线器、交换机或其它计算机联网装置。这些装置可提供多种已存储或产生的数据,例如网络数据或特定针对于网络装置本身的数据。网络装置还可包含监测其环境或其它装置以收集关于环境或那些装置的数据的传感器,且此类网络装置可提供其随时间推移收集的数据。网络装置还可包含物联网内的装置,例如家庭自动化网络内的装置。这些装置中的一些可被称作边缘装置,且可包含边缘计算电路。数据可由网络装置直接发射到计算环境114或发射到网络附接的数据存储区,例如网络附接的数据存储区110用于存储,以使得数据可稍后由计算环境114或数据发射网络100的其它部分检索。
数据发射网络100还可包含一或多个网络附接的数据存储区110。网络附接的数据存储区110用以存储待由计算环境114处理的数据以及由非易失性存储器中的计算系统产生的任何中间或最终数据。然而,在某些实施例中,计算环境114的配置允许执行其操作,使得中间和最终数据结果可仅仅存储于易失性存储器(例如,RAM)中,而不要求中间或最终数据结果存储到非易失类型的存储器(例如,磁盘)。此可适用于某些情境,例如计算环境114从用户接收特用查询时,和需要实时地产生由处理大量数据产生的响应时。在此非限制性情形下,计算环境114可经配置以将经处理信息保持于存储器内,以使得可按不同细节级别为用户产生响应,以及经配置以允许用户交互式地查询此信息。
网络附接的数据存储区可存储以多种不同方式组织且来自多种不同来源的多种不同类型的数据。举例来说,网络附接的数据存储装置可包含除定位于计算环境114内的可由定位于其中的处理器直接存取的主存储装置以外的存储装置。网络附接的数据存储装置可包含次要、第三或辅助存储装置,例如大型硬盘驱动器、服务器、虚拟内存、以及其它类型。存储装置可包含便携式或非便携式存储装置、光学存储装置和能够存储、含有数据的各种其它媒体。机器可读存储媒体或计算机可读存储媒体可包含其中可存储数据的且不包含载波和/或暂时性电子信号非暂时性媒体。非暂时性媒体的实例可包含(例如)磁碟或磁带、光学存储媒体(例如光盘或数字通用光盘)、快闪存储器、存储器或存储器装置。计算机程序产品可包含可表示程序、函数、子程序、程序、例程、子例程、模块、软件包、类别的代码和/或机器可执行指令,或指令、数据结构或程序语句的任何组合。代码段可通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可经由包含存储器共享、消息传递、权标传递、网络发射等等任何合适的手段传递、转发或发射。此外,数据存储区可保持多种不同类型的数据。举例来说,网络附接的数据存储区110可保持非结构化(例如,原始)数据,例如制造数据(例如,含有通过每一产品的参数数据(例如颜色和模型)识别正制造的产品的纪录的数据库)或产品销售数据库(例如,含有识别个别产品销售的细节的个别数据纪录的数据库)。
非结构化数据可以不同形式(例如平面文件或数据纪录的聚结)呈现给计算环境114,且可具有数据值和伴随时间戳。计算环境114可用以以多种方式分析非结构化数据,以确定(例如,分阶层地)结构那数据的最好方式,使得结构化数据经调整成用户希望对数据执行的另外分析的类型。举例来说,在被处理之后,非结构化时间带戳数据可按时间聚集(例如,聚集到每日时间段单位)中以产生时间序列数据,和/或根据一或多个尺寸(例如,参数、属性和/或变量)分阶层地结构化。举例来说,数据可存储于阶层式数据结构(例如ROLAP或MOLAP数据库)中,或可以另一表格形式(例如以平阶层形式)存储。
数据发射网络100还可包含一或多个服务器场106。计算环境114可将选择通信或数据路由到一或多个服务器场106或服务器场内的一或多个服务器。服务器场106可经配置以以预定方式提供信息。举例来说,服务器场106可响应于通信而存取待发射的数据。服务器场106可独立于数据发射网络100内的每一其它装置(例如计算环境114)容纳,和/或可以是装置或系统的部分。
服务器场106可控管多种不同类型的数据处理作为数据发射网络100的部分。服务器场106可从网络装置、从计算环境114、从云端网络116或从其它来源接收多种不同数据。数据可作为来自控制数据库的输入从一或多个传感器被获得或收集,或可作为来自外部系统或装置的输入被接收。服务器场106可通过基于由服务器场实施的一或多个规则而将原始数据转成经处理数据来辅助处理数据。举例来说,可分析传感器数据以确定环境中的随时间推移或实时的改变。
数据发射网络100还可包含一或多个云端网络116。云端网络116可包含提供云端服务的云端基础结构系统。在某些实施例中,由云端网络116提供的服务可包含按需求变得对于云端基础结构系统的用户可用的大量服务。云端网络116在图1中展示为连接到计算环境114(且因此具有计算环境114作为其客户端或用户),但云端网络116可连接到图1中的装置中的任一个或由其利用。由云端网络提供的服务可动态地按比例缩放以满足其用户的需要。云端网络116可包括一或多个计算机、服务器和/或系统。在一些实施例中,构成云端网络116的计算机、服务器和/或系统不同于用户自有的内部部署的计算机、服务器和/或系统。举例来说,云端网络116可控管应用程序,且用户可按需求经由通信网络(例如因特网)订购并使用应用程序。
虽然图1中的每一装置、服务器和系统展示为单个装置,但是应了解,可替代地使用多个装置。举例来说,网络装置的集合可用以发射来自单个用户的各种通信,或远程服务器140可包含服务器堆叠。作为另一实例,数据可作为计算环境114的部分加以处理。
数据发射网络100内的(例如,客户端装置之间的、服务器106与计算环境114之间的或服务器与装置之间的)每一通信可经由一或多个网络108发生。网络108可包含多种不同类型的网络(包含无线网络、有线网络或有线网络和无线网络的组合)中的一或多个。合适的网络的实例包含因特网、个人区域网络、局域网(LAN)、广域网(WAN)或无线区域网络(WLAN)。无线网络可包含无线接口或无线接口的组合。作为一实例,一或多个网络108中的网络可包含短程通信信道,例如蓝牙或蓝牙低功耗信道。有线网络可包含有线接口。有线和/或无线网络可使用路由器、存取点、桥接器、网关或类似者加以实施,以连接网络114中的装置,如将关于图2进一步描述。一或多个网络108可完全并入于企业内部网、外联网或其组合内或可包含企业内部网、外联网或其组合。在一个实施例中,两个或多于两个系统和/或装置之间的通信可由安全通信协议(例如安全套接字层(SSL)或输送层安全(TLS))实现。另外,数据和/或事务细节可加密。
一些方面可利用物联网(IoT),其中事物(例如,机器、装置、电话、传感器)可连接到网络且可收集来自这些事物的数据和将其在事物内和/或事物外部经处理。举例来说,IoT可包含许多不同装置中的传感器,且可应用高值分析以识别隐藏关系并驱动提高的效率。此可适用于大数据分析和实时(例如,ESP)分析两者。这将在下文关于图2进一步加以描述。
如所提及,计算环境114可包含通信网格120和发射网络数据库系统118。通信网格120可以是用于处理大量数据的基于网格的计算系统。发射网络数据库系统118可用于管理、存储并检索大量数据,所述数据分布到一或多个网络附接的数据存储区110或驻存于发射网络数据库系统118内的不同位置处的其它数据存储区。基于网格的计算系统120中的计算节点与发射网络数据库系统118中的计算节点可共享相同的处理器硬件,例如定位于计算环境114内的处理器。
图2说明根据本发明技术的实施例的包含经由交换系统且经由网络彼此通信的装置的实例集合的实例网络。如所提及,数据发射网络100内的每一通信可经由一或多个网络发生。系统200包含网络装置204,网络装置204经配置以经由多种类型的通信信道与多种类型的客户端装置(例如,客户端装置230)通信。
如图2中所展示,网络装置204可经由网络(例如,经由基站210的蜂窝网络)发射通信。通信可经由基站210路由到另一网络装置,例如网络装置205到209。通信还可经由基站210路由到计算环境214。举例来说,网络装置204可从其周围环境或从其它网络装置(例如网络装置205到209)收集数据,并将那个数据发射到计算环境214。
虽然网络装置204到209在图2中分别展示作为移动电话、笔记本计算机、平板计算机、温度传感器、运动传感器和音频传感器,但是网络装置可以是或包含对检测其环境的方面灵敏的传感器。举例来说,网络装置可包含传感器,例如水传感器、能量传感器、电流传感器、化学传感器、光学传感器、压力传感器、地理或位置传感器(例如,GPS)、速度传感器、加速度传感器、流速传感器等等。可传感到的特性的实例包含力、力矩、负载、应变、位置、温度、气压、流体流动、化学属性、电阻、电磁场、辐射、辐照、邻近度、声学、潮湿度、距离、速度、振动、加速度、电势、电流等等。传感器可安装到用作多种不同类型的系统的部分的各种组件(例如,石油钻井操作)。网络装置可检测并记录与其监视的环境相关的数据,并将数据发射到计算环境214。
如所提及,根据某些实施例的可包含收集待处理和/或发射到计算环境的数据的各种传感器的一种类型的系统包含石油钻井系统。举例来说,一或多个钻孔操作传感器可包含表面传感器和井下传感器,表面传感器测量钩负荷、流速、井筒内外的温度和密度、竖管压力、表面力矩、钻探管的旋转速度、穿透速率、机械学能量等,井下传感器测量钻头的旋转速度、流体密度、井下力矩、井下振动(轴向、切向、侧向)、钻头处施加的重量、环形压力、差压、方位角、倾斜、狗腿严重度、测量深度、竖直深度、井下温度等。除了由传感器直接收集的原始数据以外,其它数据还可包含由传感器发出或由客户端或其它控制装置指派给系统的参数。举例来说,一或多个钻孔操作控制参数可控制设置,例如泥浆马达速度流动比、钻头直径、预计形成顶部、地震数据、天气数据等。可使用物理模型产生其它数据,物理模型例如地球模型、天气模型、地震模型、底部钻具组合件模型、井计划模型、环形摩擦模型等。除了传感器和控制设置以外,(例如)穿透速率、机械类能量、钩负荷、流入流体速率、流出流体速率、泵压力、表面力矩、钻探管的转速、环形压力、环形摩擦压力、环形温度、等效循环密度等的预计输出也可存储于数据仓库中。
在另一实例中,根据某些实施例的可包含收集待处理和/或发射到计算环境的数据的各种传感器的另一种类型的系统包含家庭自动化或不同环境(例如办公室空间、学校、公共空间、体育场所或多种其它位置)中的类似自动化网络。此自动化网络中的网络装置可包含执行以下操作的网络装置:允许用户存取、控制和/或对定位于用户的家庭内的各种家庭电气设备(例如,电视、收音机、灯、风扇、加湿机、传感器、微波炉、熨斗、和/或类似者)或用户的家庭外的各种家庭电气设备(例如,外部运动传感器、外部照明、车库开门器、洒水器系统或类似者)进行配置。举例来说,网络装置102可包含可与家庭电气设备耦合的家庭自动化开关。在另一实施例中,网络装置可允许用户存取、控制和/或对各自装置进行配置,装置例如办公室相关装置(例如,复印机、打印机或传真机)、音频和/或视频相关装置(例如,接收器、扬声器、投影仪、DVD播放器或电视)、媒体播放装置(例如,压缩光盘播放器、CD播放器或类似者)、计算装置(例如,家庭计算机、笔记本计算机、平板计算机、个人数字助理(PDA)、计算装置或可穿戴式装置)、照明装置(例如,灯或固定崁灯)、与安全系统相关联的装置、与警报系统相关联的装置、可在机动车中操作的装置(例如,无线电装置、导航装置)和/或类似者。可以原始形式从此类各种传感器收集数据,或数据可由传感器处理以基于原始数据而创建由传感器发出的参数或其它数据,或由客户端或其它控制装置指派给系统。
在另一实例中,根据某些实施例的可包含收集待处理和/或发射到计算环境的数据的各种传感器的另一种类型的系统包含能量或能量网。多种不同网络装置可包含于能量网格中,例如一或多个发电厂内的各种装置、能量农场(例如,风力农场、太阳农场等等)、储能设施、工厂、客户的家庭和业务等等。此些装置中的一或多个可包含检测能量增益或损耗、电输入或输出或损耗和多种其它效率的一或多个传感器。这些传感器可收集数据以告知用户能量网格和网格内的个别装置可如何起作用,和如何使能量网格和装置更高效。
网络装置传感器还可在将数据发射到计算环境114之前或在决定是否将数据发射到计算环境114之前对其收集的数据执行处理。举例来说,网络装置可(例如)通过比较数据或从数据计算的值和比较数据与一或多个阈值来确定所收集数据是否满足某些规则。网络装置可使用此数据和/或比较以确定是否应将数据发射到计算环境214以进一步使用或处理。
计算环境214可包含机器220和240。虽然计算环境214在图2中展示为具有两个机器220和240,但是计算环境214可仅具有一个机器或可具有多于两个机器。构成计算环境214的机器可包含专用计算机、服务器或经配置以个别地和/或集合地处理大量数据的其它机器。计算环境214还可包含包含结构化数据的一或多个数据库(例如,以一或多个阶层组织的数据或非结构化数据)的存储装置。数据库可与计算环境214内的处理装置通信以将数据分布到处理装置。由于网络装置可将数据发射到计算环境214,因此数据可由计算环境214接收且随后存储于那些存储装置内。由计算环境214使用的数据还可存储于数据存储区235中,数据存储区235也可以是计算环境214的一部分或连接到计算环境214。
计算环境214可经由一或多个路由器225或其它网间或网内连接组件与各种装置通信。举例来说,计算环境214可经由一或多个路由器225与装置230通信。计算环境214可收集、分析和/或存储来自通信、客户端装置操作、客户端规则和/或存储于一或多个数据存储区235处的用户相关联动作数据、或关于以上各项的数据。此类数据可影响到计算环境214内的装置的路由选择通信、数据如何在内计算环境214存储或处理、以及其它动作。
值得注意地,各种其它装置可进一步用以感应计算环境214内的装置与计算环境214外部的装置之间的通信路由选择和/或处理。举例来说,如图2中所展示,计算环境214可包含万维网服务器240。因此,计算环境214可检索所关注的数据,例如客户信息(例如,产品信息、客户端规则等)、技术产品细节、新闻、当前或预计天气等等。
除了计算环境214收集待作为大数据分析项目的部分处理的数据(例如,如从例如传感器等网络装置、和客户端装置或其它来源接收)以外,计算环境214还可实时接收数据作为流式传输分析环境的部分。如所提及,可使用如经由不同类别的网络所传达的多种来源或局部地收集数据。可在实时流式传输基础上接收此类数据。举例来说,网络装置可在传感器连续地传感、监测并跟踪其环境的改变时周期性地从网络装置传感器接收数据。计算环境214内的装置还可对其接收到的数据执行预分析,以确定接收到的数据是否应被作为进行中的项目的部分加以处理。不管接收的来源或方法或定时如何,可为客户端在一段时间内处理由计算环境214接收并收集的数据以基于客户端的需要和规则而确定结果数据。
图3说明根据本发明技术的实施例的通信协议系统的概念模型的表示。更具体地说,图3识别对应于各种连接组件的开放式系统交互模型中的计算环境的操作。举例来说,模型300展示计算环境(例如计算环境314(或图2中的计算环境214))可如何与其网络中的其它装置通信并控制执行计算环境与其它装置之间的通信的方式和条件。
模型可包含层302到314。所述层呈堆叠方式布置。堆叠中的每一层服务比其高一个等级的层(除了应用层以外,应用层是最高层),且由比其低一个等级的层(除了物理层以外,物理层是最低层)服务。物理层是最低层,这是因为其接收并发射数据的原始字节,且是离通信系统中的用户最远的层。另一方面,应用层是最高层,这是因为其与软件应用直接交互。
如所提及,模型包含物理层302。物理层302表示物理通信,且可定义那个物理通信的参数。举例来说,此类物理通信可呈电气、光学或电磁信号的形式。物理层302还定义可控制数据发射网络内的通信的协议。
链路层304定义用以跨越网络发射(即,移动)数据的链路和机制。链路层管理(例如)网格计算环境内的节点到节点通信通信。链路层304可检测并校正误差(例如,物理层302中的发射误差)。链路层304还可包含媒体存取控制(MAC)层和逻辑连结控制(LLC)层。
网络层306定义用于在网络内路由选择的协议。换句话说,网络层协调跨越相同网络(例如,网格计算环境)中的节点传送数据。网络层306还可定义用以结构化网络内的局部寻址的过程。
输送层308可管理数据的发射、和那个数据的发射和/或接收的质量。输送层308可提供用于传送数据的协议,例如发射控制协议(TCP)。输送层308可汇编并反汇编数据帧以用于发射。输送层还可检测在其下方的层中发生的发射误差。
会话层310可建立、维持并管理网络上的装置之间的通信连接。换句话说,会话层控制网络上的网络装置之间的通信的对话或性质。会话层还可建立检验指示、延期、终结和重启进程。
展现层312可提供对应用程序与网络层之间的通信的翻译。换句话说,此层可基于数据类型和/或已知由应用程序或网络层接受的编码而对数据进行加密、解密和/或格式化。
应用层314直接与软件应用和终端用户交互,且管理软件应用与终端用户之间的通信。应用层314可使用应用程序来识别目的地、局部资源状态或可用性、和/或通信内容或格式化。
网内连接组件322和324展示为分别在低层(例如物理层302和链路层304)中操作。举例来说,集线器可在物理层中操作,交换机可在物理层中操作,且路由器可在网络层中操作。网间连接组件326和328展示为在更高层(例如层306到314)上操作。举例来说,路由器可在网络层中操作,且网络装置可在输送层、会话层、展现层和应用层中操作。
如所提及,计算环境314可在各种实施例中,与各种层中的一个、多于一个、所有或任一个交互和/或在以上各项上进行操作。举例来说,计算环境314可(例如,经由链路层)与集线器交互以便调节集线器与哪一装置通信。物理层可由链路层服务,因此其可实施来自链路层的此类数据。举例来说,计算环境314可控制其将从哪一装置接收数据。举例来说,如果计算环境314知道某一网络装置已关断、损坏或以其它方式变得不可用或不可靠,那么计算环境314可发指令给集线器防止任何数据被从那个网络装置发射到计算环境314。此过程可以是有益的,以避免接收到不准确或已受不受控环境影响的数据。作为另一实例,计算环境314可与桥接器、交换机、路由器或网关通信,且感应组件选择了系统(例如,系统200)内的哪一装置作为目的地。在一些实施例中,通过通过路由选择或修改现有通信来与在特定层上操作的装备交换通信,计算环境314可与各种层交互。在另一实施例中,例如在网格计算环境中,节点可确定应如何基于由模型内的其它层提供的某些参数或信息而路由环境内的数据(例如,哪一节点应接收某些数据)。
如所提及,计算环境314可以是通信网格环境的一部分,通信网格环境的通信可如图3的协议中所展示而加以实施。举例来说,返回参看图2,机器220和240中的一或多个可以是通信网格计算环境的部分。网格化的计算环境可用于具有非交互式工作负荷的分布式系统中,其中数据驻存于机器中的存储器或计算节点中。在此环境中,分析代码而非数据库管理系统控制由节点执行的处理。通过将数据预先分布到网格节点来并置数据,且每一节点上的分析代码将局部数据加载到存储器中。可为每一节点指派特定任务,例如处理项目的一部分,或组织或控制网格内的其它节点。
图4说明根据本发明技术的实施例的包含多个控制节点和工作者节点的通信网格计算系统400。
通信网格计算系统400包含三个控制节点和一或多个工作者节点。通信网格计算系统400包含控制节点402、404和406。控制节点经由通信路径451、453和455以通信方式连接。因此,控制节点可将信息(例如,与通信网格或通知相关的信息)发射到彼此并从彼此接收信息。虽然通信网格计算系统400在图4中展示为包含三个控制节点,但是通信网格可包含多于或少于三个控制节点。
通信网格计算系统(或仅成为“通信网格”)400还包含一或多个工作者节点。在图4中展示了工作者节点410到420。虽然图4展示六个工作者节点,但是根据本发明技术的实施例的通信网格可包含多于或少于六个工作者节点。包含于通信网格中的工作者节点的数目可取决于正由通信网格处理的项目或数据集多大、每一工作者节点的容量、为通信网格指定的完成项目的时间、等等。通信网格400内的每一工作者节点可连接(有线或无线地,以及直接或间接地)到控制节点402到406。因此,每一工作者节点可从控制节点接收信息(例如,对项目执行工作的指令)且可将信息发射到控制节点(例如,来自对项目执行的工作的结果)。此外,工作者节点可(直接或间接)与彼此通信。举例来说,工作者节点可在彼此之间发射与正被执行的作业或正由那个工作者节点执行的作业内的个别任务相关的数据。然而,在某些实施例中,工作者节点可(例如)不连接(以通信方式或以其它方式)到某些其它工作者节点。在一实施例中,工作者节点可仅能够与控制其的控制节点通信,且可能并不能够与通信网格中的其它工作者节点通信,无论所述工作者节点是由控制工作者节点的控制节点控制的其它工作者节点或由通信网格中的其它控制节点控制的工作者节点。
控制节点可与外部装置连接,控制节点可与所述外部装置通信(例如,例如服务器或计算机等网格用户可连接到网格的控制器)。举例来说,服务器或计算机可连接到控制节点且可将项目或作业发射到节点。项目可包含数据集。数据集可具有任何大小。一旦控制节点接收包含大数据集的此项目,那么控制节点就可分布数据集或与数据集相关的项目以由工作者节点执行。替代地,对于包含大数据集的项目,数据集可由除控制节点(例如,使用Hadoop分布式文件系统(或HDFS)的Hadoop数据节点)以外的机器接收或存储。
控制节点可维持对网格中的节点的状态(即,网格状态信息)的了解,接受来自客户端的工作请求,细分跨越工作者节点的工作,协调工作者节点,以及其它职责。工作者节点可接受来自控制节点的工作请求,且为控制节点提供由工作者节点执行的工作的结果。网格可从单个节点(例如,机器、计算机、服务器等)开始。此第一节点可经指派或可作为将控制进入网格的任何额外节点的主要控制节点而开始。
当提交项目(例如,由客户端或网格的控制器)用于执行时,项目可被指派给节点的集合。在节点被指派给项目之后,可创建数据结构(即,通信器)。通信器可由项目使用以供信息在每一节点上运行的项目代码之间共享。通信句柄可创建于每一节点上。举例来说,句柄是对在单个节点上的单个进程内有效的通信器的参考,且句柄可在请求节点之间的通信时使用。
控制节点(例如,控制节点402)可被指定为主要控制节点。服务器、计算机或其它外部装置可连接到主要控制节点。一旦控制节点接收了项目,那么主要控制节点可将项目的部分分布到主要控制节点的工作者节点以用于执行。举例来说,当项目在通信网格400上启动时,主要控制节点402控制项目的待执行的工作以便按请求或指示完成项目。主要控制节点可基于各种因素(例如可最有效率地且在正确时间量中完成项目的哪些子集或部分)而将工作分布到工作者节点。举例来说,工作者节点可对已经是本地的(例如,存储在工作者节点上)的数据的一部分执行分析。主要控制节点还在每一工作者节点执行并完成其作业之后协调并处理由每一工作者节点执行的工作的结果。举例来说,主要控制节点可从一或多个工作者节点接收结果,且控制节点可组织(例如,收集并汇编)接收到的结果且编译所述结果以产生从终端用户接收到的项目的完整结果。
任何剩余控制节点(例如控制节点404和406)可作为项目的备份控制节点指派。在一实施例中,备份控制节点可不控制项目的任何部分。替代地,如果主要控制节点将失效,那么备份控制节点可充当主要控制节点的备份,且接替为主要控制节点。如果通信网格将仅包含单个控制节点,且控制节点将失效(例如,控制节点关断或破坏),那么通信网格作为整体可能失效,且正在通信网格上运行的任何项目或作业可能失效且可能无法完成。虽然项目可再次运行,但是此失效可在完成项目时产生延迟(在一些状况下产生严重延迟,例如整夜延迟)。因此,具有多个控制节点(包含备份控制节点)的网格可以是有益的。
为了将另一节点或机器添加到网格,主要控制节点可例如打开一对监听套接字。套接字可用以接受来自客户端的工作请求,且第二套接字可用以接受来自其它网格节点的连接。可为主要控制节点提供将参与到网格中的一系列其它节点(例如,其它机器、计算机、服务器)和每一节点将填充在网格中的角色。在启动主要控制节点(例如,网格上的第一节点)之后,主要控制节点可即刻使用网络协议以开始网格中的每一其它节点上的服务器过程。举例来说,命令行参数可告知信息的一或多个片段的每一节点例如:节点将在网格中具有的角色、主要控制节点的主机名、端口编号(基于端口编号主要控制节点接受来自对等节点的连接)等等。信息还可提供于配置文件中、经由安全外壳隧道发射、从配置服务器恢复等等。虽然网格中的其它机器最初可能并不知道网格的配置,但是那个信息还可通过主要控制节点发送到每一其它节点。网格信息的更新随后也可发送到那些节点。
对于除添加到网格的主要控制节点之外的任何控制节点,控制节点可打开三个套接字。第一套接字可接受来自客户端的工作请求,第二套接字可接受来自其它网格成员的连接,且第三套接字可(例如,永久地)连接到主要控制节点。当控制节点(例如,主要控制节点)从另一控制节点接收连接时,其首先检查以查看对等节点是否处于网格中经配置节点的列表中。如果对等节点不在列表上,那么控制节点可清除连接。如果对等节点在列表上,那么控制节点可尝试验证连接。如果验证成功,那么验证节点可将信息发射到其对等装置,例如端口编号(节点基于端口编号而侦听连接)、节点的主机名、关于如何验证节点的信息、以及其它信息。当节点(例如,新控制节点)接收到关于另一活动节点的信息时,所述节点将检查以查看是否其已经具有到所述另一节点的连接。如果其并不具有到所述节点的连接,那么其可接着建立到所述控制节点的连接。
添加到网格的任何工作者节点可建立到网格上的主要控制节点和任何其它控制节点的连接。在建立连接之后,其可针对网格验证自身(例如,任何控制节点、包含主要和备份两者;或控制网格的服务器或用户)。在验证成功之后,工作者节点可接受来自控制节点的配置信息。
当节点加入通信网格时(例如,当节点经开启或连接到网格上的现有节点或这两者时),(例如,通过网格的操作系统)为节点指派通用唯一标识符(UUID)。此唯一标识符可帮助其它节点和外部物理(装置、用户等)识别节点并将其与其它节点区分开。当节点连接到网格时,节点可将其唯一标识符与网格中的其它节点共享。由于每一节点可共享其唯一标识符,因此每一节点可知道网格上的每一其它节点的唯一标识符。唯一标识符还可指定网格没的每一节点(例如,备份控制节点)的阶层。举例来说,备份控制节点中的每一个的唯一标识符可存储于一系列备份控制节点中,以指示备份控制节点将接替失效主要控制节点从而变为新主要控制节点的顺序。然而,还可使用除使用节点的唯一标识符之外的方法来确定节点的层级。举例来说,可经预先确定或可基于其它预先确定的因数而指派层级。
网格可在任何时间(例如,从任何控制节点起始)处添加新机器。在将新节点添加到网格之后,控制节点可即可首先将新节点添加到其网格节点表。控制节点还可接着通知每一其它控制节点关于新节点。接收通知的节点可确认其已更新其配置信息。
举例来说,主要控制节点402可将一或多个通信发射到备份控制节点404和406(和例如通信网格内的其它控制或工作者节点)。可在项目的执行的已知固定阶段之间在固定的时间间隔处周期性地发送此类通信,以及其它协议。由主要控制节点402发射的通信可以是不同类型且可包含各种类型的信息。举例来说,主要控制节点402可发射通信网格的快照(例如,状态信息)以使得备份控制节点404始终具有通信网格的最新快照。快照或网格状态可包含(例如)网格的结构(包含(例如)网格中的工作者节点、节点的唯一标识符、或工作者节点与主要控制节点的关系)和项目的状态(包含(例如)项目的每一工作者节点部分的状态)。快照还可包含从通信网格中的工作者节点接收的分析或结果。备份控制节点可接收并存储从主要控制节点接收的备份数据。备份控制节点可发射对来自主要控制节点的此快照(或其它信息)的请求,或主要控制节点可将此信息周期性地发送到备份控制节点。
如所提及,如果主要控制节点失效,那么备份数据可允许备份控制节点接替为主要控制节点,而不需要网格从头重新开始项目。如果主要控制节点失效,那么将接替为主要控制节点的备份控制节点可检索从主要控制节点接收的快照的最新版本,并使用快照以从由备份数据指示的项目阶段继续项目。此可作为整体防止项目的失效。
备份控制节点可使用各种方法以确定主要控制节点已失效。在此方法的一个实例中,主要控制节点可将指示主要控制节点正在工作且尚未失效的通信(例如,心跳通信)(例如,周期性地)发射到备份控制节点。如果备份控制节点在某一预定时间段内尚未接收到心跳通信,那么备份控制节点可确定主要控制节点已失效。替代地,备份控制节点还可从主要控制节点自身(在主要控制节点失效之前)或从工作者节点接收主要控制节点已失效的通信,(例如)这是因为主要控制节点已不能与工作者节点通信。
可执行不同方法以确定备份控制节点的集合中的哪一备份控制节点(例如,备份控制节点404和406)将接替失效主要控制节点402且变成新主要控制节点。举例来说,可基于新主要控制节点的唯一标识符来基于备份控制节点的分级或“阶层”而选择新主要控制节点。在一替代性实施例中,备份控制节点可由通信网格中的或来自外部装置(例如,控制通信网格的系统基础结构或终端用户,例如服务器或计算机)的另一装置指派成新主要控制节点。在另一替代实施例中,可基于带宽或关于通信网格的其它统计数据而指定接替为新主要控制节点的备份控制节点。
通信网格内的工作者节点也可能失效。如果工作者节点失效,那么由失效的工作者节点执行的工作可在操作性工作者节点当中重布。在一替代性实施例中,主要控制节点可将向仍在通信网格上的可操作工作者节点中的每一个发射以下通信:工作者节点中的每一个也应有目的地失效。在工作者节点中的每一个失效之后,工作者节点可各自检索对其状态的其最新已保存检查点,并从那个检查点重启项目以最小化正执行的项目的已损失进展。
图5说明根据本发明技术的实施例的展示用于在节点失效之后调节通信网格或通信网格中的工作项目的实例过程的流程图。所述过程可包含(例如)接收包含由通信网格中的节点执行的项目的一部分的项目状态的网格状态信息,如在操作502中所描述。举例来说,控制节点(例如,连接到通信网格上的主要控制节点和工作者节点的备份控制节点)可接收网格状态信息,其中网格状态信息包含主要控制节点的项目状态或工作者节点的项目状态。主要控制节点的项目状态和工作者节点的项目状态可包含由通信网格中的主要节点和工作者节点执行的项目的一或多个部分的状态。所述过程还可包含存储网格状态信息,如在操作504中所描述。举例来说,控制节点(例如,备份控制节点)可将接收到的网格状态信息局部地存储于控制节点内。替代地,网格状态信息可发送到另一装置用于存储,其中控制节点可具有对信息的存取。
所述过程还可包含在操作506中接收对应于通信网格中的节点的失效通信。举例来说,节点可接收包含指示主要控制节点已失效的失效通信,同时促使备份控制节点接替主要控制节点。在一替代性实施例中,节点可接收到工作者节点已失效的失效,同时促使控制节点再指派由工作者节点执行的工作。所述过程还可包含再指派节点或由失效的节点执行的项目的一部分,如在操作508中所描述。举例来说,控制节点可在接收到失效通信之后即刻基于失效通信而指派备份控制节点作为新主要控制节点。如果失效的节点是工作者节点,那么控制节点可使用通信网格的快照来识别失效的工作者节点的项目状态,其中失效的工作者节点的项目状态包含在失效时间处由失效工作者节点执行的项目的一部分的状态。
所述过程还可包含基于再指派而接收经更新网格状态信息,如在操作510中所描述,并将基于经更新网格状态信息的指令集发射到通信网格中的一或多个节点,如在操作512中所描述。经更新网格状态信息可包含主要控制节点的经更新项目状态或工作者节点的经更新项目状态。经更新信息可发射到网格中的其它节点,以更新其失效所存储信息。
图6说明根据本发明技术的实施例的包含控制节点和工作者节点的通信网格计算系统600的一部分。出于说明的目的,通信网格计算系统600包含一个控制节点(控制节点602)和一个工作者节点(工作者节点610),但可包含更多工作者节点和/或控制节点。控制节点602经由通信路径650通信连接到工作者节点610。因此,控制节点602可经由路径650将信息(例如,与通信网格或通知相关)发射到工作者节点610并从工作者节点610接收信息。
类似于在图4中,通信网格计算系统(或仅成为“通信网格”)600包含数据处理节点(控制节点602和工作者节点610)。节点602和610包括多核心数据处理器。每一节点602和610包含具网格功能的软件组件(GESC)620,GESC 620在与那个节点相关联的数据处理器上执行,并与也与那个节点相关联的缓冲存储器622介接。每一节点602和610包含数据库管理软件(DBMS)628,DBMS 628在控制节点602处的数据库服务器(未展示)上和工作者节点610处的数据库服务器(未展示)上执行。
每一节点还包含数据存储区624。类似于图1中的网络附接的数据存储区110和图2中的数据存储区235,数据存储区624用以存储待由计算环境中的节点处理的数据。数据存储区624还可将在被处理之后由计算系统产生的任何中间或最终数据(例如)存储于非易失性存储器中。然而,在某些实施例中,网格计算环境的配置允许执行其操作,使得中间和最终数据结果可仅仅存储于易失性存储器(例如,RAM)中,而不要求中间或最终数据结果存储到非易失类型的存储器。将此类数据存储于易失性存储器中可适用于某些情境,例如网格从客户端接收查询(例如,特用查询)和需要快速或实时地产生通过处理大量数据所产生的响应时。在此情形下,网格可经配置以将数据保持于存储器内,以使得可按不同细节级别产生响应,且以使得客户端可交互式地查询此信息。
每一节点还包含用户定义的功能(UDF)626。UDF提供供DMBS 628将数据传送到存储于由DBMS管理的数据存储区624中的数据库或从所述数据库接收数据的机制。举例来说,UDF 626可由DBMS调用以向GESC提供数据以进行处理。UDF 626可建立与GESC的套接字连接(未展示)以传送数据。替代地,UDF 626可通过将数据写入到可由UDF和GESC两者存取的共享存储器来将数据传送到GESC。
节点602和620处的GESC 620与节点620处的GESC 620可经由网络(例如,图1中所展示的网络108)连接。因此,节点602和620可使用预定通信协议(例如消息传递接口(MPI))来经由网络彼此通信。每一GESC 620可参与与另一节点处的GESC的点对点通信,或经由网络参与与多个GESC的集合通信。每一节点处的GESC 620可含有相同(或几乎相同)的软件指令。每一节点可能够操作为控制节点或工作者节点。控制节点602处的GESC可经由通信路径652与客户端装置630通信。更具体地说,控制节点602可与由客户端装置630控管的客户端应用程序632通信,以接收查询并在处理大量数据之后对那些查询作出响应。
DMBS 628可控制对节点602或610内的数据库或数据结构(未展示)的创建、维护和使用。数据库可组织存储于数据存储区624中的数据。控制节点602处的DMBS 628可接受对数据的请求并出于请求传送适当的数据。通过此过程,数据的集合可跨越多个物理位置分布。在此实例中,每一节点602和610存储由其相关联数据存储区624中的管理体系管理的总数据的一部分。
此外,DBMS可负责使用复写技术来保护免受数据丢失。复写包含提供存储于一或多个其它节点上的一个节点上的数据的备份副本。因此,如果一个节点失效,那么可从驻存于另一节点处的经复写副本恢复来自失效的节点的数据。然而,如本文中关于图4所描述,通信网格中的每一节点的数据或状态信息还可与网格上的每一节点共享。
图7说明根据本发明技术的实施例的展示用于在网格计算系统内执行项目的实例方法的流程图。如关于图6所描述,控制节点处的GESC可与客户端装置(例如,客户端装置630)发射数据,以接收用于执行项目的查询并在已处理了大量数据之后对那些查询作出响应。查询可发射到控制节点,其中查询可包含对于执行项目的请求,如在操作702中所描述。查询可含有关于待在项目中执行的数据分析的类型和是否应使用基于网格的计算环境来执行项目的指令,如操作704中所展示。
为了启动项目,控制节点可确定查询是否请求使用基于网格的计算环境以执行项目。如果确定结果是否,那么控制节点起始在单独环境中(例如,在控制节点处)执行项目,如在操作710中所描述。如果确定结果是是,那么控制节点起始在基于网格的环境中执行项目,如在操作706中所描述。在此情形下,请求可包含网格的所请求配置。举例来说,请求可包含将在执行项目时用于网格中的数个控制节点和数个工作者节点。在已完成项目之后,控制节点可发射由网格获得的分析的结果,如在操作708中所描述。不管是在单独环境还是在基于网格的环境中执行项目,控制节点仍提供项目的结果。
如关于图2所提及,本文中所描述的计算环境可收集数据(例如,如从网络装置接收,例如传感器,例如图2中的网络装置204到209,和客户端装置或其它来源),以作为数据分析项目的部分加以处理,且可实时接收数据作为流发射分析环境(例如,ESP)的部分。可使用如经由不同类别的网络所传达的多种来源或局部地(例如在实时流式传输基础上)收集数据。举例来说,网络装置可在传感器连续地传感、监测并跟踪其环境的改变时周期性地从网络装置传感器接收数据。更具体地说,增大的数目个分布式应用程序通过在将数据分布到地理上分布的接收者之前将查询应用于数据来从分布式来源发出或产生连续地流动的数据。事件流处理引擎(ESPE)可在其接收并确定哪一物理应接收数据时连续地将查询应用于数据。客户端或其它装置也可预订ESPE或处理ESP数据的其它装置,以使得客户端或其它装置可基于(例如)由处理引擎确定的物理而在处理之后接收数据。举例来说,图2中的客户端装置230可预订计算环境214中的ESPE。在另一实例中,关于图10进一步描述的事件预订装置874a到874c也可预订ESPE。ESPE可确定或定义来自网络装置或其它发布者(例如,图2中的网络装置204到209)的输入数据或事件流如何被转换为待由订户(例如图2中的客户端装置230)消耗的有意义输出数据。
图8说明根据本发明技术的实施例的包含事件流处理引擎(ESPE)的组件的框图。ESPE 800可包含一或多个项目802。项目可被描述由ESPE 800管理的引擎模型中的二阶容器,其中项目的线程池大小可由用户定义。一或多个项目802中的每一项目可包含含有数据流的一或多个连续查询804,数据流是传入的事件流的数据变换。一或多个连续查询804可包含一或多个源窗口806和一或多个导出窗口808。
ESPE可在一段时间内接收与某些事件相关的流式传输数据,例如由一或多个网络装置传感到的事件或其它数据。ESPE可执行与处理由一或多个装置创建的数据相关联的操作。举例来说,ESPE可从图2中所展示的一或多个网络装置204到209接收数据。如所提及,网络装置可包含传感其环境的不同方面的传感器,且可基于那些传感到的观测结果而随时间推移收集数据。举例来说,ESPE可实施于图2中所展示的中的一或多个机器220和240内。ESPE可由ESP应用程序实施于此机器内。ESP应用程序可将具有其自身的专用一或多个线程池内嵌到其应用程序空间中,在应用程序空间中主应用程序线程可进行特殊应用工作,且ESPE至少通过将模型的个例创建到处理对象中来处理事件流。引擎容器是管理一或多个项目802的资源的模型中的最高阶容器。在一说明性实施例中,举例来说,对于ESP应用程序的每一实例可能仅存在一个ESPE 800,且ESPE 800可具有唯一引擎名称。此外,一或多个项目802可各自具有唯一项目名称,且每一查询可具有唯一连续查询名称并以一或多个源窗口806中的唯一地命名的源窗口开始。ESPE 800可或可不是持久的。
连续查询模型化涉及定义事件流操纵和变换的窗口的定向图。事件流操纵和变换的上下文中的窗口是事件流处理模型中的处理节点。连续查询中的窗口可执行聚集、计算、图案匹配和对流经窗口的数据的其它操作。连续查询可被描述来源、关系、图案匹配和过程化窗口的定向图。一或多个源窗口806和一或多个导出窗口808表示连续地执行在新事件块流输出经过ESPE 800时向查询结果集合产生更新的查询。举例来说,定向图是由边缘连接的节点的集合,其中边缘具有与边缘相关联的方向。
事件对象可被描述可作为字段集合存取的数据包,字段中的至少一个被定义为关键标识符或唯一标识符(ID)。可使用多种格式(包含二进制、字母数字、XML等)来创建事件对象。每一事件对象可包含被指定为事件的主要标识符(ID)的一或多个字段,因此ESPE800可支持包含插入、更新、更新或插入(upsert)和删除的事件的支持操作代码(操作码)。如果关键字段已存在,那么更新或插入操作码更新事件;否则,插入事件。为了说明,事件对象可以是字段值的集合的已封装二进制表示,且包含与事件相关联的元数据和字段数据两者。元数据可包含:指示事件是否表示插入、更新、删除或更新或插入的操作码、指示事件是否是正常、部分更新或来自保持策略管理的保持产生事件的旗标的集合、和可用于潜时测量的微秒时间戳的集合。
事件块对象可被描述为事件对象的分组或封装。事件流可被描述事件块物件对象的流动。一或多个连续查询804中的连续查询使用一或多个源窗口806和一或多个导出窗口808来将由公开到ESPE 800中的流式传输事件块对象组成的源事件流变换成一或多个输出事件流。连续查询还可被认为是数据流模型化。
一或多个源窗口806在定向图的顶部处,且不具有馈送到其中的窗口。事件流公开到一或多个源窗口806中,且从此处,事件流可被导引到连接式窗口的下一集合,如由定向图定义。一或多个导出窗口808全部是不是源窗口且具有将事件流式传输到其中的其它窗口的实例化窗口。一或多个导出窗口808可对传入的事件流执行计算或变换。一或多个导出窗口808基于窗口类型(即操作者,例如接合、滤波、计算、聚合、复制、图案匹配、程序化、并集等)和窗口设置而变换事件流。当事件流公开到ESPE 800中时,连续地询问事件流,且连续地更新这些查询中的导出窗口的所得集合。
图9说明根据本发明技术的一些实施例的展示包含由事件流处理引擎执行的操作的实例过程的流程图。如所提及,ESPE 800(或相关联ESP应用程序)定义输入事件流如何被转换为有意义输出事件流。更具体地说,ESP应用程序可定义来自发布者(例如,提供传感到的数据的网络装置)的输入事件流如何被转换为由订户消耗的有意义的输出事件流(例如,由机器或机器的集合执行的数据分析项目)。
在应用程序内,用户可与一或多个用户接口窗口交互,所述用户接口窗口独立地在ESPE的控制下在显示器中或按可由用户选择的次序经由浏览器应用程序呈现给用户。举例来说,用户可执行致使呈现第一用户接口窗口的ESP应用程序,第一用户接口窗口可包含多个菜单和选择器,例如与如由本领域的技术人员理解的ESP应用程序相关联的下落菜单、按钮、文本框、超链接等。如由本领域的技术人员进一步理解,可(例如)使用多个线程来并行地执行各种操作。
在操作900处,ESP应用程序可定义并开始ESPE,借此实例化装置(例如机器220和/或240)处的ESPE。在操作902中,创建引擎容器。为了说明,可使用将引擎容器指定为用于模型的管理器的函数调用来实例化ESPE 800。
在操作904中,通过ESPE 800将一或多个连续查询804实例化为模型。可通过产生更新作为经过ESPE 800的一或多个新事件流的专用线程池实例化一或多个连续查询804。为了说明,可创建一或多个连续查询804以模型化ESPE 800内的业务处理逻辑、以预计ESPE800内的预计、以模型化ESPE 800内的物理系统、以预计ESPE 800内的物理系统状态等。举例来说,如所提及,ESPE 800可用以支持传感器数据监测和管理(例如,传感可包含力、力矩、负载、应变、位置、温度、气压、流体流动、化学属性、电阻、电磁场、辐射、辐照、邻近度、声学、潮湿度、距离、速度、振动、加速度、电势或电流等)。
ESPE 800可分析并处理在运动中的事件或“事件流”。替代存储数据并对所存储数据运行查询,ESPE 800可存储查询并经由查询流式传输数据以允许在数据被接收到时连续地分析数据。可基于关系、图案匹配和程序化算法而创建一或多个源窗口806和一或多个导出窗口808,程序化算法基于定义的连续查询模型和对经流式传输的数据的应用而将输入事件流变换成待模型化、模拟、评分、测试、预计等的输出事件流。
在操作906中,为ESPE 800初始化发布/预订(pub/sub)能力。在一说明性实施例中,为一或多个项目802中的每一项目初始化pub/sub能力。为了初始化并启用ESPE 800的pub/sub能力,可提供端口数。pub/sub客户端可使用运行ESPE的ESP装置的主机名和端口数以建立到ESPE 800的pub/sub连接。
图10说明根据本发明技术的实施例的在发布装置872与事件预订装置874a到874c之间的介接的ESP系统850。ESP系统850可包含ESP装置或子系统851、事件发布装置872、事件预订装置A 874a、事件预订装置B 874b和事件预订装置C 874c。输入事件流由发布装置872输出到ESP装置851。在替代性实施例中,输入事件流可多个发布装置创建。多个发布装置可进一步将事件流发布到其它ESP装置。由ESPE 800实例化的一或多个连续查询可分析并处理输入事件流以形成输出到事件预订装置A 874a、事件预订装置B 874b和事件预订装置C 874c的输出事件流。ESP系统850可包含事件预订装置中的更大或更小数目个事件预订装置。
发布-顶用是基于间接寻址的消息定向交互范式。经处理数据接收者通过预订具体等级的事件来表示其对从ESPE 800接收信息的兴趣,而信息源将事件发布到ESPE 800,而不直接寻址接收方。ESPE 800协调交互并处理数据。在一些状况下,数据源接收对已发布信息已由数据接收者接收到的确认。
发布/预订API可被描述为使得事件发布者(例如发布装置872)能够将事件流发布到ESPE 800或事件订户(例如事件预订装置A 874a、事件预订装置B 874b和事件预订装置C874c)中、预订来自ESPE 800的事件流的库。为了说明,可定义一或多个发布/预订API。使用发布/预订API,事件发布应用程序可将事件流发布到ESPE 800运行的事件流处理器项目源窗口中,且事件预订应用程序可预订ESPE 800的事件流处理器项目源窗口。
发布/预订API在ESP应用程序与其它网络化应用程序提供跨平台连接性和字节序兼容性,其它网络化应用程序例如在发布装置872处实例化的事件发布应用程序和在事件预订装置A 874a、事件预订装置B 874b和事件预订装置C 874c中的一或多个处实例化的事件预订应用程序。
返回参看图9,操作906初始化ESPE 800的发布/预订能力。在操作908中,开始一或多个项目802。一或多个启动的项目可在后台在ESP装置上运行。在操作910中,从事件发布装置872的一或多个计算装置接收事件块对象。
ESP子系统800可包含发布客户端852、ESPE 800、预订客户端A 854、预订客户端B856和预订客户端C 858。发布客户端852可由在发布装置872处执行的事件发布应用程序使用发布/预订API启动。预订客户端A 854可由在事件预订装置A 874a处执行的事件预订应用程序A使用发布/预订API启动。预订客户端B 856可由在事件预订装置B 874b处执行的事件预订应用程序B使用发布/预订API启动。预订客户端C 858可由在事件预订装置C 874c处执行的事件预订应用程序C使用发布/预订API启动。
含有一或多个事件对象的事件块对象注入到来自事件发布装置872上的事件发布应用程序的个例一或多个源窗口806中的源窗口中。事件块对象可(例如)由事件发布应用程序产生且可由发布客户端852接收。当事件块对象在ESPE 800的一或多个源窗口806和/或一或多个导出窗口808之间传递,且传递到预订客户端A 854、预订客户端B 856和预订客户端C 858和传递到预订装置A 874a、事件预订装置B 874b和事件预订装置C 874c时,可维持唯一ID。发布客户端852可进一步产生,并在事件块对象由连续查询处理时包含事件块对象中的唯一嵌入事务ID,以及那个发布装置872指派给事件块对象的唯一ID。
在操作912中,经由一或多个连续查询804处理事件块对象。在操作914中,将被处理的事件块对象输出到事件预订装置874a到874c的一或多个计算装置。举例来说,预订客户端A 804、预订客户端B 806和预订客户端C 808可将接收到的事件块对象分别发送到事件预订装置A 874a、事件预订装置B 874b和事件预订装置C 874c。
ESPE 800从事件块公开到源窗口中时维持接收到的事件块的事件块容器性方面,且在输出到订户之前通过各种事件转译完成由一或多个连续查询804定义的定向图。通过比较发布者(例如发布装置872)附接到事件块对象的事件块对象的唯一ID与由订户接收到的事件块ID,订户可使预订事件的群组追溯到已公开事件的群组。
在操作916中,进行关于是否停止处理的确定。如果处理未停止,那么处理在操作910中持续以继续从(例如)一或多个网络装置接收含有事件块对象的一或多个事件流。如果处理已停止,那么处理在操作918中持续。在操作918中,停止已启动项目。在操作920中,关断ESPE。
如所提及,在一些实施例中,在接收到并存储数据之后出于分析项目处理大数据。在其它实施例中,分布式应用程序通过在将数据分布到地理上分布的接收者之前将查询应用于数据来实时过程来自分布式来源的连续地流动的数据。如所提及,事件流处理引擎(ESPE)可在其接收并确定哪一物理接收经处理数据时连续地将查询应用于数据。者允许在多种环境中接收和/或收集大量数据以进行实时处理和分布。举例来说,如关于图2所展示,可从可包含物联网内的装置(例如家庭自动化网络内的装置)的网络装置收集数据。然而,可从多种不同环境中的多种不同资源收集此类数据。在任何此情形下,本发明技术的实施例允许实时处理此类数据。
本发明的方面提供技术问题的技术解决方案,技术问题例如在ESP装置失效引起完全服务中断和潜在地显著的数据丢失时出现的计算问题。当经流式传输数据支持关键的操作(例如支持进行中的制造或钻孔操作的操作)时,数据丢失可能是灾难性的。ESP系统的实施例实现对在多个ESP装置处运行的ESPE的快速且无缝的失效接管,而不会发生服务中断或数据丢失,因此显著地提高依赖于数据流的实况或实时处理的操作行系统的可靠性。事件发布系统、事件预订系统和未在失效的ESP装置处执行的每一ESPE并不感知失效的ESP装置或受失效的ESP装置影响。ESP系统可包含数千个事件发布系统和事件预订系统。ESP系统将失效接管逻辑和感知保持于外消息网络连接器和外消息网络装置的边界内。
在一个实例实施例中,提供用以在事件流处理(ESP)事件块时支持失效接管的系统。所述系统包含(但不限于)外消息网络装置和计算装置。计算装置包含(但不限于)处理器和可操作地耦合到处理器的计算机可读媒体。处理器经配置以执行ESP引擎(ESPE)。计算机可读媒体在其上存储有在由处理器执行时致使计算装置支持失效接管的指令。从包含唯一标识符的ESPE接收事件块对象。将计算装置的第一状态确定为活动或备用。当第一状态活动时,将计算装置的第二状态确定为新活动或不新活动。当计算装置从备用状态切换到活动状态时,确定新活动。当第二状态新活动时,确定唯一地识别最后公开的事件块对象的最后公开的事件块对象标识符。下一事件块对象选自可由计算装置存取的非暂时性计算机可读媒体。下一事件块对象具有大于所确定的最后公开的事件块对象标识符的事件块对象标识符。向选定的外消息网络装置公开下一事件块对象。当计算装置的第二状态未新活动时,接收到的事件块对象公开到外消息网络装置。当计算装置的第一状态备用时,接收到的事件块对象存储于非暂时性计算机可读媒体中。
图11A说明分布式处理系统1000的实例实施例的框图,分布式处理系统1000并入有可形成存储网格1001的一或多个存储装置1100、协调装置1300、可形成节点装置网格1005的多个节点装置1500、和/或检视装置1800。图11B说明分布式处理系统1000的替代性实例实施例的框图,其中节点装置1500的替代实施例并入有一或多个存储装置1100的特征和/或执行一或多个存储装置1100的功能。在分布式处理系统1000的这两个实施例中,且如将更详细地解释,节点装置1500可在协调装置1300的控制下一起被操作为网格1005,其中节点装置1500中的多个中的每一个至少部分地与数据集1130的多个数据集分区1131中的不同一个并联地执行相同任务,数据集1130分布于多个节点装置1500当中。
如所描绘,这些装置1100、1300、1500和1800可在其当中交换与通过一或多个数据集1130对分析例程1210进行任务的指派和执行相关的通信。此类通信可包含交换节点状态1535、数据集1130数据集分区1131和/或的元数据1135、分析例程1210和/或其任务例程1211、CPU任务例程1571、GPU任务例程1671和/或结果数据1830。然而,装置1100、1300、1500和/或1800中的一或多个还可经由网络1999交换与任何分析例程的任务的任何指派或执行完全不相关的其它数据。在各种实施例中,网络1999可以是可在单个出芽或其它相对有限的区域内延伸的单个网络、可延伸相当大距离的连接式网络的组合、和/或可包含因特网。因此,网络1999可基于可通过其实现的通信的多种通信技术(或通信技术的组合)中的任一个,包含(但不限于)使用电和/或光学导电的走线的有线技术、和使用红外、射频(RF)或其它无线发射形式的无线技术。
转而参看图11A,在各种实施例中,一或多个存储装置1100中的每一个可并入有处理器1150、存储装置1160和网络接口1190中的一或多个以将一或多个存储装置1100中的每一个耦合到网络1999。存储装置1160可存储控制例程1140,可各自并入有一或多个任务例程1211的一或多个分析例程1210、可各自并入有元数据1135的一或多个数据集1330、和/或一或多个数据集1130的一或多个数据集分区1131。控制例程1140可并入有在一或多个存储装置1100中的每一个的处理器1150上具操作性的一连串指令,以实施用以执行各种功能的逻辑。存储装置1100中的每一个的处理器1150可操作网络接口1190,与与协调装置1300交换分析例程1210和/或其任务例程1211中的一或多个。替代地或另外,存储装置中的每一个的处理器1150可操作网络接口1190以通过协调装置1300协调经由网络1999与节点装置1500中的一或多个交换一或多个数据集分区1131,并实现此类交换。在存储装置1100中的多个一起被操作为存储网格1001的实施例中,控制例程1140的指令序列可在那些存储装置1100中的每一个的处理器1150上具操作性,以至少部分地与存储装置1100中的其它存储装置的处理器1150并联地执行各种功能。
在一些实施例中,存储装置1100的处理器1150可协作以执行收集功能,其中处理器1150所述操作网络接口1190中的对应一个以经由网络1999接收数据集1130中的一或多个的数据项,且可在一段时间内将数据项汇编到一或多个数据集1130中。在此类实施例中,可经由网络1999和/或从一或多个其它装置(未展示)以其它方式接收数据集1130的数据项。借助于实例,众多远程定位的传感器装置(例如,围绕特定地质区域散布的地质学传感器,或安置于粒子加速器处的各部分的粒子检测传感器可产生接着经由网络1999提供到存储装置1100的多个数据项,所述多个数据项接着经汇编以形成数据集1130。在其它实施例中,存储装置1100可从众多其它装置(未展示)(例如其它节点装置的)接收数据集1130中的一或多个。借助于实例,此类其它装置可执行一或多个处理操作,所述处理操作产生数据集1130(例如,使用贝叶斯分析以在模拟撤离燃烧的建筑物的过程中导出对人的行为的预测,或响应于各种风流而导出对桥的结构组件的行为的预测),且可接着向存储网格1001发射数据集1130作为输出。
一或多个数据集1130中的每一个可包含与广泛多种对象中的任一个相关联的广泛多种类型的数据中的任一个。借助于实例,数据集1130中的每一个可包含关于地质学和/或气象事件或来自用于例如化学或物理等领域中的实验室实验中的传感器的科学观测数据。借助于另一实例,数据集可包含由选定国家或自治市中的人的群体中的个人或在野外研究下的濒危物种的群体的随机样本执行的活动的指示。如所描绘,数据集1130中的每一个可并入有提供结构特点的指示的元数据1135,包含(且不限于)在每一数据集1130内经组织数据项和/或使其可存取的方式的方面。
分析例程1210的任务例程1211可致使一或多个处理器执行的任务可包含多种数据分析任务、数据变换任务和/或数据标准化任务中的任一个。数据分析任务可包含(且不限于)搜索和/或统计分析,搜索和/或统计分析引起导出近似值、数字表征、模型、假设评估和/或预测(例如,响应于风力而通过贝叶斯分析预测试图逃出燃烧建筑物的群众的动作或桥组件的行为)。数据变换任务可包含(且不限于)分类、基于行和/或列的数学运算、使用列或行的一或多个数据项的基于行和/或列的滤波、和/或重排序数据对象内的数据项。数据标准化任务可包含(且不限于)标准化日间时间、日期、货币值(例如,标准化到单个币种单位)、字符间隔、使用分隔符字符(例如,标准化对时间段和数值中的逗号的使用)、使用格式化代码、使用大或小端字节编码、使用或不使用符号位、用以表示整体和/或浮点值(例如,字节、词、双倍长字或四倍长字)的位的量等。
在各种实施例中,协调装置1300可并入有处理器1350、存储装置1360、输入装置1320、显示器1380和网络接口1390中的一或多个,以将协调装置1300耦合到网络1999。存储装置1360可存储控制例程1340、数据集1130的元数据1135、分析例程1210、节点状态1535、指派数据1330、任务延迟数据1335、编译例程1440、编译规则1434、CPU任务例程1571、GPU任务例程1671和/或结果数据1830。控制例程1340和编译例程1440(如果在存储装置1360内存在)可各自并入有在处理器1350上具操作性的一连串指令,以实施用以执行各种功能的逻辑。
在各种实施例中,节点装置1500中的每一个可并入有CPU 1550、存储装置1560和网络接口1590中的一或多个,以将节点装置1500中的每一个耦合到网络1999。存储装置1560可存储控制例程1540、一或多个数据集分区1131、节点状态1535的个例、编译例程1440、编译规则1434、任务例程1211中的一或多个、和/或CPU任务例程1571中的一或多个。控制例程1540和编译例程1440(如果在存储装置1560内存在)可并入有在节点装置1500中的每一个的CPU 1550上具操作性的一连串指令,以实施用以执行各种功能的逻辑。在节点装置1500中的多个一起被操作为节点装置网格1005的实施例中,控制例程1540的指令序列可在那些存储装置1500中的每一个的CPU 1550上具操作性,以至少部分地与存储装置1500中的其它存储装置的CPU 1550并联地执行各种功能。
节点装置1500的至少一个子集可另外并入有可并入有GPU 1650和存储装置1660中的一或多个的图形控制器1600。存储装置1660可存储控制例程1640、一或多个数据集分区1131、和/或GPU任务例程1671中的一或多个。控制例程1640可并入有在节点装置1600中的每一个的GPU 1650上具操作性的一连串指令,每一节点装置并入有图形控制器1600以实施用以执行各种功能的逻辑。在节点装置1600中的多个一起被操作为节点装置网格1005的实施例中,控制例程1640的指令序列可在那些存储装置1500中的每一个的图形控制器1600的GPU 1650上具操作性,以至少部分地与存储装置1500中的其它存储装置的图形控制器1600的GPU 1650并联地执行各种功能。
如图12中所描绘,存储装置1560可划分成易失性存储装置1561和非易失性存储装置1563,且存储装置1660可包含易失性存储装置1661,但可不包含非易失性存储装置。易失性存储装置1561和1661可各自分别以一或多个易失性存储组件1562和1662予以实施。易失性存储组件1562和1662可各自在其中(例如,所描绘实例数据集分区1131)使用实现对数据和/或例程存储的相对快速存取的多种存储技术,但所述存储技术并不能够在没有连续电力供应的情况下保持存储在其中的数据和/或例程。此类技术包含(且不限于)多种类型的随机存取存储器(RAM)中的任一个。非易失性存储装置1563可以一或多个非易失性存储组件1564予以实施。一或多个非易失性存储组件1564可各自使用存储技术,所述存储技术能够无论是否持续提供电力都保持存储于其中的数据和/或例程,但不能够提供与由易失性存储装置1561和/或1661可基于的各种易失性存储技术提供一样快的对数据和/或例程的存取。此类技术包含(且不限于)使用铁磁性和/或光学存储媒体的多种技术中的任一个。
由于其相应技术的差异,非易失性存储装置1563可具有比易失性存储装置1561或1661中的任一个显著地大的存储容量。因此,作为用以使得CPU 1550和GPU 1650能够分别利用对易失性存储装置1561和1661的更快度存取同时克服每一个的更有限存储容量的机制,存储于非易失性存储装置1563内的数据和/或例程的页可调换进出存储装置1561和1661中的每一个。更具体地说,且还如所描绘,可通过执行控制例程1540的页组件1541来致使CPU 1550实现支持其自身的操作和GPU 1650的操作两者的此页调换。使用CPU 1550以代表GPU 1650执行页调换的需要可起因于对由CPU 1550执行的一或多个驱动器例程(未展示)的使用,以使得CPU 1550能够存取一或多个非易失性存储组件1564。
返回到图11A,在各种实施例中,检视装置1800并入有处理器1850、存储装置1860、输入装置1820、显示器1880和网络接口1890中的一或多个,以将检视装置1800耦合到网络1999。存储装置1860可存储控制例程1840、分析例程1210和结果数据1830中的一或多个。控制例程1840可并入有在处理器1850上具操作性的一连串指令,以实施用以执行各种功能的逻辑。可通过使处理器1850执行控制例程1840来致使处理器1850操作网络接口1890,来在完成执行分析例程1210之后经由网络1999从节点装置1500中的一个或从协调装置1300接收结果数据1830。在一些实施例中,还可致使处理器1850基于结果数据1830而产生可视化,以在显示器1880上呈现由节点装置1500中的多个节点装置执行的对分析例程1210的任务例程1211的任务的执行结果的描绘。
替代地或另外,可通过使处理器1850执行控制例程1840来致使处理器1850操作显示器1880和/或输入装置1820来提供用户接口,检视装置1800的操作者可通过用户接口将输入提供到其上。此输入可包含用于执行以下操作的命令:跨越节点装置网格1005的节点装置1500中的多个执行分析例程1210以执行对由一或多个存储装置1100存储的数据集1130中的至少一个的分析。响应于接收到输入命令,可致使处理器1850操作网络接口1890以经由网络1999将命令和/或分析例程1210传达到协调装置1300。
转而参看图11B,在其中所描绘的分布式处理系统1000的替代性实例实施例不同于图11A的实例实施例,不同之处在于不包含一或多个存储装置1100。替代地,图11B的替代性实例实施例的节点装置1500可直接执行存储一或多个数据集1130的功能,借此避免对于图11A的分布式处理系统1000的实例实施例的一或多个存储装置1100的需要。
参看图11A和11B两者的两个实施例,应注意,在一些实施例中,由协调装置1300执行的功能可由节点装置1500中的一个代替这样做的协调装置1300执行(例如,不包含协调装置1300的实施例)。在此类实施例中,节点装置1500中的此一个可另外从存储装置1100中的一个(或在节点装置1500执行一或多个存储装置1100的存储功能的实施例中从节点装置1500中的一个)接收数据集1130中的一个的元数据1135。并且,节点装置1500中的此一个可另外从节点装置1500中的其它节点装置接收节点状态1535。此外,节点装置1300中的此一个可另外将任务例程1211、CPU任务例程1571和/或GPU任务例程1671发射到节点装置1500中的其它节点装置。
图13A说明指派任务和编译可由图11A或11B中的任一者的分布式处理系统1000的实例实施例中的任一者中的协调装置1300执行的任务例程的实例实施例。图13B说明指派可由协调装置执行的任务同时编译可由节点装置1500执行的任务例程的替代实例实施例,节点装置1500经选定以被指派,从而执行图11A或11B中的任一者的分布式处理系统1000的实例实施例中的任一者的任务。
转向图13A,在执行控制例程1340时,可致使协调装置1300的处理器1350从一或多个存储装置1100和/或检视装置1700接收指示数据集1130中的一者的结构特点的元数据1135和/或分析例程1210。还可致使处理器1350从节点装置1500接收节点状态1535,节点状态1535指示并入到节点装置1500中的每一者中的处理、存储和/或网络接入资源,以及那些资源中的每一者当前可用的程度。处理器1350可采用元数据1135、分析例程1210和/或节点状态1535以导出分析例程1210的至少一个初始任务对节点装置1500中的选定节点装置的初始指派,以及数据集分区1131到节点装置1500中的选定节点装置的初始分布。
在执行编译例程1440时,可致使处理器1350分析分析例程1210的任务例程1211中的每一者内的可执行指令,以识别任务例程1211中能够经编译以供可并入到节点装置1500的至少一个子集中的GPU 1650完美并行执行的任务例程。任务例程1211中能够如此编译以用于GPU 1650的任务例程1211可由处理器1350编译成能够由GPU 1650执行的对应GPU任务例程1671。然而,任务例程1211中不能够如此编译以用于GPU 1650的任务例程可由处理器1350编译成能够由节点装置1500的CPU 1550执行的对应CPU任务例程1571。可随后致使处理器1350将用于至少一个初始任务的一或多个CPU任务例程1571和/或一或多个GPU任务例程1671分布到节点装置1500中的选定节点装置,作为指派至少一个初始任务的部分。
在执行控制例程1540时,节点装置1500中的选定节点装置中的每一者的CPU 1550可接收并存储用于至少一个初始任务的一或多个CPU任务例程1571和/或一或多个GPU任务例程1671,以及初始地分布的数据集分区1131中的至少一者。在接收到CPU任务例程1571的情况下,可致使CPU 1550执行CPU任务例程1571以用至少一个接收到的数据集分区1131执行任务。在接收到GPU任务例程1671的情况下,可致使CPU 1550将GPU任务例程1671连同至少一个接收到的数据集分区1131转送到节点装置1500的图形控制器1600内的GPU 1650,其中可由控制例程1640致使GPU 1650执行GPU任务例程1671从而用至少一个接收到的数据集分区1131执行任务。
无论是每个节点装置1500的CPU 1550还是GPU 1650用对应数据集分区1131执行任务,都会致使CPU 1550和/或GPU 1650重复更新节点状态1535中的对应节点状态,节点状态1535指示当前执行哪些任务和/或因此各种资源当前可用的程度。可通过进一步执行控制例程1540来致使每个节点装置1500的CPU 1550将对应节点状态1535重复发射到协调装置1300。
在进一步执行控制例程1340时,协调装置1300的处理器1350可采用当前所执行的任务和/或每个节点装置1500内的各种资源的当前可用性程度的重复接收到的节点状态1535中的指示来确定完成各种任务所需的时间量。处理器1350可存储对每个任务所需的这些时间量的指示作为任务延迟数据1535的部分。当节点装置1500中的一或多者完成早先指派的任务时,可致使处理器1350在确定延迟一或多个后续任务到节点装置1500中的一或多者的指派的预定时间段时采用这些所存储的对时间量的指示。
指派后续任务的此类延迟可以利用特定数据集分区1131已存储在节点装置1500中的一或多者的存储装置1560和/或1660内的方式实现那些后续任务对节点装置1500中的一些的指派。另外,此可利用数据集分区1131在易失性存储装置1561和/或1661内的时间有限的存储,且可将通过网络1999对数据集分区1131的交换减到最少,所述交换可耗费大于指派后续任务的延迟长度的时间量。又另外,在特定数据集分区1131被最初指派到并入有一或多个GPU 1650的节点装置(在此情况下将使用一或多个GPU 1650来执行早先指派的任务和后续任务两者)的实施例中,指派后续任务的此类延迟可将致使在未并入有GPU 1650的其它节点装置中处理后续任务以致使一或多个CPU 1550执行后续任务的情况减到最少。
转向图13B,任务对节点装置1500中的选定节点装置的指派大体上类似于图13A的任务指派的实例实施例,除了分析例程1210的任务例程1211的编译可发生在选定节点装置1500内而非协调装置1300内。更具体来说,在导出分析例程1210的至少一个初始任务对选定节点装置1500的初始指派后,协调装置1300的处理器1350可将至少一个初始任务的任务例程1211而非CPU任务例程1571或GPU任务例程1671分布到选定节点装置1500。选定节点1500中的每一者的CPU 1550可执行编译例程1440以编译所分布的任务例程1211从而在选定节点装置1500内产生对应CPU任务例程1571和/或GPU任务例程1671,而非协调装置1300的处理器1350如此操作。
图14A、14B和14C一起说明将作为执行分析例程的部分而将执行的任务指派到节点装置网格1005的节点装置1500中的选定节点装置的实例实施例。图14A和14B说明收集并使用与分析例程1210、数据集1130的元数据1135和/或由节点装置1500提供的节点状态1535相关联的数据以导出指派。图14C说明任务例程1211、1571和/或1671到选定节点装置1500的分布。
转向图14A,如所描绘,由协调装置1300的处理器1350执行的控制例程1340可包含监视组件1345,监视组件1345用以致使处理器1350重复操作网络接口1390,以接收可由节点装置网格1005的节点装置1500中的每一者经由网络1999重复发射的节点状态1535。在一些实施例中,节点装置1500中的每一者可以规则时间间隔且不管在进行中的其它活动而将节点状态1535以“心跳信号”形式重复发射到协调装置1300,节点状态1535指示继续功能性以及传达关于当前可用资源和/或当前活动的信息。在此类实施例中,在预期时协调装置1300未从节点装置1500接收节点状态1535可被视为指示节点装置1500失效,使得节点装置的资源可被认为是不可用的,且当前指派到所述节点装置1500的任何任务可被再指派到另一节点装置1500。
同样如所描绘,控制例程1340还可包含指派组件1341,指派组件1341用以致使处理器1350将数据集1130的数据集分区1131指派到节点装置网格1005的节点装置1500中的选定节点装置,以及致使用所指派数据集分区1131来执行分析例程1210的任务。在准备进行此类指派时,可致使处理器1350操作网络接口1390以经由网络1999从一或多个其它装置检索数据集1130的元数据1135以及分析例程1210,以供指派组件1341使用。在分布式处理系统1000包含一或多个不同存储装置1100的实施例(例如,图11A的实例分布式处理系统1000)中,可经由网络1999将元数据1135和/或分析例程1210从一或多个存储装置1100提供到协调装置1300。然而,在分布式处理系统1000不包含此类不同存储装置且节点装置1500提供数据集1130的分布式存储的实施例(例如,图11B的实例分布式处理系统1000)中,可经由网络1999将元数据1135和/或分析例程1210从节点装置1500中的一或多者提供到协调装置1300。
在其它实施例中,检视装置1800可向协调装置1300提供分析例程1210。在此类实施例中,检视装置1800可提供用户接口,可通过所述用户接口控制检视装置1800以经由网络1999将命令发射到协调装置1300,从而致使以分布式方式执行分析例程1210以用数据集1130执行分析。将命令发射到协调装置1300的部分可为将分析例程1210从检视装置1700发射到协调装置1300。
如进一步所描绘,在协调装置1300将编译分析例程1210的任务例程1211的实施例中,编译例程1440可由处理器1350执行,且可包含分析组件1441,分析组件1441用以识别任务例程1211中适于转换和编译以供一或多个GPU 1650完美并行执行的任务例程。为了进行此操作,分析组件1441还可接入所接收的分析例程1210,与控制例程1340的指派组件1341一样。
转向图14B,如所描绘,节点状态1535可指定将哪些处理、存储和/或网络接入资源并入到每个节点装置1500中。如已论述,可重复更新节点状态1535以另外指定每个此类资源的当前可用性的当前程度(例如,使用的当前百分比水平)。
借助于实例,节点状态1535可提供对可并入到节点装置1500中的每一者中的处理器的数量、类型、版本和/或其它内部架构细节的指示。因此,对于每个节点装置1500,节点状态1535可指定存在的CPU 1550和/或GPU 1650的数量,以及每个处理器的类型信息,包含(并且不限于)指令集兼容性、修正级别、高速缓冲存储器大小、处理核心的数量和/或每个处理核心能够执行的线程的数量。如将更详细地解释,提供此类信息可辅助支持节点装置网格1005内的在其间采用多种不同处理器的节点装置1500的异质集。可重复更新节点状态1535连同关于并入到节点装置1500中的每一者中的处理资源的信息,以提供对不同处理器(例如,单个节点装置1500内的不同CPU 1550和/或GPU 1650)的当前使用水平、线程的当前使用水平和/或其它特定处理特征的当前使用水平(例如,任何专用处理核心、逻辑单元、指令集的扩展、不同水平的高速缓冲存储器等的使用水平)的指示。
同样借助于实例,节点状态1535可提供对可并入到节点装置1500中的每一者中的易失性存储装置1561和/或1661和/或非易失性存储装置1563的存储容量的指示。因此,对于每个节点装置1500,节点状态1535可指定用于实施存储装置1561、1661和/或1563中的每一者的存储组件的数量和/或各种参数,包含(并且不限于)所使用的接口类型、页和/或行大小、接入速度和/或时延,和/或所使用的存储技术。可重复更新节点状态1535连同关于并入到节点装置1500中的每一者中的存储资源的信息,以提供对不同易失性和/或非易失性存储装置的当前使用水平的指示。
进一步借助于实例,节点状态1535可提供对可并入到节点装置1500中的每一者中的网络接口1590的网络接入能力和/或带宽的指示。因此,对于每个节点装置1500,节点状态1535可指定所支持的有线和/或无线网络接口、所支持协议、输入和/或输出缓冲器大小等。可重复更新节点状态1535连同关于并入到节点装置1500中的每一者中的关于网络接入资源的信息,以提供对每个接口的带宽和/或缓冲器的当前使用水平的指示。
同样如所描绘,元数据1135可提供对可在数据集1130内组织和/或接入数据项所借以的各种结构特点的指示。举例来说,元数据1135可包含对以下各项的指示:数据集1130的数据结构的总大小、类型(例如,二叉树、多维阵列、链表等)、数据项的数据类型(例如,浮点、整数、文本字符等)、用于接入数据项的索引方案的方面(例如,维度的数目、所使用的标签等),和/或其它结构方面。并且,举例来说,元数据1135可包含对可将数据集1130划分成数据集分区1131的方式的各种限制的指示,例如数据集1130的数据项已组织成的任何分割方案,和/或数据集1130可分割成的数据的最小原子单元的最小大小,所述最小大小将仍实现所得数据集分区1131的独立处理(例如,二维阵列中的行或绘图(draw)的大小等)。如所属领域的技术人员所熟知,对可划分数据集1130的方式的此类限制可对数据集1130可划分成的数据集分区1131的数量强加上限,这可有效地对所得数据集分区1131可分布到的节点装置1500的数量强加上限。
分析例程1210可划分成任何数目个任务例程1211,所述任务例程1211各自包含指定作为执行所述任务例程1211作为执行分析例程1210的部分的结果而将执行的对应任务的方面的指令。不同任务例程1211中的每一者内的指令可提供对所需处理资源(例如,无论是否需要支持指令集的特定扩展)和/或支持在执行期间实例化的数据结构所需的存储容量的指示。分析例程1210还可提供对执行任务例程1211的次序的指示。替代或另外地,分析例程1210可包含执行每个任务所需的输入的定义和/或由每个任务产生的输出的定义。提供对执行任务例程1211的次序的指示可包含对任务例程1211之间的相依性的指示,例如指示何处存在需要作为到另一任务例程1211的输入的一个任务例程1211的输出。提供对将产生的所需输入和/或输出的指示可为多任务计算(MTC)架构的实施方案的部分,在MTC架构中,至少由分析例程1210的任务的输入和输出各自独立地表达所述任务,以使得分析例程1210的任务的至少一个子集适于完美并行执行。
提供输入和/或输出的定义、对任务执行次序的指示和/或对相依性的指示可取决于产生分析例程1210的编程语言的属性而变化。借助于实例,在一些实施例中,任务例程1211中以遵循选定编程语言的规则的方式写成可调用函数的任务例程的声明标头可足以提供此类定义。然而,在其它实施例中,可在分析例程1210内或伴随分析例程1210产生不同文件或其它数据结构,以提供此类定义和/或指示。更具体来说,作为实例,可产生阵列,在所述阵列中,每个条目指定需要产生的输入、输出和/或在执行次序内的位置。无论在文件或其它数据结构中表示输入和/或输出的定义和/或对相依性和/或次序的指示的确切方式如何,在一些实施例中,此类定义和/或指示都可形成分析例程1210的任务的有向非循环图(DAG)的表示。
在执行指派组件1341时,可致使处理器1350采用节点状态1535、元数据1135和/或分析例程1210的部分以导出分析例程1210的至少一个初始任务对节点装置1500中的选定节点装置的初始指派,以及至少一个数据集分区1131到节点装置1500中的选定节点装置中的每一者的初始分布。在导出此类初始指派时,可致使处理器1350至少部分地基于初始地导出将数据集1130划分成数据集分区1131的方式中的任何所指示限制而初始地导出所述方式,所述所指示限制可存在于元数据1135内和/或当前指示为在节点状态1535中具有充足存储资源的节点装置1500的数量上。替代或另外地,可致使处理器1350分析分析例程1210的任务例程1211中的一或多者内的可执行指令以识别所需的一或多个特定处理资源(例如,浮点运算、单指令多数据(SIMD)指令支持等),且处理器1350可基于节点状态1535中的指示而选择节点1500中的一些以指派初始任务,其中节点装置1500中的一些当前具有此类可用处理资源。无论在导出任务和/或数据集分区1131对节点装置1500中的选定节点装置的初始指派时所采用的确切逻辑如何,处理器1350都可存储对此类初始指派的指示作为指派数据1330的部分。
在协调装置1300将编译分析例程1210的任务例程1211的实施例中,协调装置1300可存储编译规则1434以供在由处理器1350执行编译例程1440期间使用。编译规则1434可指定编译分析例程1210的任务例程1211的各种方面以产生CPU任务例程1571以供CPU 1550中的一或多者执行,和/或产生GPU任务例程1671以供GPU 1650中的一或多者执行。由编译规则1434指定的方面还可为将任务例程1211的并非最初经产生以利用由GPU 1650(通过提供对相对大数量的执行线程)提供的完美并行执行能力的指令转换成经产生以进行此操作的指令的方面。因此,编译规则1434可指定最初产生以供CPU 1550执行的任务例程1211的指令转换并编译成经产生以供GPU 1650执行的指令。
节点装置1500中的每一者的一或多个CPU 1550中的每一者可采用被认为良好适合于任务例程1211的循序处理的内部处理架构,所述任务例程包含调节任务例程1211内的不同指令集对各种确定结果的执行的各种输入/输出操作和/或分支操作。CPU 1550中的每一者可各自包含一或多个处理核心1555(参考图12),所述处理核心1555可各自支持相对有限数量的执行线程上的相对有限程度的并行指令执行。相比之下,可存在于节点装置1500的至少一个子集内的一或多个GPU 1650可采用被认为良好适合于任务例程1211的完美并行处理的内部处理架构,任务例程1211包含相对有限的数学指令集和/或能够独立于彼此而执行以使得在并行地执行的任务例程1211的许多实例之间不存在相依性的逐位运算。实际上,在一些实施例中,GPU 1650中的每一者能够支持跨越数百、数千或更大数量的执行线程的并行处理。
在任务例程1211的指令适于经转换以进行跨越此类大数量的线程的此类并行执行的情况下,由此类任务例程1211执行的任务可以少得多的时间执行。借助于实例,任务例程1211中的一者的可花费多日使用节点装置1500的CPU 1550来执行的任务可实际上仅花费一天中的几小时使用GPU 1650来执行。对于可使用GPU 1650的较有限指令集来实施的任务,节点装置1500中的单一者内的GPU 1650中的单一者能够执行跨越节点1500中的许多者的CPU 1550中的许多者的等效工作,且使用更少时间和少得多的费用。当并行操作节点装置1500中的多者内的GPU 1650中的多者以将任务作为完美并行任务跨越各自支持的许多线程而执行时,执行速度的此改进甚至变得更大,进而提供所述任务操作的甚至更高度并行形式。
然而,可存在分析例程1210的任务例程1211中包含特定指令和/或用以执行特定操作的任务例程,所述任务例程使得那些任务例程1211的指令不能经转换和编译以供GPU1650进行此类完美并行执行。同样,GPU 1650可支持相对有限的指令集。借助于实例,许多类型的输入/输出操作必须以单线程方式执行,这是因为各种协议握手和/或其它特征强加步骤的循序执行。因此,设想分析例程1210可包含指令适于转换和编译以用于由GPU 1650提供的完美并行执行的任务例程1211和指令并非如此而必须经编译以供CPU 1550执行的任务例程1211。
编译规则1434可包含指令列表,所述指令如果存在于任务例程1211内,那么至少不阻止任务例程1211的指令的转换和编译以产生对应GPU任务例程1671,其中所述指令在经执行时致使使用至少一个GPU 1650的许多线程将任务例程1211的任务作为完美并行任务来执行。替代或另外地,编译规则1434可包含指令列表,所述指令如果存在于任务例程1211内,那么阻止任务例程1211的此类转换以支持由GPU 1650进行此类完美并行执行。此外,编译规则1434可指定可在任务例程1211中以阻止此类转换的方式(例如,作为输入/输出操作或其它操作的部分)使用另外不阻止此类转换的特定指令的特定情况。
对于分析例程1210的任务例程1211中具有能够支持转换成其它指令(其能够经编译以在GPU 1650上将任务作为完美并行任务执行)的指令的任务例程,编译规则1434可指定用于执行此类转换的各种规则。借助于实例,编译规则1434可包含用于转换在循环中使用从而以较适于完美并行执行的方式来实例化的索引值的一或多个规则,其中在并行地执行的任务的实例之间避免索引值的冲突和相依性。替代或另外地,可存在用于将在循环内实施以致使多次循序执行操作的指令转换成致使所述操作的多次执行跨越GPU 1650中的至少一者的许多线程并行地发生的指令的一或多个规则。在包括循环的此类转换中的一些中,在操作的执行数量可足够大以使得并非都能够并行地发生情况下,循环可能不被消除,且实际上可经转换以采用更少迭代,其中操作的执行的子集在每个迭代期间并行地发生。借助于另一实例,编译规则1434可包含用于将在任务例程1211内实例化的数据结构(其中其数据项被循序存取)转换成不同数据结构(其数据项以并行方式跨越GPU 1650中的至少一者的许多线程而被存取)的一或多个规则。
在一些实施例中,转换可必然伴有将任务例程1211的最初在特定编程中产生的指令转换成在同一编程语言中产生的其它指令。然而,在此类实施例中的一些中,经界定以用于所述特定语言的指令可经扩增以包含与内部架构中对于GPU 1650唯一的方面(例如,操作数的特定类型、返回的值的特定类型、用以适配暂存器实施方案的变量的位和/或字节的组织等)相关联的一或多个额外指令。在其它实施例中,转换可必然伴有将任务例程1211的最初在一个编程语言中产生的指令转换成在另一编程语言中产生的其它指令。在此类实施例中的一些中,在努力提供经设计以最好地使用GPU 1650的特征的编程语言的过程中,GPU1650的提供者可能已创建其它编程语言。
以下呈现可由协调装置1300的处理器1350和/或由节点装置1500的一或多个CPU1550执行的任务例程1211的部分的转换的实例。首先描绘在FCMP中产生的实例任务例程1211的部分,FCMP是由美国北卡罗来纳州卡瑞的SAS研究公司在各种产品中提供的编程语言。具体来说,举例来说,已在FCMP与C编程语言之间转换子例程“income_statement_kernel”和数据结构“d_matrix_is”的声明。
随后描绘在由处理器1350或CPU 1550中的一或多者执行的转换过程中产生的对应GPU任务例程的对应部分。具体来说,在FCMP中产生的实例任务例程1211的以上部分已经转换以使用作为计算通用装置架构(CUDA)编程模型的部分的编程语言扩展来调用GPU(例如,GPU 1650)的由美国加利福尼亚州圣克拉拉的Nvidia公司(其是可用作GPU 1650的GPU的提供者)颁布的函数。
如所属领域的技术人员将易于认识到,情况常常是最初产生以供使用第一处理架构来执行的编程代码很可能相比于最初产生以供使用第二处理架构来执行且接着经转换以供使用第一处理架构来执行的编程代码由第一架构的处理器更高效地执行。尽管这样,但测试已确认,分析例程1210的一些任务的执行速度的显著增益可通过由编译例程1440将任务例程1211从经产生以供CPU 1550执行转换成经产生以供GPU 1650完美并行执行来实现。
以下呈现测试实例随机计算的执行时间的比较表。此类计算可为实施为实例分析例程1210内的任务例程1211中的一者的任务。如所描绘,当以SAS宏代码(由SAS研究公司在各种产品中提供的另一编程语言)编写随机计算以供CPU(例如,节点1500中的一者的CPU1550中的一者)执行时,执行所需的所得时间量测量为约93,600秒。实际上,当以FCMP编写同一随机计算以供多个CPU(例如,节点1500中的一或多者内的CPU 1550中的多者)执行时,所得测得执行时间为763秒。然而,当接着将随机计算的同一FCMP代码转换成CUDA以供Nvidia公司所提供的GPU中的一者(例如,节点1500中的一者的GPU 1650中的一者)完美并行执行时,所得测得执行时间为73秒。尽管73秒慢于在以CUDA直接编写同一随机计算以供Nvidia公司所提供的GPU中的一者完美并行执行时实现的测得11秒执行时间,但通过使用从FCMP到CUDA的转换实现的73秒测得执行时间仍是优于通过由多个CPU执行FCMP代码来实现的763秒测得执行时间的极显著改进。
因此,如可从这些测得执行时间了解,转换代码以实现编译以用于此类完美并行执行的此类使用使得本身未拥有以CUDA编写分析例程1210的任务例程1211的技能或训练的人员仍能够获得其能够编写的代码的完美并行执行的益处。
在协调装置1300将编译分析例程1210的任务例程1211的实施例中,处理器1350可执行分析组件1441作为导出数据集分区1131和初始任务的初始指派的部分。更具体来说,可由分析组件1441致使处理器1350分析分析例程1210的每个任务例程1211以识别任务例程1211中指令适于转换和编译成对应GPU任务例程1671以实现由GPU1650完美并行执行其对应任务的任务例程。在如此操作时,可致使处理器1350采用编译规则1434内的指示,编译规则1434的指令阻止和/或不阻止此类转换。可随后致使处理器1350在选择节点装置1500中的一些作为导出初始指派的部分时使用任务例程1211的此类分析的结果。更具体来说,如果任务例程1211的分析导致处理器1350确定任务例程1211都不能够被编译成对应GPU任务例程1671,那么处理器1350可将对节点装置1500的选择限制于并入有CPU 1550中的一或多者的节点装置,这是因为GPU任务例程1671不会从任务例程1211产生。然而,如果任务例程1211的分析导致确定任务例程1211中的一些能够被编译成对应GPU任务例程1671而其它任务例程不能够如此,那么处理器1350可将对节点装置1500的选择限制于并入有CPU 1550中的一或多者和GPU 1650中的一或多者两者的节点装置,且因此能够支持从任务例程1211中的不同任务例程产生的CPU任务例程1571和GPU任务例程1671两者的执行。另外,如果任务例程1211的分析导致确定所有任务例程1211能够被编译成对应GPU任务例程1671,那么处理器1350可将对节点装置1500的选择限制于并入有GPU 1650中的一或多者的节点装置。
转向图14C,在协调装置1300不编译分析例程1210的任务例程1211的实施例中,可由控制例程1340的指派组件1341致使处理器1350操作网络接口1390以将所指派初始任务的任务例程1211分布到选定节点装置1500。在此类实施例中,在准备执行指派到选定节点1500中的每一者的初始任务时,选定节点装置1500中的每一者可独立地将分布到选定节点1500中的每一者的任务例程1211编译成对应CPU任务例程1571和/或GPU任务例程1671。
替代地,在协调装置1300将编译分析例程1210的任务例程1211以使得协调装置1300存储编译例程1440以供处理器1350执行的实施例中,编译例程1440可包含用以执行任务例程1211的编译的编译组件1444。更具体来说,可由编译组件1444致使处理器1350至少编译与已指派到节点装置1500中的选定节点装置的一或多个初始任务相关联的一或多个任务例程1211。对于已由处理器1350(在分析组件1441的执行期间)确定为不适于转换和编译以产生对应GPU任务例程1671的任务例程1211,可致使处理器1350编译任务例程1211而无此类转换以产生对应CPU任务例程1571。对于已由处理器1350确定为适于经转换和编译以产生对应GPU任务例程1671的任务例程1211,可致使处理器1350实现此类转换和编译以产生对应GPU任务例程1671。
在一些实施例中,在任务例程1211已由处理器1350确定为适于经转换和编译以产生对应GPU任务例程1671的情况下,可由编译组件1444致使处理器1350执行同一任务例程1211的多于一次编译。举例来说,在此类实施例中的一些中,处理器1350可另外编译同一任务例程1211以除了对应GPU任务例程1671以外还产生对应CPU任务例程1571。此可被认为对于处理以下情形是合乎需要的:可存在不充足数量的并入有GPU 1650中的一或多者的可用节点装置1500,使得必须基于由一或多个CPU 1550执行对应CPU任务例程1571而由节点装置1500中的一或多者执行任务例程1211的任务。替代或另外地,此可被认为对于处理以下情形是合乎需要的:并入有一或多个GPU 1650的节点装置1500在执行对应GPU任务例程1650时遭遇失效,且必须将被指派到所述节点装置1500的任务例程1211的任务关于特定数据集分区1131的执行再指派到未并入有GPU 1650的另一节点装置1500。
借助于同一任务例程1211的多于一次编译的另一实例,在此类实施例中的一些中,节点装置网格1005可包含并入有不同GPU 1650的节点装置1500的异质集,所述GPU1650不共享指令集,使得针对所有不同GPU 1650产生单个对应GPU任务例程1671可能是不可能的。因此,可致使处理器1350将同一任务例程1211多次转换和编译成存在于节点装置网格1005的节点装置1500之间的不同GPU 1650中的每一者所需的不同版本的GPU任务例程1671中的每一者。
然而,在协调装置1300将编译分析例程1210的任务例程1211的实施例中的一些中,可针对是否存在对存在并入有任何GPU 1650的任何可用节点装置1500的指示而调节是否进行任务例程1211的分析以识别适于经编译以用于一或多个不同GPU 1650的任务例程和/或是否进行此类编译以产生对应GPU任务例程1671。更具体来说,在当前节点状态1535指示并入有GPU 1650中的一或多者的节点装置当前都不可用于被指派任何任务的情形中,可由指派组件1341致使处理器1350制止执行任务例程1211的任何分析以确定任何任务例程是否适于经编译以供任何GPU 1650执行。替代或另外地,在不同节点装置1500并入有不同类型的GPU 1650使得所有不同类型的GPU 1650需要多个编译来产生GPU任务例程1671的实施例中,可出现节点状态1535指示所述类型中的一者的所有GPU 1650当前不可用于执行任何任务的情形。在此情形下,可由指派例程致使处理器1350制止编译任何任务例程1211以产生任何GPU任务例程1671以供所述特定类型的GPU 1650执行。
以包含将任务例程1211的指令转换成利用GPU 1650的完美并行处理特征的其它指令后接续编译的方式产生GPU任务例程1671可被认为是改进可使用GPU 1650的完美并行特征的简便性所要的。通过指令转换的此类使用,人员可具备利用可存在于节点装置1500中的至少一些内的GPU 1650的机会,而不需要以经设计用于此类完美并行执行的方式构造及编写任务例程1211的指令。换句话说,这些人员能够不需要获取以经设计用于由GPU1650的完美并行执行的方式构造及编写实施分析例程1210的任务的指令的附加技能和经验。此外,在节点装置网格1005包含并入有GPU 1650中不共享指令集的不同GPU的节点装置1500的情况下,这些人员进一步不需要以经设计用于由GPU 1650中的不同GPU中的每一者提供高度并行执行的方式的不同特异性的方式构造及编写实施分析例程1210的任务的指令的不同版本以解决由不同GPU中的每一者的完美并行执行的不同特异性。
图15A和15B一起说明被指派到节点装置网格1005的节点装置1500中的选定节点装置的任务的执行的实例实施例。图15A说明准备可包含在实例节点装置1500内编译任务例程1211的执行的方面,且图15B说明通过执行对应CPU任务例程1571或对应GPU任务例程1671而在实例节点装置1500内执行任务的方面。
转向图15A,如先前所论述,在分布式处理系统1000包含一或多个不同存储装置1100的实施例(例如,图11A的实例分布式处理系统1000)中,可经由网络1999将一或多个数据集分区1131提供到节点装置1500,包含提供到所描绘的实例节点装置1500。然而,在分布式处理系统1000不包含此类不同存储装置且节点装置1500提供数据集1130的分布式存储的实施例(例如,图11B的实例分布式处理系统1000)中,在实例节点装置1500内执行任务所用的一或多个数据集分区1131可已存储在实例节点装置1500内。另外,可经由网络1999将此类一或多个数据集分区1131从节点装置1500中的另一节点装置提供到实例节点装置1500。
如先前所论述,在协调装置1300不编译分析例程1210的任务例程1211的实施例中,协调装置1300可将一或多个所指派初始任务的一或多个任务例程1211分布到选定节点装置1500。在此类实施例中,且如所描绘,节点装置1500中的每一者可存储编译例程1440以供节点装置1500中的每一者的CPU 1550执行。因此,在从协调装置1300接收到任务例程1211之后,实例节点装置1500的CPU 1550可执行编译例程1440以首先分析任务例程1211,从而确定其是否适于经转换和编译以产生对应GPU任务例程1671。如果是,那么可致使CPU1550执行任务例程1211的此类转换和编译以因此产生对应GPU任务例程1671以供实例节点装置1500的GPU 1650执行。然而,如果任务例程1211并不适合,那么可致使CPU 1550编译任务例程1211而无此类转换以产生对应CPU任务例程1571。
替代地,在协调装置1300编译分析例程1210的任务例程1211的实施例中,协调装置1300可从一或多个任务例程1211分布在协调装置1300内产生的一或多个对应CPU任务例程1571和/或GPU任务例程1671。因此,实例节点1500可接收将由CPU 1550执行的CPU任务例程1571,或将由GPU 1650执行的GPU任务例程1671,而非产生CPU任务例程1571或GPU任务例程1671的对应任务例程1211。
如所描绘,由GPU 1650执行的控制例程1640可包含执行组件1641,执行组件1641用以在对应GPU任务例程1671能够从被指派到实例节点装置1500的初始任务的任务例程1211产生(无论是在协调装置1300还是实例节点装置1500内)的情况下,致使GPU 1650执行对应GPU任务例程1671。然而,同样如所描绘,由CPU 1550执行的控制例程1540可包含执行组件1541,执行组件1541用以在对应GPU任务例程1671不能够从被指派到实例节点装置1500的初始任务的任务例程1211产生使得对应CPU任务例程1571的产生为必要的情况下,致使CPU 1550执行对应CPU任务例程1571。
转向图15B,且简单参考图12,在由执行组件1641致使GPU 1650执行GPU任务例程1671以用数据集分区1131执行所指派初始任务的情况下,GPU任务例程1671和数据集分区1131两者的页可在非易失性存储装置1563与GPU 1650所耦合到的易失性存储装置1661之间调换。替代地,在由执行组件1541致使CPU 1550执行CPU任务例程1571以用数据集分区1131执行所指派初始任务的情况下,CPU任务例程1571和数据集分区1131两者的页可在非易失性存储装置1563与CPU 1550所耦合到的易失性存储装置1561之间调换。如早先结合图12所论述,易失性存储装置1561和1661中的每一者可准许相比于非易失性存储装置1563显著更快地接入其中所存储的数据和/或例程,使得CPU 1550和GPU 1650能够更高效地执行例程并用分别存储在易失性存储装置1561和1661内的数据执行操作。然而,易失性存储装置1561和1661中的每一者相比于非易失性存储装置1563可具有显著更少的存储容量。因此,可重复出现以下情形:相对大的数据集分区1131中的显著较多部分(如果并非所有)可储存在非易失性存储装置1563内,而仅所述数据集分区1131的相对小部分可储存在易失性存储装置1561和1661中的任一者内,进而使页调换的使用成为必要。
如所描绘,控制例程1540还可包含状态组件1543,状态组件1543用以致使CPU1550操作实例节点1500的网络接口1590以将对实例节点1500的处理、存储和/或网络接入资源的当前状态的更新指示作为节点状态1535的更新实例重复发射到协调装置1300。如先前结合图12所论述,图形控制器1600内的GPU 1650可能无法接入网络接口1590和/或可不执行必需的驱动器例程以直接操作网络接口1590。因此,可由状态组件1543致使CPU 1550从GPU 1650重复检索对GPU 1650和/或易失性存储装置1661的状态的指示,以添加到对包含在所发射节点状态1535中的状态的指示。
图16说明将作为执行分析例程的部分而将执行的后续任务指派到节点装置网格1005的节点装置1500中的选定节点装置的实例实施例。如先前结合图14A到14B和15B所论述,可由监视组件1545致使协调装置1300的处理器1350重复操作网络接口1390以接收经由网络1999从节点装置网格1005的节点装置1500重复发射的节点状态1535。
在一些实施例中,还可由监视组件1545致使处理器1350维持并重复更新对完成被指派到节点装置1500的任务所需的时间量的指示。在此类实施例中的一些中,任务延迟数据1335可包含用于完成的单独的每一任务(per-task)时间,所述每一任务时间作为多个节点装置1500中的每一者完成同一任务所需的时间量的平均值而被重复计算。在任务已被指派到节点装置1500中的不同节点装置(可在其中使用不同类型的处理器(例如,CPU 1550与GPU 1650,或不同类型的GPU 1650)来执行所述任务)的实施例中,可在任务延迟数据1335内针对在执行任务时采用的每个不同类型的处理器维持不同的平均时间。替代或另外地,作为用以考虑节点装置1500之间的资源(包含处理资源)的差的机制,每个节点装置1500完成被指派到其的任务相比其它节点装置1500的相对时间量差的平均值可包含在任务延迟数据1335中。
在此类实施例中,可由指派组件1541致使处理器1350采用所存储的对时间量的指示来完成任务延迟数据1335内的所指派任务,以导出处理器1350可用特定数据集分区1131将下一任务延迟指派到无特定数据集分区1131存储在其内的节点装置1500的一或多个时间周期。在存在多个延迟时间周期的情况下,每个时间周期可基于存储在任务延迟数据1335内针对不同任务的完成时间的不同平均值。在通过时间量的相对差的平均值考虑节点装置1500之间的资源的差的情况下,可由处理器1350采用这些平均值来针对特定节点装置1500修改延迟时间周期中的每一者。
图17A、17B和17C(从图17A到图17C按次序结合在一起)说明在节点装置网格1005的节点装置1500中的多个选定节点装置之间执行任务的实例实施例。更具体来说,图17A到17C描绘用实例数据集1130a执行第一任务且接着用同一实例数据集1130a执行与第一任务有关的第二任务的节点装置1500x、1500y和1500z的实例三元组。在如此操作时,实例节点装置1500x到1500z中的每一者将产生另一实例数据集1130b,且接着产生又一实例数据集1130c。应注意,仅基于三个节点装置1500x到1500z且包括大小可足够小以刚好分布在三个节点装置1500之间的三个数据集1130a到1130c的此实例是出于解释和理解的目的而在本文中呈现并论述的有意简化实例,且不应被视为限制性的。更具体来说,设想实施例很可能必然伴有用显著较大的数据集1130执行任务,且因此,很可能必然伴有显著更多的节点装置1500的使用。
从图17A开始,已指派三个节点装置1500x到1500z中的每一者以用数据集1130a的三个数据集分区1131ax到1131az中的对应数据集分区执行第一任务,从而各自产生数据集1130b的三个数据集分区1131bx到1131bz中的对应数据集分区。并且,已经由网络1999从一或多个存储装置1100向三个节点装置1500x到1500z中的每一者提供数据集1130a的三个数据集分区1131ax到1131az中的其相应数据集分区。
如所描绘,在用数据集分区1131ax执行第一任务时,节点装置1500x的一或多个处理器(例如,一或多个CPU 1550和/或一或多个GPU 1650)仍在进行中,使得数据集分区1131bx仍在节点装置1500x内产生。此外,可以是以下情况:第一任务关于数据集分区1131ax的执行消耗了节点装置1500x的充足处理和/或存储资源,使得节点装置1500x可被认为处理和/或存储资源不足以经指派以执行另一任务,直到已完成关于数据集分区1131ax的第一任务。在用数据集分区1131ax执行第一任务以产生数据集分区1131bx时,这些分区中的每一者的至少一个子集可存储在节点装置1500x的非易失性存储装置1563内。并且,取决于是由节点装置1500x的一或多个CPU 1550还是一或多个GPU 1650来执行第一任务,这两个分区的页可在非易失性存储装置1563与易失性存储装置1561或1661中的一者或另一者之间调换。
同样如所描绘,节点装置1500y的一或多个处理器已完成用数据集分区1131ay执行第一任务,使得数据集分区1131by已在节点装置1500y内产生,且接着被发射到一或多个存储装置1100以供存储。此外,在第一任务的所述执行完成的情况下,已指派节点装置1500y以用数据集分区1131ay执行第二任务从而产生数据集1130c的数据集分区1131cy。如所描绘,在用数据集分区1131ay执行第二任务时,节点装置1500y的一或多个处理器仍在进行中,使得数据集分区1131cy仍在节点装置1500y内产生。此外,可以是以下情况:第二任务关于数据集分区1131ay的执行消耗了节点装置1500y的充足处理和/或存储资源,使得节点装置1500y可被认为处理和/或存储资源不足以经指派以执行另一任务,直到已完成关于数据集分区1131ay的第二任务。作为已用数据集分区1131ay执行第一任务以产生数据集分区1131by的结果,分区1131by的至少一个子集可在有限时间周期内保持存储在节点装置1500y的非易失性存储装置1563内。在用数据集分区1131ay执行第二任务以产生数据集分区1131cy时,这些分区中的每一者的至少一个子集可存储在节点装置1500x的非易失性存储装置1563内。并且,取决于是由节点装置1500y的一或多个CPU 1550还是一或多个GPU1650来执行第二任务,这两个数据集分区的页可在非易失性存储装置1563与易失性存储装置1561或1661中的一者或另一者之间调换。另外,作为此类调换的结果,数据集分区1131by的任何页不太可能仍存储在易失性存储装置1561或1661内。
如进一步所描绘,节点装置1500z的一或多个处理器已完成用数据集分区1131az执行第一任务,使得数据集分区1131bz已在节点装置1500z内产生,且接着被发射到一或多个存储装置1100以供存储。类似地,节点装置1500z的一或多个处理器已完成用数据集分区1131az执行第二任务,使得数据集分区1131cz已在节点装置1500z内产生,且接着被发射到一或多个存储装置1100以供存储。因此,不同于节点装置1500x和1500y,节点装置1500z可被认为对于节点装置1500z具有充足可用处理和存储资源以经指派以执行另一任务。作为已用数据集分区1131az执行第一任务以产生数据集分区1131bz的结果,且作为已用数据集分区1131az执行第二任务以产生数据集分区1131cz的结果,数据集分区1131az、1131bz和1131cz中的一或多者的至少一个子集可在有限时间周期内保持存储在节点装置1500z的非易失性存储装置1563内。并且,作为比第一任务已更新近地执行第二任务的结果,取决于是由节点装置1500z的一或多个CPU 1550还是一或多个GPU 1650来执行第二任务,数据集分区1131az和1131cz中的一者或两者的页可仍存储在易失性存储装置1561或1661中的一者或另一者内。然而,分区1131bz的任何页不太可能仍存储在易失性存储装置1561或1661内。
因此,在刚才描述的情况下,且如图17B中用点线所描绘,节点装置1500z是可用的,使得其可经指派以用数据集1130a的数据集分区1131ax执行第二任务,从而产生数据集1130c的数据集分区1131cx。然而,如刚才上文所论述,最初从一或多个存储装置1100提供有数据集分区1131ax的是节点装置1500x。因此,数据集分区1131ax已存储在节点装置1500x的非易失性存储装置1563内,使得在可指派节点装置1500x以用数据集分区1131ax执行第二任务的情况下,将不需要再次经由网络1999从一或多个存储装置1100发射数据集分区1131ax。并且,同样,作为第一任务关于节点装置1500x内的数据集分区1131ax的进行中执行的结果,在非易失性存储装置1563与易失性存储装置1561或1661中的任一者之间存在数据集分区1131ax的页的当前调换。因此,数据集分区1131ax的一或多个页当前存储在节点装置1500x的易失性存储装置1561或1661内,且在节点装置1500x完成其第一任务的执行之后相对快速地将第二任务关于数据集分区1131ax的执行指派到节点装置1500x可利用那些一或多个页在易失性存储装置1561或1661内的时间有限的存储,这可使得节点装置1500x能够快得多地开始执行第二任务。
因此,如图17B中用点线所描绘,不管待指派以用数据集分区1131ax执行第二任务的节点装置1500z的可用性如何,节点装置1500z不经指派以进行此操作。实际上,由指派组件1341(参考图16)致使协调装置1300的处理器1350延迟将第二任务关于数据集分区1131ax的执行指派到节点装置1500x到1500z中的任一者某一时间周期,以向节点装置1500x提供完成其第一任务关于数据集分区1131ax的执行的机会。
如已论述,在一些实施例中,此类延迟时间周期的持续时间可基于重复接收到的节点状态1535的对一或多个节点完成同一任务(其中指派被延迟)所花费的时间的指示(例如,基于从一或多个节点完成同一任务所需的时间量产生的平均值)。然而,同样如已论述,延迟时间周期还可基于给予完成任务的机会的节点所需的时间量与其它节点完成同一任务所需的时间量的差的确定。同样,考虑时间量的这些差可被认需要考虑可存在于并入到不同节点装置1500中的各种资源中的差。因此,在图17A到17C的实例中,用以向节点装置1500x提供用数据集分区1131ax完成第一任务的机会的延迟时间周期可基于节点装置1500y和1500z中的一者或两者用其相应数据集分区1131ay和1131az完成第一任务所需的时间量(例如,其平均值),和/或基于节点装置1500x完成任务所需的时间量与节点装置1500y和/或1500z完成同一任务所需的时间量的差。
无论导出将第二任务关于数据集分区1131ax的执行指派到节点装置1550x到1550z中的一者的延迟时间周期的确切方式如何,协调装置1300的处理器1350可采用可并入到处理器1350中的时钟1351(参考图16)以监视时间的消逝,从而确定延迟时间周期何时完全逝去。如果在节点装置1500x能够完成其第一任务关于数据集分区1131ax的执行之前延迟时间周期完全逝去,那么可由指派组件1341致使处理器1350将第二任务关于数据集分区1131ax的执行指派到节点装置1500z。然而,如图17C中所描绘,如果在延迟时间周期逝去之前节点装置1500x完成其第一任务关于数据集分区1131ax的执行,那么可致使处理器1350将第二任务关于数据集分区1131ax的执行指派到节点装置1500x。同样,关于数据集分区1131ax的第二任务到节点装置1500x的此类指派可至少利用数据集分区1131ax的至少一部分在非易失性存储装置1563内的存储(如果也并非数据集分区1131ax的一或多个页在易失性存储装置1561或1661内的存储)。
图18A、18B和18C(从图18A到图18C按次序结合在一起)说明在节点装置网格1005的节点装置1500中的多个选定节点装置之间执行任务的另一实例实施例。更具体来说,图18A到18C描绘用实例数据集1130a执行第一任务以产生实例数据集1130b且接着用通过执行第一任务产生实例数据集1130b执行第二任务的节点装置1500x、1500y和1500z的相同实例三元组在用实例数据集1130b执行第二任务时,实例节点装置1500x到1500z中的每一者将产生又一实例数据集1130c。如同图17A到17C,应注意,仅基于三个节点装置1500且包括大小可足够小以刚好分布在三个节点装置1500x到1500z之间的三个数据集1130a到1130c的此实例是出于解释和理解的目的而在本文中呈现并论述的另一有意简化实例,且不应被视为限制性的。同样,设想实施例很可能必然伴有用显著较大的数据集1130执行任务,且因此,很可能必然伴有显著更多的节点装置1500的使用。
从图18A开始,已指派三个节点装置1500x到1500z中的每一者以用数据集1130a的三个数据集分区1131ax到1131az中的对应数据集分区执行第一任务,从而各自产生数据集1130b的三个数据集分区1131bx到1131bz中的对应数据集分区。如所描绘,所有三个节点装置1500x到1500z已完成其第一任务的执行,且各自已将数据集分区1131bx到1131bz中的其相应数据集分区发射到一或多个存储装置1100以供作为数据集1130b存储。为了实现第一任务的这些执行,已经由网络1999从一或多个存储装置1100向三个节点装置1500x到1500z中的每一者提供数据集1130a的三个数据集分区1131ax到1131az中的其相应数据集分区。
在其完成第一任务之后,节点装置1500y和1500z中的每一者经指派以用节点装置1500y和1500z作为其执行第一任务的结果而分别产生的数据集分区1131by和1131bz执行第二任务。然而,在其完成第一任务之后,派节点装置1500x经指派以执行另一且无关分析例程的任务。如先前所论述,在共享节点装置网格1005达到使用节点装置1500同时执行多个无关分析例程的程度的实施例中,可发生不同和无关分析例程的任务的指派。
如所描绘,在执行无关分析例程的任务时,节点装置1500x的一或多个处理器(例如,一或多个CPU 1550和/或一或多个GPU 1650)仍在进行中。此外,可以是以下情况:无关分析例程的任务的执行消耗了节点装置1500x的充足处理和/或存储资源,使得节点装置1500x可被认为处理和/或存储资源不足以经指派以执行另一任务,直到已完成无关分析例程的任务。作为已用数据集分区1131ax执行第一任务以产生数据集分区1131bx的结果,分区1131ax和1131bx中的一者或两者的至少一个子集可在有限时间周期内保持存储在节点装置1500x的非易失性存储装置1563内。在执行无关分析例程的任务时,取决于是由节点装置1500x的一或多个CPU 1550还是一或多个GPU 1650来执行无关分析例程的任务,在非易失性存储装置1563与易失性存储装置1561或1661中的一者或另一者之间可存在无关数据集分区的页的调换。另外,作为此类调换的结果,数据集分区1131ax或1131bx的任何页不太可能仍存储在易失性存储装置1561或1661内。
如所描绘,在用数据集分区1131by执行第二任务时,节点装置1500y的一或多个处理器仍在进行中,使得数据集分区1131cy仍在节点装置1500y内产生。此外,可以是以下情况:第二任务关于数据集分区1131by的执行消耗了节点装置1500y的充足处理和/或存储资源,使得节点装置1500y可被认为处理和/或存储资源不足以经指派以执行另一任务,直到已完成关于数据集分区1131ay的第二任务。作为已用数据集分区1131ay执行第一任务以产生数据集分区1131by的结果,分区1131ay的至少一个子集可在有限时间周期内保持存储在节点装置1500y的非易失性存储装置1563内。在用数据集分区1131by执行第二任务以产生数据集分区1131cy时,这些分区中的每一者的至少一个子集可存储在节点装置1500x的非易失性存储装置1563内。并且,取决于是由节点装置1500y的一或多个CPU 1550还是一或多个GPU 1650来执行第二任务,这两个数据集分区的页可在非易失性存储装置1563与易失性存储装置1561或1661中的一者或另一者之间调换。另外,作为此类调换的结果,数据集分区1131ay的任何页不太可能仍存储在易失性存储装置1561或1661内。
如进一步所描绘,节点装置1500z的一或多个处理器已完成用数据集分区1131bz执行第二任务,使得数据集分区1131cz已在节点装置1500z内产生,且接着被发射到一或多个存储装置1100以供存储。因此,不同于节点装置1500x和1500y,节点装置1500z可被认为对于节点装置1500z具有充足可用处理和存储资源以经指派以执行另一任务。作为已用数据集分区1131az执行第一任务以产生数据集分区1131bz的结果,且作为已用数据集分区1131bz执行第二任务以产生数据集分区1131cz的结果,数据集分区1131az、1131bz和1131cz中的一或多者的至少一个子集可在有限时间周期内保持存储在节点装置1500z的非易失性存储装置1563内。并且,作为比第一任务已更新近地执行第二任务的结果,取决于是由节点装置1500z的一或多个CPU 1550还是一或多个GPU 1650来执行第二任务,数据集分区1131bz和1131cz中的一者或两者的页可仍存储在易失性存储装置1561或1661中的一者或另一者内。然而,分区1131az的任何页不太可能仍存储在易失性存储装置1561或1661内。
因此,在刚才描述的情况下,且如图18B中用点线所描绘,节点装置1500z是可用的,使得其可经指派以用数据集1130b的数据集分区1131bx执行第二任务,从而产生数据集1130c的数据集分区1131cx。然而,如刚才上文所论述,最初产生数据集分区1131bx的是节点装置1500x。因此,数据集分区1131bx已存储在节点装置1500x的非易失性存储装置1563内,使得在可指派节点装置1500x以用数据集分区1131bx执行第二任务的情况下,将不需要经由网络1999从一或多个存储装置1100(或从节点装置1500x)发射数据集分区1131bx。因此,在节点装置1500x完成其无关分析例程的任务的执行之后相对快速地将第二任务关于数据集分区1131bx的执行指派到节点装置1500x可利用数据集部分1131bx在节点装置1500x的非易失性存储装置1563内的时间有限的存储,这可使得节点装置1500x能够快得多地开始执行第二任务。
因此,如图18B中用点线所描绘,不管待指派以用数据集分区1131bx执行第二任务的节点装置1500z的可用性如何,节点装置1500z不经指派以进行此操作。实际上,由指派组件1341(参考图16)致使协调装置1300的处理器1350延迟将第二任务关于数据集分区1131bx的执行指派到节点装置1500x到1500z中的任一者某一时间周期,以向节点装置1500x提供完成其无关分析例程的任务的执行的机会。类似于图17A到17C的实例实施例,如果在节点装置1500x能够完成其无关分析例程的任务的执行之前延迟时间周期完全逝去,那么可由指派组件1341(参考图16)致使处理器1350将第二任务关于数据集分区1131bx的执行指派到节点装置1500z。然而,如图18C中所描绘,如果在延迟时间周期逝去之前节点装置1500x完成其无关分析例程的任务的执行,那么可致使处理器1350将第二任务关于数据集分区1131bx的执行指派到节点装置1500x。
图19说明逻辑流程2100的实例实施例。逻辑流程2100可表示由本文中所描述的一或多个实施例执行的操作中的一些或全部。更具体来说,逻辑流程2100可说明在执行控制例程1340和/或编译例程1440时由处理器1350执行的操作,和/或由协调装置1300的其它组件执行的操作。
在2110处,分布式处理系统的协调装置的处理器(例如,分布式处理系统1000的协调装置1300的处理器1350)可分析协调装置从节点装置的网格的节点装置重复接收的节点状态(例如,节点装置网格1005的节点装置1500的节点状态1535)以确定哪些处理资源在节点装置中的每一者内可用。如已论述,由节点装置1500重复发射到协调装置1300的节点状态1535可指示哪些处理资源并入到节点装置1500中的每一者中(例如,包含哪些CPU 1500和/或GPU 1600,每个节点装置提供哪些处理特征,等),和/或那些处理资源在节点装置1500中的每一者内当前可用的程度。
在2120处,协调装置的处理器可检查是否存在在节点状态中指示为在节点装置中的任一者内充分可用的任何GPU以使得可将任务指派到那些节点装置以供此类可用GPU执行。如果GPU并非如此可用,那么在2122处,处理器可编译待由节点装置的CPU执行的分析例程的所有任务例程(例如,分析例程1210的任务例程1211)。在2124处,处理器可随后对分析例程的所有任务对归因于仅并入有一或多个CPU和/或并入有一或多个CPU与一或多个GPU的组合而选定的节点装置的指派进行优先级区分。
然而,如果在2120处存在被认为充分可用的GPU,那么在2130处,处理器可分析分析例程的任务例程中的每一者以确定任务例程中的任一者是否适于其指令的转换和待由节点装置网格的节点装置的GPU执行的编译。如果在2140处不存在此类适合的任务例程,那么在2122处,处理器可编译待由节点装置的CPU执行的分析例程的所有任务例程。接着,同样在2124处,处理器可随后对分析例程的所有任务对归因于仅并入有一或多个CPU和/或并入有一或多个CPU与一或多个GPU的组合而选定的节点装置的指派进行优先级区分。如先前所论述,在分析例程1210的任务例程1211都不适于经编译以供GPU 1650执行的情况下,此分析例程1210的任务对仅并入有CPU 1550的节点装置1500的指派的优先级区分(如果有可能)和/或并入有CPU 1550和GPU 1650的组合的节点装置1500(如果需要)可被认为需要在任务都不由GPU 1650执行时将任务对并入有GPU 1650的节点装置1500的指派减到最少。此可辅助使节点装置网格1005的节点装置1500的GPU 1650更容易地可用于执行另一分析例程的能够由GPU执行的任务。
然而,如果在2140处存在适于此类转换和编译的分析例程的至少一个任务例程,那么可在2150处进行关于分析例程的所有任务例程是否极适合的检查。如果是,那么在2152处,处理器可编译分析例程的待由节点装置的GPU执行的所有任务例程。在2154处,处理器可随后对分析例程的所有任务对归因于仅并入有一或多个GPU和/或并入有一或多个CPU与一或多个GPU的组合而选定的节点装置的指派进行优先级区分。
然而,如果在2150处存在适于和不适于此类转换和编译的任务例程的混合,那么在2160处,处理器可编译极适于由节点装置的GPU执行的分析例程的所有任务例程。在2162处,处理器可编译分析例程的并非极适于由节点装置的CPU执行的所有任务例程。在2164处,处理器可随后对分析例程的所有任务对归因于并入有一或多个CPU与一或多个GPU的组合而选定的节点装置的指派进行优先级区分。
图20说明逻辑流程2200的实例实施例。逻辑流程2200可表示由本文中所描述的一或多个实施例执行的操作中的一些或全部。更具体来说,逻辑流程2200可说明在执行控制例程1540和/或编译例程1440时由一或多个CPU 1550执行的操作,和/或由节点装置1500中的一或多者的其它组件执行的操作。
在2210处,分布式处理系统的节点装置的CPU(例如,分布式处理系统1000的节点装置1500的CPU 1550)可分析任务例程(例如,分析例程1210的任务例程1211)以确定其是否适于其指令的转换和待由节点装置的一或多个GPU(例如,GPU 1650中的一或多者)执行的编译。如先前所论述,在协调装置1300不编译任务例程1211的实施例中,节点装置1500中的每一者的一或多个CPU 1550可进行此操作。并且,此类编译可包含由并入有GPU 1650中的一或多者的节点装置1500中的每一者接收到的每个任务例程1211的分析以确定是否编译以供一或多个CPU 1550或一或多个GPU 1650执行。
如果在2220处任务例程并非极适合,那么在2222处,CPU可编译待由节点装置的一或多个CPU执行的分析例程的任务例程。然而,如果在2220处任务例程极适合,那么在2230处,CPU可编译待由节点装置的一或多个GPU执行的分析例程的任务例程。
图21说明逻辑流程2300的实例实施例。逻辑流程2300可表示由本文中所描述的一或多个实施例执行的操作中的一些或全部。更具体来说,逻辑流程2300可说明在执行控制例程1340时由处理器1350执行的操作,和/或由协调装置1300的其它组件执行的操作。
在2310处,分布式处理系统的协调装置的处理器(例如,分布式处理系统1000的协调装置1300的处理器1350)可接收来自一或多个存储装置的描述数据集的元数据(例如,来自一或多个存储装置1100的元数据1135)。在2312处,处理器可接收包含来自一或多个存储装置和/或检视装置的多个任务例程的分析例程(例如,包含来自一或多个存储装置1100或检视装置1800的多个任务例程1211的分析例程1210)。在2314处,处理器可从分布式处理系统的节点装置网格的节点装置接收节点状态数据的新近发射(例如,节点装置网格1005的节点装置1500的节点状态1535)。如先前所论述,在节点装置1500还充当至少一或多个数据集1130的存储装置的实施例中,协调装置1300可从节点装置1500中的一者接收元数据1135和/或分析例程。
在2320处,处理器可导出数据集分区(例如,数据集分区1131)和初始任务的初始指派,包含数据集分区将分布到的节点装置中的多者的选择,和将进行的一或多个初始任务的初始指派。在2322处,处理器可将对数据集分区的所指派分布的指示发射到一或多个存储装置和/或选定节点装置。如已论述,可使用多种协议中的任一者以多种方式中的任一者在一或多个存储装置、选定节点装置和/或协调装置之间协调数据集分区从一或多个存储装置到选定节点装置的分布,以导致数据集分区发射到选定节点装置。
在2330处,处理器可将对将在选定节点装置处用数据集分区中的对应数据集分区执行的第一任务的指派的指示发射到选定节点装置。如已论述,将分析例程的任务例程或CPU任务例程和/或GPU任务例程(例如,任务例程1211、CPU任务例程1571和/或GPU任务例程1671)发射到选定节点装置可作为任务对选定节点装置的指派的信令的部分而发生。
在2340处,处理器可从选定节点装置的第一节点装置接收对第一任务关于第一数据集分区由第一节点装置的完成的指示。如已论述,可将此类指示传达到协调装置作为节点状态1535的重复发射的部分。
在2350处,处理器可将采用第二数据集分区的第二任务的执行对选定节点装置(包含第一节点装置)中的任一者的指派延迟预定延迟时间周期,以向已存储有第二数据集分区的选定节点装置的第二节点装置提供变得可用的机会。如已解释,在用特定数据集分区指派下一任务时的延迟的此类强加可允许已存储所述特定数据集分区的节点装置变得可用,以便通过用特定数据集分区将下一任务指派到所述节点装置来利用所述特定数据集分区在所述节点装置内的存储。同样,以此方式,通过以此方式等待所述节点装置变得可用,可均不需要将特定数据集分区发射到另一节点装置所需的网络带宽资源和时间。
在2360处,处理器可检查在延迟时间周期结束时已存储有第二数据集分区的第二节点装置是否变得可用。如果在延迟时间周期内第二节点装置已变得可用,那么在2362处,处理器可将对用第二数据集分区执行第二任务的指派的指示发射到第二节点装置。然而,如果在延迟时间周期内第二节点装置未变得可用,那么在2370处,处理器可将对用第二数据集分区执行第二任务的指派的指示发射到第一节点装置。
图22说明逻辑流程2400的实例实施例。逻辑流程2400可表示由本文中所描述的一或多个实施例执行的操作中的一些或全部。更具体来说,逻辑流程2400可说明在执行控制例程1340时由处理器1350执行的操作,和/或由协调装置1400的其它组件执行的操作。
在2410处,分布式处理系统的协调装置的处理器(例如,分布式处理系统1000的协调装置1300的处理器1350)可从分布式处理系统的节点装置网格的节点装置(例如,节点装置网格1005的节点装置1500的中的一者)接收对所述节点装置已完成其包括数据集的数据集分区(例如,数据集1130的数据集分区1131中的一者)的任务例程的执行的指示。在2412处,处理器可确定在其将信号发射到节点装置以用数据集分区执行任务与从节点装置接收到对所述任务的所述执行完成的指示之间逝去的时间量。
在2420处,处理器可将新逝去的时间量与其它节点装置用同一数据集的其对应数据集分区执行同一任务所需的先前逝去的时间相比较。在2422处,处理器可检查在预定类似性阈值内针对同一任务的那些执行,新逝去的时间量是否类似于先前逝去的时间。如果不,那么处理器可采用新逝去的时间量连同先前逝去的时间以再次导出延迟新的任务指派以允许由另一节点完成任务的延迟时间周期。如已论述,延迟时间周期的此确定可必然伴有对节点装置1500中的不同节点装置执行同一任务所需的时间量取平均值。
图23说明逻辑流程2500的实例实施例。逻辑流程2500可表示由本文中所描述的一或多个实施例执行的操作中的一些或全部。更具体来说,逻辑流程2500可说明在执行控制例程1340时由处理器1350执行的操作,和/或由协调装置1300的其它组件执行的操作。
在2510处,分布式处理系统的协调装置的处理器(例如,分布式处理系统1000的协调装置1300的处理器1350)可从分布式处理系统的节点装置网格的第一节点装置(例如,节点装置网格1005的节点装置1500中的一者)接收对第一任务关于数据集的第一数据集分区(例如,数据集1130的数据集分区1131中的一者)由第一节点装置的完成的指示。如已论述,可将此类指示传达到协调装置作为节点状态1535的重复发射的部分。
在2520处,处理器可将采用同一数据集的第二数据集分区的第二任务的执行对节点装置网格的任何节点装置(包含第一节点装置)的指派延迟预定延迟时间周期,以向已存储有第二数据集分区的节点装置网格的第二节点装置提供变得可用的机会。在2530处,处理器可检查在延迟时间周期结束时已存储有第二数据集分区的第二节点装置是否变得可用。如果在延迟时间周期内第二节点装置已变得可用,那么在2532处,处理器可将对用第二数据集分区执行第二任务的指派的指示发射到第二节点装置。
然而,如果在2530处在延迟时间周期内第二节点装置未变得可用,那么在2540处,处理器可检查是否存在节点装置网格的另一节点装置,所述节点装置具备第二数据集分区以准备所述另一节点装置以针对包括第二数据集分区的任务充当备份节点装置。如果不存在此另一装置,那么在2542处,处理器可将对用第二数据集分区执行第二任务的指派的指示发射到第一节点装置。
然而,如果在2540处存在此另一节点装置,那么在2550处,处理器可检查是否已接收到所述另一节点装置当前可用于被指派任务的指示。如果不,那么同样,在2542处,处理器可将对用第二数据集分区执行第二任务的指派的指示发射到第一节点装置。然而,如果已接收到所述另一节点装置当前可用的此类指示,那么在2552处,处理器可将对用第二数据集分区执行第二任务的指派的指示发射到所述另一节点装置。
在各种实施例中,处理器1150、1350、1550、1650和1850中的每一者可包含广泛多种可商购处理器中的任一者。另外,这些处理器中的一或多者可包含多个处理器、多线程处理器、多核处理器(无论多个核心是共存于同一裸片还是分开的裸片上)和/或链接多个物理分开的处理器所借以的某一其它种类的多处理器架构。
然而,在特定实施例中,一或多个节点装置1500中的每一者的CPU 1550可经选定以至少部分地并行高效执行工作流程的多个实例的分析。借助于实例,CPU 1550可并入有单指令多数据(SIMD)架构,可并入有多个处理管线,和/或可并入有支持每处理管线执行的多个同时线程的能力。
替代或另外地,在特定实施例中,可包含GPU 1650中的至少一者的一或多个节点装置的每个GPU 1650可并入有多线程能力和/或多个处理器核心以实现任务的并行执行。借助于实例,GPU 1650可并入有经设计以实现采用相对有限指令集的任务跨越数百、数千、数万或更多执行线程的并行执行的内部架构,从而适应包括相对高的分辨率图像的图形应用。
在各种实施例中,控制例程1140、1340、1540、1840和1640中的每一者(包含组成每个控制例程的组件)可经选定以可在经选定以实施装置1100、1300、1500和/或图形控制器1600中的对应者内的处理器1150、1350、1550、1850和/或1650中的可适用处理器的任何类型的处理器上操作。在各种实施例中,这些例程中的每一者可包含操作系统、装置驱动器和/或应用级别例程(例如,在光盘媒体上提供的所谓“软件套组”、从远程服务器获得的“小程序”,等)中的一或多者。在包含操作系统的情况下,操作系统可为适合于处理器1150、1550和/或1850的多种可用操作系统中的任一者。在包含一或多个装置驱动器的情况下,那些装置驱动器可提供对装置1100、1300、1500、1800和/或1600的多种其它组件中的任一者(无论是硬件还是软件组件)的支持。
在各种实施例中,存储装置1160、1360、1560、1660和1860中的每一者可基于广泛多种信息存储技术中的任一者,包含要求不间断提供电功率的易失性技术,和/或包含必然伴有可为或可不为可移动的机器可读存储媒体的使用的技术。因此,这些存储装置中的每一者可包含广泛多种类型(或类型的组合)的存储装置中的任一者,包含(但不限于)只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据速DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存器、聚合物存储器(例如,铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物到硅(SONOS)存储器、磁卡或光学卡、一或多个个别铁磁性磁盘驱动器、非易失性存储器类存储器,或被组织到一或多个阵列中的多个存储装置(例如,被组织到独立磁盘冗余阵列或RAID阵列中的多个铁磁性磁盘驱动器)。应注意,尽管这些存储装置中的每一者描绘为单个块,但这些存储装置中的一或多者可包含可基于不同存储技术的多个存储装置。因此,举例来说,这些所描绘存储装置中的每一者中的一或多者可表示可在某一形式的机器可读存储媒体上存储并传达程序和/或数据所借以的光盘驱动器或闪存读卡器的组合,用以在相对延长的周期内本地存储程序和/或数据的铁磁性磁盘驱动器,和实现相对快速接入程序和/或数据的一或多个易失性固态存储器装置(例如,SRAM或DRAM)。还应注意,这些存储装置中的每一者可由基于相同存储技术的多个存储组件组成,但在使用时可作为专门化的结果而分别维持(例如,一些DRAM装置用作主存储装置,而其它DRAM装置用作图形控制器的不同帧缓冲器)。
然而,在特定实施例中,在存储装置1100中的一或多者提供一或多个数据集1130的存储的实施例中的存储装置1160,或在节点装置1500提供一或多个数据集1130的存储的实施例中的非易失性存储装置1563可用经选定以将容错性提供到一或多个数据集1130的存储的RAID级别的独立光盘冗余阵列(RAID)来实施。
在各种实施例中,输入装置1320和1820中的每一者可各自为可各自采用广泛多种输入检测和/或接收技术中的任一者的多种类型的输入装置中的任一者。此类输入装置的实例包含(且不限于)麦克风、远程控件、触控笔、读卡器、指纹读取器、虚拟现实交互手套、图形输入平板计算机、操纵杆、键盘、视网膜扫描器、触摸屏的触摸式输入组件、轨迹球、环境传感器,和/或用以监视人的移动以接受那些人经由手势和/或面部表情所提供的命令和/或数据的相机或相机阵列。
在各种实施例中,显示器1380和1880中的每一者可各自为可各自采用广泛多种视觉呈现技术中的任一者的多种类型的显示装置中的任一者。此类显示装置的实例包含且不限于阴极射线管(CRT)、电致发光(EL)板、液晶显示器(LCD)、气体等离子显示器等。在一些实施例中,显示器1180和/或1880可各自为触摸屏显示器,使得输入装置1110和/或1810可作为其触敏组件而分别并入其中。
在各种实施例中,网络接口1190、1390、1590和1890中的每一者可采用使得这些装置能够耦合到其它装置的广泛多种通信技术中的任一者,如已描述。这些接口中的每一者包含提供必需功能性中的至少一些以实现此类耦合的线路。然而,这些接口中的每一者还可至少部分地用处理器中的对应处理器所执行的指令序列来实施(例如,以实施协议栈或其它特征)。在采用导电和/或光学导电走线的情况下,这些接口可采用符合多种工业标准中的任一者的时序和/或协议,所述工业标准包含(但不限于)RS-232C、RS-422、USB、以太网(IEEE-802.3)或IEEE-1394。在必然伴有无线发射的使用的情况下,这些接口可采用符合多种工业标准中的任一者的时序和/或协议,所述工业标准包含(但不限于)IEEE 802.11a、802.11ad、802.11ah、802.11ax、802.11b、802.11g、802.16、802.20(通常被称为“移动宽带无线接入”);蓝牙;紫蜂;或蜂窝式无线电话业务,例如GSM与通用分组无线电服务(GSM/GPRS)、CDMA/1xRTT、增强型数据速率全球演进(EDGE)、唯数据演进/演进数据优化(EV-DO)、数据与语音演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行链路分组接入(HSUPA)、4G LTE等。
然而,在特定实施例中,网络接口1190、1390和/或1590中的一或多者可用多个基于铜或基于光纤的网络接口端口来实施以在交换数据集分区1131、任务例程1211、CPU任务例程1571和/或GPU任务例程1671中的一或多者时提供冗余和/或并行路径。
在各种实施例中,节点装置1300之间的处理和/或存储资源的划分和/或用于支持节点装置与其它装置之间的通信的API架构可经配置和/或经选定以符合用于分布式处理的多种标准中的任一者,所述标准包含(但不限于)IEEE P2413、AllJoyn、IoTivity等。借助于实例,API的子集和/或此类标准中的一或多者的其它架构特征可用于实施本文中所描述的相对最小程度的协调以在并行化数据处理时提供较高效率,同时使协调信息的交换(其可导致处理之间的串行化的非所要情况)减到最少。然而,应注意,数据集1130的部分的存储、检索和/或处理的并行化并非取决于现有API架构和/或支持通信协议或受其限制。更广泛地说,不存在可经由束缚于现有API架构或协议的网络1999在存储、发射和/或分布时组织数据集1130的方式。
一些系统可使用是用于在分布式计算环境下存储和分析大数据的开源框架。一些系统可使用云计算,其可实现对可在最少管理努力或服务提供商互动的情况下快速供应和释放的可配置计算资源(例如,网络、服务器、存储装置、应用程序和服务)的共享池的广泛、方便、按需网络接入。一些网格系统可实施为多节点集群,如所属领域的技术人员所理解。ApacheTM 是用于分布式计算的开源软件框架。

Claims (30)

1.一种设备,其包括处理器以及用以存储指令的存储装置,所述指令在由所述处理器执行时致使所述处理器执行包括以下各项的操作:
分析多个节点装置中的至少一个节点装置的资源的当前状态以确定所述至少一个节点装置的至少一个图形处理单元GPU经指派于执行分析例程的第一任务的可用性,其中:
所述多个节点装置的操作经协调以至少部分并行地执行分析例程的任务;
所述分析例程经产生以用于由所述至少一个节点的至少一个中央处理单元CPU执行;且
所述至少一个节点装置的所述资源是选自由所述至少一个CPU、所述至少一个GPU以及所述至少一个节点装置的至少一个存储装置内的存储空间组成的群组;
响应于所述至少一个GPU可用于经指派于执行所述分析例程的所述第一任务的确定:
分析所述分析例程的第一任务例程以确定所述第一任务例程是否能够经编译以产生用于由所述至少一个GPU执行的GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第一任务的多个实例,而所述第一任务的所述多个实例的输入和输出之间不具有相依性,其中:
所述第一任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的所述第一任务;且
所述第一任务例程是否能够经编译以产生所述GPU任务例程的所述确定包括所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令的确定以及所述第一任务例程的输入和输出是否经界定为不需要所述相依性的确定;且
响应于所述第一任务例程能够经编译以产生所述GPU任务例程的确定:
将数据集的多个数据集分区中的数据集分区指派于所述至少一个节点装置以实现由所述至少一个GPU对所述数据集分区的存取;
采用转换规则以将所述第一任务例程的至少一个指令转换为所述GPU任务例程的至少一个对应指令;
编译所述GPU任务例程的所述至少一个对应指令以用于由所述至少一个GPU执行;以及
将所述分析例程的所述第一任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第一任务的所述多个实例关于所述数据集分区由所述至少一个GPU的执行。
2.根据权利要求1所述的设备,其中为了确定所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令,致使所述处理器进行以下操作:
确定所述第一任务例程的所述指令是否包含在无法转换为能够由所述至少一个GPU执行的至少一个指令的指令集中;以及
响应于所述第一任务例程的所述指令不包含在所述指令集中的确定,确定所述第一任务例程的所述指令是否在所述第一任务例程中以阻止转换为能够由所述至少一个GPU执行的至少一个指令的方式使用。
3.根据权利要求1所述的设备,其中为了将所述第一任务例程的所述至少一个指令转换为所述GPU任务例程的所述至少一个对应指令,致使所述处理器根据所述转换规则将所述第一任务例程的所述至少一个指令从第一编程语言转换为第二编程语言中的所述至少一个对应指令。
4.根据权利要求1所述的设备,其中:
所述至少一个节点装置的所述至少一个存储装置包括以通信方式耦合到所述至少一个CPU的第一易失性存储装置以及以通信方式耦合到所述至少一个GPU的第二易失性存储装置;
将所述数据集分区指派于所述至少一个节点装置以实现所述数据集分区由所述至少一个GPU的存取包括致使将所述数据集分区存储于所述第二易失性存储装置内;且
响应于所述至少一个GPU不可用于经指派于执行所述分析例程的所述第一任务的确定,致使所述处理器执行包括以下各项的操作:
制止分析所述第一任务例程以确定所述第一任务例程是否能够经编译以产生所述GPU任务例程;
将所述数据集分区指派于所述至少一个节点装置以致使所述数据集分区存储于所述第一易失性存储装置内以实现所述数据集分区由所述至少一个CPU的存取;
编译所述第一任务例程以用于由所述至少一个CPU执行;以及
将所述分析例程的所述第一任务关于所述数据集分区的所述执行指派于所述至少一个节点装置以实现所述第一任务关于所述数据集分区由所述至少一个CPU的执行。
5.根据权利要求1所述的设备,其中:
所述设备包括协调所述多个节点装置的所述操作的协调装置;
致使所述处理器从所述多个节点装置中的每一节点装置重复接收对所述当前状态的更新;且
为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,致使所述处理器识别所述多个节点装置中并入有由所述当前状态指示为可用的GPU的节点装置。
6.根据权利要求5所述的设备,其中为了将所述数据集的所述数据集分区指派于所述至少一个节点装置,致使所述处理器执行包括以下各项的操作:
分析指示所述数据集的结构特征的元数据以识别所述数据集能够划分成所述多个数据集分区的方式中的限制,其中所述限制选自由所述数据集内的数据的最小原子单元的指示以及分割方案的规范组成的群组;以及
至少部分地基于所述限制而导出所述数据集成为所述多个数据集分区的划分。
7.根据权利要求6所述的设备,其中致使所述处理器执行包括以下各项的操作:
从所述数据集存储于的至少一个存储装置检索所述元数据;以及
发射所述数据集分区对所述至少一个节点装置或所述至少一个存储装置的所述指派的指示以致使所述数据集分区从所述至少一个存储装置发射到所述至少一个节点装置。
8.根据权利要求1所述的设备,其中:
所述设备包括所述至少一个节点装置中的节点装置;
所述节点装置包括所述至少一个GPU中的GPU;
所述处理器包括所述至少一个CPU中的CPU;且
为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,致使所述CPU确定所述节点装置的所述GPU是否由所述当前状态指示为可用的。
9.根据权利要求1所述的设备,其中致使所述处理器执行包括以下各项的操作:
分析所述分析例程的第二任务例程以确定所述第二任务例程是否能够经编译以产生用于由所述至少一个GPU执行的另一GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第二任务的多个实例,而所述第二任务的所述多个实例的输入和输出之间不具有相依性,其中所述第二任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的第二任务;以及
响应于所述第二任务例程不能够经编译以产生所述另一GPU任务例程的确定:
编译所述第二任务例程以用于由所述至少一个CPU执行;以及
将所述分析例程的所述第二任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第二任务关于所述数据集分区由所述至少一个CPU的执行。
10.根据权利要求1所述的设备,其中所述转换规则选自由以下各项组成的群组:
在存在于所述第一任务例程内的情况下各自阻止所述第一任务例程的编译产生所述GPU任务例程的指令集的规范;
在存在于所述第一任务例程内的情况下各自将不阻止所述第一任务例程的编译产生所述GPU任务例程的指令集的规范;
在阻止所述第一任务例程的编译产生所述GPU任务例程的指令的使用方式发生于所述第一任务例程内的情况下所述指令的所述使用方式的规范,其中所述指令在所述第一任务例程内的存在原本不阻止所述第一任务例程的编译产生所述GPU任务例程;
用以将所述第一任务例程中将由所述至少一个CPU在循环中执行的指令转换为所述GPU任务例程的将由所述至少一个GPU在比所述循环少的迭代的对应循环中并行执行的对应指令的程序的规范;
用以将所述第一任务例程中将由所述至少一个CPU在循环中执行的指令转换为所述GPU任务例程的将由所述至少一个GPU并行执行且不在循环中的对应指令的程序的规范;以及
用以将所述第一任务例程中界定包括将在所述第一任务例程由所述至少一个CPU的执行期间循序存取的条目的数据结构的指令转换为所述GPU任务例程的界定包括将在所述GPU任务例程由所述至少一个GPU的执行期间并行存取的条目的对应数据结构的对应指令的程序的规范。
11.一种非暂时性机器可读存储介质,其包含可操作以致使处理器执行包括以下各项的操作的指令:
分析多个节点装置中的至少一个节点装置的资源的当前状态以确定所述至少一个节点装置的至少一个图形处理单元GPU经指派于执行分析例程的第一任务的可用性,其中:
所述多个节点装置的操作经协调以至少部分并行地执行所述分析例程的任务;
所述分析例程经产生以用于由所述至少一个节点的至少一个中央处理单元CPU执行;且
所述至少一个节点装置的所述资源是选自由所述至少一个CPU、所述至少一个GPU以及所述至少一个节点装置的至少一个存储装置内的存储空间组成的群组;
响应于所述至少一个GPU可用于经指派于执行所述分析例程的所述第一任务的确定:
分析所述分析例程的第一任务例程以确定所述第一任务例程是否能够经编译以产生用于由所述至少一个GPU执行的GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第一任务的多个实例,而所述第一任务的所述多个实例的输入和输出之间不具有相依性,其中:
所述第一任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的所述第一任务;且
所述第一任务例程是否能够经编译以产生所述GPU任务例程的所述确定包括所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令的确定以及所述第一任务例程的输入和输出是否经界定为不需要所述相依性的确定;且
响应于所述第一任务例程能够经编译以产生所述GPU任务例程的确定:
将数据集的多个数据集分区中的数据集分区指派于所述至少一个节点装置以实现由所述至少一个GPU对所述数据集分区的存取;
采用转换规则以将所述第一任务例程的至少一个指令转换为所述GPU任务例程的至少一个对应指令;
编译所述GPU任务例程的所述至少一个对应指令以用于由所述至少一个GPU执行;以及
将所述分析例程的所述第一任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第一任务的所述多个实例关于所述数据集分区由所述至少一个GPU的执行。
12.根据权利要求11所述的非暂时性机器可读存储介质,其中为了确定所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令,致使所述处理器进行以下操作:
确定所述第一任务例程的所述指令是否包含在无法转换为能够由所述至少一个GPU执行的至少一个指令的指令集中;以及
响应于所述第一任务例程的所述指令不包含在所述指令集中的确定,确定所述第一任务例程的所述指令是否在所述第一任务例程中以阻止转换为能够由所述至少一个GPU执行的至少一个指令的方式使用。
13.根据权利要求11所述的非暂时性机器可读存储介质,其中为了将所述第一任务例程的所述至少一个指令转换为所述GPU任务例程的所述至少一个对应指令,致使所述处理器根据所述转换规则将所述第一任务例程的所述至少一个指令从第一编程语言转换为第二编程语言中的所述至少一个对应指令。
14.根据权利要求11所述的非暂时性机器可读存储介质,其中:
所述至少一个节点装置的所述至少一个存储装置包括以通信方式耦合到所述至少一个CPU的第一易失性存储装置以及以通信方式耦合到所述至少一个GPU的第二易失性存储装置;
将所述数据集分区指派于所述至少一个节点装置以实现所述数据集分区由所述至少一个GPU的存取包括致使将所述数据集分区存储于所述第二易失性存储装置内;且
响应于所述至少一个GPU不可用于经指派于执行所述分析例程的所述第一任务的确定,致使所述处理器执行包括以下各项的操作:
制止分析所述第一任务例程以确定所述第一任务例程是否能够经编译以产生所述GPU任务例程;
将所述数据集分区指派于所述至少一个节点装置以致使所述数据集分区存储于所述第一易失性存储装置内以实现所述数据集分区由所述至少一个CPU的存取;
编译所述第一任务例程以用于由所述至少一个CPU执行;以及
将所述分析例程的所述第一任务关于所述数据集分区的所述执行指派于所述至少一个节点装置以实现所述第一任务关于所述数据集分区由所述至少一个CPU的执行。
15.根据权利要求11所述的非暂时性机器可读存储介质,其中:
所述处理器是协调所述多个节点装置的所述操作的协调装置的组件;
致使所述处理器从所述多个节点装置中的每一节点装置重复接收对所述当前状态的更新;以及
为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,致使所述处理器识别所述多个节点装置中并入有在所述当前状态中经指示为可用的GPU的节点装置。
16.根据权利要求15所述的非暂时性机器可读存储介质,其中为了将所述数据集的所述数据集分区指派于所述至少一个节点装置,致使所述处理器执行包括以下各项的操作:
分析指示所述数据集的结构特征的元数据以识别所述数据集能够划分成所述多个数据集分区的方式中的限制,其中所述限制选自由所述数据集内的数据的最小原子单元的指示以及分割方案的规范组成的群组;以及
至少部分地基于所述限制而导出所述数据集成为所述多个数据集分区的划分。
17.根据权利要求16所述的非暂时性机器可读存储介质,其中致使所述处理器执行包括以下各项的操作:
从所述数据集存储于的至少一个存储装置检索所述元数据;以及
发射所述数据集分区对所述至少一个节点装置或所述至少一个存储装置的所述指派的指示以致使所述数据集分区从所述至少一个存储装置发射到所述至少一个节点装置。
18.根据权利要求11所述的非暂时性机器可读存储介质,其中:
所述处理器包括所述至少一个CPU中的CPU;
所述CPU是所述至少一个节点装置中的节点装置的组件;
所述节点装置包括所述至少一个GPU中的GPU;且
为了分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性,致使所述CPU确定所述节点装置的所述GPU是否由所述当前状态指示为可用的。
19.根据权利要求11所述的非暂时性机器可读存储介质,其中致使所述处理器执行包括以下各项的操作:
分析所述分析例程的第二任务例程以确定所述第二任务例程是否能够经编译以产生用于由所述至少一个GPU执行的另一GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第二任务的多个实例,而所述第二任务的所述多个实例的输入和输出之间不具有相依性,其中所述第二任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的第二任务;以及
响应于所述第二任务例程不能够经编译以产生所述另一GPU任务例程的确定:
编译所述第二任务例程以用于由所述至少一个CPU执行;以及
将所述分析例程的所述第二任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第二任务关于所述数据集分区由所述至少一个CPU的执行。
20.根据权利要求11所述的非暂时性机器可读存储介质,其中所述至少一个GPU支持所述GPU任务例程的所述至少一个对应指令跨越至少一千个执行线程并行的执行。
21.一种计算机实施的方法,其包括:
分析多个节点装置中的至少一个节点装置的资源的当前状态以确定所述至少一个节点装置的至少一个图形处理单元GPU经指派于执行分析例程的第一任务的可用性,其中:
所述多个节点装置的操作经协调以至少部分并行地执行分析例程的任务;
所述分析例程经产生以用于由所述至少一个节点的至少一个中央处理单元CPU执行;且
所述至少一个节点装置的所述资源是选自由所述至少一个CPU、所述至少一个GPU以及所述至少一个节点装置的至少一个存储装置内的存储空间组成的群组;
响应于所述至少一个GPU可用于经指派于执行所述分析例程的所述第一任务的确定:
分析所述分析例程的第一任务例程以确定所述第一任务例程是否能够经编译以产生用于由所述至少一个GPU执行的GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第一任务的多个实例,而所述第一任务的所述多个实例的输入和输出之间不具有相依性,其中:
所述第一任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的所述第一任务;且
所述第一任务例程是否能够经编译以产生所述GPU任务例程的所述确定包括所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令的确定以及所述第一任务例程的输入和输出是否经界定为不需要所述相依性的确定;且
响应于所述第一任务例程能够经编译以产生所述GPU任务例程的确定:
将数据集的多个数据集分区中的数据集分区指派于所述至少一个节点装置以实现由所述至少一个GPU对所述数据集分区的存取;
采用转换规则以将所述第一任务例程的至少一个指令转换为所述GPU任务例程的至少一个对应指令;
编译所述GPU任务例程的所述至少一个对应指令以用于由所述至少一个GPU执行;以及
将所述分析例程的所述第一任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第一任务的所述多个实例关于所述数据集分区由所述至少一个GPU的执行。
22.根据权利要求21所述的计算机实施的方法,其中确定所述第一任务例程是否包含阻止所述编译产生所述GPU任务例程的指令包括:
确定所述第一任务例程的所述指令是否包含在无法转换为能够由所述至少一个GPU执行的至少一个指令的指令集中;以及
响应于所述第一任务例程的所述指令不包含在所述指令集中的确定,确定所述第一任务例程的所述指令是否在所述第一任务例程中以阻止转换为能够由所述至少一个GPU执行的至少一个指令的方式使用。
23.根据权利要求21所述的计算机实施的方法,其中将所述第一任务例程的所述至少一个指令转换为所述GPU任务例程的所述至少一个对应指令包括根据所述转换规则将所述第一任务例程的所述至少一个指令从第一编程语言转换为第二编程语言中的所述至少一个对应指令。
24.根据权利要求21所述的计算机实施的方法,其中:
所述至少一个节点装置的所述至少一个存储装置包括以通信方式耦合到所述至少一个CPU的第一易失性存储装置以及以通信方式耦合到所述至少一个GPU的第二易失性存储装置;
将所述数据集分区指派于所述至少一个节点装置以实现所述数据集分区由所述至少一个GPU的存取包括致使将所述数据集分区存储于所述第二易失性存储装置内;且
响应于所述至少一个GPU不可用于经指派于执行所述分析例程的所述第一任务的确定,所述方法包括:
制止分析所述第一任务例程以确定所述第一任务例程是否能够经编译以产生所述GPU任务例程;
将所述数据集分区指派于所述至少一个节点装置以致使所述数据集分区存储于所述第一易失性存储装置内以实现所述数据集分区由所述至少一个CPU的存取;
编译所述第一任务例程以用于由所述至少一个CPU执行;以及
将所述分析例程的所述第一任务关于所述数据集分区的所述执行指派于所述至少一个节点装置以实现所述第一任务关于所述数据集分区由所述至少一个CPU的执行。
25.根据权利要求21所述的计算机实施的方法,其中:
协调装置协调所述多个节点装置的所述操作;
所述协调装置从所述多个节点装置中的每一节点装置重复接收对所述当前状态的更新;且
分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性包括在所述协调装置处识别所述多个节点装置中并入有在所述当前状态中经指示为可用的GPU的节点装置。
26.根据权利要求25所述的计算机实施的方法,其中将所述数据集的所述数据集分区指派于所述至少一个节点装置包括:
在所述协调装置处分析指示所述数据集的结构特征的元数据以识别所述数据集能够划分成所述多个数据集分区的方式中的限制,其中所述限制选自由所述数据集内的数据的最小原子单元的指示以及分割方案的规范组成的群组;以及
至少部分地基于所述限制而导出所述数据集成为所述多个数据集分区的划分。
27.根据权利要求26所述的计算机实施的方法,其包括:
从所述数据集存储于的至少一个存储装置检索所述元数据;以及
发射所述数据集分区对所述至少一个节点装置或所述至少一个存储装置的所述指派的指示以致使所述数据集分区从所述至少一个存储装置发射到所述至少一个节点装置。
28.根据权利要求21所述的计算机实施的方法,其中:
分析所述当前状态以确定所述至少一个节点装置的所述至少一个GPU的可用性包括由节点装置的CPU分析所述节点装置的当前状态是否所述节点装置的GPU当前可用,其中:
所述至少一个CPU包括所述CPU;
所述至少一个节点装置包括所述节点装置;且
所述至少一个GPU包括所述GPU。
29.根据权利要求21所述的计算机实施的方法,其包括:
分析所述分析例程的第二任务例程以确定所述第二任务例程是否能够经编译以产生用于由所述至少一个GPU执行的另一GPU任务例程以致使所述至少一个GPU至少部分并行地执行所述分析例程的所述第二任务的多个实例,而所述第二任务的所述多个实例的输入和输出之间不具有相依性,其中所述第二任务例程经产生以用于由所述至少一个CPU执行以执行所述分析例程的第二任务;以及
响应于所述第二任务例程不能够经编译以产生所述另一GPU任务例程的确定:
编译所述第二任务例程以用于由所述至少一个CPU执行;以及
将所述分析例程的所述第二任务关于所述数据集分区的执行指派于所述至少一个节点装置以实现所述第二任务关于所述数据集分区由所述至少一个CPU的执行。
30.根据权利要求29所述的计算机实施的方法,其包括分析所述分析例程以确定所述分析例程的任务次序,其中所述任务次序包括所述第一和第二任务的相对次序。
CN201710647374.6A 2016-08-25 2017-08-01 用于节点装置基于gpu的并行处理的编译 Active CN107783782B (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201662379512P 2016-08-25 2016-08-25
US62/379,512 2016-08-25
US201662394411P 2016-09-14 2016-09-14
US62/394,411 2016-09-14
US15/422,285 US9760376B1 (en) 2016-02-01 2017-02-01 Compilation for node device GPU-based parallel processing
US15/422,285 2017-02-01
US15/422,154 US9900378B2 (en) 2016-02-01 2017-02-01 Node device function and cache aware task assignment
US15/422,154 2017-02-01

Publications (2)

Publication Number Publication Date
CN107783782A CN107783782A (zh) 2018-03-09
CN107783782B true CN107783782B (zh) 2019-03-15

Family

ID=59778869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710647374.6A Active CN107783782B (zh) 2016-08-25 2017-08-01 用于节点装置基于gpu的并行处理的编译

Country Status (9)

Country Link
CN (1) CN107783782B (zh)
BE (1) BE1025002B1 (zh)
CA (1) CA2974556C (zh)
DE (1) DE102017213160B4 (zh)
DK (1) DK179709B1 (zh)
FR (1) FR3055438B1 (zh)
GB (1) GB2553424B (zh)
HK (1) HK1245439B (zh)
NO (1) NO343250B1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111327921A (zh) * 2018-12-17 2020-06-23 深圳市炜博科技有限公司 视频数据处理方法及设备
CN109743453B (zh) * 2018-12-29 2021-01-05 出门问问信息科技有限公司 一种分屏显示方法及装置
CN110163791B (zh) * 2019-05-21 2020-04-17 中科驭数(北京)科技有限公司 数据计算流图的gpu处理方法及装置
CN111984322B (zh) * 2020-09-07 2023-03-24 北京航天数据股份有限公司 一种控制指令传输方法及装置
CN112783506B (zh) * 2021-01-29 2022-09-30 展讯通信(上海)有限公司 一种模型运行方法及相关装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US8938723B1 (en) * 2009-08-03 2015-01-20 Parallels IP Holdings GmbH Use of GPU for support and acceleration of virtual machines and virtual environments
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US8769510B2 (en) * 2010-04-08 2014-07-01 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (GPU)
DE102013208418A1 (de) * 2012-05-09 2013-11-14 Nvidia Corp. Verfahren und System zur separaten Kompilierung von Geräte-Code, welcher in Host-Code eingebettet ist
US9152601B2 (en) * 2013-05-09 2015-10-06 Advanced Micro Devices, Inc. Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
EP2887219A1 (en) * 2013-12-23 2015-06-24 Deutsche Telekom AG System and method for mobile augmented reality task scheduling
US9632761B2 (en) * 2014-01-13 2017-04-25 Red Hat, Inc. Distribute workload of an application to a graphics processing unit
US9235871B2 (en) * 2014-02-06 2016-01-12 Oxide Interactive, LLC Method and system of a command buffer between a CPU and GPU

Also Published As

Publication number Publication date
GB2553424B (en) 2018-11-21
GB201712171D0 (en) 2017-09-13
HK1245439B (zh) 2019-12-06
BE1025002B1 (fr) 2018-09-17
NO343250B1 (en) 2018-12-27
CA2974556A1 (en) 2018-02-25
BE1025002A1 (fr) 2018-09-14
FR3055438B1 (fr) 2022-07-29
CA2974556C (en) 2018-06-05
GB2553424A (en) 2018-03-07
DE102017213160B4 (de) 2023-05-25
NO20171277A1 (en) 2018-02-26
DE102017213160A1 (de) 2018-03-01
FR3055438A1 (fr) 2018-03-02
DK201770596A1 (en) 2018-03-12
CN107783782A (zh) 2018-03-09
DK179709B1 (en) 2019-04-09

Similar Documents

Publication Publication Date Title
CN107783782B (zh) 用于节点装置基于gpu的并行处理的编译
US10740395B2 (en) Staged training of neural networks for improved time series prediction performance
US10657107B1 (en) Many task computing with message passing interface
US10331495B2 (en) Generation of directed acyclic graphs from task routines
US10394890B2 (en) Generation of job flow objects in federated areas from data structure
CN109564568B (zh) 用于分布式数据集索引的装置、方法和机器可读存储介质
US10331490B2 (en) Scalable cloud-based time series analysis
US9753767B2 (en) Distributed data set task selection
US10318674B2 (en) Comparison and selection of experiment designs
US10747517B2 (en) Automated exchanges of job flow objects between federated area and external storage space
US20200210479A1 (en) Automated generation of job flow definitions
US10983957B2 (en) Distributed columnar data set storage
CN108701076A (zh) 分布式数据集存储和检索
US10642610B2 (en) Scalable cloud-based time series analysis
US10409863B2 (en) Verification and export of federated areas and job flow objects within federated areas
US10339181B1 (en) Techniques for visualizing clustered datasets
US11875189B2 (en) System and methods for configuring, deploying and maintaining computing clusters
US20210157595A1 (en) Automated concurrency and repetition with minimal syntax
CA3154474C (en) Distributed columnar data set storage and retrieval
US11977820B1 (en) Systems, methods, and graphical user interfaces for configuring design of experiments

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1245439

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant