具体实施方式
(第1实施方式)
图1表示第1实施方式的分散处理系统10的结构。分散处理系统10包括分散处理管理装置80和多个终端20。这些装置是数据处理装置的一个例子,通过因特网或LAN等网络12连接起来。分散处理管理装置80在使应用分散到多个终端20进行处理时,管理多个终端20间的处理的执行。
图2表示分散处理管理装置80的结构。分散处理管理装置80具有通信部82、控制部90、资源数据库84。控制部90包括处理能力信息取得部91、应用信息取得部92、任务分配部93、任务发送部95、执行状况管理部96。这些结构在硬件元件方面可以通过任意计算机的CPU、存储器、载入到存储器中的程序等来实现,但这里描述以它们的协作来实现的功能块。因此,本领域技术人员能够理解这些功能块可以仅由硬件或软件来实现,也可以由它们的组合以各种各样的形式来实现。
处理能力信息取得部91经由网络12从多个终端20取得各个终端20的关于处理能力的信息。处理能力信息取得部91从各个终端20取得安装在该终端20中的处理器的种别、工作时钟频率、存储器的容量等。另外,处理能力信息取得部91在预定的定时(timing)从终端20取得该时刻的处理器运转率、存储器的使用量等信息。当终端20都具有相同的结构时,处理能力信息取得部91也可以取得未在执行任务的、即空闲的处理器32的数量来作为处理器的运转率。处理能力信息取得部91将所取得的信息登记到资源数据库84中。
图3表示资源数据库84的内部数据的例子。资源数据库84中设有终端ID栏102、处理器频率栏104、处理器数量栏106、存储器栏108、处理器运转率栏110、存储器使用率栏112、分配日期时间栏114、分配中任务ID栏116、分配中任务量栏118、执行完任务量栏120。终端ID栏102存储终端20的ID。处理器频率栏104存储安装在终端20中的处理器的工作频率。处理器数量栏106存储安装在终端20中的处理器的数量。存储器栏108存储安装在终端20中的存储器的容量。处理器运转率栏110存储终端20的处理器的运转率。存储器使用率栏112存储终端20的存储器的使用率。分配日期时间栏114存储将任务分配给终端20的日期时间。分配中任务ID栏116存储已分配给终端20的任务的ID。分配中任务量栏118存储已分配给终端20的任务的量。执行完任务量栏120存储终端20已执行了的任务的量。
应用信息取得部92取得包含有要使终端20处理的多个任务的应用的信息。在本实施方式中,应用信息取得部92取得记述了应用中所包含的多个任务的执行顺序和关于任务间的数据收发的信息的XML文档,通过解析XML文档来取得关于应用的信息。
任务分配部93基于处理能力信息取得部91所取得的各个终端20的关于处理能力的信息,来决定使哪个终端20处理记述在应用信息取得部92取得的XML文档中的应用所包含的多个任务。例如,在假定第1任务需要两个处理器、第2任务需要三个处理器时,如果该时刻存在有5个处理器能使用的终端20,则可以将全部任务分配给同一终端20。但当不存在能执行所有任务的终端20时,任务分配部93将任务分散地分配给多个终端20。此时,应用信息取得部92和任务分配部93承担作为取得任务的信息的任务信息取得部的功能。
通信任务生成部94在将多个任务分配给了多个终端20时,如果需要在终端20间进行用于执行任务的数据的收发,则生成用于经由网络12在终端20间收发数据的通信任务,附加到要送往终端20的任务中。在被送往发送数据方终端20的任务中附加发送任务,该发送任务用于将任务所输出的输出数据发送给执行后续的任务的装置。在被送往接收数据方终端20的任务中附加接收任务,该接收任务用于将从任务所需数据的取得目标装置接收到的数据变换成与任务的输入接口相应的数据类型,生成输入数据。在这些通信任务中,根据任务所需数据的取得目标即发送方终端20、以及执行后续的任务的装置即接收方终端20的处理能力,预先设定通信参数。通信参数例如可以根据终端20的通信速度、缓冲器容量、连接终端20的网络的种别等来进行设定。另外,通信参数也可以根据任务所需数据的内容来设定。例如,在通信参数中可以包含用于选择发送方终端20应发送的数据的信息,以及用于从接收方终端20所接收到的数据中选择、变换、合并(merge)数据来生成输入数据的信息等。另外,通信参数中也可以包含关于输入输入数据的定时的信息等。关于任务所需数据的信息可以被记述在应用信息取得部92取得的XML文档中。
任务发送部95将由任务分配部93分配的任务经由网络12发送给终端20。执行状况管理部96从已分配了任务的各终端20取得任务的执行状况,并记录在资源数据库84中,管理各终端20中的任务的执行状况。如果需要,任务发送部95向任务分配部93指示任务的再分配。
图4表示记述了关于应用的信息的XML文档的例子。在图4所示的例子中,记述有应用所包含的两个任务“senderInstance A”及“receiverInstance A”的信息。在记述了关于第2任务“receiverInstance A”的信息的部分中,在<stream>要素130内说明了要被输入到第2任务的数据。这里,在<channelIn1>要素中说明了应将记述在<channelOut1>要素中的数据输入给第2任务。在<channelOut1>要素中记述了数据的取得目标是从第1任务“senderInstance A”输出的数据。即,可知应将从第1任务输出的数据输入给第2数据。
图5表示记述在图4所示的XML文档中的任务间的关系。以下为与通信任务生成部94所生成的通信任务相区别,将构成应用的任务称为核心任务。首先,第1核心任务142被执行,从第1核心任务142输出的数据被输入到第2核心任务154,第2核心任务154被执行。在该例子中,由于需要将从第1核心任务142输出的数据输入到第2核心任务154,所以在任务分配部93将第1核心任务142和第2核心任务154分配给不同的终端20时,通信任务生成部94在第1核心任务142中附加发送任务144,该发送任务144用于使从第1核心任务142输出的数据发送给被分配第2核心任务154的终端20。另外,在第2核心任务154中附加接收任务152,该接收任务152用于接收从被分配第1核心任务142的终端20发送出的数据,并生成第2核心任务154的输入数据。任务发送部95将被附加了通信任务的第1任务140和第2任务150发送到所分配的各个终端20。
图6表示终端20的结构。终端20具有通信部21和控制部50。控制部50包括任务取得部51、任务执行部52、接收任务执行部53、以及发送任务执行部54。这些功能块也能仅由硬件或软件来实现,或者通过它们的组合以各种形式实现。
任务取得部51经由网络12从分散处理管理装置80取得任务。任务执行部52执行所取得的任务。任务执行部52如后述的那样由多个安装在终端20中的处理器和设于各个处理器的本地存储器来实现。接收任务执行部53在所取得的任务中附加有接收任务时,执行接收任务,将基于从任务所需数据的取得目标装置接收到的数据而生成的输入数据传送给任务执行部52。接收任务执行部53如后述的那样向本地存储器的输入缓冲器传送输入数据。发送任务执行部54在所取得的任务中附加有发送任务时,执行发送任务,从存储于本地存储器的输出缓冲器的输出数据中选择所需的数据,发送给执行后续的任务的装置。
图7表示终端20的硬件结构。终端20具有微处理器单元(MPU)22、图形处理单元(GPU)40、主存储器42、辅助存储装置(HDD)44、网络控制部46,它们分别经由主总线38相连接。网络控制部46经由网络12与其他终端20、分散处理管理装置80等装置间收发数据。
MPU22是非对称型的多处理器单元,具有一个输入输出单元24、和作为任务执行部52的一例的多个处理单元30。输入输出单元24是在与其他结构间进行数据的输入输出的单元,包括处理器26和本地存储器28。本地存储器28例如是闪速存储器。各处理单元30是分别独立地执行应用所包含的任务的单元,分别包括处理器32和本地存储器34。从主存储器42读出的程序、数据、工作参数等被写入本地存储器34,由处理器32来执行。
输入输出单元24经由主总线38与GPU40、主存储器42、HDD44、网络控制部46等终端20内的其他结构间收发数据。另外,还经由网络控制部46与其他装置间收发数据。在本实施方式中,处理单元30能够在与其他处理单元30、输入输出单元24、GPU40、以及主存储器42之间进行数据的收发,但不能经由网络控制部46与其他装置间直接进行数据的收发。处理单元30经由输入输出单元24与其他装置间收发数据。
在其他实施方式中,处理单元30也可以被构成为能与其他装置间直接进行数据的收发。另外,MPU22也可以是对称型的多处理器单元,此时,可以是某一个处理单元30发挥输入输出单元24的功能,也可以是所有处理单元30与其他装置间直接进行数据的收发。
被分配给终端20的任务在输入输出单元24所执行的过程管理功能的管理下,由多个处理单元30的至少一部分来执行。输入输出单元24选择多个处理单元30中没有被使用着的处理单元30,使之执行任务。
图8表示输入输出单元24的功能性结构。输入输出单元24包括接口部67、控制部60、任务队列68。控制部60包括文件输入输出接口61、通信接口62、数据库接口63、存储器输入输出接口64、过程管理部65、以及执行状况管理部66。
接口部67进行经由主总线38的数据的收发。文件输入输出接口61进行例如存储在HDD44中的文件的输入输出。通信接口62例如经由网络控制部46与其他装置间进行数据的输入输出。数据库接口63与例如存储在HDD44中的、或者载入到主存储器42中的数据库间进行数据的输入输出。存储器输入输出接口64进行例如主存储器42上的数据的输入输出。
过程管理部65管理在处理单元30中所执行的过程。处理单元30应执行的任务被顺次存储在任务队列68中。在处理单元30的处理器32变成可执行下一任务的状态时,参照任务队列68取得下一任务来执行。过程管理部65管理各个处理单元30的处理器32是否正在执行任务,并通知给分散处理管理装置80。
执行状况管理部66在处理单元30的处理器32正执行被分散到终端20间的应用的任务时,管理其执行状况。执行状况管理部66例如在处理单元30应执行的任务过多地积压在任务队列68中,无法立刻执行所被分配的应用的任务的状况时,将该情况通知给分散处理管理装置80,请求将任务再分配给其他终端20。
过程管理功能也可以由各个处理单元30来执行。此时,各处理单元30的过程管理功能使得在其处理单元30变成可执行其他任务的状态时,从任务队列取得待执行的任务来执行。这样,任务由处理单元30来执行,所以优选将给终端20的任务设计成由处理单元30进行处理的程序。另外,优选将任务设计成能以单一的终端20的处理能力来处理。
(第2实施方式)
在第1实施方式中,在分散处理管理装置80将构成应用的任务分配给多个终端20时,是根据需要而自动生成通信任务的,但在第2实施方式中,是由被分配了任务的终端20来生成通信任务。
图9表示第2实施方式的分散处理管理装置80的结构。第2实施方式的分散处理管理装置80与图2所示的第1实施方式的分散处理管理装置80的结构相比,其不同点在于具有任务信息通知部97来代替通信任务生成部94。其他结构和动作是与第1实施方式相同的。
任务信息通知部97向分配了任务的终端20通知关于任务所需数据的取得目标装置的信息。由此,终端20能够自己生成用于从取得目标装置取得数据的发送任务,发送给取得目标装置。任务信息通知部97还可以进一步通知关于任务所需数据的内容的信息。例如可以通知任务的输入数据的数据类型、数据长度、关于输入定时的条件等。
图10表示第2实施方式的终端20的结构。第2实施方式的终端20与图6所示的第1实施方式的终端20的结构相比,其不同点在于还具有任务信息取得部55和通信任务生成部56。其他结构和动作与第1实施方式相同。
任务信息取得部55取得关于处理数据的任务的信息。任务信息取得部55取得关于任务取得部51取得的任务所需数据的取得目标的信息。通信任务生成部56在所取得的任务所需数据的取得目标是经由网络与本终端相连接的其他终端时,生成用于使取得目标终端向本终端发送任务所需数据的发送任务,发送给取得目标终端。另外,通信任务生成部56生成用于从取得目标终端接收数据并生成任务的输入数据的接收任务,送往接收任务执行部53。
图11表示应用的例子。应用200是从动图像中检测出人的脸并进行认证的应用,包括对动图像进行解码的核心任务162、从解码后的动图像中检测出人的脸的核心任务174和184、识别所检测出的脸的图像的核心任务194、以及将识别出的脸与数据库相对照进行认证的核心任务196。另外,检测脸的任务被分割为从动图像的上半部分检测脸的核心任务174、和从动图像的下半部分检测脸的核心任务184。
在图11的例子中,包含在应用200中的各任务被分配给不同的多个终端。具体来说,核心任务162被分配给终端160,核心任务174被分配给终端170,核心任务184被分配给终端180,核心任务194和196被分配给终端190。
分散处理管理装置80的任务信息通知部97向被分配了核心任务174的终端170通知脸检测所需的动图像的数据将从终端160输出这一信息。另外,核心任务174仅处理动图像的上半部分即可,所以通知仅取得从核心任务162输出的数据中的动图像上半部分的数据即可这一信息。终端170的通信任务生成部56生成发送任务164发送给终端160,该发送任务164用于使在终端160中执行的核心任务162所输出的数据发送给终端170。该发送任务164中基于从任务信息通知部97通知来的信息而预先设定有通信参数,该通信参数表示从核心任务162所输出的数据中选择动图像的上半部分的数据。另外,通信任务生成部56生成接收任务172,该接收任务172用于从终端160接收数据,并生成输入到核心任务174的输入数据。同样地,终端180的通信任务生成部56生成发送任务166发送给终端160,并生成接收任务182。发送任务164按照所设定的通信参数,从核心任务162的输出缓冲器中选择动图像的上半部分的数据,发送给接收任务172。同样地,发送任务166选择动图像的下半部分的数据发送给接收任务182。
核心任务194需要从执行核心任务174的终端170输出的数据,和从执行核心任务184的终端180输出的数据这两者,所以生成用于使各个终端发送数据的发送任务176和发送任务186,发送给各个终端。另外,生成对从发送任务176和发送任务186接收到的数据进行合并、生成输入数据的接收任务191和接收任务192。接收任务191和接收任务192也可以从自终端170和180接收来的数据中选择需要的数据,生成核心任务194的输入数据。另外,接收任务191和接收任务192也可以调整将基于从终端170和180收到的数据而生成的输入数据输入到核心任务194的定时。例如由于核心任务194需要核心任务174和核心任务184这两者的结果,所以接收任务191和接收任务192可以是即便接收了任一方的输出数据,也要待机至接收到另一方的输出数据。另外,接收任务191和接收任务192也可以汇总为一个接收任务。
核心任务194和核心任务196被分配给同一终端190,所以这些任务间的数据的收发不需要经由网络的通信。因此,不生成发送任务和接收任务。此时,通信任务生成部56基于从任务信息通知部97通知来的信息,从核心任务194所输出的数据中选择核心任务196所需的数据,如果需要,则将其变换成适当的数据类型,或者重新排列数据的顺序,或者与其他核心任务输出的数据合并,来生成用于向执行核心任务196的处理单元30的输入缓冲器35传送的DMA命令。核心任务194被执行,输出数据被存储到输出缓冲器36中后,由通信任务生成部56生成的DMA命令被执行核心任务194的处理单元30或者执行核心任务196的处理单元30的DMA控制器37执行,核心任务196的输入数据被置于输入缓冲器35中。
图12是用于说明在如图11所示那样分配了任务时,核心任务194的输入数据被生成的样子的图。在终端170中,核心任务174被执行后,输出数据被存储在执行了核心任务174的处理单元30的输出缓冲器36中。发送任务176内被预先设定了包含用于从存储于输出缓冲器36的输出数据中选择核心任务194所需的数据的信息的通信参数,所以发送任务176选择所需的数据生成发送数据178,发送给被分配了核心任务194的终端190。同样地,发送任务186从存储于输出缓冲器36的输出数据中选择核心任务194所需的数据,生成发送数据188,发送给终端190。另外,核心任务174或184所输出的输出数据也可以从输出缓冲器36传送给主存储器42。此时,发送任务176或186可以从存储于主存储器42的数据中选择所需的数据,生成发送数据178或188。
在终端190中执行的接收任务191和192分别从终端170、终端180收到发送数据178、188后,将之变换成与核心任务194的输入接口相应的数据类型,并将这些数据合并,将输入数据198存储到执行核心任务194的处理单元30的输入缓冲器35中。此时,如果需要,调整将核心任务194的输入数据传送给输入缓冲器35的定时。例如,在输入缓冲器35不具有存储全部输入数据的容量的情况下,根据核心任务194的进行,以盖写不需要的数据的方式将后续的输入数据传送给输入缓冲器35。此时,接收任务191和192也可以暂时将接收到的发送数据178和188存储在主存储器42等中。
图13表示包含在图11所示的应用中的任务的其他分配例。在图13所示的例子中,核心任务174、184、194及196被分配给同一终端190。此时,由于核心任务174、184与核心任务194之间的数据的收发不需要终端间的通信,所以不生成发送任务176和186、以及接收任务191和192。
图14是用于说明在如图13所示那样分配了任务时,核心任务194的输入数据被生成的样子的图。执行核心任务174的处理单元30a、执行核心任务184的处理单元30b、执行核心任务194的处理单元30c全都在同一终端190内。因此,处理单元30c能够直接访问存储有核心任务184的输出数据的处理单元30a的输出缓冲器36a、和存储有核心任务194的输出数据的处理单元30b的输出缓冲器36b来取得数据。因此,在该情况下不生成发送任务和接收任务。取而代之,由通信任务生成部56生成从存储于输出缓冲器36a、36b的数据中选择核心任务194所需的数据并传送给输入缓冲器35c的DMA命令的列表。DMA控制器37c执行所生成的DMA命令,将核心任务194的输入数据198存储在输入缓冲器35c中。
这样,不论是应用所包含的多个任务被分配给同一终端20,还是分配给不同的多个终端20,都自动生成数据的输入输出所需要的通信任务或DMA命令,所以能够适当地进行数据的收发。因此,应用的设计者能够不考虑任务是如何被分散到终端20间地来设计应用。由此,能够提供一种可容易地构建大规模的应用的环境。另外,各任务取得输入数据后只要执行环境整备,就可以与其他任务无关地、非同步地执行,所以能够提高处理的效率。另外,由于是根据终端20中的处理器32的使用状况来适当分配任务的,所以应用的设计者能够不考虑如何使任务分散处理地来设计应用。
以上基于实施例说明了本发明。本领域技术人员能够理解该实施例是个例示,其各结构要素和各处理过程的组合可以有各种各样的变形,且这些变形例也包含在本发明的范围内。
在实施方式中说明了从分散处理管理装置80向终端20分配任务的例子,但不限于此。例如在某数据处理装置想要执行包含有多个任务的应用时,为利用其他装置的空闲资源而向其他装置分配任务的情况下,或者被分配了多个任务的数据处理装置将所被分配的任务的一部分再分配给其他装置时,也能适用实施方式中所说明的技术。在这样的情况下,通过自动生成通信任务,能够自由地向多个装置分配任务,在被分配的装置中,在能够执行所分配的任务的环境整备的阶段可以非同步地执行任务,所以能够极大地提高分散处理的效率。