IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7434925情報処理装置、情報処理方法およびプログラム
<>
  • 特許-情報処理装置、情報処理方法およびプログラム 図1
  • 特許-情報処理装置、情報処理方法およびプログラム 図2
  • 特許-情報処理装置、情報処理方法およびプログラム 図3
  • 特許-情報処理装置、情報処理方法およびプログラム 図4
  • 特許-情報処理装置、情報処理方法およびプログラム 図5
  • 特許-情報処理装置、情報処理方法およびプログラム 図6
  • 特許-情報処理装置、情報処理方法およびプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
   G06F 9/52 20060101AFI20240214BHJP
【FI】
G06F9/52 150B
【請求項の数】 7
(21)【出願番号】P 2020009086
(22)【出願日】2020-01-23
(65)【公開番号】P2021117577
(43)【公開日】2021-08-10
【審査請求日】2022-12-08
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】早坂 武
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2009-059316(JP,A)
【文献】特開2011-175459(JP,A)
【文献】特表2019-521413(JP,A)
【文献】特開2009-199121(JP,A)
【文献】特開2014-092873(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
11/34
(57)【特許請求の範囲】
【請求項1】
複数の処理単位を並列して処理する装置であって、
前記複数の処理単位のうちの自己の処理単位が、
他の処理単位が読み出し可能である前記自己の処理単位の記憶領域に前記自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶する動作情報記憶部と、
前記自己の処理単位と前記他の処理単位との間で所定の条件が成立するまでに時間差がある場合に、前記時間差の開始時と終了時とにおいて、前記他の処理単位の記憶領域から前記他の処理単位の前記動作情報を読み出し、前記動作情報のうちの少なくとも一部を所定の記憶部に記憶する情報取得部と、を含み、
前記自己の処理単位の前記記憶領域と前記他の処理単位の前記記憶領域とは、互いに異なる、情報処理装置。
【請求項2】
前記記憶領域が、前記自己の処理単位における実行中のユーザルーチンおよび前記ユーザルーチンの呼び出し履歴を格納するスタック領域を含み、
前記情報取得部が、他の前記処理単位における前記実行中のユーザルーチンおよび前記ユーザルーチンの呼び出し履歴を含む前記動作情報を読み出す
請求項1に記載の情報処理装置。
【請求項3】
前記動作情報が、前記処理単位の動作状態に応じて変化する数値情報を含み、
前記情報取得部は、前記開始時の前記数値情報と前記終了時の前記数値情報の差分を前記記憶部に記憶する
請求項1または2に記載の情報処理装置。
【請求項4】
前記処理単位が、プロセスまたはスレッドである
請求項1から3のいずれか1項に記載の情報処理装置。
【請求項5】
前記他の処理単位が、前記自己の処理単位が読み出し可能である前記他の処理単位の記憶領域に前記他の処理単位の動作情報を記憶する動作情報記憶部を備える、請求項1に記載の情報処理装置。
【請求項6】
複数の処理単位を並列して処理する方法であって、
前記複数の処理単位のうちの自己の処理単位において、
他の処理単位が読み出し可能である前記自己の処理単位の記憶領域に前記自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶するステップと、
前記自己の処理単位と前記他の処理単位との間で所定の条件が成立するまでに時間差がある場合に、前記時間差の開始時と終了時とにおいて、前記他の処理単位の記憶領域から前記他の処理単位の前記動作情報を読み出し、前記動作情報のうち少なくとも一部を所定の記憶部に記憶するステップと、を含み、
前記自己の処理単位の前記記憶領域と前記他の処理単位の前記記憶領域とは、互いに異なる、情報処理方法。
【請求項7】
複数の処理単位を並列して処理する際に、
前記複数の処理単位のうちの自己の処理単位において、
他の処理単位が読み出し可能である前記自己の処理単位の記憶領域に前記自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶するステップと、
前記自己の処理単位と前記他の処理単位との間で所定の条件が成立するまでに時間差がある場合に、前記時間差の開始時と終了時とにおいて、前記他の処理単位の記憶領域から前記他の処理単位の前記動作情報を読み出し、前記動作情報のうち少なくとも一部を所定の記憶部に記憶するステップと、をコンピュータに実行させ、
前記自己の処理単位の前記記憶領域と前記他の処理単位の前記記憶領域とは、互いに異なる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
特許文献1に記載されている情報処理装置は、複数のプロセスを並列に実行する際に、プロセス間の通信にて通信待ち合わせが発生した場合、通信待ち合わせ時間、データ転送時間等を測定し、所定のファイルに記憶する。その場合、特許文献1に記載されている情報処理装置は、通信待ち合わせ開始時刻、通信待ち合わせ終了時刻、およびデータ転送終了時刻を採取し、各時刻の差分から通信待ち合わせ時間とデータ転送時間を算出する。さらに、特許文献1に記載されている情報処理装置は、データ転送後にデータサイズや通信相手プロセス情報等のその他の情報を採取してそのファイルに記憶する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2009-199121号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載されている情報処理装置は、プロセス間のデータ転送後に通信相手プロセス情報等のその他の情報を採取して所定のファイルに記憶する。そのため、例えば待ち合わせ時間の開始時と終了時で内容が変化する情報があった場合に、その内容の変化を記憶することができないという課題があった。
【0005】
本発明は、上記課題を解決する情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するため本発明の一態様は、複数の処理単位を並列して処理する装置であって、前記複数の処理単位のうちの自己の処理単位が、他の処理単位が読み出し可能である前記自己の処理単位の記憶領域に前記自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶する動作情報記憶部と、前記自己の処理単位と前記他の処理単位との間で所定の条件が成立するまでに時間差がある場合に、前記時間差の開始時と終了時とにおいて、前記他の処理単位の記憶領域から前記他の処理単位の前記動作情報を読み出し、前記動作情報のうちの少なくとも一部を所定の記憶部に記憶する情報取得部と、を含み、前記自己の処理単位の前記記憶領域と前記他の処理単位の前記記憶領域とは、互いに異なる、情報処理装置である。
【0007】
また、本発明の一態様は、複数の処理単位を並列して処理する方法であって、前記複数の処理単位のうちの自己の処理単位において、他の処理単位が読み出し可能である前記自己の処理単位の記憶領域に前記自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶するステップと、前記自己の処理単位と前記他の処理単位との間で所定の条件が成立するまでに時間差がある場合に、前記時間差の開始時と終了時とにおいて、前記他の処理単位の記憶領域から前記他の処理単位の前記動作情報を読み出し、前記動作情報のうち少なくとも一部を所定の記憶部に記憶するステップと、を含み、前記自己の処理単位の前記記憶領域と前記他の処理単位の前記記憶領域とは、互いに異なる、情報処理方法である。
【0008】
また、本発明の一態様は、複数の処理単位を並列して処理する際に、前記複数の処理単位のうちの自己の処理単位において、他の処理単位が読み出し可能である前記自己の処理単位の記憶領域に前記自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶するステップと、前記自己の処理単位と前記他の処理単位との間で所定の条件が成立するまでに時間差がある場合に、前記時間差の開始時と終了時とにおいて、前記他の処理単位の記憶領域から前記他の処理単位の前記動作情報を読み出し、前記動作情報のうち少なくとも一部を所定の記憶部に記憶するステップと、をコンピュータに実行させ、前記自己の処理単位の前記記憶領域と前記他の処理単位の前記記憶領域とは、互いに異なる、プログラムである。
【発明の効果】
【0009】
本発明の各態様によれば、並列処理に係る待ち合わせ時間の開始時と終了時に応じた情報を記憶することができる。
【図面の簡単な説明】
【0010】
図1】本発明に係る情報処理装置の一実施形態の基本的構成例を示すブロック図である。
図2】本発明の第1実施形態に係る情報処理装置の機能的構成例を示すブロック図である。
図3図2に示すノード1-1の動作例を示すフローチャートである。
図4】本発明の第2実施形態に係る情報処理装置の機能的構成例を示すブロック図である。
図5図4に示すノード1-1の動作例を示すフローチャートである。
図6】本発明の一実施形態による情報処理装置の最小構成を示す図である。
図7】本発明の一実施形態による最小構成の情報処理装置の処理フローを示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施形態について説明する。なお、各図において同一または対応する構成には同一の符号を用いて説明を適宜省略する。
【0012】
<実施形態の基本的構成例>
図1は、本発明の一実施形態に係る情報処理装置の基本的構成例を示すブロック図である。図1に示す情報処理装置10は、サーバ、パーソナルコンピュータ、タブレット端末等のコンピュータ、あるいはそのコンピュータと周辺装置とから構成することができる。また、情報処理装置10は、情報処理装置10を構成するコンピュータ(あるいはコンピュータと周辺装置)が有する1または複数のCPU(中央処理装置)、主記憶装置、補助記憶装置等の記憶装置、入出力装置、通信装置等のハードウェアと、1または複数のCPUが実行するプログラム等のソフトウェアとの組み合わせで構成される機能的構成として、処理ユニット(処理単位)20と処理ユニット21を有する。処理ユニット20と処理ユニット21は1つの処理を分散して並列して処理する機能的構成であり、例えば、分散並列プログラムの場合のプロセスとそのプロセスを実行するハードウェアとの組み合わせ、共有並列プログラムの場合のスレッド(あるいはタスク(以下省略))とそのスレッドを実行するハードウェアとの組み合わせ等に対応する。本実施形態において、情報処理装置10は、複数の処理ユニット20および21を並列して処理する装置である。なお、情報処理装置10は、3以上の複数の処理ユニットを含んでいてもよい。
【0013】
処理ユニット20は、動作情報記憶部20-1と、動作情報20-3を記憶する記憶領域20-2と、情報取得部20-4と、記憶部20-5とを含む。また、処理ユニット21は、動作情報記憶部21-1と、動作情報21-3を記憶する記憶領域21-2と、情報取得部21-4と、記憶部21-5とを含む。処理ユニット20と処理ユニット21は基本的構成は同一である。すなわち、動作情報記憶部20-1と動作情報記憶部21-1、記憶領域20-2と記憶領域21-2、動作情報20-3と動作情報21-3、情報取得部20-4と情報取得部21-4、そして、記憶部20-5と記憶部21-5は、それぞれ、互いに対応し、また、基本的構成が互いに同一である。以下、処理ユニット20について主に説明し、処理ユニット21についての説明は適宜省略する。なお、処理ユニット20と処理ユニット21は、例えばユーザプログラムを含み、ユーザプログラムの構成要素として図示してない他の1または複数の機能的構成を含む。なお、記憶部20-5と記憶部21-5は、同一の構成(1つの記憶部)であってもよい。
【0014】
動作情報記憶部20-1は、他の処理ユニット21が直接読み出し可能な記憶領域20-2に、自己の処理ユニット20の動作状態に係る情報(動作情報20-3)を記憶する。記憶領域20-2は、自己の処理ユニット20がデータを読み書き可能な領域であり、かつ、他の処理ユニット21がデータを直接読み出し可能な領域である。ここで、他の処理ユニット21が直接読み出し可能とは、例えば、処理ユニット20と処理ユニット21間のデータ転送用のプログラムを実行することなく、他の処理ユニット21が例えばメモリ読み出し用コマンドやレジスタ読み出し用コマンドを実行することで読み出すことができる、という意味である。また、動作情報20-3は、例えば、実行カウンタ(PC(プログラムカウンタ)等)の値、性能カウンタの値(実行命令数、メモリアクセス回数、分岐予測成功率、キャッシュメモリヒット率等)、実行中のユーザルーチン、ユーザルーチンの呼び出し履歴の情報等を含む。なお、動作情報記憶部20-1が記憶領域20-2に動作情報20-3を記憶する動作やタイミングに限定はない。
【0015】
情報取得部20-4は、他の処理ユニット21で所定の条件が成立するまでに所定の待ち合わせ時間が発生した場合に、その待ち合わせ時間の開始時と終了時に他の処理ユニット21の記憶領域21-2から他の処理ユニット21の動作情報21-3を読み出し、読み出した動作情報21-3に応じた情報を所定の記憶部20-5に記憶する。ここで、所定の条件が成立するとは、例えば、自己の処理ユニット20が他の処理ユニット21に対する通信を行おうと待機している場合に、他の処理ユニット21が自己の処理ユニット20との間の通信を行える状態になったこと(あるいは状態であったこと)である。あるいは、所定の条件が成立するとは、例えば、自己の処理ユニット20が他の処理ユニット21と同期を成立させようとする場合に、他の処理ユニット21が自己の処理ユニット20と同期を成立できる状態になったこと(あるいは状態であったこと)である。所定の待ち合わせ時間は、例えば、所定の条件の成否を少なくとも1回判断するのに要する時間より長い待機時間である。また、動作情報21-3に応じた情報とは、動作情報21-3そのもの、または動作情報21-3に基づいて生成した情報である。動作情報21-3に基づいて生成した情報は、例えば、動作情報21-3が数値情報を含む場合に、開始時の数値と終了時の数値の差分を表す情報である。
【0016】
上述したように、図1に示す情報処理装置10では、処理ユニット20において、情報取得部20-4が、他の処理ユニット21で所定の条件が成立するまでに所定の待ち合わせ時間が発生した場合に、その待ち合わせ時間の開始時と終了時に記憶領域21-2から他の処理ユニット21の動作情報21-3を読み出し、読み出した動作情報21-3に応じた情報を所定の記憶部20-5に記憶する。また、処理ユニット21においては、情報取得部21-4が、他の処理ユニット20で所定の条件が成立するまでに所定の待ち合わせ時間が発生した場合に、その待ち合わせ時間の開始時と終了時に記憶領域20-2から他の処理ユニット20の動作情報20-3を読み出し、読み出した動作情報20-3に応じた情報を所定の記憶部21-5に記憶する。以上の構成によれば、並列処理に係る待ち合わせ時間の開始時と終了時に応じた情報を記憶部20-5および21-5に記憶することができる。
【0017】
また、情報処理装置10では、動作情報記憶部20-1が、他の処理ユニット21が読み出し可能な記憶領域20-2に自己の処理ユニット20の動作状態に係る情報である動作情報20-3を記憶する。また、動作情報記憶部21-1が、他の処理ユニット20が読み出し可能な記憶領域21-2に自己の処理ユニット21の動作情報21-3を記憶する。この構成によれば、情報取得部20-4および21-4は、他の処理ユニット21および20の動作情報21-3および20-3を効率的に読み出すことができる。
【0018】
なお、記憶領域20-2が自己の処理ユニット20における実行中のユーザルーチンおよびユーザルーチンの呼び出し履歴を格納するスタック領域を含んでいてもよい。この場合、実行中のユーザルーチンおよびユーザルーチンの呼び出し履歴は、動作情報20-3に含まれる。また、記憶領域21-2が自己の処理ユニット21における実行中のユーザルーチンおよびユーザルーチンの呼び出し履歴を格納するスタック領域を含んでいてもよい。この場合、実行中のユーザルーチンおよびユーザルーチンの呼び出し履歴は、動作情報21-3に含まれる。また、この場合、情報取得部20-4は、他の処理ユニット21における実行中のユーザルーチンおよびユーザルーチンの呼び出し履歴を含む動作情報21-3を直接読み出すことができる。また、この場合、情報取得部21-4は、他の処理ユニット21における実行中のユーザルーチンおよびユーザルーチンの呼び出し履歴を含む動作情報21-3を直接読み出すことができる。
【0019】
また、動作情報20-3および21-3は、処理ユニット20および21の動作状態に応じて変化する数値情報を含んでいてもよい。この場合、情報取得部20-4および21-4は、例えば、待ち合わせ時間の開始時の数値情報と終了時の数値情報の差分を記憶部20-5または21-5に記憶することができる。
【0020】
<第1実施形態>
次に、図2および図3を参照して、本発明の第1実施形態について説明する。図2は、本発明の第1実施形態に係る情報処理装置の構成例をノード1-1として示すブロック図である。ここで、ノードとは、通信ネットワークを構成するコンピュータ、端末、通信装置等の構成要素を論理的(あるいは機能的)に表現したものである。この場合、図2に示す複数のノード1-1は、ノード間インタコネクト1-7で接続されたクラスタシステム100を構成している。また、図3は、図2に示す各ノード1-1の動作例を示すフローチャートである。
【0021】
図2に示す各ノード1-1は、サーバ、パーソナルコンピュータ、タブレット端末等のコンピュータ、あるいはそのコンピュータと周辺装置とを用いて構成することができる。また、各ノード1-1は、複数のCPUコア1-3と、それら全てのCPUコア1-3からアクセス可能な共有メモリ1-6を有している。この場合、CPUコア1-3はそれぞれ1つのプロセス1-2を処理し、各ノード1-1は複数のCPUコア1-3を用いて複数のプロセス1-2を並列処理する。
【0022】
第1実施形態において、複数のプロセス1-2は、分散並列プログラムを構成する。各プロセス1-2は、そのプロセスを実行するCPUコア1-3と、共有メモリ1-6に確保されたプロセスメモリ1-5を備える。
【0023】
各CPUコア1-3は、実行カウンタ(PC:プログラムカウンタ等)、および、性能カウンタ(実行命令数、メモリアクセス回数、分岐予測成功率、キャッシュメモリヒット率等を格納する記憶領域)を有している。これらを称して実行カウンタおよび性能カウンタ群1-4とする。各CPUコア1-3は、他CPUコア1-3の実行カウンタおよび性能カウンタ群1-4へアクセスする手段を有する。また、各CPUコア1-3は、他の各CPUコア1-3に割り当てられた各プロセスメモリ1-5にアクセスする手段を有する。
【0024】
次に、図3を参照して、図2に示す各ノード1-1の動作例として、プロセス間通信処理について説明する。図3に示す処理は、あるノード1-1が実行しているプロセス1-2(第1プロセスとする)が、他のノード1-1が実行しているプロセス1-2(第2プロセスとする)との間でデータ転送処理を行うときに実行される。図3に示すプロセス間通信処理では、第1プロセスが最初に通信対象の第2プロセスとの間で通信が可能か否かを判定する(3-1)。通信可能である場合(3-1で「真」の場合)、第1プロセスは、第1プロセスと第2プロセスとの間でデータ転送処理(3-10)を行い、プロセス間通信処理を完了する。この場合、通信待合せは発生しないため、プロファイル情報の採取は行われない。
【0025】
3-1において、通信対象の第2プロセスとの間でまだ通信が行えない状況と判定された場合(3-1で「偽」の場合)、通信待合せとなる。通信待合せ処理では、第1プロセスは、通信待合せを開始した時刻(T0)を参照する(3-2)。その後、第1プロセスは、現在時刻(T1)を参照しつつ、あらかじめ定めた一定時間を経過するまで(T1-T0>一定時間となるまで)通信可能か否かの判定を続ける(3-3、3-4、3-5)。ここで、一定時間とは、通信処理時間と比較して十分小さな時間とする。
【0026】
一定時間以内に通信可能となった場合は(3-3で「真」の場合は)、データ転送処理3-10へと移行する。この場合、通信待合せは発生しているが、その通信待ちは十分小さいため、プロファイル情報の採取は行わない。
【0027】
3-5において、待ち時間が一定時間を超えた場合(3-5で「真」の場合は)、第1プロセスは、プロファイル情報の採取を行う(3-6)。ここで、第1プロセスは、プロファイル情報として、通信相手の第2プロセスのメモリを参照し、そのスタック領域から、実行中のユーザルーチン、および、ユーザルーチンの呼び出し履歴の情報を得る。また、第1プロセスは、第2プロセスの性能カウンタ情報を採取する。
【0028】
その後、第1プロセスは、通信可能となるまで待合せを継続し(3-7)、通信可能となった後、プロファイル情報の採取を行う(3-8)。続いて、第1プロセスは、3-9において、採取したプロファイル情報を例えば図示していない所定の記憶部に保存する。ここで、第1プロセスが、第2プロセス(および第1プロセス)が実行中のユーザルーチンおよび呼び出し履歴、さらに、3-6と3-8で採取した性能カウンタの差分を算出し、例えば図示していない所定の記憶部に保存する。図3に示すプロセス間通信処理では、性能カウンタの差分を採用することにより、当該プロセスが通信待合せを行っている間、通信相手プロセスがどの様な処理を行っていたかを判断することができる。第1プロセスは、最後にデータ転送処理3-10を行い、プロセス間通信処理を完了する。
【0029】
なお、実行カウンタおよび性能カウンタ群1-4とプロセスメモリ1-5への情報の書き込み(更新)は、例えば、プロセス1-2内の所定のプログラム、ノード1-1内でプロセス1-2等の実行を管理するオペレーティングシステム、CPU1-3を制御するファームウェアやハードウェア等によって行うことができる。
【0030】
第1実施形態によれば、分散並列処理に係るプロセス間通信処理における通信待ち合わせ時間の開始時と終了時にプロファイル情報と性能カウンタ情報を取得し、それらの情報やそれらの情報の差分を記憶するので、開始時と終了時に応じた情報を記憶することができる。
【0031】
なお、第1実施形態における各構成と図1に示す各構成との対応関係は次のとおりである。図2に示すノード1-1が、図1に示す情報処理装置10に対応する。図2に示すプロセス1-2が、図1に示す処理ユニット20および21に対応する。図2に示す実行カウンタおよび性能カウンタ群1-4とプロセスメモリ1-5が、図1に示す記憶領域20-2および21-2に対応する。図3に示す(3-6)、(3-8)および(3-9)の処理を実行するプロセス1-2内の構成(プログラム)が、図1に示す情報取得部20-4および21-4に対応する。図2に示す実行カウンタおよび性能カウンタ群1-4とプロセスメモリ1-5に記憶される情報(あるいは図3に示す(3-6)および(3-8)で採取される情報)が、図1に示す動作情報20-3および21-3に対応する。図3に示す(3-9)でプロファイル情報を保存する際の保存先が、図1に示す記憶部20-5および21-5に対応する。図2に示すノード1-1が有する実行カウンタおよび性能カウンタ群1-4とプロセスメモリ1-5に所定の情報を書き込む構成(プロセス1-2内のプログラム等)が、図1に示す動作情報記憶部20-1および21-1に対応する。
【0032】
<第2実施形態>
次に、図4および図5を参照して、本発明の第2実施形態について説明する。図4は、本発明の第2実施形態に係る情報処理装置の構成例をノード1-1として示すブロック図である。また、図5は、図4に示すノード1-1の動作例を示すフローチャートである。
【0033】
図4に示すノード1-1は、図2に示すノード1-1に対応する構成であり、サーバ、パーソナルコンピュータ、タブレット端末等のコンピュータ、あるいはそのコンピュータと周辺装置とを用いて構成することができる。また、ノード1-1は、複数のCPUコア1-3と、それら全てのCPUコア1-3からアクセス可能な共有メモリ1-6を有している。また、各CPUコア1-3はそれぞれ実行カウンタおよび性能カウンタ群1-4を有している。図4に示すノード1-1、CPUコア1-3、実行カウンタおよび性能カウンタ群1-4、および共有メモリ1-6の各構成は、図2に示す同一の符号を付けた各構成と同一である。
【0034】
なお、第2実施形態において、複数のスレッド2-2から構成されるプロセス2-1は、共有並列プログラムを構成する。また、各スレッド2-2は、各CPUコア1-3によって実行され、共有メモリ1-6に確保されたプロセスメモリ2-3と、他のスレッド2-2を処理するCPUコア1-3が有する実行カウンタおよび性能カウンタ群1-4とにアクセスすることができる。
【0035】
次に、図5を参照して、図4に示すノード1-1の動作例として、スレッド間同期処理について説明する。図5に示す処理は、プロセス2-1のあるスレッド2-2(第1スレッドとする)が、他のスレッド2-2(第2スレッドとする)との間で同期を成立させるときに実行される。図5に示すスレッド間同期処理では、第1スレッドが、最初に同期対象の第2スレッドとの間で同期が成立しているか否かを判定する(4-1)。同期が成立している場合(4-1で「真」の場合)、第1スレッドはスレッド間同期処理を完了する。この場合、同期待合せは発生しないため、プロファイル情報の採取は行われない。
【0036】
4-1において、同期対象の第2スレッドとの間でまだ同期が成立していないと判定された場合(4-1で「偽」の場合)、同期待合せとなる。同期待合せ処理では、第1スレッドは、同期待合せを開始した時刻(T0)を参照する(4-2)。その後、第1スレッドは、現在時刻(T1)を参照しつつ、あらかじめ定めた一定時間を経過するまで(T1-T0>一定時間となるまで)同期成立か否かの判定を続ける(4-3、4-4、4-5)。ここで、一定時間とは、同期処理時間と比較して十分小さな時間とする。
【0037】
一定時間以内に通信可能となった場合は(4-3で「真」の場合は)、第1スレッドはスレッド間同期処理を完了する。この場合、同期待合せは発生しているが、その同期待ちは十分小さい(一定時間以内の)ため、プロファイル情報の採取は行わない。
【0038】
4-5において、待ち時間が一定時間を超えた場合(4-5で「真」の場合は)、第1スレッドは、プロファイル情報の採取を行う(4-6)。ここで、第1スレッドは、プロファイル情報として、同期相手の第2スレッドのメモリを参照し、そのスタック領域から、実行中のユーザルーチン、および、ユーザルーチンの呼び出し履歴の情報を得る。また、第1スレッドは、第2スレッドの性能カウンタ情報を採取する。
【0039】
その後、第1スレッドは、同期が成立するまで待合せを継続し(4-7)、同期が成立した後、プロファイル情報の採取を行う(4-8)。続いて、第1プロセスは、4-9において、採取したプロファイル情報を例えば図示していない所定の記憶部に保存する。ここで、第1スレッドは、第2スレッド(および第1スレッド)が実行中のユーザルーチンおよび呼び出し履歴、さらに、4-6と4-8で採取した性能カウンタの差分を算出し、例えば図示していない所定の記憶部に保存する。図5に示すスレッド間同期処理では、性能カウンタの差分を採用することにより、当該スレッド(第1スレッド)が同期待合せを行っている間、同期対象スレッド(第2スレッド)がどの様な処理を行っていたかを判断することができる。第1スレッドは、4-9の後、スレッド間同期処理を完了する。
【0040】
第2実施形態によれば、共有並列処理に係るスレッド間同期処理における同期待ち合わせ時間の開始時と終了時にプロファイル情報と性能カウンタ情報を取得し、それらの情報やそれらの情報の差分を記憶するので、開始時と終了時に応じた情報を記憶することができる。
【0041】
なお、第2実施形態における各構成と図1に示す構成との対応関係は次のとおりである。図4に示すノード1-1が、図1に示す情報処理装置10に対応する。図4に示すプロセス2-1が有するスレッド2-2が、図1に示す処理ユニット20および21に対応する。図4に示す実行カウンタおよび性能カウンタ群1-4とプロセスメモリ2-3が、図1に示す記憶領域20-2および21-2に対応する。図5に示す(4-6)および、(4-8)および(4-9)の処理を実行するスレッド2-2内の構成(プログラム)が、図1に示す情報取得部20-4および21-4に対応する。図4に示す実行カウンタおよび性能カウンタ群1-4とプロセスメモリ2-3に記憶される情報(あるいは図5に示す(4-6)および(4-8)で採取される情報)が、図1に示す動作情報20-3および21-3に対応する。図5に示す(4-9)でプロファイル情報を保存する際の保存先が、図1に示す記憶部20-5および21-5に対応する。図4に示すノード1-1が有する実行カウンタおよび性能カウンタ群1-4とプロセスメモリ2-3に所定の情報を書き込む構成(スレッド2-2内のプログラム等)が、図1に示す動作情報記憶部20-1および21-1に対応する。
【0042】
<第1実施形態と第2実施形態の他の効果等>
上述したように、第1実施形態および第2実施形態では、分散並列プログラム(MPI(Message Passing Interface;メッセージ パッシング インターフェース)プログラム等)、あるいは、共有並列プログラム(OpenMP(Open MultiProcessing)プログラム等)の実行において、分散並列プログラムの場合はプロセス間通信処理中に通信待合せが発生した場合、共有並列プログラムの場合はスレッド(あるいはタスク)間の同期待合せが発生した場合、さらに、それら通信待合せ、あるいは、同期待合せが一定時間以上継続した事を契機として、通信相手プロセス、あるいは、同期待合せ対象スレッドのプロファイル情報を採取する。この構成によれば、情報採取用の追加処理コードよる影響(実行命令数の増加、メモリアクセスの増加、分岐予測の成功率の変動、キャッシュメモリのヒット率およびミス率の挙動の変動)が無く、したがって、ユーザプログラムの挙動を正確に表現するプロファイル情報を採取することが出来る。また、情報採取用に追加資源(CPUコア、メモリなど)が不要であり、したがって、ユーザプログラムの実行を妨げない。また、通信待合わせ、あるいは、同期待合せの要因となる処理(すなわち、通信相手プロセスの処理内容、あるいは、同期待ちスレッドの処理内容)について、ピンポイントで情報を採取することができる。また、通信待合せ、あるいは、同期待合せの処理中に情報採取を行うため、ユーザプログラム実行性能に影響を与えない。
【0043】
なお、第1実施形態と第2実施形態は、例えば、分散並列プログラムの最適化および高速化を目的としたプロファイリングや、共有並列プログラムの最適化および高速化を目的としたプロファイリング等に適用することができる。
【0044】
図6は、本発明の一実施形態による情報処理装置の最小構成を示す図である。
図7は、本発明の一実施形態による最小構成の情報処理装置の処理フローを示す図である。
情報処理装置10は、複数の処理ユニット(処理単位)を並列して処理する装置であって、図6に示すように、処理ユニット20は、動作情報記憶部20-1と、情報取得部20-4とを含む。
動作情報記憶部20-1は、他の処理単位が読み出し可能な記憶領域に自己の処理単位の動作状態に係る情報(以下、動作情報)を記憶する(ステップS7-1)。
情報取得部20-4は、他の処理単位で所定の条件が成立するまでに所定の待ち合わせ時間が発生した場合に、その待ち合わせ時間の開始時と終了時に記憶領域から他の処理単位の動作情報を読み出し、読み出した動作情報に応じた情報を所定の記憶部に記憶する(ステップS7-2)。
【0045】
以上、この発明の実施形態について図面を参照して説明してきたが、具体的な構成は上記実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【0046】
また、上記実施形態でコンピュータが実行するプログラムの一部または全部は、コンピュータ読取可能な記憶媒体や通信回線を介して頒布することができる。
【符号の説明】
【0047】
1-1 ノード
1-2、2-1 プロセス
1-3 CPUコア
1-4 実行カウンタおよび性能カウンタ群
1-5、2-3 プロセスメモリ
1-6 共有メモリ
1-7 ノード間インタコネクト
2-2 スレッド
10 情報処理装置
20、21 処理ユニット(処理単位)
20-1、21-1 動作情報記憶部
20-2、21-2 記憶領域
20-3、21-3 動作情報
20-4、21-4 情報取得部
20-5、21-5 記憶部
図1
図2
図3
図4
図5
図6
図7