JP4381459B1 - 情報処理装置、粒度調整方法およびプログラム - Google Patents

情報処理装置、粒度調整方法およびプログラム Download PDF

Info

Publication number
JP4381459B1
JP4381459B1 JP2008169084A JP2008169084A JP4381459B1 JP 4381459 B1 JP4381459 B1 JP 4381459B1 JP 2008169084 A JP2008169084 A JP 2008169084A JP 2008169084 A JP2008169084 A JP 2008169084A JP 4381459 B1 JP4381459 B1 JP 4381459B1
Authority
JP
Japan
Prior art keywords
execution
basic module
basic
modules
unit
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
JP2008169084A
Other languages
English (en)
Other versions
JP2010009395A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008169084A priority Critical patent/JP4381459B1/ja
Priority to US12/419,114 priority patent/US7788672B2/en
Application granted granted Critical
Publication of JP4381459B1 publication Critical patent/JP4381459B1/ja
Publication of JP2010009395A publication Critical patent/JP2010009395A/ja
Expired - Fee Related 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】並列実行されるプログラムの粒度調整を実行時において効率的に実施することを可能とする情報処理装置を提供する。
【解決手段】ランタイムライブラリ200の並列粒度調整部230は、各直列基本モジュールの実行時、基本モジュール負荷測定部233およびランタイム負荷測定部234により各種実行時間を測定してプロファイル情報収集部231にて管理し、このプロファイル情報収集部231にて管理された測定情報に基づいた粒度調整を実行する。そして、投機実行制御部232は、空き状態の実行ユニットが存在する時、先行ノードが完了していない待機状態の直列基本モジュールを、本来の実行プログラム100用とは無関係に、空き状態のコア11に対して別途割り当てて試験的に実行させ、基本モジュール負荷測定部233およびランタイム負荷測定部234による各種実行時間の測定を行わせる。
【選択図】 図9

Description

この発明は、CPUコアを複数内蔵するCPUを搭載するコンピュータや、複数のCPUを搭載するコンピュータ等に適用して好適なプログラムの粒度調整技術に関する。
近年、ノートブックタイプやデスクトップタイプ等、様々な種類の個人向けコンピュータ(パーソナルコンピュータ)が広く普及している。この種のコンピュータでは、例えば高精細動画像データをソフトウェアによって再生する等、その情報処理能力に対する要求はCPUの性能向上の限界に迫るほどに高まる一方である。
このような事から、例えば複数のCPUを搭載したり、また、最近では、CPUコアを複数内蔵するCPUを搭載するコンピュータが登場してきている。即ち、プログラムを並列処理することで、所要時間の短縮化を図り、以て、コンピュータの性能を向上させるわけである。プログラムの並列処理を効率的に行うための仕組みについては、これまでも種々提案されている(例えば特許文献1等参照)。
特開2005−258920公報
プログラムの並列処理の1つの形態は、プログラム中の各処理単位を実行ユニットに割り当てる(複数のCPUを搭載するコンピュータにおいては、各CPUへの割り当てを行い、CPUコアを複数内蔵するCPUを搭載するコンピュータにおいては、各CPUコアへの割り当てを行う)スケジューラを含むランタイム処理と、各実行ユニット上で動作する処理単位との2つの構成要素から構成される。この時、処理単位の大きさを並列処理の粒度といい、粒度を細かくする方が、並列化の機会を増やすことが可能となるので、並列性能を向上できる。
一方で、この並列処理の粒度が細かすぎると、スケジューラが動作する回数が多くなるため、このオーバーヘッドによって、十分な性能を得られないという問題があった。
この発明は、このような事情を考慮してなされたものであり、並列実行されるプログラムの粒度調整を実行時において効率的に実施することを可能とする情報処理装置、粒度調整方法およびプログラムを提供することを目的とする。
前述の目的を達成するために、この発明の情報処理装置は、複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、を具備し、前記スケジューラは、前記複数の実行ユニットの中にいずれの基本モジュールも割り当てられていない空き状態の実行ユニットが存在した場合、前記実行規則によって他の基本モジュールの実行終了待ちの状態となっている基本モジュールを、前記プログラムの並列実行とは別に、前記空き状態の実行ユニットに対して割り当てて試験的に実行させる投機実行制御手段と、前記基本モジュール自体の処理の実行時間を測定する基本モジュール負荷測定手段と、前記基本モジュールを前記実行ユニットに割り当てる処理の実行時間を測定するランタイム負荷測定手段と、前記基本モジュール負荷測定手段が測定した実行時間および前記ランタイム負荷測定手段が測定した実行時間に基づき、前記実行規則によって前後して実行される2以上の基本モジュールを、前記実行ユニットに対して1組みとして割り当てられるように結合し、または、結合した2以上の基本モジュールを再分割することによる粒度調整を実行する粒度調整手段と、を有することを特徴とする。
この発明によれば、並列実行されるプログラムの粒度調整を実行時において効率的に実施することが可能となる。
以下、図面を参照して、この発明の一実施形態を説明する。
図1は、本実施形態に係る情報処理装置のシステム構成の一例を示す図である。この情報処理装置は、ノートブックタイプやデスクトップタイプ等のいわゆるパーソナルコンピュータとして実現されている。そして、図1に示すように、本コンピュータは、プロセッサ1、主メモリ2およびハードディスク駆動装置(HDD)3を有しており、これらは内部バスを介して相互に接続されている。
プロセッサ1は、HDD3から主メモリにロードされたプログラムを実行制御する中央演算処理装置(CPU)であり、主要部の演算回路(CPUコア)であるコア11を複数内蔵している。
主メモリ2は、プロセッサ1がアクセス可能な、例えば半導体で構成される記憶装置である。一方、HDD3は、本コンピュータにおける補助記憶としての役割を担う、(主メモリ2と比較して)低速大容量の記憶媒体である。
また、図示していないが、プロセッサ1によるプログラムの処理結果等を表示するためのディスプレイや処理データ等を入力するためのキーボードなどの入出力装置が、例えばノートブックタイプの場合はさらに備えられ、また、例えばデスクトップタイプの場合はケーブル等により外部接続される。
コア11を複数内蔵するプロセッサ1を搭載する本コンピュータは、複数のプログラムを並列実行することが可能であり、また、1つのプログラム中の複数の処理を並列実行することも可能である。ここで、図2を参照して、本コンピュータによって実行される並行処理仕様のプログラムの概略構成について説明する。
図2に示すように、本コンピュータによって実行される並行処理仕様の実行プログラム100は、複数の直列基本モジュール101と、この複数の直列基本モジュール101をどのような順序で実行すべきかを定義する並列実行制御記述102とから構成される。
いわゆるマルチスレッド処理では、一般的に、図3に示すように、他のスレッドとの間で(通信を含む)同期を取りながら、即ち、プログラム全体の整合性を保ちながら、各スレッドが処理を進行させていく。よって、同期の待ち合わせが多発すると、期待した並列性能が得られないことも考えられる。
そこで、本実施形態では、図4に示すように、他のモジュールとの同期を取る必要がない、非同期に実行可能な処理単位にプログラムを分割することで、複数の直列基本モジュール101を作成すると共に、この複数の直列基本モジュール101の時系列的な実行規則を定義する並列実行制御記述102を作成する。並列実行制御上、各直列基本モジュール101は、ノードとして表現される。このように、直列基本モジュールとは、他のモジュールと非同期に実行可能な処理単位のモジュールをいう。次に、図5を参照して、並列実行制御記述102について説明する。
図5(A)は、ある直列基本モジュール101を表現したノードの概念図である。図示のように、各直列基本モジュール101は、先行ノードへのリンクと、後続ノードへの結合子とを有するノードとして捉えることができる。並列実行制御記述102は、各直列基本モジュール101それぞれについて、先行ノードへのリンク情報を記すことにより、複数の直列基本モジュール101の実行順序を定義する。図5(B)は、ある直列基本モジュール101に関する並列実行制御記述を例示する図であり、図示のように、それぞれの識別子である直列基本モジュールIDと、その直列基本モジュール101の先行ノードへのリンク情報とが記される。また、その他に、出力バッファタイプやコスト等の情報が併せて記される。
続いて、この複数の直列基本モジュール101と並列実行制御記述102とから構成されるという独自の構成をもつ実行プログラム100を本コンピュータがどのように実行するのかについて説明する。
このような独自の構成をもつ実行プログラム100を並列処理するために、本コンピュータでは、図6に示すランタイムライブラリ200が用意される。このランタイムライブラリ200は、スケジューラとしての機能を備えており、並列実行制御記述102がグラフデータ構造生成情報201として与えられる。並列実行制御記述102は、例えば関数型言語を用いて作成され、トランスレータによってグラフデータ構造生成情報201に変換される。
何らかのデータ入力が行われると、このデータを処理するための直列基本モジュール101をいくつか実行する必要が生じるが、その都度、ランタイムライブラリ200は、グラフデータ構造生成情報201に基づき、グラフデータ構造202を動的に生成・更新していく。グラフデータ構造202は、その時々で適宜に実行されていくノード群の前後関係を示すグラフデータであり、ランタイムライブラリ200は、追加対象のノード間での前後関係は勿論、実行待ちの状態にあるノードとの間の前後関係も考慮して、それらノード群のグラフデータ構造202への追加を行っていく。
また、ランタイムライブラリ200は、あるノードの実行が完了すると、このノードをグラフデータ構造202から削除すると共に、このノードを先行ノードとし、かつ、その他に先行ノードがないか、または、その他の先行ノードがすべて完了している後続ノードの有無を調べて、この条件を満たす後続ノードが存在したら、そのノードをいずれかのコア11に割り当てる。
このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。また、このランタイムライブラリ200は、プロセッサ1が内蔵するコア11の数よりも多くの数のスレッドによって実行する(マルチスレッド)。その結果、図7に示すように、各コア11(各コア11のOS300配下の1スレッドであるランタイムライブラリ200)があたかも自律的に次に実行すべき直列基本モジュール101を見つけ出してくるかのごとく本コンピュータを動作させることができる。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので、図3に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。
ところで、本コンピュータのプロセッサ1が内蔵するコア11の数に対して、直列基本モジュール101の処理単位、つまり並列処理の粒度が細かすぎると、ランタイムライブラリ200の稼働機会、いわゆるオーバヘッドが増えてしまい、実行効率を低下させることになりかねない。この点を考慮して、本実施形態のランタイムライブラリ200は、この並列処理の粒度を実行時に効率的に調整する機能を備える。
より具体的に説明すると、いま、図8(A)に示すような関係にあるノードA〜ノードEの5つのノードが存在するものと想定すると、ランタイムライブラリ200は、例えば図8(B)に示すように、ノードAとノードBとを連結し、ノードC〜ノードEの先行ノードをノードAからノードBに変更する機能を備える。
また、逆に、連結によって並列性が落ちてしまうこともありうる。例えば、処理するべき入力データの性質が変化して、モジュール毎の負荷バランスが変化する場合である。これを考慮して、ランタイムライブラリ200は、図8(B)に示すように連結したノードAとノードBとを、図8(A)に示すように再分割する機能も備える。
図9は、ランタイムライブラリ200の機能ブロック図である。
ランタイムライブラリ200は、図9に示すように、ノード生成部210、グラフ構造解釈実行エンジン220および並列粒度調整部230を有している。
前述した、本ランタイムライブラリ200による、グラフデータ構造生成情報201に基づくグラフデータ構造202の動的な生成・更新と、このグラフデータ構造202を用いたノードのコア11への割り当て制御とは、ノード生成部210およびグラフ構造解釈実行エンジン220とによって実現されている。そして、以下にその詳細を説明する、並列処理されるプログラムの実行時における効率的な粒度調整は、並列粒度調整部230によって実現され、並列粒度調整部230は、プロファイル情報収集部231、投機実行制御部232、基本モジュール負荷測定部233およびランタイム負荷測定部234を有している。
基本モジュール負荷測定部233は、各直列基本モジュール101自体の処理の実行時間(基本モジュール実行時間)を測定する。一方、ランタイム負荷測定部234は、各直列基本モジュール101をコア11に割り当てるためのランタイムライブラリ200による処理の実行時間(ランタイム実行時間)を測定する。そして、プロファイル情報収集部231は、この基本モジュール負荷測定部233およびランタイム負荷測定部234によって得られる測定情報を一元的に管理する。
並列粒度調整部230は、プロファイル情報収集部231によって管理される測定情報に基づき、実行プログラム100の粒度調整を実行する。より具体的には、
(1)基本モジュールの実行時間平均 < ランタイム実行時間、であるとき、粒度を大きくする。
(2)基本モジュールの実行時間平均 >> ランタイム実行時間、であるとき、粒度を小さくする。
という粒度調整を実行する。
ところで、本コンピュータのように、複数のコア11を内蔵するプロセッサ1を搭載する場合、複数の直列基本モジュール101を並列実行することが可能であるので、高速化が図られるわけであるが、すべてのコア11が、常時、いずれかの直列基本モジュール101を実行しているとは限らない。並列実行制御記述102に基づき、直列基本モジュール101の並列実行を矛盾無く進めていくために、ある直列基本モジュール101が、他の直列基本モジュール101の実行終了を待機することがあるからである。
そこで、本コンピュータで動作するランタイムライブラリ200の並列粒度調整部230は、このような事情で発生する空き状態のコア11を、実行プログラム100の粒度調整に活用するようにしたものである。そのために、並列粒度調整部230は、投機実行制御部232を備える。
ここでは、先行ノードがすべて完了している実行可能状態の直列基本モジュール101を先行制約のない直列基本モジュール101と称し、また、先行ノードが完了していない待機状態の直列基本モジュール101を先行制約がある直列基本モジュール101と称することとする。
投機実行制御部232は、空き状態のコア11が存在する場合、先行制約がある直列基本モジュール101を、本来の実行プログラム100用とは無関係に、空き状態のコア11に対して別途割り当てる。入力パラメータは、たとえばテスト用に作成されたデータを予め用意しておいて暫定的に与える。このような結果を考慮しない直列基本モジュール101の実行を、ここでは投機実行と称する。
先行制約のない直列基本モジュール101は、即時にコア11に割り当てられて実行されるので、基本モジュール負荷測定部233による基本モジュール実行時間の測定と、ランタイム負荷測定部234によるランタイム実行時間の測定が行われ、並列粒度調整部230による粒度調整が必要に応じて行われることになる。これに加えて、本コンピュータでは、空き状態のコア11が存在するならば、この空き状態のコア11に対して、先行制約がある直列基本モジュール101が割り当てられて投機実行されるので、基本モジュール負荷測定部233による基本モジュール実行時間の測定と、ランタイム負荷測定部234によるランタイム実行時間の測定が行われ、並列粒度調整部230による粒度調整が必要に応じて行われることになる。
即ち、実行プログラム100の並列実行時において、空き状態のコア11を、当該実行プログラム100の粒度調整に活用することが実現されるわけである。
なお、当然ながら、本来の実行プログラム100の実行は、粒度調整のための投機実行に優先する。そのため、投機実行制御部232は、先行制約がある直列基本モジュール101の投機実行中、いずれかの直列基本モジュール101が先行制約のない直列基本モジュール101となった場合、その実行を優先するために、先行制約がある直列基本モジュール101の投機実行を中止して、そのコア11を解放する。
また、投機実行制御部232は、実行プログラム100の実行が開始された後、すべての直列基本モジュール101が実行されるのを1セットとして、(十分な粒度調整が図られると予測される)指定されたセット数分、各直列基本モジュール101が実行されるまで、この先行制約がある直列基本モジュール101の投機実行を継続する。ランタイムライブラリ200は、並列粒度調整部230の投機実行制御部232についての有効/無効の設定を受け付け可能であり、例えば(コア11数の異なるプロセッサ1への)プロセッサ1の交換時等に、投機実行制御部232を有効に設定するといった運用を行うことができる。
次に、図10乃至図12を参照して、本コンピュータによる実行プログラム100の実行時における粒度調整に関わる動作手順について説明する。
ランタイムライブラリ200は、まず、グラフ構造解釈実行エンジン220が、グラフデータ構造202中において先行制約のない直列基本モジュール101をコア11に対して割り当てる(図10ステップA1)。また、ランタイムライブラリ200は、空き状態のコア11が発生していないかを監視し(図10ステップA2)、空き状態のコア11が存在しなければ(図10ステップA2のNO)、空き状態のコア11が発生するまで待機する(図10ステップA3)。
一方、空き状態のコア11が存在した場合(図10ステップA2のYES)、並列粒度調整部230の投機実行制御部232は、指定されたセット数分、各直列基本モジュール101が実行される前であれば(図10ステップA4のNO)、図12に詳細な流れが示される投機実行による粒度調整を実行する(図10ステップA5)。
例えば図11に示すようなグラフデータ構造202が存在する場合、直列基本モジュール101(2)は、直列基本モジュール101(1)の実行終了という先行制約があり、直列基本モジュール101(3)は、直列基本モジュール101(1)および直列基本モジュール101(2)双方の実行終了という先行制約がある。従って、直列基本モジュール101(1)の実行中においては、空き状態のコア11が存在しても、直列基本モジュール101(2)および直列基本モジュール101(3)のいずれも実行を開始することはできない。
このような時、投機実行制御部232は、直列基本モジュール101(2)および直列基本モジュール101(3)のうち、本セット中にまだ実行されていない直列基本モジュール101があれば、その直列基本モジュール101を投機実行させるべく、空き状態のコア11に割り当てる(図12のステップB1)。この投機実行により、基本モジュール負荷測定部233による基本モジュール実行時間の測定と、ランタイム負荷測定部234によるランタイム実行時間の測定が行われるので、並列粒度調整部230は、基本モジュール実行時間がランタイム実行時間に対して想定時間外であったならば(図12のステップB2のYES)、この投機実行した直列基本モジュール101について並列粒度調整を実行する(図12ステップB3)。
また、ランタイムライブラリ200は、先行制約のない直列基本モジュール101へと移行した直列基本モジュール101がないかを監視し(図10ステップA6)、存在した場合(図10ステップA6のYES)、投機実行を中止して、この先行制約のない直列基本モジュール101の実行を開始する(図10ステップA1)。一方、存在しない場合には(図10ステップA6のNO)、並列粒度調整部230は、本セットにおいてすべての直列基本モジュール101が実行されたかを調べ(図10ステップA7)、すべて実行されていれば(図10ステップA7のYES)、残セット数を1デクリメントする(図10ステップA8)。そして、並列粒度調整部230は、指定されたセット数分、各直列基本モジュール101が実行されたかを再度調べ(図10ステップA4)、実行される前であれば(図10ステップA4のYES)、この先行制約がある直列基本モジュール101の投機実行を継続する。
なお、並列粒度調整部230は、ノードの結合を行う場合、結合するノードを属性情報として持つような新たなグラフデータ構造生成情報201を生成する。新たに生成する情報は、2つの直列基本モジュール101を同一のコア11上で連続して実行させるためのノードに関する情報であり、そのリンク情報は、2つのノードのリンク情報をマージしたものとする。即ち、ここで新たに作成されるノードは、2つの直列基本モジュール101を1つのモジュールと見なす論理的な直列基本モジュール101に対応するものである。
この時、並列粒度調整部230は、これら2つのノードを参照していた別のノードのリンク情報を、新たに生成したノードに書き換える。これにより、次回以降、ノード生成部210は、この新たに生成されたグラフデータ構造生成情報201を使って、グラフデータ構造202へのノードの追加を行うことになる。
また、連結したノードに対応する直列基本モジュール101が同一のコア11上で連続実行されることになることから、並列粒度調整部230は、この範囲で、命令のスケジューリングや変数のレジスタへの再割り当て、その他のコンパイラの最適化を行い、これらが効率よく処理されるための変換を併せて実行する。
この並列粒度調整部230の働きにより、ランタイムライブラリ200は、実行プログラム100の実行時において、効率的に、その粒度を自己調整することを実現する。そして、(並列処理の粒度が実行時に自己調整される)本手法によれば、実行プログラム100の作成時には、粒度を意識することなく、各直列基本モジュール101を、ただ十分小さな処理単位に分割すれば良い。よって、コア11の数毎に実行プログラム100を作り直したり、チューニングする手間を一切無くすことができる。
なお、以上では、本コンピュータが、コア11を複数内蔵するプロセッサ1を搭載する場合を例に本手法を説明したが、本手法は、複数のプロセッサ1を搭載するいわゆるマルチプロセッサコンピュータにおいても当然に適用できる。
また、投機実行制御部232が、例えば入力パラメータが変更された直列基本モジュール101のみを投機実行の対象とするように変更することも容易に可能である。
つまり、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
この発明の実施形態に係る情報処理装置のシステム構成の一例を示す図 本実施形態の情報処理装置によって実行される並行処理仕様のプログラムの概略構成を説明するための図 一般的なマルチスレッド処理を示す図 本実施形態の情報処理装置によって実行されるプログラムを構成する直列基本モジュールと並列実行制御記述との関係を示す図 本実施形態の情報処理装置によって実行されるプログラムの並列実行制御記述を説明するための図 本実施形態の情報処理装置上で動作するランタイムライブラリが行うプログラムの並列処理制御を説明するための図 本実施形態の情報処理装置上におけるランタイムライブラリの動作状態を示す図 本実施形態の情報処理装置上で動作するランタイムライブラリが実施するノードの結合を説明するための図 本実施形態の情報処理装置上で動作するランタイムライブラリの機能ブロックを示す図 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理最適化の動作の流れを示す第1のフローチャート 本実施形態の情報処理装置上で動作するランタイムライブラリによる直列基本モジュールの投機実行の具体例を示す図 本実施形態の情報処理装置上で動作するランタイムライブラリが実行する並列処理最適化の動作の流れを示す第2のフローチャート
符号の説明
1…プロセッサ、2…主メモリ、3…ハードディスク駆動装置(HDD)、11…コア、100…実行プログラム、101…直列基本モジュール、102…並列実行制御記述、200…ランタイムライブラリ、201…グラフデータ構造生成情報、202…グラフデータ構造、210…ノード生成部、220…グラフ構造解釈実行エンジン、230…並列粒度調整部、231…プロファイル情報収集部、232…投機実行制御部、233…基本モジュール負荷測定部、234…ランタイム負荷測定部。

Claims (9)

  1. 複数の実行ユニットと、
    他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラと、
    を具備し、
    前記スケジューラは、
    前記複数の実行ユニットの中にいずれの基本モジュールも割り当てられていない空き状態の実行ユニットが存在した場合、前記実行規則によって他の基本モジュールの実行終了待ちの状態となっている基本モジュールを、前記プログラムの並列実行とは別に、前記空き状態の実行ユニットに対して割り当てて試験的に実行させる投機実行制御手段と、
    前記基本モジュール自体の処理の実行時間を測定する基本モジュール負荷測定手段と、
    前記基本モジュールを前記実行ユニットに割り当てる処理の実行時間を測定するランタイム負荷測定手段と、
    前記基本モジュール負荷測定手段が測定した実行時間および前記ランタイム負荷測定手段が測定した実行時間に基づき、前記実行規則によって前後して実行される2以上の基本モジュールを、前記実行ユニットに対して1組みとして割り当てられるように結合し、または、結合した2以上の基本モジュールを再分割することによる粒度調整を実行する粒度調整手段と、
    を有することを特徴とする情報処理装置。
  2. 前記投機実行制御手段は、前記基本モジュールの試験的な実行中、いずれかの基本モジュールが待機状態から実行可能状態に移行した場合、前記基本モジュールの試験的な実行を中止して実行ユニットを解放することを特徴とする請求項1記載の情報処理装置。
  3. 前記投機実行制御手段は、各基本モジュールが指定された回数実行され、前記基本モジュール負荷測定手段による実行時間の測定が各基本モジュール毎に前記指定された回数実行されるまで、前記基本モジュールの試験的な実行を継続することを特徴とする請求項1記載の情報処理装置。
  4. 前記投機実行制御手段は、入力パラメータが変更された基本モジュールを、前記基本モジュールの試験的な実行の対象とすることを特徴とする請求項1記載の情報処理装置。
  5. 前記複数の実行ユニットは、1つのCPUに内蔵されるCPUコアであることを特徴とする請求項1記載の情報処理装置。
  6. 前記複数の実行ユニットは、それぞれが個別に構成された複数のCPUであることを特徴とする請求項1記載の情報処理装置。
  7. 前記プログラムを記憶する記憶媒体を備え、
    前記複数の実行ユニットは、前記記憶媒体から読み出した前記プログラムの前記基本モジュールを実行する、
    ことを特徴とする請求項1記載の情報処理装置。
  8. 他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、複数の実行ユニットによって並列実行する、前記実行規則に基づき前記複数の実行ユニットに対する前記複数の基本モジュールの割り当てを制御するスケジューラを有する情報処理装置における粒度調整方法であって、
    前記スケジューラが、
    前記複数の実行ユニットの中にいずれの基本モジュールも割り当てられていない空き状態の実行ユニットが存在した場合、前記実行規則によって他の基本モジュールの実行終了待ちの状態となっている基本モジュールを、前記プログラムの並列実行とは別に、前記空き状態の実行ユニットに対して割り当てて試験的に実行させ、
    前記基本モジュール自体の処理の実行時間を測定し、
    前記基本モジュールを前記実行ユニットに割り当てる処理の実行時間を測定し、
    前記測定した2つの実行時間に基づき、前記実行規則によって前後して実行される2以上の基本モジュールを、前記実行ユニットに対して1組みとして割り当てられるように結合し、または、結合した2以上の基本モジュールを再分割することによる粒度調整を実行する、
    ことを特徴とする粒度調整方法。
  9. 他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、複数の実行ユニットによって並列実行する情報処理装置を、
    前記複数の実行ユニットの中にいずれの基本モジュールも割り当てられていない空き状態の実行ユニットが存在した場合、前記実行規則によって他の基本モジュールの実行終了待ちの状態となっている基本モジュールを、前記プログラムの並列実行とは別に、前記空き状態の実行ユニットに対して割り当てて試験的に実行させる投機実行制御手段、
    前記基本モジュール自体の処理の実行時間を測定する基本モジュール負荷測定手段、
    前記基本モジュールを前記実行ユニットに割り当てる処理の実行時間を測定するランタイム負荷測定手段、
    前記基本モジュール負荷測定手段が測定した実行時間および前記ランタイム負荷測定手段が測定した実行時間に基づき、前記実行規則によって前後して実行される2以上の基本モジュールを、前記実行ユニットに対して1組みとして割り当てられるように結合し、または、結合した2以上の基本モジュールを再分割することによる粒度調整を実行する粒度調整手段、
    として機能させるプログラム。
JP2008169084A 2008-06-27 2008-06-27 情報処理装置、粒度調整方法およびプログラム Expired - Fee Related JP4381459B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008169084A JP4381459B1 (ja) 2008-06-27 2008-06-27 情報処理装置、粒度調整方法およびプログラム
US12/419,114 US7788672B2 (en) 2008-06-27 2009-04-06 System for controlling assignment of a plurality of modules of a program to available execution units based on speculative executing and granularity adjusting

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008169084A JP4381459B1 (ja) 2008-06-27 2008-06-27 情報処理装置、粒度調整方法およびプログラム

Publications (2)

Publication Number Publication Date
JP4381459B1 true JP4381459B1 (ja) 2009-12-09
JP2010009395A JP2010009395A (ja) 2010-01-14

Family

ID=41449237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008169084A Expired - Fee Related JP4381459B1 (ja) 2008-06-27 2008-06-27 情報処理装置、粒度調整方法およびプログラム

Country Status (2)

Country Link
US (1) US7788672B2 (ja)
JP (1) JP4381459B1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678775B1 (en) * 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US8776030B2 (en) * 2008-04-09 2014-07-08 Nvidia Corporation Partitioning CUDA code for execution by a general purpose processor
US9390130B2 (en) * 2008-12-12 2016-07-12 Hewlett Packard Enterprise Development Lp Workload management in a parallel database system
KR101662769B1 (ko) * 2010-03-09 2016-10-05 삼성전자주식회사 고속 정렬 장치 및 방법
US9183109B2 (en) * 2010-05-25 2015-11-10 Intel Corporation Method and system for analyzing the performance of multi-threaded applications
US9128747B2 (en) * 2012-03-20 2015-09-08 Infosys Limited Methods and systems for optimizing the performance of software applications at runtime
US8893080B2 (en) * 2012-08-15 2014-11-18 Telefonaktiebolaget L M Ericsson (Publ) Parallelization of dataflow actors with local state
US9740529B1 (en) * 2013-12-05 2017-08-22 The Mathworks, Inc. High throughput synchronous resource-constrained scheduling for model-based design
US10802929B2 (en) 2018-01-03 2020-10-13 Tesla, Inc. Parallel processing system runtime state reload

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US6487577B1 (en) * 1998-06-29 2002-11-26 Intel Corporation Distributed compiling
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
JP2002049603A (ja) 2000-08-03 2002-02-15 Toshiba Corp 動的負荷分散方法及び動的負荷分散装置
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US6854048B1 (en) * 2001-08-08 2005-02-08 Sun Microsystems Speculative execution control with programmable indicator and deactivation of multiaccess recovery mechanism
JP2003323304A (ja) 2002-04-30 2003-11-14 Fujitsu Ltd 投機タスク生成方法および装置
JP3983619B2 (ja) 2002-07-30 2007-09-26 大日本印刷株式会社 並列処理システム、サーバ、並列処理方法、プログラム、及び、記録媒体
US6970985B2 (en) * 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
JP2004078617A (ja) 2002-08-19 2004-03-11 Nec Corp アプリケーションの並列処理方法
US20040268095A1 (en) * 2003-06-30 2004-12-30 Tatiana Shpeisman Efficient implementation of null reference check
US7559062B2 (en) * 2003-10-30 2009-07-07 Alcatel Lucent Intelligent scheduler for multi-level exhaustive scheduling
US20050144602A1 (en) * 2003-12-12 2005-06-30 Tin-Fook Ngai Methods and apparatus to compile programs to use speculative parallel threads
JP2005258920A (ja) 2004-03-12 2005-09-22 Fujitsu Ltd マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置
KR100806274B1 (ko) * 2005-12-06 2008-02-22 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
JP2007226589A (ja) * 2006-02-24 2007-09-06 Oki Electric Ind Co Ltd プログラム変換システム
US8302082B2 (en) * 2006-06-07 2012-10-30 Intel Corporation Methods and apparatus to provide a managed runtime environment in a sequestered partition

Also Published As

Publication number Publication date
JP2010009395A (ja) 2010-01-14
US20090328049A1 (en) 2009-12-31
US7788672B2 (en) 2010-08-31

Similar Documents

Publication Publication Date Title
JP4381459B1 (ja) 情報処理装置、粒度調整方法およびプログラム
JP4621786B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
US10095657B2 (en) Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP6319880B2 (ja) 並列性の抽出方法及びプログラムの作成方法
US8074211B2 (en) Computer program, multiprocessor system, and grouping method
JP4491026B2 (ja) 情報処理装置、プログラム処理方法及びコンピュータプログラム
JP2011070256A (ja) デバッガおよびプログラム
JP2013524386A (ja) ランスペース方法、システムおよび装置
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
US20210319298A1 (en) Compute-based subgraph partitioning of deep learning models for framework integration
WO2020121840A1 (ja) 演算制御装置
JP4908363B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
US20120137300A1 (en) Information Processor and Information Processing Method
Li et al. XeFlow: Streamlining inter-processor pipeline execution for the discrete CPU-GPU platform
US20210319369A1 (en) Multi-level caching for dynamic deep learning models
US11941437B2 (en) Graph partitioning to exploit batch-level parallelism
JP7397179B2 (ja) 階層化オブジェクトメモリ配置のためのランタイム装置の管理
WO2019188182A1 (ja) プリフェッチコントローラ
JP2010113529A (ja) 変換装置、プログラムおよび変換方法
WO2019188171A1 (ja) コード生成方法、コード生成装置
JP5017396B2 (ja) 情報処理装置およびプログラムの検証方法

Legal Events

Date Code Title Description
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: 20090825

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090915

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131002

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees