JP5501288B2 - 投機的実行装置及び方法及びプログラム - Google Patents

投機的実行装置及び方法及びプログラム Download PDF

Info

Publication number
JP5501288B2
JP5501288B2 JP2011110844A JP2011110844A JP5501288B2 JP 5501288 B2 JP5501288 B2 JP 5501288B2 JP 2011110844 A JP2011110844 A JP 2011110844A JP 2011110844 A JP2011110844 A JP 2011110844A JP 5501288 B2 JP5501288 B2 JP 5501288B2
Authority
JP
Japan
Prior art keywords
task
node
input data
speculative execution
computation
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.)
Expired - Fee Related
Application number
JP2011110844A
Other languages
English (en)
Other versions
JP2012242973A (ja
Inventor
健史 小沢
和孝 森田
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2011110844A priority Critical patent/JP5501288B2/ja
Publication of JP2012242973A publication Critical patent/JP2012242973A/ja
Application granted granted Critical
Publication of JP5501288B2 publication Critical patent/JP5501288B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Description

本発明は、投機的実行装置及び方法及びプログラムに係り、特に、分散並列実行環境において条件分岐の評価中に余っている計算ノードを利用して分岐先の処理を実行する投機的実行装置及び方法及びプログラムに関する。
分散処理フレームワークにおいて、PCクラスタ上にファイルを分割して保存する分散記憶装置を前提としたデータ解析基盤ソフトウェアがある。これは、図1に示すように、有向グラフの形式で動作フローを記述することで、互いに依存関係のない入力データに対して並列計算を行うプログラムを実行基盤とするものである。図1において、辺がデータの流れであり、頂点が行う処理内容を意味する。頂点上で実行される処理をタスクという。実行時は、分散ファイルシステムにアクセスし、入力ファイルを処理単位に分割する初期化処理を行い、分割したファイルが保存されているデータノードに近い計算ノードに、処理内容が記述されたプログラムを配置し、計算が完了したら結果を分散ファイルシステムに書き込むものである。
このような環境において、評価結果が真か偽かで処理内容が分岐する条件分岐の評価中に、余っている計算ノードを利用して分岐先の処理を実行する投機的実行を行う方法として、MapReduceを拡張し、ループ処理に特化させたシステムがある(例えば、非特許文献1、2参照)、非循環有向グラフ処理で記述されたプログラムを分散並列処理するシステム(例えば、特許文献1参照 )や、Map処理、Reduceで記述されたプログラムを分散並列処理するシステム(特許文献2参照)がある。
以下に従来の技術における投機的実行の処理を説明する。
図2は、従来の投機的実行の方法のフローチャートである。
どの計算ノードにどのタスクを割り当てるかを管理する計算機である資源管理ノードが、タスクを実行していない計算ノードに対し、タスクを割り当てる(ステップ210)。タスクの処理内容が条件分岐であるかを判定する。条件分岐でない場合はタスクを実行し(ステップ220)、条件分岐である場合は条件式を真偽を評価し(ステップ230)、評価結果の真偽の値により分岐先を一つ選択し、投機的実行を行う(ステップ240)。ジョブが終了するまで上記の処理を繰り返す。
上記のステップ240の投機的実行の処理について図3に沿って詳細に説明する。
上記の特許文献2の技術を用いて、投機的実行のスケジューリング時に、投機的に実行するタスクの入力となるデータを保持している場合に、タスクを実行していない計算ノードを検索し、分岐先を一つ選択する(ステップ241)。選択した分岐先に存在する処理に全ての計算ノードを割り当てて実行する(ステップ242)。条件分岐の処理が終了し次第、条件が成立しなかった投機的実行に関するタスクを全て終了する(ステップ243)。
USPTO Applicaton #20080082644, Distributed Parallel Computing(Dryad), Microsoft Corporation,September 29, 2006. United States Patent 7,650,331, System and method for efficient large-scale data processing (Map Reduce) Google, January 19, 2010.
HaLoop: Efficient Iterative Data Processing on Large Clusters, Yingyi Bu, Bill Howe, Magdalena Balazinska, Michael D. Ernst. In VLDB'10: The 36the International Conference on Very Large Data Bases, Singapore, 24-30, September, 2010. Twister: A Runtime for Iterative MapReduce Jaliya Ekanayake, Hui Li, Bingjing Zhang, Thilina Gunarathne, Seung-Hee Bae, Judy Qiu, Geoffrey Fox, Twister: A Runtime for Iterative MapReduce. The first International Workshop on MapReduce and its Applications (MAPREDUCE'10) - HPDC2010.
上記の従来技術における特許文献1,2、非特許文献1,2のシステムの有効な投機的実行処理を組み合わせてシステムを構築したとしても、以下のような問題がある。
1.投機的実行を行う際に、2つの分岐先に存在する処理のうち1つを選択し、その処理に全ての計算ノードを割り当てることのみが可能である。このため、分岐予測に失敗した場合、全ての計算結果が無駄になる。
2.投機的に実行しているタスク間におけるリソースの競合が起きてしまい、結果データの転送が大量に発生する場合がある。
本発明は、上記の点に鑑みなされたもので、条件分岐にて行うタスクの投機的実行において、2つの分岐先に対して、入力データサイズが偏っていない場合は計算ノードの分配を等しく行うことができ、投機的実行時に発生するデータの転送量を抑えることが可能な分散処理フレームワークにおける投機的実行ノード割当装置及び方法及びプログラムを提供することを目的とする。
上記の課題を解決するため、本発明(請求項1)は、分散並列実行フレームワークにおいて実行するプログラムのフローが循環有向グラフとして表現されている場合に、条件分岐にてタスクの投機的実行を行う計算ノードを割り当てる投機的実行装置であって、
前記タスクの処理内容が条件分岐である場合に、該タスクの入力となるデータを保持し、かつタスクを実行していない計算ノードを、資源管理ノードに問い合わせて計算ノードリストを取得するノード情報取得手段と、
前記計算ノードリストの計算ノードが保持している入力データサイズを求めるデータサイズ計算手段と、
2つの分岐先両方に対して、前記入力データサイズに基づいて、空いている計算ノードに投機的に実行するタスクを割り当てる割当手段と、有することを特徴とする。
また、本発明(請求項2)は、前記割当手段に、
前記計算ノードのリストの計算ノードのうち、サイズの大きい入力データの上位k個を保持している計算ノードについて投機的にタスクを割り当てる第1のタスク割当手段と、
前記計算ノードのリストの残った計算ノードに対するタスク割り当てを行う第2のタスク割当手段と、を含む。
また、本発明(請求項3)は、前記第2のタスク割当手段に、
分岐先の入力データを両方保持している計算ノードには、入力データの大きい方のタスクを割り当て、
分岐先の入力データを片方保持している計算ノードには、入力データを保持しているタスクを割り当て、
分岐先の入力データを保持してない計算ノードには、2つの分岐先のタスク割当比率のうち数が少ないタスクを割り当てる手段を含む。
また、本発明(請求項4)は、前記第2のタスク割当手段に、
前記分岐先の入力データを保持していない計算ノードにタスクを割り当てる際に、タスク間のリソース利用比率が等分になるように、少ない方を優先的に割り当てる手段を含む。
上記のように、本発明によれば、想定している分散並列実行フレームワークにおいて、実行するプログラムのフローが循環有向グラフとして表現されているとき、条件分岐にて行うタスクの投機的実行において、
(1)2つの分岐先に対して、入力データサイズが偏っていない場合は計算ノードの分配を等しく行うことができる。
(2)投機的実行時に発生する、データの転送量(バイト数)を抑えることができる。
有向グラフ形式の動作フローである。 従来技術の概略フローチャートである。 図2のS240の詳細なフローチャートである。 本発明の一実施の形態における投機的実行装置の構成図である。 本発明の一実施の形態における投機的実行装置の概要動作のフローチャートである。 本発明の一実施の形態における図5のS340の詳細なフローチャートである。 本発明の一実施の形態における図6のS510の詳細なフローチャートである。 本発明の一実施の形態における図7のS630のフローチャートである。 本発明の一実施の形態における図7のS640のフローチャートである。
以下図面と共に、本発明の実施の形態を説明する。
本発明の資源管理ノードが、計算機ノードが有する入力データの局所性(保存場所)、サイズを考慮し、投機的実行するタスク同士のリソース調停を行いながらスケジューリングするものである。
図4は、本発明の一実施の形態におけるシステム構成を示す。
同図に示すシステムは、資源管理ノード10と複数の物理計算機20から構成される。物理計算機20は、各々計算ノード21を有する。
資源管理ノード10は、タスク割当部11、計算ノードリスト取得部12、サイズ計算部13、計算ノードDB14から構成される。計算ノードDB14は、計算ノード毎の識別情報と対応させて、保持している入力データの識別情報、サイズ等を格納する。
計算ノード21は、資源管理ノードから割り当てられたタスクを実行するタスク実行部211を有する。
図5は、本発明の一実施の形態における投機的実行装置の概要動作のフローチャートである。
ステップ310) 資源管理ノード10は、計算ノード21にタスクを割り当て、当該タスクの処理内容が条件分岐であるかを判定し、条件分岐でない場合は、ステップ320に移行し、条件分岐がある場合はステップ330に移行する。
ステップ320) 計算ノード21は、条件分岐ではないタスクを割り当てられた場合は、タスク実行部211において割り当てられたタスクを実行し、ステップ310に戻る。
ステップ330) 条件分岐である場合は、条件式を評価する。ここで、評価とは、ユーザにより指定された条件式をタスクとして実行し、その真偽を評価するものである。
ステップ340) 資源管理ノード10は、条件式に基づいて、図6に示す手法により投機的実行を行い、ステップ310に戻る。
図6は、本発明の一実施の形態における図5のS340のフローチャートである。
ステップ510) 資源管理ノード10は、2つの分岐先の両方に対して空いている計算ノードを利用して投機的実行を行う。詳細な処理は図7で後述する。
ステップ520) 条件分岐の処理が終了次第、条件が成立しなかった投機的実行に関するタスクを全て終了する。
次に上記ステップ510の処理を説明する。
図7は、本発明の一実施の形態における図6のS510の詳細なフローチャートである。
ステップ610) 資源管理ノード10の計算ノードリスト取得部12は、特許文献2の技術を用いて、計算ノードDB14より、投機的実行の入力となるデータを保持しており、かつ、タスクを行っていない計算ノードのリストを抽出する。
ステップ620) サイズ計算部13は、取得した計算ノードのリストから、タスクを行っていない計算ノードが保持している投機的実行の入力データサイズを求める。
ステップ630) タスク割当部11は、サイズの大きい入力データ上位k個を保持している計算ノードに、投機的に実行するタスクを割り当てる。ここで、kはユーザが指定するものとする。なお、当該処理の詳細は図8にて後述する。
ステップ640) タスク割当部11は、計算ノードリスト上の残った計算ノードに対するタスクの割り当てを行う。当該割り当て方法の詳細は図9にて後述する。
次に、上記のステップ630の詳細な処理について説明する。
図8は、本発明の一実施の形態における図7のS630の詳細なフローチャートである。
ステップ710) タスク割当部11は、ステップ620で問い合わせた結果を用いて保持している入力データサイズが大きい計算ノード上位k台を選択する。
ステップ720) タスク割当部11は、ステップ710で選択された計算ノードに対して、その計算ノードが保持する最も大きい入力データと紐付いている分岐先のタスクを割り当てる。
次に、図7のステップ640の詳細な処理について説明する。
図9は、本発明の一実施の形態における図7のS640の詳細なフローチャーである。
ステップ801) タスク割当部11は、計算ノードリストに残った計算ノードのうち、分岐先の両方の入力データを保持している計算ノードについては、ステップ810の処理に移行し、両方の入力データを保持していない場合はステップ802に移行する。
ステップ802) 分岐先の片方の入力データのみを保持している場合は、ステップ820に移行し、いずれも保持していない場合はステップ830に移行する。
ステップ810) 入力データ量の大きい方のタスクを割り当てる。
ステップ820) 入力データを保持しているタスクを割り当てる。
ステップ830) 分岐先の入力データを全く保持していない計算ノードには、特許文献2で用いられている技術を用いて、データ転送を行い、タスクを割り当てる。このとき、投機的に実行するタスク間のリソース利用比率が等分になるように、少ない方を優先的に割り当てる。
上記により、想定している分岐並列実行フレームワークにおいて、条件分岐を含む処理を高速に行うことができる。また、複数の条件分岐が連なっている場合でも処理を高速に行うことができる。
本発明は、上記の実施の形態に限定されることなく特許請求の範囲内において種々変更・応用が可能である。
10 資源管理ノード
11 タスク割当部
12 計算ノードリスト取得部
13 サイズ計算部
14 計算ノードDB
20 物理計算機
21 計算ノード
211 タスク実行部

Claims (9)

  1. 分散並列実行フレームワークにおいて実行するプログラムのフローが循環有向グラフとして表現されている場合に、条件分岐にてタスクの投機的実行を行う計算ノードを割り当てる投機的実行装置であって、
    前記タスクの処理内容が条件分岐である場合に、該タスクの入力となるデータを保持し、かつタスクを実行していない計算ノードを、計算ノード記憶手段から抽出するノード情報取得手段と、
    前記ノード情報取得手段で抽出された計算ノードリストの計算ノードが保持している入力データサイズを求めるデータサイズ計算手段と、
    2つの分岐先両方に対して、前記入力データサイズに基づいて、空いている計算ノードに投機的に実行するタスクを割り当てるタスク割当手段と、
    有することを特徴とする投機的実行装置。
  2. 前記タスク割当手段は、
    前記計算ノードのリストの計算ノードのうち、サイズの大きい入力データの上位k個を保持している計算ノードについて投機的にタスクを割り当てる第1のタスク割当手段と、
    前記計算ノードのリストの残った計算ノードに対するタスク割り当てを行う第2のタスク割当手段と、
    を含む請求項1記載の投機的実行装置。
  3. 前記第2のタスク割当手段は、
    分岐先の入力データを両方保持している計算ノードには、入力データの大きい方のタスクを割り当て、
    分岐先の入力データを片方保持している計算ノードには、入力データを保持しているタスクを割り当て、
    分岐先の入力データを保持してない計算ノードには、2つの分岐先のタスク割当比率のうち数が少ないタスクを割り当てる手段を含む
    請求項2記載の投機的実行装置。
  4. 前記第2のタスク割当手段は、
    前記分岐先の入力データを保持していない計算ノードにタスクを割り当てる際に、タスク間のリソース利用比率が等分になるように、少ない方を優先的に割り当てる手段をふくむ
    請求項3記載の投機的実行装置。
  5. 分散並列実行フレームワークにおいて実行するプログラムのフローが循環有向グラフとして表現されている場合に、資源管理ノードが条件分岐にてタスクの投機的実行を行う計算ノードを割り当てる投機的実行ノード割当方法であって、
    前記資源管理ノードにおいて、
    ノード情報取得手段が、前記タスクの処理内容が条件分岐である場合に、該タスクの入力となるデータを保持し、かつタスクを実行していない計算ノードを、計算ノード記憶手段から抽出するノード情報取得ステップと、
    データサイズ計算手段が、前記ノード情報取得ステップで抽出された計算ノードリストの計算ノードが保持している入力データサイズを求めるデータサイズ計算ステップと、
    タスク割当手段が、2つの分岐先両方に対して、前記入力データサイズに基づいて、空いている計算ノードに投機的に実行するタスクを割り当てる割当ステップと、
    を行うことを特徴とする投機的実行方法。
  6. 前記割当ステップにおいて、
    前記計算ノードのリストの計算ノードのうち、サイズの大きい入力データの上位k個を保持している計算ノードについて投機的にタスクを割り当てる第1のタスク割当ステップと、
    前記計算ノードのリストの残った計算ノードに対するタスク割り当てを行う第2のタスク割当ステップと、
    を含む請求項5記載の投機的実行方法。
  7. 前記第2のタスク割当ステップにおいて、
    分岐先の入力データを両方保持している計算ノードには、入力データの大きい方のタスクを割り当て、
    分岐先の入力データを片方保持している計算ノードには、入力データを保持しているタスクを割り当て、
    分岐先の入力データを保持してない計算ノードには、2つの分岐先のタスク割当比率のうち数が少ないタスクを割り当てる
    請求項6記載の投機的実行方法。
  8. 前記第2のタスク割当ステップにおいて、
    前記分岐先の入力データを保持していない計算ノードにタスクを割り当てる際に、タスク間のリソース利用比率が等分になるように、少ない方を優先的に割り当てる
    請求項7記載の投機的実行方法。
  9. コンピュータを、
    請求項1乃至4記載のいずれか1項に記載の投機的実行装置の各手段として機能させるための投機的実行プログラム。
JP2011110844A 2011-05-17 2011-05-17 投機的実行装置及び方法及びプログラム Expired - Fee Related JP5501288B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011110844A JP5501288B2 (ja) 2011-05-17 2011-05-17 投機的実行装置及び方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011110844A JP5501288B2 (ja) 2011-05-17 2011-05-17 投機的実行装置及び方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2012242973A JP2012242973A (ja) 2012-12-10
JP5501288B2 true JP5501288B2 (ja) 2014-05-21

Family

ID=47464648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011110844A Expired - Fee Related JP5501288B2 (ja) 2011-05-17 2011-05-17 投機的実行装置及び方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5501288B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2767904B1 (en) * 2013-02-18 2018-07-04 Hybridserver Tec IP GmbH Method, processing modules and system for executing an executable code

Also Published As

Publication number Publication date
JP2012242973A (ja) 2012-12-10

Similar Documents

Publication Publication Date Title
US9965324B2 (en) Process grouping for improved cache and memory affinity
US9996394B2 (en) Scheduling accelerator tasks on accelerators using graphs
US8332854B2 (en) Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
Shirahata et al. Hybrid map task scheduling for GPU-based heterogeneous clusters
US8683468B2 (en) Automatic kernel migration for heterogeneous cores
US11188348B2 (en) Hybrid computing device selection analysis
US20100107174A1 (en) Scheduler, processor system, and program generation method
US11163677B2 (en) Dynamically allocated thread-local storage
EP3126971A1 (en) Program execution on heterogeneous platform
JP2012511204A (ja) リソースを最適化するためのタスク再編成方法
Allen et al. Slate: Enabling workload-aware efficient multiprocessing for modern GPGPUs
Ling et al. Blastnet: Exploiting duo-blocks for cross-processor real-time dnn inference
Zhou et al. Task mapping in heterogeneous embedded systems for fast completion time
JP2019049843A (ja) 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置
Malakar et al. A CUDA-enabled Hadoop cluster for fast distributed image processing
JP2012242975A (ja) 分散並列処理キャッシュ装置及び方法及び資源管理ノード及びプログラム
US20240193721A1 (en) System and method for adaptive graph-to-stream scheduling
JP5501288B2 (ja) 投機的実行装置及び方法及びプログラム
Zaki et al. Implementation, scheduling, and adaptation of partial expansion graphs on multicore platforms
CN111240745A (zh) 交叉执行的增强型标量向量双管线架构
Nemitz et al. Concurrency groups: a new way to look at real-time multiprocessor lock nesting
Chien et al. Graph support and scheduling for opencl on heterogeneous multi-core systems
CN106547603B (zh) 减少golang语言系统垃圾回收时间的方法和装置
Sheng et al. Fifo exploration in mapping streaming applications onto the ti omap3530 platform: Case study and optimizations
En-nattouh et al. The Optimization of Resources Within the Implementation of a Big Data Solution

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130806

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20131004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140311

R150 Certificate of patent or registration of utility model

Ref document number: 5501288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees