(57)【要約】【課題】並列計算機におけるユーザプロセスへのメモリ割当に際して、実行中のユーザプロセスの処理への影響を抑制すること。【解決手段】情報処理装置は、オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含み、制御コアは、複数の計算コアのうちいずれかで実行中のユーザプロセスから、メモリ内の指定領域の解放要求を受信した場合に、第２のノードの動作状況を判定し、動作状況に応じてメモリの指定領域の初期化を行う。【選択図】図１
2020095446.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含み、
前記制御コアは、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う
情報処理装置。
【請求項２】
前記制御コアは、
前記複数の計算コアのそれぞれにおけるプロセスの実行状況を前記動作状況として判定し、
前記判定された実行状況において実行中のプロセスがない空きコアに対して、前記指定領域の初期化を指示する
請求項１に記載の情報処理装置。
【請求項３】
前記制御コアは、
前記解放要求を受信した場合において前記メモリの使用量が所定の閾値を超えている場合に、前記複数の計算コアのそれぞれの前記実行状況を判定する
請求項２に記載の情報処理装置。
【請求項４】
前記制御コアは、
前記解放要求を受信した場合において前記メモリの使用量が所定の閾値を超えていない場合に、前記第２のノード内のデータ転送回路に対して前記指定領域の初期化を指示する
請求項２又は３に記載の情報処理装置。
【請求項５】
前記制御コアは、
前記複数の計算コアで実行中のプロセスに割当済みのメモリ容量と未割当かつ未初期化のメモリ容量とを合計して前記メモリの使用量として算出し、
前記メモリの使用量が前記所定の閾値を超えているか否かを判定する
請求項３又は４に記載の情報処理装置。
【請求項６】
前記メモリには、前記複数の計算コアのうち少なくとも１以上に対応付けて生成された１以上のメモリ初期化プロセスが常駐しており、
前記制御コアは、
前記空きコアに対応付けられた前記メモリ初期化プロセスに対して、前記指定領域の初期化を指示する
請求項２乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記制御コアは、
前記複数の計算コアのそれぞれに対応し、各計算コアにおける実行対象のプロセスを管理するための複数のプロセスキューを保持し、
前記メモリ初期化プロセスに最低の優先度を付加して、前記複数のプロセスキューの少なくとも１以上に登録し、
前記実行状況を判定する際に、前記プロセスキュー内に前記メモリ初期化プロセス以外のプロセスが登録されているか否かを判定し、
前記メモリ初期化プロセス以外のプロセスが登録されていないプロセスキューに対応する計算コアを、前記空きコアと判定する
請求項６に記載の情報処理装置。
【請求項８】
オペレーティングシステムが動作する制御コアと、
当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備えるノードと所定のデータ転送機構を介して通信を行なうデータ転送部と、
を備え、
前記制御コアは、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記ノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う
情報処理装置。
【請求項９】
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含む情報処理装置における前記制御コアが、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う
メモリ初期化制御方法。
【請求項１０】
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含む情報処理装置における前記制御コアに、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定する処理と、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ初期化制御方法及びプログラムに関し、特に、メモリの初期化を制御するための情報処理装置、メモリ初期化制御方法及びプログラムに関する。
【背景技術】
【０００２】
Ｌｉｎｕｘ（登録商標）／ｘ８６＿６４のような一般的なコンピュータアーキテクチャでは、ユーザプロセスがメモリ確保や解放を行う場合、ＯＳ（Operating System）に対してシステムコールを発行し、ＯＳがユーザプロセスに対して物理メモリの割り当て及び削除を行う。この時、割り当てるメモリは初期化されている必要がある。初期化されたメモリがない場合、ユーザプロセスはＯＳのメモリ初期化を待つことになり遅延が生じる。
【０００３】
特許文献１には、プログラム言語に依存することなく、マルチプロセッサの環境において主記憶領域を安全にクリーンアップする技術が開示されている。特許文献１では、１台のデータ処理装置に２つのＣＰＵコアＡ及びＢと１つの主記憶装置と各種制御手段とが搭載されている。そして、主記憶装置内を２つの領域Ａ及びＢに分割して使用する。ここで、ＣＰＵコアＡと主記憶領域Ａを現用系システムとし、ＣＰＵコアＢと主記憶領域Ｂを待機系システムとしている。そして、ＣＰＵコアＡは、主記憶装置の使用量が閾値を超えた場合に、制御手段に対して主記憶装置のクリーンアップ要求を行う。制御手段は、待機系システムのＣＰＵコアＢを起動し、主記憶領域Ａと主記憶領域Ｂとを入れ替える。特許文献１では、このようにして、ＣＰＵコアＡに対して主記憶領域Ａのクリーンアップが行われたように見せるものである。
【０００４】
ここで、近年、高速で計算を行うための並列計算機のアーキテクチャには、汎用サーバのモジュールとしてアクセラレータを組み込む形態で実現するものが増えてきている。このような形態をとることで、開発コストの削減に加え、ユーザにとっても慣れた汎用サーバの環境を用いて、並列計算機を利用することができる。
【０００５】
特許文献２には、並列計算機に関する技術が開示されている。特許文献２にかかる並列計算機は、プロセッサとメモリの対からなる複数のノードを備える。そして、一方のノード（制御ノード）内のプロセッサコア（制御コア）は、他方のノード（計算ノード、アクセラレータ）内の各プロセッサコア（計算コア）とメモリとを制御する。ここで、計算ノード内のメモリは、当該計算ノード内の複数の計算コアにより共用される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２５７２５９号公報
【特許文献２】特許第５８６７４８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、ある計算コアで実行中のユーザプロセスは、メモリ確保の必要が生じた場合、制御コアに対してメモリ割当要求を送信する。そして、制御コアは、メモリ割当要求に応じて計算ノード内のメモリを割り当てる。このとき、並列計算機には、メモリの割当を行う際に、実行中のユーザプロセスの処理に影響を与えてしまう可能性があるという問題点がある。その理由は、例えば、並列計算機ではノード間が物理的に離れているためにノード間の通信が発生し、一般的なＬｉｎｕｘ（登録商標）／ｘ８６＿６４アーキテクチャと比べて、割り当て対象のメモリ初期化に時間を要するためである。
【０００８】
尚、上述した特許文献１にかかる技術は、１台の計算機内の一方のＣＰＵコアと主記憶領域の半分とを待機系システムとする必要があり、リソースの活用が不十分である。そのため、計算機のリソースを有効活用して高速な演算を目的とする並列計算機には適用できない。また、特許文献２ではメモリ初期化を対象としていない。
【０００９】
本開示は、このような問題点を解決するためになされたものであり、並列計算機におけるユーザプロセスへのメモリ割当に際して、実行中のユーザプロセスの処理への影響を抑制するための情報処理装置、メモリ初期化制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本開示の第１の態様にかかる情報処理装置は、
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含み、
前記制御コアは、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う。
【００１１】
本開示の第２の態様にかかる情報処理装置は、
オペレーティングシステムが動作する制御コアと、
当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備えるノードと所定のデータ転送機構を介して通信を行なうデータ転送部と、
を備え、
前記制御コアは、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記ノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う。
【００１２】
本開示の第３の態様にかかるメモリ初期化制御方法は、
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含む情報処理装置における前記制御コアが、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う。
【００１３】
本開示の第４の態様にかかるプログラムは、
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含む情報処理装置における前記制御コアに、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定する処理と、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う処理と、
を実行させる。
【発明の効果】
【００１４】
本開示により、並列計算機におけるユーザプロセスへのメモリ割当に際して、実行中のユーザプロセスの処理への影響を抑制するための情報処理装置、メモリ初期化制御方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施の形態１にかかる情報処理装置の構成を示すブロック図である。
【図２】本実施の形態１にかかるメモリ初期化制御方法の流れを示すフローチャートである。
【図３】本実施の形態２にかかる並列計算機のハードウェア構成を示すブロック図である。
【図４】本実施の形態２にかかる並列計算機の機能構成を示すブロック図である。
【図５】本実施の形態２にかかる制御ノードの計算ノード制御用OSの起動時の処理の流れを説明するためのフローチャートである。
【図６】本実施の形態２にかかるユーザプロセスの処理の流れを説明するためのフローチャートである。
【図７】本実施の形態２にかかるメモリ初期化制御処理の流れを説明するためのフローチャートである。
【図８】本実施の形態２にかかるメモリ初期化プロセスの処理の流れを説明するためのフローチャートである。
【図９】本実施の形態２にかかるメモリ使用量が閾値未超過の概念を示す図である。
【図１０】本実施の形態２にかかるメモリ使用量が閾値超過の概念を示す図である。
【発明を実施するための形態】
【００１６】
以下では、本開示の実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１７】
＜実施の形態１＞
図１は、本実施の形態１にかかる情報処理装置１０００の構成を示すブロック図である。情報処理装置１０００は、第１のノード１１００と、第２のノード１２００とを備える。第１のノード１１００は、制御コア１１１０を備える。制御コア１１１０は、オペレーティングシステムが動作し、第１のノード１２００内の構成の動作を制御するプロセッサコアである。尚、第１のノード１１００は、図示しない構成としてメモリを有するものである。また、第１のノード１１００は、２以上のプロセッサコアを有し、当該メモリを共用してもよい。
【００１８】
第２のノード１２００は、複数の計算コア１２１１、１２１２、・・・１２１ｎ（ｎは２以上の自然数。）と、メモリ１２２０とを備える。計算コア１２１１等とメモリ１２２０とは、制御コア１１１０により制御される。計算コア１２１１から１２１ｎのそれぞれは、所定の計算処理を行うプロセッサコアである。例えば、計算コア１２１１等のそれぞれは、独立して異なるユーザプロセスを実行することができる。メモリ１２２０は、計算コア１２１１から１２１ｎのそれぞれにより使用される主記憶装置である。メモリ１２２０は、例えば、ＲＡＭ（Random Access Memory）等の揮発性記憶装置である。また、メモリ１２２０は、計算コア１２１１から１２１ｎのそれぞれにより共用される。
【００１９】
第１のノード１１００と第２のノード１２００とは、所定のデータ転送機構を介して相互に通信を行うことができる。
【００２０】
制御コア１１１０は、複数の計算コア１２１１等のうちいずれかで実行中のユーザプロセスから、メモリ１２２０内の指定領域の解放要求を受信した場合に、第２のノード１２００の動作状況を判定する。ここで、動作状況とは、計算コア１２１１等及びメモリ１２２０がどのように動作しているかを示す情報である。動作状況としては例えば、計算コア１２１１等で実行中のプロセスの有無や、メモリの使用量もしくはメモリの使用率等であってもよい。制御コア１１１０は、動作状況に応じてメモリ１２２０の指定領域の初期化を行う。例えば、制御コア１１１０は、所定のデータ転送機構を介して第２のノード１２００のデータ転送回路に対してメモリ１２２０の指定領域を初期化させるための指示を行う。または、制御コア１１１０は、所定のデータ転送機構を介して第２のノード１２００内の任意の計算コアに対してメモリ１２２０の指定領域を初期化させるための指示を行う。または、制御コア１１１０は、動作状況により実行中のプロセスが無いと判定された計算コアを特定し、特定した計算コアに対してメモリ１２２０の指定領域を初期化させるための指示を行う。
【００２１】
図２は、本実施の形態１にかかるメモリ初期化制御方法の流れを示すフローチャートである。まず、制御コア１１１０は、計算コア１２１１から１２１ｎのいずれかで実行中のユーザプロセスから、メモリ解放要求を受信する（Ｓ１１）。このとき、メモリ解放要求には、メモリ１２２０内で解放対象となる領域が指定されているものとする。
【００２２】
次に、制御コア１１１０は、第２のノード１２００の動作状況を判定する（Ｓ１２）。そして、制御コア１１１０は、動作状況に応じて、上述したようにメモリ１２２０の指定領域の初期化を行う（Ｓ１３）。
【００２３】
このように本実施形態では、第２のノード１２００内のメモリ１２２０の指定領域の初期化を、ユーザプロセスのメモリ解放要求に応じて第１のノード１１００内の制御コア１１１０が指示を行う。例えば、メモリ解放要求に応じてメモリ解放と共にメモリ初期化を開始しておくことで、その後の他のユーザプロセスによるメモリ割当要求時に速やかに初期化済のメモリを割り当てることができる。特に、制御コア１１１０は、所定のデータ転送機構を介して接続された第２のノード１２００の動作状況に応じてメモリ１２２０の初期化を行う。例えば、第２のノード１２００のメモリ１２２０の使用状況や計算コア１２１１等のプロセスの実行状況を加味して適切なメモリ初期化手法を選択して実行できる。そのため、メモリ割当要求時に計算コア１２１１等で実行中のユーザプロセスへの影響を極力抑えて初期化済のメモリを割り当てることができる。つまり、並列計算機におけるユーザプロセスへのメモリ割当に際して、実行中のユーザプロセスの処理への影響を抑制することができる。
【００２４】
尚、第１のノード１１００は、図示しない構成としてさらに記憶装置等を備えるものである。また、当該記憶装置には、本実施の形態にかかるメモリ初期化制御方法の処理が実装されたコンピュータプログラムが記憶されている。そして、制御コア１１１０は、記憶装置からコンピュータプログラムを第１のノード１１００内のメモリへ読み込み、当該コンピュータプログラムを実行する。これにより、制御コア１１１０は、上述したメモリ初期化制御方法を実現する。
【００２５】
＜実施の形態２＞
ここで、本実施の形態が解決しようとする課題について詳述する。まず、一般的なＬｉｎｕｘ（登録商標）／ｘ８６＿６４アーキテクチャ（以下、「ｘ８６アーキテクチャ」と呼ぶ。）では、メモリ割当要求時に要求元のプロセスに物理メモリを割り当てず、仮想メモリを割り当てる。そして、実際にプロセスにより割り当て先のメモリへデータの書き込みが発生した際に初めて、必要なページサイズの物理メモリを初期化して、初期化後の物理メモリを割り当てた上でデータを書き込む。このような方式は、デマンドページング又はコピーオンライトと呼ばれる。ここで、ｘ８６アーキテクチャでは、ページングサイズが４ＫＢであり、同一ノード内のコアとメモリとのやり取りであるため、デマンドページング方式でもメモリ割り当ての遅延は小さく、ユーザプロセスの実行効率への影響も小さい。
【００２６】
これに対して、上述した並列計算機の場合、ｘ８６アーキテクチャと比べて、ページングサイズが６４ＭＢと大きい。また、メモリ初期化の指示を出す制御コアと初期化対象のメモリとが別ノードであるため、ノード間通信が発生する。そのため、並列計算機では、ｘ８６アーキテクチャと比べてメモリ初期化処理に長時間を要し、メモリ確保の要求コストが大きいといえる。よって、並列計算機では、ユーザプロセスの実行遅延につながるため、デマンドページング方式を採用できない。
【００２７】
そこで、並列計算機では、ユーザプロセスからのメモリ解放要求時に、制御コアから計算ノード内のＤＭＡ（Direct Memory Access）エンジンを介してメモリをページフレーム単位で順次、物理ページを解放及び初期化することが考えられる。つまり、メモリ解放要求に応じて解放後に要求元でユーザプロセスの実行を再開させ、バックグラウンド処理にてメモリ初期化を開始することで、その後のメモリ割当要求前に予め割当可能なメモリを準備しておくものである。これにより、その後に他のユーザプロセスから発生したメモリ割当要求時には、メモリ初期化が完了している場合があり、即時に初期化済のメモリ領域を割り当てることができ、ユーザプロセスの実行効率への影響を抑制できる。
【００２８】
ここで、計算ノードのメモリ使用率が高い場合（例えば、割当済のメモリ容量と解放済かつ未初期化のメモリ容量とが多い場合）には、メモリ解放要求とメモリ割当要求が連続して発行される可能性がある。そのような場合には、メモリ解放及び初期化をした直後に、当該メモリ領域を割り当てる必要がある。しかしながら、ＤＭＡエンジンを用いたメモリ初期化は、計算コアによるメモリ初期化処理と比べると実行速度が遅い。そのため、メモリ使用率が高い場合にはメモリ割当要求に対して初期化処理が完了するまでの待ち時間が発生し、ユーザプロセスの実行効率への影響が懸念される。
【００２９】
ここで、ｘ８６アーキテクチャでは、ＤＭＡエンジンを用いずとも、同一ノード内のコアがメモリに対してメモリ初期化処理を実行できる。そこで、並列計算機においても、ユーザプロセスからのメモリ解放要求時に、ＤＭＡエンジンを用いずに、制御コアから計算コアに対してメモリ初期化プロセスを実行させることが考えられる。但しこの場合、計算コアがユーザプロセスを実行中の場合、制御コアがコンテキストスイッチにより当該計算コアの実行プロセスをメモリ初期化プロセスに切り替えることとなる。しかしながら、並列計算機では、上述した通り、ノード間通信が発生するためｘ８６アーキテクチャと比べてコンテキストスイッチに時間を要し、ユーザプロセスの実行遅延につながるという懸念がある。
【００３０】
そこで、本実施の形態２は、上述した実施の形態１の具体的な一実施例であり、以下では上述した課題の少なくとも一部を解決するものについて説明する。図３は、本実施の形態２にかかる並列計算機２０００のハードウェア構成を示すブロック図である。並列計算機２０００は、上述した情報処理装置１０００の一例であり、制御ノード１と計算ノード２とを備える情報処理システムである。尚、制御ノード１と計算ノード２とはハードウェア構成上は同等のものを用いても構わない。
【００３１】
並列計算機２０００は、メモリとプロセッサとの対からなるノードが複数存在し、それらをインターコネクトで接続したものである。例えば、並列計算機２０００は、ＮＵＭＡ（Non-Uniform Memory Access）型のメモリを持つ並列計算機である。また、並列計算機２０００は、例えば、ＨＰＣ（High Performance Computing）分野において利用される。そして、並列計算機２０００は、上述したデマンドページング方式を採用していないアーキテクチャである。また、並列計算機２０００は、ベクトル演算機ということもできる。
【００３２】
制御ノード１は、上述した第１のノード１１００の一例であり、ＣＰＵ（Central Processing Unit）１１と、メモリ１２と、データ転送部１３とを備える。ＣＰＵ１１は、複数のプロセッサコア１１１、・・・１１ｍ（ｍは２以上の自然数。）を有する。但し、ＣＰＵ１１は、少なくとも１つのプロセッサコアを有するものであればよい。例えば、プロセッサコア１１１は、本実施の形態にかかるメモリ初期化方法が実装されたＯＳを実行する。
【００３３】
メモリ１２は、データや実行するプログラムなどを記憶する主記憶装置であり、例えば、ＲＡＭ等の揮発性記憶装置である。メモリ１２は、プロセッサコア１１１等のそれぞれにより共用される。
【００３４】
データ転送部１３は、バス３を介して計算ノード２と接続され、制御ノード１内の構成と計算ノード２との間でデータ転送を行う回路ブロックである。データ転送部１３は、ＤＭＡエンジン１３１と対ＣＰＵ通信部１３２とを備える。ＤＭＡエンジン１３１は、ＣＰＵ１１を介さずにメモリ１２に対してアクセスするためのデータ転送回路である。対ＣＰＵ通信部１３２は、ＣＰＵ１１内のレジスタ（不図示）等などの資源にアクセスするための機能を有する。
【００３５】
計算ノード２は、上述した第２のノード１２００の一例であり、ＣＰＵ２１と、メモリ２２と、データ転送部２３とを備える。ＣＰＵ２１は、複数のプロセッサコア２１１、２１２・・・２１ｎを有する。但し、ＣＰＵ２１は、少なくとも２以上のプロセッサコアを有するものであればよい。プロセッサコア２１１のそれぞれは、プロセッサコア１１１からの制御により独立にユーザプロセスや後述するメモリ初期化プロセスを実行可能である。尚、計算ノード２は、ＯＳ機能を持たず、制御ノード１の制御によりユーザプロセスが実行されるものとする。
【００３６】
メモリ２２は、データや実行するプログラムなどを記憶する主記憶装置であり、例えば、ＲＡＭ等の揮発性記憶装置である。メモリ２２は、プロセッサコア２１１等のそれぞれにより共用される。
【００３７】
データ転送部２３は、バス３を介して制御ノード１と接続され、計算ノード２内の構成と制御ノード１との間でデータ転送を行う回路ブロックである。データ転送部２３は、ＤＭＡエンジン２３１と対ＣＰＵ通信部２３２とを備える。ＤＭＡエンジン２３１は、ＣＰＵ２１を介さずにメモリ２２に対してアクセスするためのデータ転送回路である。対ＣＰＵ通信部２３２は、ＣＰＵ２１内のレジスタ（不図示）等などの資源にアクセスするための機能を有する。
【００３８】
尚、以下の説明において、プロセッサコア１１１等を代表して単にプロセッサコア１１１と記載し、同様に、プロセッサコア２１１等を代表して単にプロセッサコア２１１と記載して説明する場合がある。
【００３９】
制御ノード１と計算ノード２とはバス３を介して接続されている。そして、制御ノード１と計算ノード２とは、所定のデータ転送機構を介して相互に通信を行うことができる。例えば、制御ノード１と計算ノード２は、ＰＣＩ（Peripheral Component Interconnect）、Ｉｎｆｉｎｉｂａｎｄ等のＤＭＡ機能、または、ＲＤＭＡ機能を持つインターコネクトによって通信を実現できる。
【００４０】
図４は、本実施の形態２にかかる並列計算機２０００のソフトウェアを中心とした機能構成を示すブロック図である。制御ノード１は、制御コア１４と記憶装置（不図示）を備える。ここで、制御コア１４は、プロセッサコア１１１から１１ｍのいずれかである。また、当該記憶装置は、本実施の形態にかかるメモリ初期化制御方法の処理が実装されたコンピュータプログラムが記憶されている。そして、制御コア１４は、記憶装置からコンピュータプログラムをメモリ１２へ読み込み実行することにより、以下の計算ノード制御用ＯＳ１５として機能する。尚、メモリ初期化制御方法の処理が実装されたコンピュータプログラムは、既存のＯＳに改良を加えたものか、別途、実装されたプログラムでありＯＳと共に実行されるものであればよい。
【００４１】
計算ノード２は、ＤＭＡエンジン２３１と、メモリ２２と、計算コア１＿２４１、計算コア２＿２４２、・・・計算コアｎ＿２４ｎとを備える。尚、計算コア１＿２４１等は、上述したプロセッサコア２１１等に対応する構成である。計算コア１＿２４１は、例えば、ユーザプロセスａ＿２５１が実行中であることを示す。また、計算コア２＿２４２は、例えば、ユーザプロセスｂ＿２５２が実行中であることを示す。また、計算コアｎ＿２４ｎは、例えば、メモリ初期化プロセス２５ｎが実行中であることを示す。
【００４２】
メモリ２２は、例えば、領域２２０から２２５が存在することを示す。領域２２０は、初期化済かつプロセスへ未割当であるメモリ領域である。領域２２１は、ユーザプロセスａ＿２５１に割当済であるメモリ領域である。領域２２２は、ユーザプロセスａ＿２５１が解放したメモリ領域である。但し、領域２２２は、未初期化である。領域２２３は、ユーザプロセスｂ＿２５２に割当済であるメモリ領域である。領域２２４は、計算コア１用に割り当てられたメモリ初期化プロセスの実行イメージが格納されたメモリ領域である。領域２２５は、計算コアｎ用に割り当てられたメモリ初期化プロセスの実行イメージが格納されたメモリ領域である。尚、計算コア２から計算コアｎ−１用にそれぞれ割り当てられたメモリ初期化プロセスの実行イメージが可能されたメモリ領域も存在するものとする。
【００４３】
計算ノード制御用ＯＳ１５は、計算ノード２の資源管理を行う計算ノードメモリ管理部１５１と、計算ノード２のプロセスを管理する計算ノードプロセス管理部１５２とを備える。計算ノードメモリ管理部１５１は、メモリ２２内の物理メモリの各領域について割当済、未初期化、初期化済の状態を管理する。具体的には、計算ノードメモリ管理部１５１は、割当済物理メモリ管理部１５１１、未初期化物理メモリ管理部１５１２、初期化済物理メモリ管理部１５１３、閾値管理部１５１４を含む。割当済物理メモリ管理部１５１１は、メモリ２２のうちプロセスに割当済の物理メモリに関する情報を管理する。未初期化物理メモリ管理部１５１２は、メモリ２２のうちプロセスから解放済みであるが初期化前である未初期化の物理メモリに関する情報を管理する。初期化済物理メモリ管理部１５１３は、メモリ２２のうちプロセスに割当前かつ初期化済である物理メモリに関する情報を管理する。閾値管理部１５１４は、メモリ使用率の閾値を管理する。閾値管理部１５１４は、計算ノード制御用ＯＳ１５の起動時又は任意のタイミングで、任意の入力手段により読み込まれた閾値を受け付けて、メモリ１２に格納する。尚、割当済物理メモリ管理部１５１１、未初期化物理メモリ管理部１５１２及び初期化済物理メモリ管理部１５１３で管理される物理メモリに関する情報、並びに、閾値のデータは、メモリ１２に保持されているものとする。
【００４４】
計算ノードプロセス管理部１５２は、計算ノード２に対するスケジューリングやコンテキストスイッチなどのプロセス管理を行う。また、計算ノードプロセス管理部１５２は、各計算コア２４１等のそれぞれに対応するプロセスキュー１５２１、・・・１５２ｎを管理する。尚、プロセスキュー１５２１、・・・１５２ｎは、メモリ１２上で保持される。
【００４５】
計算ノード制御用ＯＳ１５は、計算ノード２上の計算コア１＿２４１等に対してユーザプロセスやメモリ初期化プロセスの実行や停止の指示といった各種制御を行う。ここで、本実施形態では、ユーザプロセスとメモリ初期化プロセスとを区別する。すなわち、計算ノード制御用ＯＳ１５は、メモリ初期化プロセスを特権的なプロセスとしてメモリ２２上に生成する。例えば、計算ノード制御用ＯＳ１５は、起動時に計算コア１＿２４１等の少なくとも１以上に対応付けてメモリ初期化プロセスを生成し、メモリ２２内にロードする。併せて、計算ノード制御用ＯＳ１５は、対応する計算コア１プロセスキュー１５２１から計算コアｎプロセスキュー１５２ｎにメモリ初期化プロセスを登録する。このとき、計算ノード制御用ＯＳ１５は、各メモリ初期化プロセスの優先度をプロセスキュー内で最低値とする。そのため、各計算コアは、プロセスキュー内にメモリ初期化プロセスよりも優先度の高いユーザプロセスが登録されていれば、そのユーザプロセスがディスパッチされて実行を開始する。一方、各計算コアは、プロセスキュー内にメモリ初期化プロセスよりも優先度の高いプロセスが存在しなければ、計算ノード制御用ＯＳ１５の指示によりメモリ初期化プロセスがディスパッチされて、メモリ２２に割当済のメモリ初期化プロセスの実行を開始する。つまり、メモリ初期化プロセスはメモリ２２に常駐するが、通常は実行されない。また、メモリ初期化プロセスは少なくとも１つがメモリ２２に常駐していればよい。
【００４６】
また、計算ノード制御用ＯＳ１５は、複数の計算コアのうちいずれかで実行中のユーザプロセスから、メモリ２２内の指定領域の解放要求を受信した場合に、計算ノード２の動作状況を判定する。そして、計算ノード制御用ＯＳ１５は、動作状況に応じてメモリ２２の指定領域の初期化を行う。具体的には、計算ノード制御用ＯＳ１５は、複数の計算コアのそれぞれにおけるプロセスの実行状況を動作状況として判定する。そして、計算ノード制御用ＯＳ１５は、判定された実行状況において実行中のプロセスがない空きコアに対して、指定領域の初期化を指示する。
【００４７】
さらに、計算ノード制御用ＯＳ１５は、解放要求を受信した場合においてメモリ２２の使用量が所定の閾値を超えている場合に、複数の計算コアのそれぞれの実行状況を判定することが望ましい。これにより、メモリ使用率が高い場合には、メモリ解放要求の直後にメモリ割当要求を受信する場合があり、その際に、即時に、解放済みかつ初期化済みのメモリを割り当てることができる。
【００４８】
また、計算ノード制御用ＯＳ１５は、解放要求を受信した場合においてメモリ２２の使用量が所定の閾値を超えていない場合に、計算ノード２内のＤＭＡエンジン２３１に対して指定領域の初期化を指示するとよい。これにより、メモリの空きに余裕がある場合には、メモリ初期化にコアを用いないことで、他のプロセスによるコアの利用を促進することができる。
【００４９】
さらに、計算ノード制御用ＯＳ１５は、複数の計算コアで実行中のプロセスに割当済みのメモリ容量と未割当かつ未初期化のメモリ容量とを合計してメモリの使用量として算出し、メモリの使用量が所定の閾値を超えているか否かを判定すると良い。これにより、より正確にメモリの使用状況を把握して判定できる。
【００５０】
また、計算ノード制御用ＯＳ１５は、空きコアに対応付けられたメモリ初期化プロセスに対して、指定領域の初期化を指示する。尚、空きコアが複数存在する場合は、任意のコアを選択してもよい。
【００５１】
さらに、計算ノード制御用ＯＳ１５は、複数の計算コアのそれぞれに対応し、各計算コアにおける実行対象のプロセスを管理するための複数のプロセスキュー（１５２１等）を保持する。そして、計算ノード制御用ＯＳ１５は、初期化プロセスに最低の優先度を付加して、複数のプロセスキューの少なくとも１以上に登録する。計算ノード制御用ＯＳ１５は、実行状況を判定する際に、プロセスキュー内に初期化プロセス以外のプロセスが登録されているか否かを判定し、初期化プロセス以外のプロセスが登録されていないプロセスキューに対応する計算コアを、空きコアと判定する。
【００５２】
また、計算ノード制御用ＯＳ１５は、複数の計算コアのうちいずれかで実行中の第２のユーザプロセスから、メモリ２２内の前記指定領域のサイズ以下のメモリの割当要求を受信した場合、前記初期化された指定領域から前記割当要求のサイズのメモリを当該第２のユーザプロセスに割り当てる。
【００５３】
ここで、メモリ初期化プロセスは、計算ノード制御用ＯＳ１５からの実行開始指示（初期化指示）を受信するまで待機している。そして、メモリ初期化プロセスは、実行開始指示を受信した場合に、指定された領域（物理ページ）についてメモリ２２の初期化処理を行う。そして、初期化処理の完了後に、メモリ初期化プロセスは、計算ノード制御用ＯＳ１５に対して完了通知を送信する。
【００５４】
また、計算ノード制御用ＯＳ１５は、計算ノード２上の各プロセスとプロセス間通信等が可能である。プロセス間通信としては、例えば、ソケットやシグナルによる通信が用いられる。そのため、計算ノード制御用ＯＳ１５は、一般的なＯＳ（例えばＬｉｎｕｘ（登録商標）カーネル）と同様にユーザプロセスに対しこれらの管理機能を提供する形で計算ノード２のリソース管理を行うことができる。例えば、ユーザプロセスは、計算ノード制御用ＯＳ１５に対してシステムコールなど一般的なＯＳに対して行う要求を送信し、計算ノード制御用ＯＳ１５は、要求に応じた処理と結果の返答を行うことができる。
【００５５】
図５は、本実施の形態２にかかる制御ノードの計算ノード制御用ＯＳの起動時の処理の流れを説明するためのフローチャートである。まず、計算ノード制御用ＯＳ１５は起動時に、閾値管理部１５１４を更新する（Ｓ２０１）。例えば、計算ノード制御用ＯＳ１５は、外部から入力された閾値を受け付け、閾値管理部１５１４に登録する。ここで、計算ノード制御用ＯＳ１５は、起動時のコマンドライン引数、設定ファイル、又は、ユーザ等による入力装置を介した入力等により閾値を受け付ける。
【００５６】
次に、計算ノード制御用ＯＳ１５は、起動直後に初期化されたメモリ２２の全物理メモリの情報を初期化済物理メモリ管理部１５１３に登録する（Ｓ２０２）。その後、計算ノード制御用ＯＳ１５は、計算コア１＿２４１から計算コアｎ＿２４ｎのそれぞれに対応付けてｎ個のメモリ初期化プロセスをメモリ２２上に生成し（Ｓ２０３）、計算コア１プロセスキュー１５２１から計算コアｎプロセスキュー１５２ｎに登録する。
【００５７】
図６は、本実施の形態２にかかるユーザプロセスの処理の流れを説明するためのフローチャートである。ここでは、例としてユーザプロセスａ＿２５１がメモリ解放を要求する場合について説明する。まず、ユーザプロセスａ＿２５１は、何らかの処理を完了した後、メモリ２２内の領域２２２について解放するためにメモリ解放関数を呼び出す。これに応じて、ユーザプロセスａ＿２５１から領域２２２を指定領域としたメモリ解放要求が計算ノード制御用ＯＳ１５へ発行される（Ｓ２１１）。その後、ユーザプロセスａ＿２５１は、計算ノード制御用ＯＳ１５からのメモリ解放の処理結果を待ち受ける（Ｓ２１２）。メモリ解放の処理結果を受け付けた後、制御が戻るため、ユーザプロセスａ＿２５１は、実行を再開する（Ｓ２１３）。
【００５８】
図７は、本実施の形態２にかかるメモリ初期化制御処理の流れを説明するためのフローチャートである。まず、計算ノード制御用ＯＳ１５は、ユーザプロセスａ＿２５１からメモリ解放要求を受信する（Ｓ２２１）。そして、計算ノード制御用ＯＳ１５は、メモリ解放要求に指定された領域２２２に対応する論理アドレスを解放する（Ｓ２２２）。このとき、計算ノード制御用ＯＳ１５は、解放対象の物理メモリの情報を割当済物理メモリ管理部１５１１から削除し、未初期化物理メモリ管理部１５１２に登録する（Ｓ２２３）。そして計算ノード制御用ＯＳ１５は、ユーザプロセスａ＿２５１へ解放済みを示す解放処理完了通知（処理結果）を返信する（Ｓ２２４）。
【００５９】
次に、計算ノード制御用ＯＳ１５は、未初期化メモリを選択する（Ｓ２２５）。すなわち、計算ノード制御用ＯＳ１５は、未初期化物理メモリ管理部１５１２に登録されている物理メモリのページフレーム単位で１つ以上選択する。ここで、複数のメモリ解放要求が近い時間に受信されていた場合、または、スレッドによる並行処理等により、ステップＳ２２５の処理タイミングによっては、未初期化のページフレームが選択できない場合がある。例えば、一方の要求に対して既にステップＳ２２５が実行済みとなり、他方の要求においては未初期化のページフレームが選択できない場合などである。その場合、ステップＳ２２５でＮＯとなり、処理を終了する。
【００６０】
一方、未初期化メモリが選択された場合（ステップＳ２２５でＹＥＳ）、計算ノード制御用ＯＳ１５は、メモリ２２の使用率を確認する（Ｓ２２６）。具体的には、計算ノードメモリ管理部１５１は、割当済物理メモリ管理部１５１１と未初期化物理メモリ管理部１５１２で管理される物理メモリの合計値を算出する。そして、計算ノードメモリ管理部１５１は、合計値が物理メモリ全体に占める割合をメモリ使用率として算出する。すなわち、計算ノードメモリ管理部１５１は、割当済物理メモリ管理部１５１１と未初期化物理メモリ管理部１５１２から取得した情報に基づいて計算ノード２でプロセスに割当済と解放済みだが未初期化であるの物理メモリのページフレーム数を合計する。そして、計算ノードメモリ管理部１５１は、合計値がメモリ２２全体のページフレーム数に占める割合を算出する。そして、計算ノードメモリ管理部１５１は、算出されたメモリ使用率が閾値管理部１５１４で管理される閾値を超えるか否かを判定する。
【００６１】
メモリ使用率が閾値を超えないと判定した場合（ステップＳ２２６で低）、計算ノード制御用ＯＳ１５は、ＤＭＡエンジン２３１に対して、選択されたページフレーム（領域２２２）について初期化することを指示する（Ｓ２２７）。図９は、本実施の形態２にかかるメモリ使用量が閾値未超過の概念を示す図である。この場合、メモリ２２内の初期化済のメモリ容量が十分であるため、直後にメモリ割当要求が発生したとしても、即座に初期化済のメモリ領域を割り当てることが可能である。また、ＤＭＡエンジン２３１を用いて初期化を行うため、計算コア１＿２４１等で実行中の各ユーザプロセスにコンテキストスイッチを行う必要がない。そのため、実行中のユーザプロセスへの影響を与えない。つまり、このケースでは、ＤＭＡエンジンを用いたメモリ初期化方法が最適であるといえる。
【００６２】
一方、メモリ使用率が閾値を超えたと判定した場合（ステップＳ２２６で高）、計算ノード制御用ＯＳ１５は、空きコアがあるか否かを判定する（Ｓ２２８）。具体的には、計算ノードプロセス管理部１５２は、計算コア１プロセスキュー１５２１から計算コアｎプロセスキュー１５２ｎを参照し、各計算コアのプロセスの実行状況を判定する。つまり、計算ノードプロセス管理部１５２は、ユーザプロセスのスケジューリングがされていない計算コア、すなわち、プロセスが実行されていない空きコアの有無を判定する。空きコアが有る場合（ステップＳ２２８で有）、計算ノード制御用ＯＳ１５は、空きコアに対してメモリ初期化プロセスによる初期化指示を行う（Ｓ２２９）。図１０は、本実施の形態２にかかるメモリ使用量が閾値超過の概念を示す図である。すなわち、計算ノード制御用ＯＳ１５は、空きコアに対応付けられたメモリ初期化プロセスに対して、選択されたページフレーム（領域２２２）について初期化することを指示する。このように、メモリの空き容量が少ない場合には、ＤＭＡエンジンによるメモリ初期化と比べて高速にメモリ初期化を行うことで、メモリ初期化をより速く完了させることができる。そして、直後にメモリ割当要求が発生したとしても、メモリ初期化による待ち時間を削減し、初期化済のメモリ領域をより速く割り当てることができる。また、空きコアであるため、実行中のユーザプロセスへの影響を与えない。つまり、このケースでは、メモリ初期化プロセスを用いたメモリ初期化方法が最適であるといえる。尚、空きコアが複数存在する場合、任意の計算コアを選択してよい。また、各メモリ初期化プロセスへのページフレームの割当方は任意である。
【００６３】
空きコアが無い場合（ステップＳ２２８で無）、計算ノード制御用ＯＳ１５は、ＤＭＡエンジン２３１に対して、選択されたページフレーム（領域２２２）について初期化することを指示する（Ｓ２２７）。この場合に、メモリ初期化プロセスを実行させてしまうと、いずれかの計算コアで実行中のユーザプロセスをメモリ初期化プロセスへコンテキストスイッチにより切り替えることになり、実行中のユーザプロセスへの影響を与えてしまう。そのため、このケースでは、メモリ初期化プロセスではなく、ＤＭＡエンジンを用いたメモリ初期化方法が最適であるといえる。
【００６４】
ステップＳ２２７又はＳ２２９の後、計算ノード制御用ＯＳ１５は、計算ノード２からのメモリ初期化完了通知を待つ（Ｓ２３０）。そして、メモリ初期化完了通知を受信した後、計算ノード制御用ＯＳ１５は、未初期化物理メモリ管理部１５１２から初期化が完了した領域を削除し、当該領域を初期化済物理メモリ管理部１５１３へ登録する（Ｓ２３１）。
【００６５】
図８は、本実施の形態２にかかるメモリ初期化プロセスの処理の流れを説明するためのフローチャートである。まず、メモリ初期化プロセス２５ｎは、計算ノード制御用ＯＳ１５からの初期化指示を受信したか否かを判定する（Ｓ２４１）。未受信の場合、待機し、所定時間経過後、再度、ステップＳ２４１を実行する。初期化指示を受信した場合、メモリ初期化プロセス２５ｎは、指定されたページフレームについてメモリ２２の初期化処理を実行する（Ｓ２４２）。そして、初期化処理終了後に、メモリ初期化プロセス２５ｎは、計算ノード制御用ＯＳ１５に対して、処理完了通知を返信する（Ｓ２４３）。その後、待機し、所定時間経過後、再度、ステップＳ２４１を実行する。このとき、常駐状態に戻る。
【００６６】
尚、この後、例えば、ユーザプロセスｂ＿２５２がメモリ割当要求を発行したとする。その場合、計算ノード制御用ＯＳ１５は、初期化済物理メモリ管理部１５１３の中から、要求されたサイズの任意のページフレームを選択し、ユーザプロセスｂ＿２５２に割り当てる。すなわち、初期化済物理メモリ管理部１５１３から選択したページフレームを削除し、割当済物理メモリ管理部１５１１に登録する。
【００６７】
以上のことから本実施の形態により次のような効果を奏する。
まず、計算ノードのメモリ及びコアの使用状況（動作状況）によって、メモリ解放手法を切り替えることにより、メモリ初期化時のユーザプロセスへの影響を小さくすることができる。例えば、メモリ使用率が高く、コアが空いている場合には、コアによるメモリ初期化を行うと良い。この場合、ユーザプロセスはコアを使っていないので、ユーザプロセスの実行に割り込んではいない。逆に、コアが空いていない場合は、コアを使わずＤＭＡエンジンを利用することにより、ユーザプロセスの実行に割り込まない。そのため、実行中のユーザプロセスへの影響を抑制できる。
【００６８】
また、ユーザプロセスによるメモリ解放要求時に初期化済みメモリが十分に無く、未初期化のメモリが多くあった場合、実行中のユーザプロセスへ影響を与えることなく、最も早くメモリを初期化する方法を選択して初期化することが可能となる。この場合、上記に加えて、ＤＭＡエンジンによる初期化に比べて高速なコアを利用する初期化を選択するためである。
【００６９】
また、メモリ初期化をｘ８６アーキテクチャより短時間で実行可能となるため、メモリ割当待ちの時間が短縮し、ユーザプロセスの実行効率向上につながる。上記により実行中のユーザプロセスへ影響を与えずに、メモリ割当時にメモリ初期化による遅延が発生する場合には、これを短縮できるためである。
【００７０】
また、本実施形態は、メモリ初期化方法として、ＤＭＡエンジン経由と、計算コアにより実行させるメモリ初期化プロセスとを提供し、計算ノードのメモリ負荷と計算コアの使用状況に応じて最適なメモリ初期化方法を選択するものといえる。これにより、計算ノードのメモリ負荷が高い場合におけるメモリ確保に伴うユーザプロセスの遅延を緩和するものである。
【００７１】
また、本実施形態では、メモリ初期化プロセス専用のコアを設けないことにより、並列計算機の資源を有効活用することができる。
【００７２】
＜その他の実施の形態＞
尚、上述した実施形態２では全ての計算コアに最低優先度のメモリ初期化プロセスを生成し、各計算コアにスケジューリングする方針としたが、一部のコアに対してだけメモリ初期化プロセスを生成し、メモリ上に常駐させても良い。この場合、実行可能なユーザプロセスの存在しないコアが見つかった場合にその都度スケジューリングすることで同様に効果を期待できる。
【００７３】
または、メモリ初期化用プロセスを１プロセスとし、当該メモリ初期化用プロセスからコア数分のスレッドを生成しても良い。すなわち、各メモリ初期化用スレッドを複数の計算コアに分散して割り当ててもよい。この場合、空きコアにおいて割り当て済みのスレッドを実行することにより、計算コアによるメモリ初期化処理を実現できる。特に、スレッドはプロセスのメモリ領域を共有するため、メモリの使用率を抑えつつ同様の効果を期待できる。
【００７４】
尚、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではない。本開示は、任意の処理を、ＣＰＵにコンピュータプログラムを実行させることにより実現することも可能である。
【００７５】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７６】
なお、本開示は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、本開示は、それぞれの実施の形態を適宜組み合わせて実施されてもよい。
【００７７】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
（付記Ａ１）
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含み、
前記制御コアは、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う
情報処理装置。
（付記Ａ２）
前記制御コアは、
前記複数の計算コアのそれぞれにおけるプロセスの実行状況を前記動作状況として判定し、
前記判定された実行状況において実行中のプロセスがない空きコアに対して、前記指定領域の初期化を指示する
付記Ａ１に記載の情報処理装置。
（付記Ａ３）
前記制御コアは、
前記解放要求を受信した場合において前記メモリの使用量が所定の閾値を超えている場合に、前記複数の計算コアのそれぞれの前記実行状況を判定する
付記Ａ２に記載の情報処理装置。
（付記Ａ４）
前記制御コアは、
前記解放要求を受信した場合において前記メモリの使用量が所定の閾値を超えていない場合に、前記第２のノード内のデータ転送回路に対して前記指定領域の初期化を指示する
付記Ａ２又はＡ３に記載の情報処理装置。
（付記Ａ５）
前記制御コアは、
前記複数の計算コアで実行中のプロセスに割当済みのメモリ容量と未割当かつ未初期化のメモリ容量とを合計して前記メモリの使用量として算出し、
前記メモリの使用量が前記所定の閾値を超えているか否かを判定する
付記Ａ３又はＡ４に記載の情報処理装置。
（付記Ａ６）
前記メモリには、前記複数の計算コアのうち少なくとも１以上に対応付けて生成された１以上のメモリ初期化プロセスが常駐しており、
前記制御コアは、
前記空きコアに対応付けられた前記メモリ初期化プロセスに対して、前記指定領域の初期化を指示する
付記Ａ２乃至Ａ５のいずれか１項に記載の情報処理装置。
（付記Ａ７）
前記制御コアは、
前記複数の計算コアのそれぞれに対応し、各計算コアにおける実行対象のプロセスを管理するための複数のプロセスキューを保持し、
前記メモリ初期化プロセスに最低の優先度を付加して、前記複数のプロセスキューの少なくとも１以上に登録し、
前記実行状況を判定する際に、前記プロセスキュー内に前記メモリ初期化プロセス以外のプロセスが登録されているか否かを判定し、
前記メモリ初期化プロセス以外のプロセスが登録されていないプロセスキューに対応する計算コアを、前記空きコアと判定する
付記Ａ６に記載の情報処理装置。
（付記Ｂ１）
オペレーティングシステムが動作する制御コアと、
当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備えるノードと所定のデータ転送機構を介して通信を行なうデータ転送部と、
を備え、
前記制御コアは、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記ノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う
情報処理装置。
（付記Ｂ２）
前記制御コアは、
前記複数の計算コアのそれぞれにおけるプロセスの実行状況を前記動作状況として判定し、
前記判定された実行状況において実行中のプロセスがない空きコアに対して、前記指定領域の初期化を指示する
付記Ｂ１に記載の情報処理装置。
（付記Ｃ１）
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含む情報処理装置における前記制御コアが、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定し、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う
メモリ初期化制御方法。
（付記Ｄ１）
オペレーティングシステムが動作する制御コアを備える第１のノードと、当該制御コアにより制御され、所定の計算処理を行う複数の計算コアと当該複数の計算コアが使用するメモリとを備え、当該第１のノードと所定のデータ転送機構を介して通信を行う第２のノードとを含む情報処理装置における前記制御コアに、
前記複数の計算コアのうちいずれかで実行中のユーザプロセスから、前記メモリ内の指定領域の解放要求を受信した場合に、前記第２のノードの動作状況を判定する処理と、
前記動作状況に応じて前記メモリの前記指定領域の初期化を行う処理と、
を実行させるプログラム。
【符号の説明】
【００７８】
１０００  情報処理装置
１１００  第１のノード
１１１０  制御コア
１２００  第２のノード
１２１１  計算コア
１２１２  計算コア
１２１ｎ  計算コア
１２２０  メモリ
２０００  並列計算機
１  制御ノード
１１  ＣＰＵ
１１１  プロセッサコア
１１ｍ  プロセッサコア
１２  メモリ
１３  データ転送部
１３１  ＤＭＡエンジン
１３２  対ＣＰＵ通信部
１４  制御コア
１５  計算ノード制御用ＯＳ
１５１  計算ノードメモリ管理部
１５１１  割当済物理メモリ管理部
１５１２  未初期化物理メモリ管理部
１５１３  初期化済物理メモリ管理部
１５１４  閾値管理部
１５２  計算ノードプロセス管理部
１５２１  計算コア１プロセスキュー
１５２ｎ  計算コアｎプロセスキュー
２  計算ノード
２１  ＣＰＵ
２１１  プロセッサコア
２１２  プロセッサコア
２１ｎ  プロセッサコア
２２  メモリ
２３  データ転送部
２３１  ＤＭＡエンジン
２３２  対ＣＰＵ通信部
３  バス
２２０  領域
２２１  領域
２２２  領域
２２３  領域
２２４  領域
２２５  領域
２４１  計算コア１＿
２４２  計算コア２＿
２４ｎ  計算コアｎ＿
２５１  ユーザプロセスａ＿
２５２  ユーザプロセスｂ＿
２５ｎ  メモリ初期化プロセス
【図１】
2020095446.tif 000003
【図２】
2020095446.tif 000004
【図３】
2020095446.tif 000005
【図４】
2020095446.tif 000006
【図５】
2020095446.tif 000007
【図６】
2020095446.tif 000008
【図７】
2020095446.tif 000009
【図８】
2020095446.tif 000010
【図９】
2020095446.tif 000011
【図１０】
2020095446.tif 000012