JP7014173B2 - 分散処理システム - Google Patents

分散処理システム Download PDF

Info

Publication number
JP7014173B2
JP7014173B2 JP2018546342A JP2018546342A JP7014173B2 JP 7014173 B2 JP7014173 B2 JP 7014173B2 JP 2018546342 A JP2018546342 A JP 2018546342A JP 2018546342 A JP2018546342 A JP 2018546342A JP 7014173 B2 JP7014173 B2 JP 7014173B2
Authority
JP
Japan
Prior art keywords
data
distributed processing
partition
processing system
distributed
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
JP2018546342A
Other languages
English (en)
Other versions
JPWO2018074444A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2018074444A1 publication Critical patent/JPWO2018074444A1/ja
Application granted granted Critical
Publication of JP7014173B2 publication Critical patent/JP7014173B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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/5061Partitioning or combining of resources
    • 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
    • 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/565Conversion or adaptation of application format or content
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Description

本発明は、分散処理システム、分散処理方法及びプログラム記録媒体にかかり、特に、データを分割して分散処理する分散処理システム、分散処理方法及びプログラム記録媒体に関する。
データを分散して処理するシステムとして、図1に示すような分散処理システムがある。図1に示す分散処理システムは、データの分散処理を行うスレーブコンピュータ321~323と、スレーブコンピュータを制御するマスタコンピュータ310と、を含む。なお、スレーブコンピュータの数は複数であればよく、3つに限定されない。
このような構成を有する分散処理システムは、次のように動作する。スレーブコンピュータ321~323は、1つのデータを分割して保持する。分割したデータをデータパーティションと呼ぶ。マスタコンピュータ310は、スレーブコンピュータ321~323が保持するデータパーティションに対して実行する処理をタスクとして生成し、各スレーブコンピュータにタスクを実行するよう指示を行う。スレーブコンピュータ321~323は、指示されたタスクを、保持するデータパーティションに対して実行する。これにより、全てのデータパーティションに対して所望の処理が行われる。
また、特許文献1には、画像データを分割して分散処理するシステムが開示されている。この分散処理システムでは、分割した画像データと、当該画像データに付随するパラメータ(処理手順、識別タグ)と、を分散処理するワークステーションに送信して、分散画像処理を実行している。
特開平8-16766号公報 特開2000-020327号公報
ここで、分散処理の際にデータパーティションの処理を行う方法は、分散処理を行うデータのデータ形式に応じて異なる。そして、上述した分散処理システムでは、分散処理を行うデータのデータ形式を考慮していないため、様々なデータ形式の分散処理を行うことができず、汎用性がない、という問題が生じる。
このため、本発明の目的は、上述した課題である、様々なデータ形式の分散処理を行うことができず汎用性がない、ということを解決することにある。
本発明の一形態である分散処理システムは、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた、
という構成をとる。
また、本発明の一形態であるプログラム記録媒体は、
情報処理装置に、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるプログラムを記録する、
という構成をとる。
また、本発明の一形態である分散処理方法は、
情報処理装置が、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
という構成をとる。
本発明は、以上のように構成されることにより、分散処理を行うデータのデータ形式に依存した分散処理が可能となり、汎用性の向上を図ることができる。
本発明に関連する分散処理システムの構成を示すブロック図である。 本発明の第1の実施形態における分散処理システムの構成を示すブロック図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムの動作を示すフローチャートである。 本発明の第2の実施形態における分散処理システムの構成を示すブロック図である。 各実施形態に示した分散処理システムを構成する装置を実現するハードウエア構成の一例を示す図である。
<実施形態1>
本発明の第1の実施形態を、図2乃至図7を参照して説明する。図2は、実施形態1における分散処理システムの構成を説明するための図である。図3乃至図6は、分散処理システムによる処理の内容を説明するための図である。図7は、分散処理方法を示すフローチャートである。
[構成]
本実施形態における分散処理システムは、図2に示すように、データを分割して分散処理を行うアクセラレータ21~23と、当該アクセラレータ21~23に行わせる処理を制御するホスト1と、を備えている。なお、アクセラレータの数は3つに制限されず、複数であればよい。また、アクセラレータが1つの場合に本実施の形態を採用することも可能である。以後、「アクセラレータ2」と記述する場合は、データのロードや処理の実行を行うアクセラレータ21~23のいずれかを意味する。また「複数のアクセラレータ2」と記述する場合は、アクセラレータ21~23の全体を意味する。
上記アクセラレータ21は、図2に示すように、単数又は複数の演算コアを搭載しデータパーティションの処理を行うプロセッサ21aと、当該プロセッサの演算のために用いられるメモリ21bと、の組で構成されており、他のアクセラレータ22,23も同様の構成である。一般的に、アクセラレータは、コンピュータのCPUより多数の演算コアを実装しているため、CPUより高い計算能力を提供することが知られている。アクセラレータ21~23は、例えば、NVIDIA社が提供するGPU(Graphics Processing Unit)である。
ここで、本実施の形態では、分散処理対象のデータを分割したものを「データパーティション」と呼ぶ。本実施の形態で扱う分散処理は、データパーティションに対する処理を単位として、複数のアクセラレータで分散して実行することで実現する。
上記ホスト1は、演算装置と記憶装置とを備えた情報処理装置である。そして、ホスト1は、図2に示すように、複数のアクセラレータ2を用いて分散処理を行うアプリケーションプログラムであるユーザプログラム11と、ユーザプログラム11に複数のアクセラレータ2を利用するためのインターフェースを提供するAPI(Application Programming Interface)部12と、複数のアクセラレータ2に分散処理を行わせるデータを格納するデータ格納部13と、複数のアクセラレータ2の分散処理を制御するアクセラレータ制御部14と、を備えている。上記ユーザプログラム11と、API部12と、アクセラレータ制御部14とは、演算装置がプログラムを実行することで構築される。また、上記データ格納部13は、記憶装置に構成されている。
上記アクセラレータ制御部14は、さらに、図2に示すように、ユーザプログラム11が複数のアクセラレータ2に対して実行を要求する分散処理の解析を行うプログラム解析部141と、アクセラレータ2へのデータパーティションの準備を指示するデータスケジューラ部142と、を備える。また、アクセラレータ制御部14は、データ格納部13から処理を行うデータのデータパーティションに該当する部分を読み込み、データパーティションを作成してアクセラレータ2が保持するメモリにロードする分割データ作成部144と、アクセラレータ2に対しデータパーティションの処理を指示するタスクスケジューラ部143と、を備える。さらに、アクセラレータ制御部14は、アクセラレータ2を制御しデータパーティションの処理を実行するタスク実行部145と、データパーティションのメタデータを保持するメタデータ格納部146と、を備える。
以下、上述したホスト1の構成について、さらに詳しく説明する。
上記API部12(インターフェース部)は、ユーザプログラム11に対して、複数のアクセラレータ2に分散処理を行わせるプログラムを作成するためのアプリケーションプログラムインターフェースを提供する。また、API部12は、当該API部12がユーザプログラム11に提供するインターフェースを用いて作成したユーザプログラム11の実行を、アクセラレータ制御部14に要求する。
図3に、API部12が提供するインターフェースを用いて作成したユーザプログラム11の疑似コードの一例を示す。1行目の「ImageReader」は、分散処理を行うデータのデータ形式が「画像」である場合に、データを読み込むオブジェクトである。分散処理を行う画像を格納しているファイルの名前である「FileName1」や、画像を読み込むために必要なパラメータである「Param1」や「Param2」を含む。これらのパラメータは3つ以上でも良い。2行目では、「ImageReader」によって、読み込むデータをプログラム上で扱うために、「DDD」というデータオブジェクトとして「Image1」という名前を付与してインスタンス化している。3行目では、インスタンス化した「Image1」に対し「map」処理を実施し、map処理を実施した出力データをファイルに格納している。
具体的に、上記map処理は、データが含む各データ要素に同じ処理を実施するためのインターフェースである。この場合、「ProcessFunc」で指定された処理が、画像の各要素に適用される。「ProcessFunc」は、ユーザプログラム11が与えるユーザ定義関数であり、画像の各要素に適用する具体的な処理である。なお、ユーザプログラム11は外部から任意のものが提供されるため、ユーザ定義関数も外部から任意のものが提供される。また、出力データのファイルには、「FileName2」という名前が付与される。このプログラムでは、「outputFile」が呼ばれた時点で、1行目~3行目で指定したアクセラレータの処理の実行がアクセラレータ制御部14に対して要求される。
API部12は、「outputFile」の例のように、処理の要求をトリガ(開始)するインターフェースを規定している。このように、ユーザプログラム11がインターフェースを呼ぶより後に、実際の処理が複数のアクセラレータ2で実行されるような遅延を伴う処理を一般に遅延評価と呼ぶ。また、API部12が提供する処理として「map」以外を定義し、「DDD」が含むデータ要素に対し様々な形態の処理を実現することは本分野の技術者であれば一般的に知る所である。
本実施の形態では、分散処理を行うデータのデータ形式として、上述した「画像」以外に、「密行列」や「疎行列」等の様々なデータ形式を扱うことが可能である。その場合、密行列では、図3に示した「ImageReader」に変わり「DenseMatrixReader」を、疎行列では、「ImageReader」に変わり「SparseMatrixReader」を使用する。つまり、データ形式に依存した「Reader」を用いる。また各「Reader」に与えるパラメータは、ファイル名以外はデータ形式に依存する。ここで、データ形式に依存するパラメータの一例を図4に示す。
図4において、画像の「ピクセルデータ型」は、各ピクセルのデータ型を示す。データ型の例は、整数型や浮動小数点型である。「画像サイズ」は、画像の縦と横の幅である。
幅の単位はピクセル数である。「データパーティションサイズ」は、各データパーティションが含む分割画像の縦と横の幅である。「パーティション袖幅」(冗長部分サイズ)は、各データパーティションが隣接する他のパーティションと重複して冗長に保持する画像の領域の幅である。
図4において、密行列の「要素データ型」は、行列の要素のデータ型である。「行列サイズ」は、行列の縦と横の幅である。「分割行列サイズ」は、行列を分割したデータパーティションが含むブロック行列の縦と横の幅である。幅の単位は行列の要素数である。疎行列では、密行列と名前が同じパラメータの意味は同じである。また、「非ゼロ要素数」は、疎行列が含む非ゼロ要素の数である。また同様の方法で、画像、密行列、疎行列以外にも、様々なデータ形式に対応したインターフェースをAPI部12に拡張していくことが可能である。
以上のように、API部12は、ユーザプログラム11から、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取る。そして、データ形式に依存するパラメータは、例えば、上述したように画像サイズや行列サイズ、非ゼロ要素など、データのデータ構造に基づく情報を含んでいる。
上記データ格納部13は、分割前の分散処理対象となるデータを格納する。そして、データ格納部13は、例えば、ファイルシステムであり、ホスト1が保持する記憶デバイスを使用してデータの格納及び管理を行う。
上記プログラム解析部141は、API部12からユーザプログラム11の実行要求を受信する。ユーザプログラム11で指定された処理は、処理対象となるデータを分割したデータパーティション毎に実行される。ここで、ユーザプログラム11が指定するデータ全体に対する処理を「タスク」、データを分割したデータパーティションに対する処理を「サブタスク」と呼ぶ。サブタスクはタスクから生成される。プログラム解析部141は、データの処理に必要な数のサブタスクを生成し、データスケジューラ部142に処理対象となるデータパーティションのアクセラレータ2への準備を依頼する。図3の例では、「Image1」の画像を分割した画像がデータパーティションであり、そのデータパーティションが含む各画素に「ProcessFunc」のユーザ定義関数で指定された処理を行うサブタスクが、データパーティションの数だけ生成される。
上記データスケジューラ部142は、アクセラレータ2に実行が要求されたサブタスクの入力データパーティションを準備するよう分割データ作成部144に依頼する。データスケジューラ部142は、プログラム解析部141から複数のサブタスクに関する入力データパーティションの準備が要求された場合、最適な準備の順番を決定する。
上記分割データ作成部144(分割データ作成手段)は、データスケジューラ部142からアクセラレータ2への入力データパーティションの準備の要求を受ける。このとき、入力データパーティションを準備するアクセラレータも指定される。分割データ作成部144は、データ格納部13からサブタスクの入力データパーティションに該当する範囲のデータを読み込み、指定されたアクセラレータ2にロードすることで、分散処理するときの処理単位であるデータパーティションを作成する。データの読み込みにはユーザプログラム11からAPI部12のインターフェースに渡されたファイル名等の識別子を用いる。またこのとき、ロードしたデータパーティションに関するメタデータを作成し、メタデータ格納部146(メタデータ格納手段)に登録する。
上記分割データ作成部144にて作成するデータパーティションの例を、図5Aおよび図5Bに示す。図5Aの「画像」の例では、3×3に画像を分割している。また、隣接データパーティションと冗長にピクセルを保持する袖(冗長部分)を作成する。袖部分は斜線で示している。図5Bの「疎行列」の例では、M×Nの行列を、行方向に並行にa個のブロック行列に分割している。なお、これらの分割の仕方は、その数や分割の方向が1次元や2次元、あるいは高次元のアレイデータに対しては3次元以上の分割に拡張できることは、本分野の技術者であれば一般的に認識している通りである。
また、データパーティション毎に作成するメタデータは、データパーティション毎に対応する情報であり、当該データパーティションを作成した元データのデータ形式に依存する情報である。これはメタデータが含むパラメータの種類がデータ形式に依存するという意味である。これらのデータ形式やデータ形式に依存するメタデータの情報は、図4に示したAPI部12がユーザプログラム11から渡された情報と、データ格納部13から読み込んだデータの情報から作成する。
図6にデータ形式毎に作成するメタデータを示す。なお、メタデータは、図4に示したAPI部が受け取るパラメータと同じものも含む(例えば、「画像サイズ」、「データパーティションサイズ」)。このため、メタデータの各情報のうち、API部が受け取るパラメータと同じものについては、説明を省略する。データ形式「画像」の「先頭からのオフセット」は、データパーティションが含む分割画像の全体の画像に対する相対的な位置を示す。データ形式「疎行列」の「分割行列非ゼロ要素数」は、データパーティションが含む疎行列を分割したブロック行列が含む非ゼロ要素数を示す。
メタデータを作成する際に、図4に示したAPI部12がユーザプログラム11から渡された情報(API部12が受け取った情報)と、データ格納部13から読み込んだデータの情報、の両方を使用する例を、疎行列で説明する。図6に示す疎行列のデータパーティションメタデータが含むパラメータの中で、「分割行列サイズ」は、図4に示すAPI部12が提供するインターフェースのパラメータにある「分割行列サイズ」から取得できる。一方、「分割行列非ゼロ要素数」は、データ格納部13から元データとなる疎行列を読み込まなければ、該当するデータパーティションが含む元の行列を分割したブロック行列の中に実際にいくつの非ゼロ要素数が含まれているかわからない。従って、「分割行列非ゼロ要素数」は、データ格納部13から読み込んだデータの情報をもとに設定される。
このように、分割データ作成部144が作成するメタデータは、データパーティションを作成した分割前の元となるデータのデータ形式に依存するパラメータや、データパーティションのデータ構造に基づく情報を含むこととなる。
上記タスクスケジューラ部143は、データスケジューラ部142から入力データパーティションの準備ができたサブタスクの通知を受け、サブタスクを実行するようタスク実行部145に依頼する。実行中のサブタスクや実行待ちのサブタスクが複数存在する場合はそれらの実行順を決めるスケジューリングを行う。
上記タスク実行部145(タスク実行手段)は、タスクスケジューラ部143から指定されたサブタスクを、指定されたアクセラレータで実行する。つまり、タスク実行部145は、データパーティションを処理するプログラム関数に、データパーティションと共にメタデータを渡す。なお、メタデータは、上記メタデータ格納部146から渡すこととなる。ここで例として、サブタスクをアクセラレータ21で実行する場合を考える。サブタスクを実行するプロセッサ21aは、サブタスクのユーザ定義関数と、ユーザ定義関数を実行する処理対象であるデータパーティションのメモリ21bでのアドレスと、データパーティションのメタデータを受け取る。プロセッサ21aは、メタデータを使用してユーザ定義関数を実行することにより、データ形式に依存した処理が実現できる。
データ形式に依存した処理を実行する例として、図3に示した画像に対する処理を説明する。プロセッサ21aは、図3の3行目で「map」に渡される「ProcessFunc」をユーザ定義関数として、データパーティションが含むデータ要素に対して実行する。この場合、データ要素は分割画像が含むピクセルである。このとき「ProcessFunc」が呼ばれる引数としてメタデータ格納部146に格納されたメタデータが、タスク実行部145から渡される。「ProcessFunc」は、メタデータが含むデータパーティションサイズから処理すべき分割画像の大きさが判別できる。また、画像サイズと先頭からのオフセット、つまり分割画像の画像全体に対する相対位置から、処理対象の分割画像のどの周辺部分に袖があるかを判別することができ、袖を考慮した処理が行える。袖を考慮する処理の例として、画像のピクセル値を周囲のピクセル値を用いて平均化するステンシル処理がある。
[動作]
次に本発明の実施の形態の動作について、主に図7のフローチャートを参照して詳細に説明する。
ユーザプログラム11を実行すると、ユーザプログラム11の内部でAPI部12が提供するインターフェースが使用される(ステップS1)。このとき、分散処理を行うデータのデータ形式とデータ形式に依存したパラメータがインターフェースに渡される。
API部12が提供するインターフェースで、処理をトリガするコマンドが呼ばれると、それまでにAPI部12に対し指示されたユーザプログラム11の処理の実行が、アクセラレータ制御部14に要求される。つまり、ユーザプログラム11の処理が遅延評価される(ステップS2)。
ユーザプログラム11の実行の要求を受信したプログラム解析部141は、ユーザプログラム11の処理を実行するサブタスクのエントリを、処理データを分割したデータパーティション毎に作成する(ステップS3)。そして、サブタスクの入力となるデータパーティションをアクセラレータ2のいずれかに準備するようデータスケジューラ部142に要求する。
データスケジューラ部142は、入力データパーティションを準備するアクセラレータを選択し、分割データ作成部144に入力データパーティションを準備するよう要求する(ステップS4)。ここで、データスケジューラ部142がプログラム解析部141から複数のサブタスクの入力データパーティションの準備の要求を受けている場合は、最適なデータパーティションの準備の順番を決定するスケジュールを行う。
分割データ作成部144は、データ格納部13が格納する処理データから、サブタスクの入力データパーティションに該当する部分を読み込み、データスケジューラ部142に指定されたアクセラレータ2のメモリにロードする(ステップS5)。また、データパーティションをロードした処理データに依存するメタデータを作成し、メタデータ格納部146に格納する(ステップS6)。
タスクスケジューラ部143は、データスケジューラ部142から入力データパーティションの準備が完了したサブタスクの通知を受信し、サブタスクの実行をタスク実行部145に要求する。このとき、未実行のサブタスクが複数存在する場合は、サブタスクを実行する順番を決定するスケジュールを行う(ステップS7)。
タスク実行部145は、タスクスケジューラ部143から通知を受けたサブタスクを入力データパーティションの準備が完了したアクセラレータ2で実行する(ステップS8)。このとき、サブタスクが実行するユーザ定義関数に、メタデータ格納部146に格納されている入力データパーティションのメタデータを渡す。そして、ユーザ定義関数が、渡されたメタデータを用いて実行される。
以上のように、本実施形態では、ユーザプログラムから分散処理を行うデータのデータ形式と当該データ形式に依存した情報を受け取るインターフェースを提供するAPI部12を備えている。また、分散処理を実行する単位であるデータパーティションを作成する際にAPI部12がユーザプログラムから受け取った情報と、データパーティションの作成において取得した情報を合わせて、データパーティション毎に分散処理を行うデータ形式に依存したメタデータを作成する分割データ作成部144を備えている。さらに、アクセラレータでユーザプログラムから与えられたユーザ定義関数をデータパーティションに対し実行する場合に、ユーザ定義関数にメタデータを渡すタスク実行部145を備えている。これにより、本実施形態は、ユーザプログラムから分散処理を行うデータのデータ形式とデータ形式に依存した情報を受け取り、データパーティションを作成する際に取得した情報と合わせてデータパーティション毎にメタデータを作成し、データパーティションをユーザ定義関数を用いて処理を行う場合に、ユーザ定義関数にメタデータを渡すように動作する。その結果、データ形式に依存した分散処理が可能となり、様々なデータ形式の分散処理を行うことが可能となる。
<実施形態2>
次に、本発明の第2の実施形態を、図8を参照して説明する。図8は、本発明における分散処理システムの構成を示すブロック図である。
図8に示すように、分散処理システム200は、図示しない演算装置にプログラムが組み込まれることで構築された、インターフェース手段201と、分割データ作成手段202と、を備える。インターフェース手段201は、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取る。分割データ作成手段202は、データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、データパーティション毎に対応し、当該データパーティションを作成した元となるデータのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する。
上記分割データ作成手段202は、例えば、インターフェース手段201にて受け取った情報と、データパーティションを作成する元となるデータを読み込むことで得られた情報と、に基づいてメタデータを作成する。
上記構成の分散処理システムによると、ユーザプログラムから分散処理を行うデータのデータ形式とデータ形式に依存した情報を受け取り、データパーティションを作成する際に取得した情報と合わせてデータパーティション毎にメタデータを作成し、データパーティションをユーザ定義関数を用いて処理を行う場合に、ユーザ定義関数にメタデータを渡すように動作する。その結果、データ形式に依存した分散処理が可能となり、様々なデータ形式の分散処理を行うことが可能となる。
図2に示したホスト1の各部は、図9に例示するハードウエア資源において実現される。すなわち、図9に示す構成は、プロセッサ50、RAM(Random Access Memory)51、ROM(Read Only Memory)52、外部接続インタフェース53、記録装置54および各構成要素を接続するバス55を備える。図2のユーザプログラム11は、ROM52または記録装置54に格納されてもよい。
上述した各実施形態では、図9に示すプロセッサ50が実行する一例として、ホスト1に対して、上述した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、プロセッサ50がRAM51に読み出して実行することによって実現する場合について説明した。しかしながら、上記各図に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ(一時記憶媒体)またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における分散処理システム、プログラム記録媒体、分散処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた分散処理システム。
(付記2)
付記1に記載の分散処理システムであって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理システム。
(付記3)
付記2に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理システム。
(付記4)
付記2又は3に記載の分散処理システムであって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理システム。
(付記5)
付記1乃至4のいずれかに記載の分散処理システムであって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理システム。
(付記5.1)
付記1乃至5のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、画像であり、
前記パラメータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、作成する前記データパーティションの冗長部分サイズ、を含む、
分散処理システム。
(付記5.2)
付記5.1に記載の分散処理システムであって、
前記メタデータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、前記データの先頭から作成する前記データパーティションのオフセット、を含む、
分散処理システム。
(付記5.3)
付記1乃至5のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、密行列であり、
前記パラメータは、前記データの行列サイズ、及び、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
(付記5.4)
付記5.3に記載の分散処理システムであって、
前記メタデータは、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
(付記5.5)
付記1乃至5のいずれかに記載の分散処理システムであって、
前記データの前記データ形式は、疎行列であり、
前記パラメータは、前記データの行列サイズ、作成する前記データパーティションの行列サイズ、及び、前記データ内の非ゼロ要素数、を含む、
分散処理システム。
(付記5.6)
付記5.5に記載の分散処理システムであって、
前記メタデータは、作成する前記データパーティションの行列サイズ、及び、作成する前記データパーティション内の非ゼロ要素数、を含む、
分散処理システム。
(付記6)
付記1乃至5のいずれかに記載の分散処理システムであって、
さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
分散処理システム。
(付記7)
付記6に記載の分散処理システムであって、
前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
分散処理システム。
(付記8)
付記6又は7に記載の分散処理システムであって、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
分散処理システム。
(付記9)
情報処理装置に、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるためのプログラムを記録するプログラム記録媒体。
(付記9.1)
付記9に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
プログラム記録媒体。
(付記9.2)
付記9.1に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
プログラム記録媒体。
(付記9.3)
付記9.1又は9.2に記載のプログラム記録媒体であって、
前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
プログラム記録媒体。
(付記9.4)
付記9乃至9.3のいずれかに記載のプログラム記録媒体であって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
プログラム記録媒体。
(付記9.5)
付記9乃至9.4のいずれかに記載のプログラム記録媒体であって、
前記情報処理装置に、さらに、
前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段、
を実現させるためのプログラム記録媒体。
(付記9.6)
付記9.5に記載のプログラム記録媒体であって、
前記情報処理装置に、さらに、
前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段、
を実現させるためのプログラム記録媒体。
(付記10)
情報処理装置が、
分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
分散処理方法。
(付記10.1)
付記10に記載の分散処理方法であって、
受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理方法。
(付記10.2)
付記10.1に記載の分散処理方法であって、
前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理方法。
(付記10.3)
付記10.1又は10.2に記載の分散処理方法であって、
前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理方法。
(付記10.4)
付記10乃至10.3のいずれかに記載の分散処理方法であって、
前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理方法。
(付記10.5)
付記10乃至10.4のいずれかに記載の分散処理方法であって、
前記情報処理装置が、さらに、
前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡す、
分散処理方法。
(付記10.6)
付記10.5に記載の分散処理方法であって、
前記情報処理装置が、さらに、
作成した前記メタデータを格納すると共に、タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供する、
分散処理方法。
なお、上述したプログラム記録媒体は、コンピュータが読み取り可能な記録媒体である。例えば、プログラム記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
この出願は、2016年10月19日に出願された日本出願特願2016-204770を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
本発明によれば、様々なデータ形式のデータをアクセラレータを用いて分散処理する用途に使用できる。応用分野として画像処理やデータ解析向けの計算機がある。
1 ホスト
11 ユーザプログラム
12 API部
13 データ格納部
14 アクセラレータ制御部
141 プログラム解析部
142 データスケジューラ部
143 タスクスケジューラ部
144 分割データ作成部
145 タスク実行部
146 メタデータ格納部
21,22,23 アクセラレータ
21a,22a,23a プロセッサ
21b,22b,23b メモリ
200 分散処理システム
201 インターフェース部
202 分割データ作成部
310 マスタコンピュータ
321,322,323 スレーブコンピュータ

Claims (10)

  1. 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
    前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
    を備えた分散処理システム。
  2. 請求項1に記載の分散処理システムであって、
    前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
    分散処理システム。
  3. 請求項2に記載の分散処理システムであって、
    前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
    分散処理システム。
  4. 請求項2又は3に記載の分散処理システムであって、
    前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
    分散処理システム。
  5. 請求項1乃至4のいずれかに記載の分散処理システムであって、
    前記パラメータは、前記データのデータ構造に基づく情報を含む、
    分散処理システム。
  6. 請求項1乃至のいずれかに記載の分散処理システムであって、
    さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
    分散処理システム。
  7. 請求項に記載の分散処理システムであって、
    前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
    分散処理システム。
  8. 請求項又はに記載の分散処理システムであって、
    前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
    分散処理システム。
  9. 情報処理装置に、
    分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
    前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
    を実現させるためのプログラム。
  10. 情報処理装置が、
    分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
    前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
    分散処理方法。
JP2018546342A 2016-10-19 2017-10-17 分散処理システム Active JP7014173B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016204770 2016-10-19
JP2016204770 2016-10-19
PCT/JP2017/037460 WO2018074444A1 (ja) 2016-10-19 2017-10-17 分散処理システム

Publications (2)

Publication Number Publication Date
JPWO2018074444A1 JPWO2018074444A1 (ja) 2019-08-29
JP7014173B2 true JP7014173B2 (ja) 2022-02-01

Family

ID=62018482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018546342A Active JP7014173B2 (ja) 2016-10-19 2017-10-17 分散処理システム

Country Status (3)

Country Link
US (1) US20200183756A1 (ja)
JP (1) JP7014173B2 (ja)
WO (1) WO2018074444A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7326234B2 (ja) * 2020-08-11 2023-08-15 Kddi株式会社 情報処理装置、情報処理方法及びコンピュータプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025392A (ja) 2011-07-15 2013-02-04 Nec Corp 情報処理装置、データ配置方法及びプログラム
JP2014153935A (ja) 2013-02-08 2014-08-25 Nippon Telegr & Teleph Corp <Ntt> 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025392A (ja) 2011-07-15 2013-02-04 Nec Corp 情報処理装置、データ配置方法及びプログラム
JP2014153935A (ja) 2013-02-08 2014-08-25 Nippon Telegr & Teleph Corp <Ntt> 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム

Also Published As

Publication number Publication date
JPWO2018074444A1 (ja) 2019-08-29
WO2018074444A1 (ja) 2018-04-26
US20200183756A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
US11907691B2 (en) Method and system of command buffer between a CPU and GPU
JP6897574B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
CN103262002B (zh) 优化系统调用请求通信
KR101893982B1 (ko) 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
JP5744574B2 (ja) 画像処理装置、画像処理方法及びプログラム
US9104491B2 (en) Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources
KR20140122835A (ko) 프로세스 병렬 처리 장치 및 방법
JP2014059862A (ja) データフローのリソース割り当て装置および方法
KR101869939B1 (ko) 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
CN112711478A (zh) 基于神经网络的任务处理方法、装置、服务器和存储介质
CN116382880B (zh) 任务执行方法、装置、处理器、电子设备及存储介质
JP6724908B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US9542127B2 (en) Image processing method and image processing apparatus
Dessalk et al. Scalable execution of big data workflows using software containers
JP7014173B2 (ja) 分散処理システム
JP2007280397A (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
US10496585B2 (en) Accelerator control apparatus, accelerator control method, and storage medium
Vo et al. HyperFlow: A Heterogeneous Dataflow Architecture.
US20130342549A1 (en) Apparatus and method for processing rendering data
US11340949B2 (en) Method and node for managing a request for hardware acceleration by means of an accelerator device
JP5968497B2 (ja) 制御方法、システム及びプログラム
KR101131636B1 (ko) 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체
Hernandez et al. Asynchronous in situ processing with gromacs: taking advantage of GPUs

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200915

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211020

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: 20211221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220103