CN104487938A - 利用开放执行器处理流数据 - Google Patents

利用开放执行器处理流数据 Download PDF

Info

Publication number
CN104487938A
CN104487938A CN201280075016.8A CN201280075016A CN104487938A CN 104487938 A CN104487938 A CN 104487938A CN 201280075016 A CN201280075016 A CN 201280075016A CN 104487938 A CN104487938 A CN 104487938A
Authority
CN
China
Prior art keywords
data stream
data
programming language
plug
library
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201280075016.8A
Other languages
English (en)
Inventor
Q.陈
M.苏
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104487938A publication Critical patent/CN104487938A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/54Interprogram communication
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

利用开放执行器处理流数据包括在计算数据流站接收输入数据,其中计算数据流站包含计算文件和接受代码插件的开放执行器,将计算文件的内容转换成具有来自系统库的代码插件的程序串,以及启动程序串连同输入数据来利用图形处理单元计算输出。

Description

利用开放执行器处理流数据
背景技术
数据流是控制数据处理的计算机架构。数据可以来自数据库或在数据被处理时利用传感器被实时记录。数据流执行机构在数据通过每个数据流站时利用该数据执行任务。例如,任务可以包括分组数据、压缩数据、解码数据或其他任务。
流化数据是数据元素序列,其中数据元素随时间相继变得可用。当数据通过数据流被实时流化时,数据流处理数据元素使得经处理的数据元素也变得对用户实时可用。例如,经处理的流化数据可以显示在监控器中,其中用户可以随时间观察经处理的信息。
附图说明
附图示出这里描述的原理的多种实例并且是说明书的一部分。所示实例仅是实例并且不限制权利要求的范围。
图1是根据这里描述的原理的数据流系统的实例的图。
图2是根据这里描述的原理的数据流处理站的实例的图。
图3是根据这里描述的原理的处理系统的实例的图。
图4是根据这里描述的原理的数据流处理站的实例的图。
图5是根据这里描述的原理的用于处理流数据的方法的实例的图。
图6是根据这里描述的原理的用于处理流数据的过程的流程图的实例的图。
图7是根据这里描述的原理的用于处理流数据的过程的流程图的实例的图。
具体实施方式
沿着数据流的任何点都可能变成阻碍流数据的实时处理的瓶颈。瓶颈效应可能出现在处理任务跟上实时处理速度花费比预期更长的时间的情况下。中央处理单元(CPU)通常一次执行一个任务,并由此,任何利用CPU的延迟都推迟所有下游数据的处理。为了克服当依赖CPU处理数据时固有可能的潜在延迟,这里描述的原理描述了一种将结合CPU使用的图形处理单元(GPU)。GPU具有同时处理多个数据序列的能力。由此,CPU和GPU的组合降低了产生处理延迟的风险。
然而,利用GPU执行的任务以不同于用于利用CPU执行的任务的编程语言的方式被编程。例如,用于CPU的程序指令以其连续执行任务的格式被写入,而用于GPU的程序指令以其利用GPU的并行处理能力的方式被写入。结果,对数据流站编程以执行复杂过程涉及复杂的代码。
这里描述的原理通过提供简化了编程的复杂性的对称处理平台降低了当对针对将利用GPU处理的流数据的处理任务编程时对于程序员来说的编程复杂性。这种方法可以包括在计算数据流站接收输入数据,其中计算数据流站包含计算文件和接受代码插件的开放执行器,将计算文件的内容转换成具有来自系统库的插件的程序串,以及启动程序串连同输入数据来利用图形处理单元计算输出。
在下面的描述中,为了解释的目的,阐述了多个具体细节以便提供对本系统和方法的透彻理解。然而,对本领域技术人员来说明显的是,本设备、系统和方法可以在没有这些具体细节的情况下被实施。说明书中对“实例”或类似语言的引用意味着所描述的特定特征、结构或特性被包括在至少该一个实例中,但不一定被包括在其他实例中。
图1是根据这里描述的原理的数据流系统(100)的实例的图。在该实例中,数据流系统(100)具有与数据源(104)通信的协调服务器(102)、第一数据流站(106)和第二数据流站(108)。协调服务器(102)协调第一和第二数据流站(106,108)的活动。数据源(104)可以是存储单元,例如原始数据的数据库。在其他实例中,数据源(104)是至少一个传感器,其正进行实时测量并将那些测试馈送到数据流系统(100)中。另外,数据源(104)可以是正关于目标系统进行多个测量的传感器阵列。在一些实例中,传感器阵列进行单一类型的测量,以及在替换实例中,传感器阵列进行多类型的测量。
尽管具体参考具有仅两个数据流站的数据流系统(100)描述了图1的实例,但根据这里描述的原理可以使用任何数量的数据流站。每个数据流系统具有使得将对数据执行任务的数据流执行机构。例如,第一数据流站可以具有使得将通过特定特性存储测量类型的开放执行器,而第二数据流站具有使得将计算测量的某些方面的另一执行器。
输入数据是流化数据,其是元组序列。元组是对象列表。当利用数据流站中的开放执行器操作流化输入数据时,流化输入数据被变换成流化数据输出。数据流站的开放执行器可以通过对输入数据执行计算来处理输入数据。
开放执行器具有允许插件代码被添加到开放执行器的现有代码的特性,所述开放执行器的现有代码被包含在存储于数据流站中的计算文件中。插件可以位于本地库或远程库中,并且插件可以被添加到计算文件的内容以创建被定制用于执行执行器的任务的程序串。库中的插件可以是用户定义的程序或系统提供的程序。开放执行器由系统提供并由此用于终结(finalize)程序串,插件(其是系统提供的或者是用户产生的)仅被插入计算文件的内容中。结果,数据流站的编程被减少。
这里,第一数据流站具有开放执行器,其使得处理器(110)计算输入数据的各方面。将对输入数据执行的计算过程的类型可以部分地确定在第一数据流站(106)处接收了哪些类型的输入数据。输入数据可以由描述位置矢量的元组(数据列表)构成,所述位置矢量例如是二维空间位置中的x坐标和y坐标。例如,所述元组可以是例如(xy)的位置坐标的列表,其中x和y是二维平面内的坐标。描述位置矢量的元组可以在计算过程期间被求和、相减、相乘或以其他方式处理。在其他实例中,输入数据包含描述矩阵元素的元组。矩阵元素可以被格式化为[abc],其中a、b和c是矩阵元素。该计算过程可以在计算过程期间对矩阵元素求和、相减、相乘、求平均或以其他方式处理。输入数据的其他格式也可以确定将使用其他类型的计算过程。另外,数据的预先确定的用途也可以确定如何处理该数据。
第一数据流站(106)与处理器(110)通信,该处理器被编程以使得在第一数据流站(106)处发生计算。对于如何执行任务的指令可以以程序员易于编写的格式(例如Java代码)被编写。库是处理器(110)可访问的以检索运行时程序、用户定义的程序、计算资源、编程语言翻译器、预处理器、编译器、其他处理资源或其组合,以提供第一数据流站(106)资源来创建适当的程序串并执行计算过程。
第二数据流站(108)可以用于对数据执行另一计算过程。在一些实例中,第二数据流站(108)利用在第一数据流站(106)中执行的计算过程的输出执行非计算任务。
第二数据流站(106)具有将经处理的数据发送到数据库(112)和/或发送到显示器(114)的功能。经处理的数据可以被发送到将在稍后时间使用的数据库(112)。为了使经处理的数据对用户实时可见,经处理的数据被发送到显示器(114)。
例如,如果数据源(104)正在多条高速公路上收集关于汽车的实时数据以确定高速费收取多少费用,那么数据源(104)可以在收集关于每个汽车的信息。每三十秒,传感器阵列可以测量每个汽车的位置和方向。每个测量构成记录关于每个汽车的多个属性的测量事件,例如每个汽车的位置、每个汽车的方向、每个汽车的其他属性或其组合。不同属性被组织成描述位置矢量或矩阵元素的元组(数据列表),其被发送到数据流站。例如,汽车随时间的不同位置可以被表示为格式化成位置矢量的元组并被相加在一起以确定特定汽车的速度。在另一个实例中,每个汽车的每个速度被一起分组为格式化成矩阵的元组,并且通过将矩阵元素一起求平均来处理所述矩阵元素以确定在特定高速公路上的汽车的平均速度。输入数据可以在第一数据流站(106)被处理并且在第二数据流站(108)被进一步处理。协调服务器(102)使得经处理的数据被发送到显示器(114),在此收费运营商观看计算的结果以确定向每个汽车的驾驶员收取多少费用。协调服务器(102)还使得经处理的信息被发送到数据库(112),在此信息对于以后的分析是可用的。对经处理的信息的未来分析可以提供对收费系统如何有效工作的洞察并给出用于做出未来决定的决定标记指导。
图2是根据这里描述的原理的数据流处理站(200)的实例的图。在该实例中,数据从传感器阵列(202)经过输入/输出(204)来到计算数据流站(200)。输入数据可以被格式化以包含描述位置矢量的元组。数据流处理站(200)具有中央处理单元(CPU)(206)和图形处理单元(GPU)(208)两者。在一些实例中,GPU(208)是通用GPU,其用于执行通用功能而不是专门对图形执行任务。CPU(206)对计算过程或其他任务进行编排。由此,CPU(206)与GPU(208)通信并且它们在它们自己之间传输数据。
CPU(206)与包含数据结构和程序指令的存储器(210)通信。稍后将描述存储器(210)的各方面。存储器(210)中的数据结构包括计算文件(212)、驱动程序库(214)和语言绑定库(216)。计算文件(212)的内容包括编程指令,其能接受插件来创建程序串,该程序串使得CPU(206)和GPU(208)对输入数据执行计算过程。
驱动程序库(214)包含被插入计算文件(212)中的编程指令中的插件。这里,插件是用户定义的程序或用户定义的内核,其可插入到计算文件的编程指令中。然而,在图2的实例中,计算文件以第一编程语言(比如Java)被编写,而用户定义的程序以第二编程语言(比如C编程语言)被编写。为了在第一和第二编程语言之间交接,语言绑定库(216)提供第一编程语言的多个部分,所述部分与第二编程语言中该部分的等效物相关联。以这种方式,用户可以以他期望的任何编程语言对用户定义的程序编程并仍具有使用驱动程序库(214)中提供的插件的能力。
完成的程序串是一组程序指令,其当被执行时使得CPU(206)和GPU(208)执行利用输入数据的计算。程序串具有打算利用CPU(206)实施的部分和打算被GPU(208)处理的其他部分。另外,用户定义的程序均被编写以计及这些差异。这些部分中的每一个被自定义格式化以计及CPU(206)和GPU(208)之间的差异。CPU(206)和GPU(208)均具有它们自己的内部寄存器和存储器高速缓存以辅助执行它们的程序串的各部分。
由用户提供的用户定义的程序可以以较高级的编程语言被编写。高级语言是通常程序员更容易编写的编程语言。例如,Java是面向对象的高级程序语言,其中用户可以期望编写用户定义的程序。而低级语言与执行CPU(206)和/或GPU(208)处的指令更兼容。例如,C编程语言是可在CPU(206)和GPU(208)中执行的低级通用编程语言。存储器(210)包括编译器(218),其代表这样的程序指令,即当被执行时使得程序串从高级语言被翻译成低级语言,或反之亦然。由此,在启动程序串之后,编译器(218)将程序串翻译成更低级语言用于在CPU(206)和GPU(208)上执行。
响应于创建计算输出,该计算输出被发送到下游数据流站(220)。在那里,计算输出可以被进一步处理,显示在监控器中,存储在数据库中,以另一种方式使用,或其组合。
图3是根据这里描述的原理的处理系统(300)的实例的图。在该实例中,处理系统(300)包括与存储器(304)通信的处理器(302)。处理器(302)具有中央处理单元(CPU)(306)和图形处理单元(GPU)(308)两者。存储器(304)通常代表能够存储由处理系统(300)使用的数据(例如程序指令或数据结构)的任何存储器。所示的存储在存储器(304)中的程序指令包括开放执行器(310)、文件转换器(312)、程序串启动器(314)、编译器(318)和输出发送器(320)。所示的存储在存储器(304)中的数据结构包括计算文件(322)、语言绑定库(324)和驱动程序库(326),其包含用户定义的程序(328),所述用户定义的程序是由用户提供的程序指令插件。
存储器(304)是计算机可读存储介质,其包含计算机可读程序代码以使得由处理器(302)执行任务。计算机可读存储介质可以是有形的和/或非临时性存储介质。计算机可读存储介质类型的非穷举性列表包括非易失性存储器、易失性存储器、随机存取存储器、基于忆阻器的存储器、只写存储器、闪速存储器、电可擦除编程只读存储器、或各类型的存储器,或其组合。
计算文件(322)包含用于在处理器(302)上执行任务的至少一个编程指令。该任务可以是专门针对CPU(306)的、专门针对GPU(308)的,或者是针对两者的。该任务可以以Java、高级编程语言被编程。
开放执行器(310)代表这样的程序指令,即当被执行时使得处理器(302)执行计算文件(322)中的程序指令。开放执行器(310)能够接受来自驱动程序库(326)的插件,并且当被执行时使得处理器(302)处理该任务。驱动程序库(326)是包含用户定义的程序(328)的数据结构,所述用户定义的程序是由另一来源(例如用户)提供的。用户定义的程序可以以C编程语言被编写,C编程语言是用于执行GPU(308)中的任务的期望的编程语言,或者用户定义的程序可以以Java被编写。当计算文件中的编程语言不同于驱动程序库(326)中的编程语言时,语言绑定库(324)在不同编程语言之间提供接口。语言绑定库(324)是包含第一编程语言的多个部分和在第二编程语言中的它们的等效物的数据结构。
文件转换器(312)代表这样的程序指令,即当被执行时通过插入来自驱动程序库(326)的用户定义的程序(328)使得处理器(302)将计算文件的程序指令转换成程序串。程序串启动器(314)代表这样的程序指令,即当被执行时使得处理器(302)启动待执行的程序串。编译器(318)代表这样的程序指令,即当被执行时使得处理器(302)将程序串和/或用户定义的程序的高级编程语言翻译成较低级的编程语言以便由处理器(302)执行。响应于执行较低级的编程语言,使得GPU(308)进行利用输入数据的计算。最初,计算的输出以较低级的编程语言被格式化,并且编译器(318)或其他装置将输出翻译成被数据流站理解的编程语言,例如Java。
输出发送器(320)代表这样的程序指令,即当被执行时使得处理器(302)将计算的输出发送到下游数据流站。下游数据流站可以包括另一处理数据流站、数据库、监控器、另一装置或其组合。
另外,存储器(304)可以是安装包的一部分。响应于安装安装包,存储器(304)的已编程的指令可以从安装包的源下载到数据流站,所述安装包的源例如是可插入的介质、服务器、远程网络位置、另一位置、或其组合。与这里描述的原理兼容的可插入的存储介质包括DVD、CD、闪速存储器、可插入的盘、磁盘、其他形式的可插入存储器、或其组合。
在一些实例中,处理器(302)和存储器(304)位于相同物理部件上,例如服务器或数据流站内的网络部件。存储器可以是下述的一部分:物理部件的主存储器、高速缓存、寄存器、非易失性存储器、或物理部件的存储器层次中的别的地方。可替换地,存储器(304)可以通过网络与处理器(302)通信。另外,可以通过网络连接从远程位置访问数据结构,例如库,而已编程的指令位于本地。
图3的处理系统(300)可以是通用计算机的一部分。然而,在替换实例中,处理系统(300)是专用集成电路的一部分。
图4是根据这里描述的原理的数据流处理站(400)的实例的图。在该实例中,数据从传感器阵列(402)经过输入/输出(404)来到计算数据流站(400)。输入数据可以被格式化成包含矩阵。数据流处理站(400)具有中央处理单元(CPU)(406)和图形处理单元(GPU)(408)两者。CPU(406)对计算过程或其他任务进行编排。由此,CPU(406)与GPU(408)通信并且它们在它们自己之间传输数据。
CPU(406)与包含数据结构和程序指令的存储器(410)通信。存储器(410)中的数据结构包括计算文件(412)、运行时库(414)和语言绑定库(416)。计算文件(412)的内容包括编程指令,其能接受插件来创建程序串,该程序串使得CPU(406)和GPU(408)对输入数据执行计算过程。
运行时库(414)包含可插入计算文件(412)中的编程指令中的插件。这里,插件是系统提供的程序(415),其可插入到计算文件的编程指令中。这种系统提供的程序(415)可以采用与计算文件(412)的编程语言不同的编程语言。为了在不同编程语言之间交接,语言绑定库(416)提供从一个代码到另一个代码的翻译。然而,系统提供的程序可以以与使得CPU(406)和GPU(408)不利用编译器来执行计算兼容的较低级的编程语言被编写。
响应于创建计算输出,该计算输出被发送到下游数据流站(418)。在那里,计算输出可以被进一步处理,显示在监控器中,存储在数据库中,以另一种方式使用,或其组合。
图5是根据这里描述的原理的用于处理流数据的方法(500)的实例的图。在该实例中,方法(500)包括在计算数据流站接收(502)来自传感器阵列的输入数据,其中数据流站具有计算文件和接受插件的开放执行器,将计算文件的内容转换(504)成具有来自系统库的插件的程序串,以及启动(506)程序串连同输入数据以利用图形处理单元(GPU)计算输出。
在计算数据流站接收的输入可以以任何数目的方式被格式化。在一些实例中,利用描述位置矢量、矩阵、其他属性或其组合的元组格式化输入数据。
系统库是其中插件是用户定义的程序的驱动程序库,或者系统库是其中插件是系统提供的程序的运行时库。在其中插件是用户定义的插件的实例中,编译器用于将用户定义的程序翻译成与利用GPU执行兼容的语言。该方法还可以包括访问编程语言绑定库以在计算文件的第一编程语言和系统库中的插件的第二编程语言之间交接。在其中编译器已经将程序串的语言翻译成较低级语言的实例中,该方法包括响应于GPU计算输出将该输出写成初始语言。计算的输出被发送到下游数据流站。
图6是根据这里描述的原理的用于处理流数据的过程的流程图(600)的实例的图。在该实例中,过程包括在数据流的计算站接收(602)包含矢量的元组以及确定(604)计算站是否具有要执行的Java任务。如果没有,则将元组发送(606)到下游数据流站。
然而,如果存在Java任务,则该过程包括访问(608)语言绑定驱动程序库以与用户定义的插件的驱动程序库交接,检索(610)用户定义的插件以及将包含Java任务的计算文件的内容转换(612)成具有被插入的插件的程序串。
接着,该过程包括启动(614)将利用图形处理单元(GPU)计算的程序串,将程序串的指令翻译(616)成与GPU兼容的较低级语言,以及利用GPU执行(618)计算过程。来自计算过程的输出被翻译(620)回Java,并且Java编写的输出被发送(622)到下游数据流站。
图7是根据这里描述的原理的用于处理流数据的过程的流程图(700)的实例的图。在该实例中,过程包括在数据流的计算站接收(702)包含矩阵元素的元组以及确定(704)计算站是否具有至少一个要执行的计算任务。如果没有,则将元组发送(706)到下游数据流站。
然而,如果存在要执行的计算任务,则该过程包括访问(708)语言绑定运行时库以与系统提供的程序的运行时库交接,检索(710)系统提供的程序以及将包含计算任务的计算文件的内容转换(712)成具有被插入的系统提供的程序的程序串。
接着,该过程包括启动(714)将利用图形处理单元(GPU)计算的程序串以及利用GPU执行(716)计算过程。响应于接收计算输出,该计算输出被发送(718)到下游数据流站。
尽管已经参考格式化输入数据的具体方式描述了上面的实例,但是可以使用与这里描述的原理兼容的任何输入数据格式。而且,尽管已经参考具体编程语言描述了上面的实例,但是可以使用与这里描述的原理兼容的任何编程语言。例如,可以使用编程语言C#和C++。另外,尽管已经参考具体类型的系统库描述了上面的实例,但是可以使用与这里描述的原理兼容的任何库类型。
尽管上面的实例参考了具体数据流站任务,但是在数据流站可以执行与这里描述的原理兼容的任何任务。另外,尽管上面的实例已经参考了将利用数据流站执行的具体类型的计算,但是可以执行与这里描述的原理兼容的任何类型的计算。
尽管上面的实例涉及分别包含驱动程序库和运行时库的数据流站,但是这些库可以被并入相同数据流站中。这种数据流站辨别出其正在接收哪种类型的输入数据以及哪种类型的插件最适合创建用于处理数据的程序串。响应于这种确定,来自运行时库或驱动程序库的适当的插件被插入计算文件的程序指令中以创建程序串。在一些实例中,系统库、运行时库、驱动程序库和/或语言绑定库以统一计算设备架构(CUDA)被编程,该统一计算设备架构(CUDA)是可从总部设在美国加利福尼亚圣克拉拉的Nvidia公司得到的计算架构。一个这种与这里描述的原理兼容的CUDA运行时库的实例包括也由Nvidia公司提供的基本线性代数子程序(BLAS)。
前面的描述仅被呈现来说明和描述所描述原理的实例。该描述并不旨在是穷举性的或将这些原理局限于所公开的任何精确形式。根据上面的教导,多种修改和变型是可能的。

Claims (15)

1. 一种用于利用开放执行器处理流数据的方法,包括:
在计算数据流站接收输入数据,所述计算数据流站包括计算文件和接受代码插件的开放执行器;
将所述计算文件的内容转换成具有来自系统库的所述插件的程序串;以及
启动所述程序串连同所述输入数据以利用图形处理单元计算输出。
2. 根据权利要求1所述的方法,其中所述系统库是驱动程序库以及所述插件是用户定义的程序。
3. 根据权利要求2所述的方法,其中启动所述程序串连同所述输入数据以利用图形处理单元计算输出包括:使用编译器来将所述用户定义的程序翻译成与利用所述图形处理单元执行兼容的语言。
4. 根据权利要求1所述的方法,其中所述系统库是运行时库以及所述插件是系统提供的程序。
5. 根据权利要求1所述的方法,还包括访问编程语言绑定库以在所述计算文件的第一编程语言和所述系统库中的所述插件的第二编程语言之间交接。
6. 根据权利要求5所述的方法,还包括响应于所述图形处理单元计算所述输出,将所述输出编写成所述第一编程语言。
7. 根据权利要求1所述的方法,还包括将所述输出发送到下游数据流站。
8. 根据权利要求1所述的方法,其中在所述计算数据流站接收输入包括接收包含位置矢量的元组。
9. 根据权利要求1所述的方法,其中在所述计算数据流站接收输入数据包括接收包含矩阵的元组。
10. 一种用于利用开放执行器处理流数据的系统,包括:
用于在计算数据流站接收来自传感器阵列的输入数据的输入端;
与包含程序指令的存储器通信的处理器,所述指令当被执行时使得所述处理器:
  在计算数据流站接收来自传感器阵列的输入数据,所述计算数据流站包括计算文件和接受代码插件的开放执行器;
  将所述计算文件的内容转换成具有来自系统库的所述代码插件的程序串;以及
  启动所述程序串连同所述输入数据以利用图形处理单元计算输出;以及
  将所述输出发送到下游数据流站。
11. 根据权利要求10所述的系统,其中所述系统库是运行时库以及所述代码插件是系统提供的程序。
12. 根据权利要求10所述的系统,其中所述系统库是驱动程序库以及所述代码插件是用户定义的程序。
13. 根据权利要求10所述的系统,其中所述程序指令当被执行时进一步使得所述处理器访问编程语言绑定库以在所述计算文件的第一编程语言和所述系统库中的所述代码插件的第二编程语言之间交接。
14. 根据权利要求10所述的系统,其中所述输入数据包括描述位置矢量或矩阵的元组。
15. 一种用于利用开放执行器处理流数据的计算机程序产品,包括:
有形计算机可读存储介质,所述有形计算机可读存储介质包括利用其具体实施的计算机可读程序代码,所述计算机可读程序代码包括程序指令,所述程序指令当被执行时使得所述处理器:
  在计算数据流站接收来自传感器阵列的输入数据,所述计算数据流站包括计算文件和接受代码插件的开放执行器;
  将所述计算文件的内容转换成具有来自系统库的所述代码插件的程序串;
  启动所述程序串连同所述输入数据以利用图形处理单元计算输出;以及
  访问编程语言绑定库以在所述计算文件的第一编程语言和所述系统库中的所述代码插件的第二编程语言之间交接。
CN201280075016.8A 2012-10-26 2012-10-26 利用开放执行器处理流数据 Pending CN104487938A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/062275 WO2014065826A1 (en) 2012-10-26 2012-10-26 Processing streaming data with open executors

Publications (1)

Publication Number Publication Date
CN104487938A true CN104487938A (zh) 2015-04-01

Family

ID=50545036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280075016.8A Pending CN104487938A (zh) 2012-10-26 2012-10-26 利用开放执行器处理流数据

Country Status (5)

Country Link
US (1) US9348580B2 (zh)
CN (1) CN104487938A (zh)
DE (1) DE112012006651T5 (zh)
GB (1) GB2519020B (zh)
WO (1) WO2014065826A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296313B2 (en) * 2014-11-18 2019-05-21 Roger James Poon Safely consuming dynamically-typed code from a statically-typed programming language
US10162690B2 (en) 2017-01-27 2018-12-25 Mz Ip Holdings, Llc System and method for encapsulating computer communications
WO2019241104A1 (en) 2018-06-13 2019-12-19 Mz Ip Holdings, Llc System and method for enabling communication between disparate computer languages

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1744045A (zh) * 2004-08-30 2006-03-08 国际商业机器公司 改善数据高速缓存性能的方法和设备
US20060282543A1 (en) * 2005-06-11 2006-12-14 International Business Machines Corporation Method and architecture for processing rtp packets
TW200817997A (en) * 2006-10-12 2008-04-16 Corel Tw Corp Information providing apparatus and method thereof
US20100070355A1 (en) * 2008-03-18 2010-03-18 Clarity Systems, S.L. Methods for Transmitting Multimedia Files and Advertisements
CN101763280A (zh) * 2008-09-30 2010-06-30 Ics三重自动化软件有限公司 编译模型
US20120066696A1 (en) * 2010-09-09 2012-03-15 Sattam Dasgupta Generic hardware and software platform for electronic devices in multimedia, graphics, and computing applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109795A1 (en) 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US8261234B1 (en) * 2008-02-15 2012-09-04 Nvidia Corporation System, method, and computer program product for compiling code adapted to execute utilizing a first processor, for executing the code utilizing a second processor
US8531471B2 (en) 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
PT105174A (pt) 2010-06-26 2012-02-08 Paulo Jorge Pimenta Marques Instrumento e método para processamento contínuo de dados usando processadores massivamente paralelos
JP2014531142A (ja) * 2011-08-16 2014-11-20 デスティニーソフトウェアプロダクションズ インク スクリプトをベースとするビデオ・レンダリング
US8997070B2 (en) * 2011-12-15 2015-03-31 Sap Se Extension mechanism for scripting language compiler

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1744045A (zh) * 2004-08-30 2006-03-08 国际商业机器公司 改善数据高速缓存性能的方法和设备
US20060282543A1 (en) * 2005-06-11 2006-12-14 International Business Machines Corporation Method and architecture for processing rtp packets
TW200817997A (en) * 2006-10-12 2008-04-16 Corel Tw Corp Information providing apparatus and method thereof
US20100070355A1 (en) * 2008-03-18 2010-03-18 Clarity Systems, S.L. Methods for Transmitting Multimedia Files and Advertisements
CN101763280A (zh) * 2008-09-30 2010-06-30 Ics三重自动化软件有限公司 编译模型
US20120066696A1 (en) * 2010-09-09 2012-03-15 Sattam Dasgupta Generic hardware and software platform for electronic devices in multimedia, graphics, and computing applications

Also Published As

Publication number Publication date
US20150205601A1 (en) 2015-07-23
GB2519020A (en) 2015-04-08
WO2014065826A1 (en) 2014-05-01
GB2519020B (en) 2021-02-17
DE112012006651T5 (de) 2015-03-19
US9348580B2 (en) 2016-05-24
GB201500944D0 (en) 2015-03-04

Similar Documents

Publication Publication Date Title
CN101364098B (zh) 一种将梯形图转换为指令表程序及解释执行的方法与系统
CN102411535B (zh) 导航SoC芯片仿真、验证和调试平台
CN106104488A (zh) 用于支持任务间通信的基于硬件的原子操作
US20220107786A1 (en) Information processing device and information processing system
CN105550268A (zh) 大数据流程建模分析引擎
CN110083334A (zh) 模型上线的方法及装置
CN102609243B (zh) 仿真指针
CN105512162A (zh) 一种基于Storm的流数据实时智能化处理框架
CN101652746A (zh) 浮点操作的改善以及相关的改善
CN114297084B (zh) 卫星测运控数据接口的测试方法、装置、电子设备及介质
CN109669931A (zh) 历史数据异常分析方法、系统、设备及存储介质
CN104919445A (zh) 变换生成系统
CN116467061B (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN104809246A (zh) 充电数据的处理方法及装置
CN104487938A (zh) 利用开放执行器处理流数据
Tipka et al. Flex_extract v7. 1.2–a software package to retrieve and prepare ECMWF data for use in FLEXPART
CN103455417B (zh) 一种基于马尔可夫模型的软件错误定位系统及错误定位方法
CN109799977B (zh) 指令程序开发调度数据的方法及系统
Barr et al. Design and Implementation of an Embedded Python {Run-Time} System
CN109102141A (zh) 一种服务水平评分方法和装置
Jagers Linking data, models and tools: an overview
CN116719579A (zh) Ai模型可观测性实现方法、装置、电子设备及存储介质
CN113434265A (zh) 工作流调度方法、服务器和介质
CN103167032A (zh) 地图辅助的室内定位后台服务系统
CN102929580B (zh) 数组多引用访问的分块方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170122

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, L.P.

WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150401