JP4621786B2 - 情報処理装置、並列処理最適化方法およびプログラム - Google Patents

情報処理装置、並列処理最適化方法およびプログラム Download PDF

Info

Publication number
JP4621786B2
JP4621786B2 JP2009110090A JP2009110090A JP4621786B2 JP 4621786 B2 JP4621786 B2 JP 4621786B2 JP 2009110090 A JP2009110090 A JP 2009110090A JP 2009110090 A JP2009110090 A JP 2009110090A JP 4621786 B2 JP4621786 B2 JP 4621786B2
Authority
JP
Japan
Prior art keywords
thread
tid
executed
basic module
basic
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
JP2009110090A
Other languages
English (en)
Other versions
JP2010257428A (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 JP2009110090A priority Critical patent/JP4621786B2/ja
Priority to US12/768,538 priority patent/US8255911B2/en
Publication of JP2010257428A publication Critical patent/JP2010257428A/ja
Application granted granted Critical
Publication of JP4621786B2 publication Critical patent/JP4621786B2/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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、例えばCPUコアを複数内蔵するCPUを搭載するコンピュータや、複数のCPUを搭載するコンピュータ等に適用して好適なプログラムの並列処理制御技術に関する。
近年、ノートブックタイプやデスクトップタイプ等、様々な種類の個人向けコンピュータ(パーソナルコンピュータ)が広く普及している。この種のコンピュータでは、例えば高精細動画像データをソフトウェアによって再生する等、その情報処理能力に対する要求はCPUの性能向上の限界に迫るほどに高まる一方である。
このような事から、例えば複数のCPUを搭載したり、また、最近では、CPUコアを複数内蔵するCPUを搭載するコンピュータが登場してきている。即ち、プログラムを並列処理することで、所要時間の短縮化を図り、以て、コンピュータの性能を向上させるわけである。プログラムの並列処理を効率的に行うための仕組みについては、これまでも種々提案されている。
例えば、特許文献1は、(ヘテロジニアス)マルチプロセッサの制御方法において、タスクを第1のプロセッサにおける処理コストと転送コストを加算した値と、第2のプロセッサにおける処理コストと転送コストを加算した値とを比較して、タスクをプロセッサに割り当てることを開示している。
特開2007−328415号公報
上述した文献は、コンパイラの技術を開示している。現在発売されているマルチプロセッサ中のCPUコアの数は一定ではない。CPUコアの数に応じてコンパイルを行ったプログラムを提供する必要がある。
この発明は、プログラムの実行中に動的にプログラムの並列処理を効率化することを可能とする情報処理装置、並列処理最適化方法およびプログラムを提供することを目的とする。
一例に係わる情報処理装置は、それぞれ識別子が与えられた複数のスレッドを実行する複数の実行ユニットと、他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットが実行するスレッドに対する前記複数の基本モジュールの動的な割り当てを制御するスケジューラと、を具備し、
前記スケジューラは、前記実行ユニットによって実行済みの基本モジュールを実行したスレッドの識別子を管理する手段と、前記実行ユニットによって実行可能な基本モジュールを実行可能集合として管理する手段と、前記実行可能集合中の各基本モジュールについて、前記基本モジュールがデータを参照する前記実行済みの基本モジュールの計算結果のデータサイズおよび当該実行済みの基本モジュールを実行したスレッドの識別子に基づいて、実行済みの基本モジュールを実行したスレッドから複数のスレッドから選ばれる一つのスレッドtidにデータを転送した場合の転送コストをそれぞれ計算するコスト計算手段と、前記転送コストが最小の基本モジュールを前記スレッドtidに割り当てる基本モジュールとして選択する選択手段とを具備し、
前記転送コストは、
Figure 0004621786
によって演算される、
ここで、Pred(c)は前記実行可能集合中の基本モジュールから選ばれる一つの基本モジュールcがデータを参照する基本モジュールnの集合を示し、size(n)は前記基本モジュールnによる計算結果のデータサイズ、trCost(n→tid,tid)は前記基本モジュールnを実行したスレッドn→tidからスレッドtidへのデータ転送コストである、
ことを特徴とする。
本発明によれば、プログラムの実行中に動的にプログラムの並列処理を効率化することを可能とする。
本発明の一実施形態に係る情報処理装置のシステム構成の一例を示す図。 本実施形態の情報処理装置によって実行される並行処理仕様のプログラムの概略構成を説明するための図。 一般的なマルチスレッド処理を示す図。 本実施形態の情報処理装置によって実行されるプログラムを構成する直列基本モジュールと並列実行制御記述との関係を示す図。 本実施形態の情報処理装置によって実行されるプログラムの並列実行制御記述を説明するための図。 本実施形態の情報処理装置上で動作するランタイムライブラリが行うプログラムの並列処理制御を説明するための図。 本実施形態の情報処理装置上におけるランタイムライブラリの動作状態を示す図。 本実施形態の情報処理装置上におけるランタイムライブラリおよび基本モジュールの動作状態を示す図。 オペレーティングシステム(OS)によるスレッドのスケジューリング粒度と、並列ランタイム環境がスケジュールするタスクの粒度の違いを示す図。 並列実行環境が管理するグラフデータ構造を示す図。 ラインタイムライブラリの構成を示すブロック図。 Ready集合からノードを選択する処理の手順を示すフローチャート。 スレッド毎にReady集合を持つ場合の登録処理の手順を示す図。 スレッド毎にReady集合を持つ場合の選択処理の手順を示す図。 データ転送サイズを視覚化したグラフデータ構造を示す図。 プロセッサ間のデータ転送コストを視覚化した図。
本発明の実施の形態を以下に図面を参照して説明する。
図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はコンピュータ情報処理装置から読み取り可能な記憶媒体であるHDD3に格納される。ハードディスクドライブ3から主メモリにロードされたランタイムライブラリ200は、プロセッサ1によって実行される。このランタイムライブラリ200は、スケジューラとしての機能を備えており、並列実行制御記述102がグラフデータ構造生成情報201として与えられる。並列実行制御記述102は、例えば関数型言語を用いて作成され、トランスレータによってグラフデータ構造生成情報201に変換される。
何らかのデータ入力が行われると、このデータを処理するための直列基本モジュール101をいくつか実行する必要が生じるが、その都度、ランタイムライブラリ200は、グラフデータ構造生成情報201に基づき、複数のノードとノード間を接続するエッジによって示すグラフデータ構造202を動的に生成・更新していく。グラフデータ構造202は、その時々で適宜に実行されていくノード群の前後関係を示すグラフデータであり、ランタイムライブラリ200は、追加対象のノード間での前後関係は勿論、実行待ちの状態にあるノードとの間の前後関係も考慮して、それらノード群のグラフデータ構造202への追加を行っていく。
また、ランタイムライブラリ200は、あるノードの実行が完了すると、このノードをグラフデータ構造202から削除すると共に、このノードを先行ノードとし、かつ、その他に先行ノードがないか、または、その他の先行ノードがすべて完了している後続ノードの有無を調べて、この条件を満たす後続ノードが存在したら、そのノードをいずれかのコア11に割り当てる。
このランタイムライブラリ200の働きにより、並列実行制御記述102に基づく複数の直列基本モジュール101の並列実行が矛盾無く進められていく。また、このランタイムライブラリ200は、プロセッサ1が内蔵するコア11の数よりも多くの数のスレッドによって実行する(マルチスレッド)。その結果、図7および図8に示すように、各コア11(各コア11のOS300配下の1スレッドであるランタイムライブラリ200)があたかも自律的に次に実行すべき直列基本モジュール101を見つけ出してくるかのごとく本コンピュータを動作させることができる。スレッド間の排他制御は、ランタイムライブラリ200による、グラフデータ構造202からのノードの選択と、当該グラフデータ構造の更新とのみに止まるので、図3に示した一般的なマルチスレッド処理と比較して、高い並列性能を得ることを実現する。
図7には、コア11が4つの場合を示している。4つのコア中のコア(2)11がランタイムライブラリ200を実行し、ランタイムライブラリ200が複数の基本モジュール101の中から基本モジュールを呼び出すさまを模式的に示している。
また、図8において、五角形の図形はランタイムライブラリ200を示し、太い矢印線は基本モジュールを示している。太い矢印線の長さは基本モジュールの実行時間を示している。
次に、図9に、オペレーティングシステム(OS)によるスレッドのスケジューリング粒度と、ランタイムライブラリ200がスケジュールするタスクの粒度の違いを示す。粒度とは、処理単位の大きさのことである。粒度を細かくする方が、並列化の機会を増やすことが可能となるので、並列性能を向上することができる。
ランタイムライブラリ200は、基本モジュール(タスク)をそれぞれのスレッドを識別するためのスレッドidが割り当てられているスレッドに割り当てることによって、プログラムを実行する。
OSは、プロセスの切替えを行なうための、CPU、実行時間の最小単位であるタイムクォンタムごとにスレッドを再スケジュールする。これはスレッド切換えのオーバーヘッドを考慮して十分大きなタイムクォンタムで処理する。一方で、ランタイムライブラリ200が提供するタスクの並列スケジューリングは、割り込みを必要とせず、細かい粒度でのスケジューリングが可能である。ランタイムライブラリ200がタスクを細かく分けることによって、より並列化のチャンスが多くなる。このとき、ランタイムライブラリ200のタスクスケジューラは、タスク間のデータの移動が、できるだけコアをまたがらないように制御することが出来れば、タスク内で参照するデータアクセス時にキャッシュミスを抑えることが可能である。
しかし、通常はアプリからコア番号を得るには特殊な処理を必要とするし、動いている間にスレッドが別のコアに移動することもあるので、アプリから実行コアを特定するのは困難が伴う。そこで、出来るだけコア間でデータ転送が起こらないようにすることを、出来るだけスレッド間でデータ転送が起きないようにすることで代用する。
この方針でも性能に大差がないことは、スレッドとタスクのスケジュール頻度の違いによって保障される。仮にタスクの粒度が大きい場合においては、各スレッドを出来るだけ1つのコア上で動き続けさせるアフィニティの指定を行えば、“スレッド間でのデータの転送を出来るだけ減らす”ということで、コア間のデータ転送を減らすという目的を達成することができる。
図10(A)に、ランタイムライブラリ200が管理するグラフデータ構造を示す。ランタイムライブラリ200は、このグラフデータ構造(データフロータスクグラフ)を生成して、タスクに相当するノードをプロセッサに割り当てることによって、並列処理を実行する。実際には、プログラム起動時に必要な数だけスレッドを起動し、各スレッドが、このグラフデータ構造の中から実行可能なノードをReady集合(実行可能集合)のなかから選択してノードに対応するタスクを実行し、タスク終了時にノードの依存関係に従って、実行可能となるノードをReady集合に挿入すると同時に、データフローに繋ぐべき新たなノードを生成することを繰り返す。
本実施形態は、このReady集合の中からノードを選択する際に、各プロセッサのキャッシュやローカルメモリが保持するデータを、できるだけコア間で移動することがないように、ノードを選択する方法を提供する。
次に、ノード選択時の転送コストを計算するための式を式(1)に示す。
Figure 0004621786
式(1)の意味を図10(B)を参照して説明する。図10(B)は、図10(A)のグラフデータ構造の一部を切り出したグラフデータ構造である。図10(B)に示すように、ノードa、ノードb、ノードc、およびノードdがある。ノードcがReady集合の中から選択されるカレントノードである。
ノードnは、カレントノードcがデータを参照するノードの集合Pred(c)である。図10(B)に示すグラフデータ構造の場合、ノードnはノードaおよびノードbであり、Pred(c)はPred(c)={a,b}と記述される。size(n)は、ノードcが参照するノードnの計算結果のデータサイズであり、グラフデータ構造202中のノードにそれぞれ定義されている。
Cost(tid, c)は、被割り当て対象であるスレッドtidに、ノードcを割り当てたときの、ノードcの入力データの転送コストである。trCost(n→tid, tid)は、ノードnを実行したスレッドn→tidからスレッドtidへのデータ転送コストであり、スレッドn→tidとスレッドtidが等しい場合に、trCostは0となる。また、スレッドn→tidとスレッドtidとが異なる場合に、trCostを1とする。
OSのスレッドスケジューラがコアへの割り当てにおいてアフィニティを指定できれば、コアの階層構造に応じて、trCostの値を、各スレッドが動作するコアとコアの間の転送コストとして定義することもできる。
図11は、ランタイムライブラリ200の機能ブロック図である。
ランタイムライブラリ200は、図11に示すように、実行スレッド管理部210、Ready集合管理部222、転送コスト計算部223、ノード選択部225、およびノード割り当て部224を有している。
ノード割り当て部224は、後述するノード選択部225から指示されたノードをスレッドに対して割り当てる処理を実行する。実行ノード管理部221は、ノード割り当て部224がスレッドに割り当てたノードおよび割り当てられたスレッドを示すスレッドidを管理する。より具体的には、グラフデータ構造202中の実行済みのノードに対して、ノードを実行したスレッドを示すスレッドidを割り当てる。
Ready集合管理部222は、グラフデータ構造202を参照することによって、処理が可能なノードを検出し、検出したノードをReady集合に加える。また、Ready集合管理部222は、Ready集合中の処理済みのノードをReady集合から削除する。
転送コスト計算部223は、前述した式(1)の計算を行い、計算結果をノード選択部225に通知する。ノード選択部は、通知された転送コストが最小なノードを選択し、選択したノードをスレッドに割り当てるべきノードとしてノード割り当て部224に通知する。
図12のフローチャートを参照して、Ready集合からスレッドに割り当てるノード(基本モジュール)を選択する処理の手順を示す。
まず、ノード(基本モジュール)の処理が終了したらノードを実行していた転送コスト計算部223は、ノードを実行していたスレッドのスレッドid(=スレッドtid)を取得する(ステップS11)。そして、転送コスト計算部223は、グラフデータ構造202からReady集合に含まれるノードを検出し、検出された各ノードに対してCost(tid, c)を計算する。転送コスト計算部223は、計算結果をノード割り当て部224に通知する。ノード選択部225は、計算結果に基づいてCost(tid, c)が最小になるノードcをスレッドtidに割り当てるべきノードとして選択する(ステップS12)。ノード割り当て部224は、選択されたノードcをスレッドtidに割り当てる。
なお、このときランタイムライブラリ200が管理するグラフデータ構造のノード情報に、スレッドtidのサイズ分の配列を用意しておき、Cost(tid, c)の計算結果をキャッシュしておく。キャッシュに計算結果があれば、Cost(tid, c)の計算を何度も行う必要がない。それでも別のスレッドがReady集合を探すたびに、式(1)の計算を行う必要がある。
先にReady集合は全てのスレッドに対して管理を行っていた。しかし、スレッド毎にReady集合の管理を行っても良い。図13、図14のフローチャートを参照して、
スレッド毎にReady集合を管理する場合のReady集合からスレッドに割り当てるノード(基本モジュール)を選択する処理の手順を説明する。
先ず、図13のフローチャートを参照して、新たにReadyとなったノードをReady集合に登録する処理を説明する。先ず、転送コスト計算部223は、グラフデータ構造202から新たにReady集合に登録されたノードcの情報を取得する(ステップS21)。次ぎに、転送コスト計算部223は、実行中の全てのスレッドidに対して、Cost(tid, c)を計算する。転送コスト演算/選択部223は、Cost(tid, c)が最小となるスレッドtidを選択する(ステップS22)。なお、Cost(tid, c)を計算する場合、すべてのスレッドidについて最小値を計算する代わりに、ノードcが参照しているノードを計算したスレッドidのみについて計算することで代用することができる。次に、Ready集合管理部222は、ステップS22において選択されたスレッドtidのReady集合にノードcを登録する(ステップS23)。
次に、図14を参照してスレッドtidが登録されたReady集合から次に処理するノードを選択する処理の手順を説明する。先ず、ノード選択部225は、基本モジュールが終了したら基本モジュールを実行していたスレッドid(=スレッドtid)を取得する(ステップS31)。次に、ノード選択部225は、スレッドtidのReady集合中にノードが登録されているか否かを判別する(ステップS32)。ノードが登録されている場合(ステップS32のNo)、ノード選択部225は、スレッドtidのReady集合からノードを選択する(ステップS33)。ノードが登録されていない場合(ステップS32のYes)、ノード選択部225は、trCost(m→tid, tid)が最も小さいスレッドm→tidのReady集合からノードを集合する(ステップS34)。
なお、ランタイムライブラリ200は、ノードの処理にかかった実行時間を記録し、ノード単位でノードを呼び出したスレッドに対する実行時間を管理すると良い。そして、ランタイムライブラリ200は、同一のノードにおいて、自身のスレッドが管理するノードの実行時間と、異なるスレッドが管理するReady集合から呼び出されたノードの実行時間との時間差を求め、求められた時間差に比例する値でデータサイズsize(n)を補正することが好ましい。この処理は、反復して実行されるノードに対して有用である。実質的な処理にかかる時間が同一であるとすると、求められた時間差は、スレッド間のデータの転送にかかった時間に等しいと考えられる。よって、データの転送時間とデータサイズが比例すると考えることによって、データサイズがより正確なサイズになる。その結果、式(1)で求められる転送コストがより実処理を反映するようになる。
これらの処理を実行するために、ランタイムライブラリ200は、コア毎に基本モジュールの実行時間を記録する実行時間記録モジュールと、基本モジュール毎にコアに応じた実行時間を管理する実行時間管理モジュールと、実行時間管理手段が管理する実行時間からコア間の実行時間の差を演算する実行時間差演算モジュールと、実行時間差演算モジュールが演算した時間差からデータサイズ補正モジュールとを有することが好ましい。また、ランタイムライブラリ200は、基本モジュールを呼び出した時間(ランタイムライブラリ200が呼び戻された時間)と、基本モジュールの処理が終了し、再度ランタイムライブラリ200が呼び出された時間の差によって実行時間を求める。なお、ランタイムライブラリ200は、時間差を得るために、故意に異なるスレッドが管理するReady集合からノードを呼び出しても良い。
以上説明した処理によってスレッド毎に最適なノードを選択することができ、プログラムの実行中に動的にプログラムの並列処理を効率化することができる。
図15および図16に、ランタイムライブラリ200によって、意図的にアフィニティを保つ場合、保たない場合の処理を行い、その差分を各ノード間のデータ転送コストとしてビジュアルに表示する例を示す。
図15は、データ転送サイズを視覚化したグラフデータ構造を示している。図15に示すように、ノード間を接続するエッジの太さを転送データサイズに応じて変えている。また、65は、プロセッサ間のデータ転送コストを視覚化している。
このような表示により、プログラマはどのタスクとタスクの間でデータのやり取りが多いかを直感的に理解することが可能となり、並列処理のプログラムの分割方法のチューニング、見直しの作業を効率よく進めることが可能となる。逆に、ノード間の転送データサイズが事前にわかる場合は、この差分データを転送データサイズで割った値を使って、プロセッサ間の転送コストの違いを視覚化することが可能である。
また、意図的に、同一スレッドに割り当てた場合と、別スレッドに割り当てた場合の性能差を測定することによって、タスク間のデータの転送サイズを見積もることが出来る。このデータをフィードバックして割り当てスケジュールに反映させるという手順も考えられる。
また、ここでは、本コンピュータが、コア11を複数内蔵するプロセッサ1を搭載する場合を例に本手法を説明したが、本手法は、複数のプロセッサ1を搭載するいわゆるマルチプロセッサコンピュータにおいても当然に適用できる。
本実施形態では、タスクを、データフローで繋ぐグラフデータ構造を管理するランタイムライブラリにおいて、プログラマの指定なしで、プログラム実行時に並列処理環境に適応して、タスク割り当てのアフィニティ向上を実現することが可能になる。また、プログラマが意図していないようなデータの定義参照関係が存在する場合や、実行時にしか判明しないデータ移動のコストに対しても、適応的に最適なタスクのスケジューリングを行うことが可能であり、データアクセスのキャッシュミスやローカルメモリ間のデータ移動を抑制して、並列プログラムの実行速度向上を実現することが可能になる。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
1…プロセッサ,2…主メモリ,3…ハードディスク駆動装置,3…HDD,11…コア,100…実行プログラム,101…直列基本モジュール,102…並列実行制御記述,200…ランタイムライブラリ,201…グラフデータ構造生成情報,202…グラフデータ構造,221…実行ノード管理部,222…Ready集合管理部,223…転送コスト計算部,224…ノード割り当て部224,225…ノード選択部。

Claims (7)

  1. それぞれ識別子が与えられた複数のスレッドを実行する複数の実行ユニットと、
    他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムを、前記複数の実行ユニットによって並列実行するために、前記実行規則に基づき、前記複数の実行ユニットが実行するスレッドに対する前記複数の基本モジュールの動的な割り当てを制御するスケジューラと、
    を具備し、
    前記スケジューラは、
    前記実行ユニットによって実行済みの基本モジュールを実行したスレッドの識別子を管理する手段と、
    前記実行ユニットによって実行可能な基本モジュールを実行可能集合として管理する手段と、
    前記実行可能集合中の各基本モジュールについて、前記基本モジュールがデータを参照する前記実行済みの基本モジュールの計算結果のデータサイズおよび当該実行済みの基本モジュールを実行したスレッドの識別子に基づいて、実行済みの基本モジュールを実行したスレッドから複数のスレッドから選ばれる一つのスレッドtidにデータを転送した場合の転送コストをそれぞれ計算するコスト計算手段と、
    前記転送コストが最小の基本モジュールを前記スレッドtidに割り当てる基本モジュールとして選択する選択手段と
    を具備し、
    前記転送コストは、
    Figure 0004621786
    によって演算される、
    ここで、Pred(c)は前記実行可能集合中の基本モジュールから選ばれる一つの基本モジュールcがデータを参照する基本モジュールnの集合を示し、size(n)は前記基本モジュールnによる計算結果のデータサイズ、trCost(n→tid,tid)は前記基本モジュールnを実行したスレッドn→tidからスレッドtidへのデータ転送コストである、
    ことを特徴とする情報処理装置。
  2. 前記スレッドn→tidと前記スレッドtidとが同じスレッドである場合、前記trCost(n→tid,tid)は0であることを特徴とする請求項に記載の情報処理装置。
  3. 前記スレッドn→tidと前記スレッドtidとが異なるスレッドである場合、前記trCost(n→tid,tid)は0より大きい値であることを特徴とする請求項に記載の情報処理装置。
  4. 前記複数の実行ユニットは、1つのCPUに内蔵されるCPUコアであることを特徴とする請求項1記載の情報処理装置。
  5. 前記複数の実行ユニットは、それぞれが個別に構成された複数のCPUであることを特徴とする請求項1記載の情報処理装置。
  6. 他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムから複数の基本モジュールをそれぞれ識別子が与えられた複数のスレッドに動的に割り当て、当該複数のスレッドを複数の実行ユニットによって並列実行する情報処理装置によって実行される並列処理最適化方法であって、
    前記情報処理装置が、前記実行ユニットによって実行済みの基本モジュールを実行したスレッドの識別子を管理し、
    前記情報処理装置が、前記実行ユニットによって実行可能な基本モジュールを実行可能集合として管理し、
    前記情報処理装置が、前記実行可能集合中の各基本モジュールについて、前記基本モジュールがデータを参照する前記実行済みの基本モジュールの計算結果のデータサイズおよび当該実行済みの基本モジュールを実行したスレッドの識別子に基づいて、実行済みの基本モジュールを実行したスレッドから複数のスレッドから選ばれる一つのスレッドtidにデータを転送した場合の転送コストをそれぞれ計算し、
    前記情報処理装置が、前記転送コストが最小の基本モジュールを前記スレッドtidに割り当て、
    前記転送コストは、
    Figure 0004621786
    によって演算される、
    ここで、nPred(c)は前記実行可能集合中の基本モジュールから選ばれる一つの基本モジュールcがデータを参照する基本モジュールnの集合を示し、size(n)は前記基本モジュールnによる計算結果のデータサイズ、trCost(n→tid,tid)は前記基本モジュールnを実行したスレッドn→tidからスレッドtidへのデータ転送コストである、
    ことを特徴とする並列処理最適化方法。
  7. 他のモジュールと非同期に実行可能な複数の基本モジュールに分割され、当該複数の基本モジュールの時系列的な実行規則が定義されるプログラムから複数の基本モジュールをそれぞれ識別子が与えられた複数のスレッドに動的に割り当て、当該複数のスレッドを複数の実行ユニットによって並列実行する情報処理装置情報処理装置を、
    前記実行ユニットによって実行済みの基本モジュールを実行したスレッドの識別子を管理する手段と、
    前記実行ユニットによって実行可能な基本モジュールを実行可能集合として管理する手段と、
    前記実行可能集合中の各基本モジュールについて、前記基本モジュールがデータを参照する前記実行済みの基本モジュールの計算結果のデータサイズおよび当該実行済みの基本モジュールを実行したスレッドの識別子に基づいて、実行済みの基本モジュールを実行したスレッドから複数のスレッドから選ばれる一つのスレッドtidにデータを転送した場合の転送コストをそれぞれ計算するコスト計算手段と、
    前記転送コストが最小の基本モジュールを前記スレッドtidに割り当てる基本モジュールとして選択する選択手段と
    として機能させ、
    前記転送コストは、
    Figure 0004621786
    によって演算される、
    ここで、nPred(c)は前記実行可能集合中の基本モジュールから選ばれる一つの基本モジュールcがデータを参照する基本モジュールnの集合を示し、size(n)は前記基本モジュールnによる計算結果のデータサイズ、trCost(n→tid,tid)は前記基本モジュールnを実行したスレッドn→tidからスレッドtidへのデータ転送コストである、
    プログラム。
JP2009110090A 2009-04-28 2009-04-28 情報処理装置、並列処理最適化方法およびプログラム Expired - Fee Related JP4621786B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009110090A JP4621786B2 (ja) 2009-04-28 2009-04-28 情報処理装置、並列処理最適化方法およびプログラム
US12/768,538 US8255911B2 (en) 2009-04-28 2010-04-27 System and method for selecting and assigning a basic module with a minimum transfer cost to thread

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009110090A JP4621786B2 (ja) 2009-04-28 2009-04-28 情報処理装置、並列処理最適化方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2010257428A JP2010257428A (ja) 2010-11-11
JP4621786B2 true JP4621786B2 (ja) 2011-01-26

Family

ID=42993266

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009110090A Expired - Fee Related JP4621786B2 (ja) 2009-04-28 2009-04-28 情報処理装置、並列処理最適化方法およびプログラム

Country Status (2)

Country Link
US (1) US8255911B2 (ja)
JP (1) JP4621786B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566801B2 (en) * 2009-05-22 2013-10-22 International Business Machines Corporation Concurrent static single assignment for general barrier synchronized parallel programs
KR101710910B1 (ko) * 2010-09-27 2017-03-13 삼성전자 주식회사 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치
KR101177059B1 (ko) 2011-01-17 2012-08-28 전자부품연구원 병렬 제어 모듈을 동적으로 할당하는 방법
US9996394B2 (en) * 2012-03-01 2018-06-12 Microsoft Technology Licensing, Llc Scheduling accelerator tasks on accelerators using graphs
US9740529B1 (en) * 2013-12-05 2017-08-22 The Mathworks, Inc. High throughput synchronous resource-constrained scheduling for model-based design
US9389848B2 (en) * 2014-06-28 2016-07-12 Vmware, Inc. Scheduling a plan of operations in a datacenter
US9223767B1 (en) 2014-06-28 2015-12-29 Vmware, Inc. Unified graphical user interface for displaying a plan of operations in a datacenter
US9529980B2 (en) 2014-06-28 2016-12-27 Vmware, Inc. Deduplication of end user license agreements
US9442714B2 (en) 2014-06-28 2016-09-13 Vmware, Inc. Unified visualization of a plan of operations in a datacenter
US9389847B2 (en) 2014-06-28 2016-07-12 Vmware, Inc. Selection of relevant software bundles
US9495217B2 (en) * 2014-07-29 2016-11-15 International Business Machines Corporation Empirical determination of adapter affinity in high performance computing (HPC) environment
US9658855B2 (en) 2014-10-10 2017-05-23 Fujitsu Limited Compile method and compiler apparatus
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
CN113259482B (zh) * 2021-06-21 2021-12-07 北京卡普拉科技有限公司 多对多通信模式的优化方法、装置、存储介质及电子设备
CN116737346B (zh) * 2023-08-14 2023-10-24 南京翼辉信息技术有限公司 一种大小核处理器调度配置系统及其实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04257928A (ja) * 1991-02-13 1992-09-14 Hitachi Ltd 並列計算機におけるプロセッサ割り当て方法、及び装置
JP2001155001A (ja) * 1999-11-30 2001-06-08 Matsushita Electric Ind Co Ltd マルチプロセッサタスク制御方法及びタスク制御装置
JP2005322107A (ja) * 2004-05-11 2005-11-17 Fujitsu Ltd 負荷分散装置及びプログラム
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005258920A (ja) 2004-03-12 2005-09-22 Fujitsu Ltd マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP2008276547A (ja) 2007-04-27 2008-11-13 Toshiba Corp プログラム処理方法及び情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04257928A (ja) * 1991-02-13 1992-09-14 Hitachi Ltd 並列計算機におけるプロセッサ割り当て方法、及び装置
JP2001155001A (ja) * 1999-11-30 2001-06-08 Matsushita Electric Ind Co Ltd マルチプロセッサタスク制御方法及びタスク制御装置
JP2005322107A (ja) * 2004-05-11 2005-11-17 Fujitsu Ltd 負荷分散装置及びプログラム
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム

Also Published As

Publication number Publication date
JP2010257428A (ja) 2010-11-11
US20100275213A1 (en) 2010-10-28
US8255911B2 (en) 2012-08-28

Similar Documents

Publication Publication Date Title
JP4621786B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
US8074211B2 (en) Computer program, multiprocessor system, and grouping method
US9996394B2 (en) Scheduling accelerator tasks on accelerators using graphs
US9430353B2 (en) Analysis and visualization of concurrent thread execution on processor cores
US20230091261A1 (en) Orchestration and scheduling of services
JP4381459B1 (ja) 情報処理装置、粒度調整方法およびプログラム
JP4712877B2 (ja) 並列プロセッサのためのタスクマネージャ
JP2011070256A (ja) デバッガおよびプログラム
JP4491026B2 (ja) 情報処理装置、プログラム処理方法及びコンピュータプログラム
JP5283128B2 (ja) プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US20110161939A1 (en) Apparatus for displaying the result of parallel program analysis and method of displaying the result of parallel program analysis
JP2008140046A (ja) 画像処理装置、画像処理プログラム
US20210319298A1 (en) Compute-based subgraph partitioning of deep learning models for framework integration
JP4908363B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
Yu et al. System-wide trade-off modeling of performance, power, and resilience on petascale systems
US11226798B2 (en) Information processing device and information processing method
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
US20080271041A1 (en) Program processing method and information processing apparatus
US9588817B2 (en) Scheduling method and scheduling system for assigning application to processor
US20120137300A1 (en) Information Processor and Information Processing Method
JP7367365B2 (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
WO2018198745A1 (ja) 計算資源管理装置、計算資源管理方法、及びコンピュータ読み取り可能な記録媒体
Yang et al. Demonstration on unblocking checkpoint for fault-tolerance in pregel-like systems
Elshazly et al. Towards enabling I/O awareness in task-based programming models
CN118445370A (zh) 一种地图编译方法、装置及计算机可读存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100913

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

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

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees