(57)【要約】【課題】  ファイルアクセス時のオーバヘッドを削減する技術を提供する。【解決手段】  並列計算機システムは、管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含み、前記管理ノードは、前記計算ノードにファイルをキャッシュする計算ノード管理手段と、を備え、前記計算ノードは、キャッシュされたキャッシュファイルを格納するキャッシュファイルメモリと、前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する処理手段と、を備える。【選択図】      図１０
2018049444.tif 000002
【特許請求の範囲】
【請求項１】
管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含み、
前記管理ノードは、前記計算ノードにファイルをキャッシュする計算ノード管理手段を備え、
前記計算ノードは、前記計算ノード管理手段によってキャッシュされたキャッシュファイルを格納するキャッシュファイルメモリと、
前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する処理手段と、
を備える並列計算機システム。
【請求項２】
前記処理手段は、前記ファイルにアクセスするファイルアクセス要求を前記管理ノードに送信し、
前記管理ノードは、前記ファイルアクセス要求の対象となるファイルを、前記計算ノード管理手段が前記計算ノードにキャッシュするか否か判定する管理手段を更に備え、
前記計算ノード管理手段は、判定の結果に基づき、前記ファイルアクセス要求を送信した計算ノードに前記ファイルをキャッシュする請求項１に記載の並列計算機システム。
【請求項３】
前記計算ノードは、該計算ノードにキャッシュされたキャッシュファイルを管理するための計算情報を格納する計算ノードメモリを更に備え、
前記ファイルアクセス要求の対象となるファイルを、前記計算ノード管理手段が前記計算ノードにキャッシュする場合、前記計算ノード管理手段は、前記計算ノードメモリに前記キャッシュファイルを格納するための空きメモリがあるか否か判定し、空きメモリがある場合、該空きメモリを前記キャッシュファイルメモリとして確保し、確保したキャッシュファイルメモリに前記ファイルをキャッシュする請求項２に記載の並列計算機システム。
【請求項４】
前記計算ノードメモリは、前記プロセスごとに割り当てられた記憶領域であるプロセスメモリを含み、
前記処理手段は、前記キャッシュファイルメモリから前記プロセスメモリに前記キャッシュファイルを転送し、転送したキャッシュファイルを用いて該計算ノード上で起動するプロセスを実行する請求項３に記載の並列計算機システム。
【請求項５】
前記処理手段は、前記ファイルを識別するためのファイル番号を要求するファイル番号要求を前記管理ノードに送信し、
前記管理手段は、前記ファイル番号要求に基づき、該ファイル番号要求に対応するファイル番号を前記計算ノードに送信し、
前記処理手段は、前記ファイル番号を前記ファイルアクセス要求として前記管理ノードに送信する請求項３または４に記載の並列計算機システム。
【請求項６】
前記計算ノードは、前記ファイル番号と、該ファイル番号によって識別されるファイルのキャッシュファイルの物理アドレスと、該物理アドレスの変換先の仮想アドレスとのマッピングを格納するページテーブルを更に備え、
前記処理手段は、前記ページテーブルに基づき、前記仮想アドレスによって指定されたキャッシュファイルであって、前記プロセスメモリに対応する仮想メモリのアドレス空間にマップされたキャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する請求項５に記載の並列計算機システム。
【請求項７】
前記管理ノードは、前記計算ノード管理手段がキャッシュしたキャッシュファイルを管理するための管理情報を格納する記憶手段を更に備え、
前記管理手段は、前記ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、前記ファイル番号によって指定されたファイルがキャッシュ済みである場合、前記ファイルのキャッシュファイルに対応する前記管理情報に含まれる参照カウントであって、該キャッシュファイルがこれまでに参照された回数を示す参照カウントを増加させ、
前記計算ノード管理手段は、前記処理手段が、該キャッシュファイルにアクセスできるように前記ファイルアクセス要求を送信した計算ノードの計算情報とページテーブルとを更新する請求項５または６に記載の並列計算機システム。
【請求項８】
前記計算ノード管理手段は、前記管理情報を参照し、前記参照カウントが０であるキャッシュファイルがあるか否か判定し、前記参照カウントが０であるキャッシュファイルがある場合、前記参照カウントが０であるキャッシュファイルが読み込み専用であるか否か判定し、前記参照カウントが０であるキャッシュファイルが読み込み専用である場合、前記参照カウントが０であるキャッシュファイルを格納するキャッシュファイルメモリを破棄する請求項７に記載の並列計算機システム。
【請求項９】
前記処理手段は、前記計算情報を参照し、前記ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、前記ファイル番号によって指定されたファイルがキャッシュ済みでない場合、前記管理ノードに前記ファイルアクセス要求を送信し、
前記ファイル番号によって指定されたファイルがキャッシュ済みの場合、前記ファイル番号によって指定された全てのファイルがキャッシュ済みか否か判定し、一部のファイルはキャッシュ済みだが、ファイル番号によって指定された全てのファイルはキャッシュ済みでない場合、キャッシュ済みでないファイルに対するファイルアクセス要求を前記管理ノードに送信する請求項５から８のいずれか１項に記載の並列計算機システム。
【請求項１０】
管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含む並列計算機システムの管理方法であって、
前記管理ノードは、前記計算ノードにファイルをキャッシュし、
前記計算ノードは、キャッシュされたキャッシュファイルを格納し、前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、並列計算機システムおよび管理方法に関する。
【背景技術】
【０００２】
メインプロセッサノードと、サブプロセッサノードとを含むシステムにおいては、システムに含まれる装置間、例えば、サブプロセッサノードとメインプロセッサノードとの間で、データ転送が行われる。
【０００３】
例えば、特許文献１には、メインプロセッサからの要求によって、サブプロセッサがメインメモリにある転送データを、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）のバッファメモリに転送することでデータ転送処理を行う技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−０６５４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、サブプロセッサがメインメモリに対しファイルアクセスを行う度に、サブプロセッサとメインメモリとの間でデータ転送処理が必要となる。そのため、メインメモリに格納されているファイルへのアクセスが連続する場合、特許文献１に記載の技術では、ファイルアクセス時のオーバヘッドが顕著に表れてしまうという問題があった。
【０００６】
本開示は、上記問題を鑑みたものであって、ファイルアクセス時のオーバヘッドを削減する技術を提供する。
【課題を解決するための手段】
【０００７】
本開示の一形態に係る並列計算機システムは、管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含み、前記管理ノードは、前記計算ノードにファイルをキャッシュする計算ノード管理手段を備え、前記計算ノードは、前記計算ノード管理手段によってキャッシュされたキャッシュファイルを格納するキャッシュファイルメモリと、前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する処理手段と、を備える。
【０００８】
本開示の一形態に係る管理方法は、管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含む並列計算機システムの管理方法であって、前記管理ノードは、前記計算ノードにファイルをキャッシュし、前記計算ノードは、キャッシュされたキャッシュファイルを格納し、前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する。
【発明の効果】
【０００９】
本開示によれば、ファイルアクセス時のオーバヘッドを削減する技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態における並列計算機システムの構成の一例を示すブロック図である。
【図２】第１実施形態における並列計算機システムの機能構成の一例を示すブロック図である。
【図３】計算ノードキャッシュファイル管理情報の一例を示す図である。
【図４】キャッシュファイル管理情報と、計算ノードのプロセスにおける仮想アドレス空間との一例を示す図である。
【図５】計算ノードがファイル番号を取得する動作の一例を示すフローチャートである。
【図６】計算ノードがキャッシュファイルメモリを利用する動作の一例を示すフローチャートである。
【図７】管理ノードがファイルアクセス要求を受け付けた際の動作の一例を示すフローチャートである。
【図８】管理ノードがキャッシュファイルを生成する動作の一例を示すフローチャートである。
【図９】キャッシュファイルの書き戻しの動作と、キャッシュファイルメモリを破棄する動作との一例を示すフローチャートである。
【図１０】第２実施形態における並列計算機システムの機能構成の一例を示すブロック図である。
【図１１】本開示の各実施形態に係る並列計算機システムを実現する情報処理装置のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、本開示の実施形態について図面を参照して詳細に説明する。
【００１２】
＜第１実施形態＞
図１は、本開示の第１実施形態における並列計算機システムの構成の一例を示すブロック図である。並列計算機システム１は、管理ノード１００と、管理ノード１００によって制御される１以上の計算ノード（１１０−１、１１０−２、…１１０−Ｎ（Ｎ：自然数））と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス１３０とを含む。なお、本実施形態において、計算ノード（１１０−１、１１０−２、…１１０−Ｎ）のそれぞれを区別しない場合、または、計算ノード（１１０−１、１１０−２、…１１０−Ｎ）のそれぞれを総称する場合、計算ノード１１０と呼ぶ。
【００１３】
（計算ノード１１０）
計算ノード１１０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）機能をもたない分散メモリ計算機である。したがって、計算ノード１１０は、管理ノード１００によって制御される。計算ノード１１０は、管理ノード１００と無線または有線のネットワークによって相互に接続されている。また、計算ノード１１０は、無線または有線のネットワークを介して管理ノード１００と情報の通信を行う。また、計算ノード１１０は例えばアクセラレータ等のコプロセッサによって実現される。
【００１４】
（管理ノード１００）
管理ノード１００は、計算ノード１１０を管理する計算機である。管理ノード１００は、計算ノード１１０と、無線または有線のネットワークによって相互に接続されている。管理ノード１００は、無線または有線のネットワークを介して計算ノード１１０と情報の通信を行う。また、計算ノード１１０がＯＳ機能をもたない分散メモリ計算機のため、制御ソフトウェアを含む計算ノード１１０のＯＳは、管理ノード１００上で動作する。管理ノード１００は、例えば、メインプロセッサによって実現される。
【００１５】
（Ｉ／Ｏデバイス１３０）
Ｉ／Ｏデバイス１３０は、例えば、管理ノード１００と有線または無線のネットワークによって接続される。また、Ｉ／Ｏデバイス１３０は、ファイル形式のデータ（ファイル）の集合を示すファイルデータ１３１を記憶する。なお、ファイルデータ１３１に含まれる各ファイルにはファイルを識別するための番号（ファイル番号）が付与されている。Ｉ／Ｏデバイス１３０は、例えば磁気ディスクやフラッシュディスクによって実現される。なお、データの形式はファイル形式に限定されない。
【００１６】
次に並列計算機システム１の管理ノード１００と、計算ノード１１０と、Ｉ／Ｏデバイス１３０との機能構成について説明する。図２は、本実施形態に係る並列計算機システム１の管理ノード１００と、計算ノード１１０と、Ｉ／Ｏデバイス１３０との機能構成を示すブロック図である。図２に示すとおり、管理ノード１００は、１以上の計算ノード管理部（１０１−１、１０１−２、…１０１−Ｎ）と、管理部１０２と、管理ノードメモリ１０３と、記憶部１０５とを備える。
【００１７】
なお、本実施形態において、計算ノード管理部（１０１−１、１０１−２、…１０１−Ｎ）のそれぞれを区別しない場合、または計算ノード管理部（１０１−１、１０１−２、…１０１−Ｎ）のそれぞれを総称する場合、計算ノード管理部１０１と呼ぶ。
【００１８】
記憶部１０５は、例えば、図３に示すような管理情報（計算ノードキャッシュファイル管理情報）（１０６−１、１０６−２、…１０６−Ｍ（Ｍ：自然数））を記憶する。なお、本実施形態において、管理情報（１０６−１、１０６−２、…１０６−Ｍ）のそれぞれを区別しない場合、または管理情報（１０６−１、１０６−２、…１０６−Ｍ）のそれぞれを総称する場合、管理情報１０６と呼ぶ。
【００１９】
（管理情報１０６）
図３は、管理情報１０６の一例を示す図である。管理情報１０６は、計算ノード管理部１０１がキャッシュしたファイルを示すキャッシュファイルを管理するための情報である。管理情報１０６は、キャッシュファイルがファイルデータ１３１のどの部分に該当するのか、つまりどのファイルをキャッシュしたキャッシュファイルなのか、どの計算ノード１１０にあるのか、計算ノード１１０のどこに存在するのか等を示す情報である。さらに管理情報１０６には、どのプロセスにどのようなプロテクションで利用されているのか等の情報が含まれる。ここでいうプロセスとは、後述する処理部１１７が計算ノード１１０上で実行するプログラムを示す。処理部１１７は１以上のプロセスを実行する。
【００２０】
図３に示す例では、管理情報１０６は、ｉｎｏｄｅというデータ構造を用いる。また、図３に示す管理情報１０６は、オフセットと、サイズと、計算ノード番号と、開始物理アドレスと、参照カウントと、プロテクションとを含む。
【００２１】
オフセットは、キャッシュファイルの基準となる所定の位置からの相対的な位置を示す。サイズは、キャッシュファイルの大きさを示す。計算ノード番号は、キャッシュファイルがどの計算ノード１１０にあるのかを示す。開始物理アドレスは、キャッシュファイルが物理的に計算ノード１１０のどこに存在するのかを示す。参照カウントは、キャッシュファイルがこれまでに参照された回数を示す。プロテクションは、キャッシュファイルが、読み込み専用または書き込み可能か等の情報を示す。なお、図３に示す管理情報１０６は一例であり、これに限定されない。
【００２２】
管理情報１０６は、キャッシュファイルの生成、ファイルのｏｐｅｎ、ファイルのｃｌｏｓｅ等のファイルアクセスのための関数が操作された時に管理部１０２によって更新される。具体的に、１つのキャッシュファイルが生成された場合、生成されたキャッシュファイルに関する管理情報１０６が１つ追加される。また、ファイルのｏｐｅｎが操作された場合、管理部１０２は、ファイルのｏｐｅｎが操作されたキャッシュファイルに対応する管理情報１０６の参照カウントを増加させる。また、例えばファイルのｃｌｏｓｅが操作された場合、管理部１０２は、ファイルのｃｌｏｓｅが操作されたキャッシュファイルに対応する管理情報１０６の参照カウントをディクリメントする。
【００２３】
（管理ノードメモリ１０３）
管理ノードメモリ１０３は、管理ノード１００の記憶領域であり、後述する通常のデータ転送時に使用され、キャッシュファイルを格納するためのページキャッシュメモリ１０４というメモリ領域を含む。
【００２４】
（計算ノード管理部１０１）
計算ノード管理部１０１は計算ノード１１０の管理を行う。例えば、計算ノード管理部１０１−１は、計算ノード１１０−１の管理を行う。このように本実施形態においては、１つの計算ノード管理部１０１が、１つの計算ノード１１０の管理を行う。
【００２５】
計算ノード管理部１０１は、計算ノード１１０からファイル名を、ファイル番号を要求するファイル番号要求として受信する。そして、計算ノード管理部１０１は、受信したファイル番号要求を管理部１０２に送信する。計算ノード管理部１０１は、管理部１０２からファイル名（ファイル番号要求）に対応するファイル番号を受信する。そして、計算ノード管理部１０１は、受信したファイル番号を、計算ノード１１０に送信する。
【００２６】
計算ノード管理部１０１は、計算ノード１１０から１または複数のファイルにアクセスするファイルアクセス要求を受信し、受信したファイルアクセス要求を管理部１０２に送信する。
【００２７】
計算ノード管理部１０１は、管理情報１０６を更新したことを示す通知を管理部１０２から受信する。計算ノード管理部１０１は、該通知に基づき、処理部１１７がファイル番号によって指定されたファイルのキャッシュファイルにアクセスできるように、ファイルアクセス要求を送信した計算ノード１１０のキャッシュファイル管理情報１１４（以下、計算情報と呼ぶ）と、ページテーブル１１６とを更新する。計算情報１１４と、ページテーブル１１６とについては後述する。
【００２８】
計算ノード管理部１０１は、管理部１０２からキャッシュファイルの生成処理を行う指示を受け付ける。受け付けた指示に基づき、計算ノード管理部１０１は、計算ノード１１０にファイルをキャッシュする。具体的に、計算ノード管理部１０１は、キャッシュファイル生成処理を行う。キャッシュファイル生成処理については後述する。
【００２９】
計算ノード管理部１０１は、管理部１０２からキャッシュファイルが生成されたことを示す通知を受信する。そして、計算ノード管理部１０１は、キャッシュファイルが生成されたことを示す通知を、生成されたキャッシュファイルのファイル番号とともに、計算ノード１１０に送信する。なお、キャッシュファイルのファイル番号とは、該キャッシュファイルを生成するためにキャッシュされた元のファイルのファイル番号を示す。
【００３０】
計算ノード管理部１０１は、キャッシュファイルを確認する指示に基づき、管理情報１０６を参照し、参照カウントが０であるキャッシュファイルがあるか否か判定する。計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルがあるか否かの判定の結果に応じて処理を行う。具体的な処理の内容は、図９に示すフローチャートを用いて後述する。
【００３１】
計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルが読み込み専用であるか否か判定する。計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルが読み込み専用であるか否かの判定の結果に応じて処理を行う。具体的な処理の内容は、図９に示すフローチャートを用いて後述する。
【００３２】
計算ノード管理部１０１は、管理部１０２から、ライトバック（書き戻し）が終わったことを示す通知を受信し、受信した通知に基づき、参照カウントが０であるキャッシュファイルを格納する領域（キャッシュファイルメモリ１１３）を破棄する。
【００３３】
計算ノード管理部１０１は、キャッシュファイルメモリ１１３が生成されたことを示す通知を管理部１０２から受信し、受信したキャッシュファイルメモリ１１３が生成されたことを示す通知を、生成したキャッシュファイルメモリ１１３に格納されているキャッシュファイルのファイル番号とともに計算ノード１１０に送信する。
【００３４】
（管理部１０２）
管理部１０２は、計算ノード管理部１０１を介し、計算ノード１１０からファイル番号要求（ファイル名）を受信する。管理部１０２は、ファイル番号要求に基づき、ファイル番号要求（ファイル名）に対応するファイル番号を、計算ノード管理部１０１を介し、計算ノード１１０に送信する。
【００３５】
また、管理部１０２は、要求されたファイル番号によって指定されたファイルが、すでにキャッシュ済みか否か判定する。なお、管理部１０２は管理情報１０６を用いて、該判定を行う。つまり、管理部１０２は、管理情報１０６を参照し、ファイル番号によって指定されたファイルがキャッシュ済みか否か判定する。管理部１０２は、ファイル番号によって指定されたファイルがキャッシュ済みか否かの判定の結果に応じて処理を行う。具体的な処理の内容は、図５に示すフローチャートを用いて後述する。
【００３６】
管理部１０２は、計算ノード管理部１０１からファイルアクセス要求を受信する。そして、管理部１０２は、受信したファイルアクセス要求のあったファイル、つまりファイルアクセス要求の対象となるファイルを、計算ノード管理部１０１がファイルアクセス要求を送信した計算ノード１１０にキャッシュするか否か判定する。また、該判定は、管理ノード１００に予め設定されたファイルをキャッシュする条件に基づいて行われてもよい。
【００３７】
ファイルアクセス要求のあったファイルを、ファイルアクセス要求を送信した計算ノード１１０にキャッシュしない場合、管理部１０２は通常のデータ転送をする。ここで、通常のデータ転送とは、管理部１０２が、ファイルのキャッシュファイルを管理ノードメモリ１０３のページキャッシュメモリ１０４に一度転送し、その後、ＤＭＡ部１１１を介してページキャッシュメモリ１０４から計算ノード１１０内のプロセスメモリ１１５に直接データを転送することである。つまり、通常のデータ転送はキャッシュファイルメモリ１１３を作らないことをいう。
【００３８】
ファイルアクセス要求のあったファイルを、ファイルアクセス要求を送信した計算ノード１１０にキャッシュする場合、管理部１０２は、後述するキャッシュファイルの生成処理を行うように計算ノード管理部１０１に指示する。
【００３９】
管理部１０２は、計算ノード管理部１０１からキャッシュファイルを生成したことを示す通知を受信する。そして、管理部１０２は、キャッシュファイルを生成したことを示す通知に基づき、生成されたキャッシュファイルに対応する管理情報１０６を生成する。
【００４０】
管理部１０２は、計算ノード管理部１０１からページテーブル１１６の追加が完了したことを示す通知を受信し、該通知に基づき、キャッシュファイルメモリ１１３が生成されたか否か判定する。管理部１０２は、キャッシュファイルメモリ１１３が生成されたか否かの判定の結果に応じて処理を行う。具体的な処理の内容は図７に示すフローチャートを用いて後述する。
【００４１】
管理部１０２は、管理情報１０６の情報を更新する時、または定期的にキャッシュファイルを確認する指示を計算ノード管理部１０１に送信する。
【００４２】
管理部１０２は、計算ノード管理部１０１からキャッシュファイルを受信し、受信したキャッシュファイルを管理ノードメモリ１０３にライトバック（書き戻し）する。そして、管理部１０２は、ライトバックが終わったことを示す通知を、計算ノード管理部１０１に送信する。
【００４３】
（計算ノードメモリ１１０）
計算ノード１１０は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）部１１１と、計算ノードメモリ１１２と、ページテーブル１１６と、処理部１１７とを備える。
【００４４】
（ＤＭＡ部１１１）
ＤＭＡ部１１１は、例えばＤＭＡ方式を使用し、管理部１０２が管理ノードメモリ１０３から直接転送したデータを受信し、受信したデータをプロセスメモリ１１５に送信する。
【００４５】
（計算ノードメモリ１１２）
計算ノードメモリ１１２は、キャッシュファイルメモリ１１３と、計算情報１１４と、プロセスメモリ１１５とを有する。
【００４６】
（キャッシュファイルメモリ１１３）
キャッシュファイルメモリ１１３は、計算ノードメモリ１１２内においてキャッシュファイルを格納するために確保された領域を示す。つまり、キャッシュファイルメモリ１１３は、計算ノード管理部１０１によってキャッシュされたキャッシュファイルを格納する。
【００４７】
（プロセスメモリ１１５）
プロセスメモリ１１５は、計算ノード１１０のプロセスごとに割り当てられた記憶領域である。
【００４８】
（計算情報１１４）
ここで、図４を用いて計算情報１１４について説明する。計算情報１１４は、計算ノード管理部１０１がキャッシュしたキャッシュファイルのうち、計算ノード１１０にキャッシュされたキャッシュファイルを管理する情報である。つまり、計算情報１１４は、計算ノード１１０にキャッシュされたキャッシュファイルを管理するための情報である。例えば、計算情報１１４−１は、計算ノード１１０−１内にキャッシュされたキャッシュファイルを管理するための情報である。また図４の右側は、計算情報（１１４−１、１１４−２、…１１４−Ｐ（Ｐ：自然数））の一例を示す図である。
【００４９】
また、図４に示す図において、計算情報１１４は、キャッシュファイルを一意に識別可能な番号をキーとし、キャッシュファイルのオフセット、サイズ、および開始仮想アドレスを含む。計算情報に含まれるファイル番号、オフセット、サイズには、キャッシュされた元のファイルのファイル番号、オフセット、サイズが格納される。開始仮想アドレスについては後述する。
【００５０】
なお、本実施形態において、計算情報（１１４−１、１１４−２、…１１４−Ｐ）のそれぞれを区別しない場合、または計算情報（１１４−１、１１４−２、…１１４−Ｐ）のそれぞれを総称する場合、計算情報１１４と呼ぶ。
【００５１】
また、図４の左側は、処理部１１７が実行する各プロセスにおける計算ノードプロセス仮想アドレス空間（仮想アドレス空間）２００の一例を示す図である。計算ノードプロセス仮想アドレス空間２００は、各プロセスに割り当てられたメモリ空間であって、物理メモリであるプロセスメモリ１１５に対応する仮想メモリのアドレス空間である。
【００５２】
図４に示す例においては、計算ノードプロセス仮想アドレス空間２００は、５つの空間に分かれている。また、計算ノードプロセス仮想アドレス空間２００の５つの空間うち２つの空間は、計算情報１１４と、キャッシュファイルとがそれぞれ占めている。
【００５３】
１つのプロセスで使用されるキャッシュファイルの計算情報１１４は、１つの計算ノードプロセス仮想アドレス空間２００にマップされる。これにより、処理部１１７が実行するプロセスは、計算情報１１４にアクセスすることが可能となる。
【００５４】
また、計算ノードプロセス仮想アドレス空間２００の一部を占めているキャッシュファイルは、計算ノードプロセス仮想アドレス空間２００のプロセスが使用するキャッシュファイルを示す。このように、キャッシュファイルは計算ノードプロセス仮想アドレス空間（仮想メモリのアドレス空間）２００にマップされる。
【００５５】
よって、処理部１１７が実行するプロセスは、該キャッシュファイルを使用することができる。なお、開始仮想アドレスは、計算ノードプロセス仮想アドレス空間２００上において該キャッシュファイルが格納される領域の開始アドレスを示す。
【００５６】
また、計算情報１１４に含まれる開始仮想アドレスには、プロセスごとに異なる計算ノードプロセス仮想アドレス空間２００の仮想アドレスが用いられるため、計算情報１１４もまた、プロセスごとに生成され、計算ノードプロセス仮想アドレス空間２００にマップされる必要がある。計算ノードプロセス仮想アドレス空間２００はプロセスごとに異なるため、仮想アドレスは、プロセスごとに異なる。したがって開始仮想アドレスには、使用されるプロセスごとに異なる仮想アドレスが格納される。
【００５７】
（ページテーブル１１６）
ページテーブル１１６は、各計算ノード１１０に含まれる。処理部１１７は、ページテーブル１１６を用いて、計算ノードメモリ１１２にアクセスする。ページテーブル１１６には、ファイル番号と、該ファイル番号によって識別されるキャッシュファイルの物理アドレスと、該物理アドレスの変換先の仮想アドレスとのマッピングが格納されている。ページテーブル１１６に格納される仮想アドレスは、計算ノードプロセス仮想空間２００上の仮想アドレスである。また、ページテーブル１１６に格納される物理アドレスは、計算ノードメモリ１１２上の物理アドレスである。
【００５８】
また、ページテーブル１１６の仮想アドレスには、計算情報１１４と同様に、各キャッシュファイルを使用するプロセスによって異なる仮想アドレスが格納される。
【００５９】
このように、計算情報１１４およびページテーブル１１６は、計算情報１１４およびページテーブル１１６に関連するキャッシュファイルを使用したプロセスに紐づいている。
【００６０】
これにより、処理部１１７は、ページテーブル１１６に基づき、仮想アドレスによって指定されたキャッシュファイルであって、プロセスメモリ１１５に対応する計算ノードプロセス仮想アドレス空間（仮想メモリのアドレス空間）２００にマップされたキャッシュファイルを用いて、計算ノード１１０上で起動するプロセスを実行する。よって、処理部１１７が実行するプロセスは、該キャッシュファイルを使用することができる。
【００６１】
また、計算情報１１４およびページテーブル１１６に関連するキャッシュファイルを使用するプロセスが新しくなる場合、計算ノード管理部１０１は、処理部１１７がキャッシュファイルにアクセスできるように、計算情報１１４およびページテーブル１１６と新しいプロセスとが紐づくように書き換える。
【００６２】
（処理部１１７）
処理部１１７は、計算ノード管理部１０１によって制御され、計算ノード管理部１０１と情報の送受信を行う。また、処理部１１７は、キャッシュファイルを用いて、該計算ノード１１０上で起動するプロセスを実行する。
【００６３】
処理部１１７（処理部１１７が実行するプロセス）は、ファイルを識別するためのファイル番号を要求するファイル番号要求を管理ノード１００に送信する。具体的に処理部１１７は、アクセスするファイルのファイル名をファイル番号要求として管理ノード１００に送信する。なお、処理部１１７が送信するファイル番号要求はファイル名に限定されない。ファイル番号要求は、ファイルを特定する情報であればよい。
【００６４】
処理部１１７は、管理ノード１００からファイル番号を受信し、受信したファイル番号をキーとし、計算情報１１４を参照し、ファイル番号によって指定されたファイルがキャッシュ済みか否か判定する。処理部１１７は、ファイル番号によって指定されたファイルがキャッシュ済みか否かの判定の結果に応じて、処理を行う。具体的な処理の内容は図６に示すフローチャートを用いて後述する。
【００６５】
処理部１１７は、ファイル番号によって指定された全てのファイルがキャッシュ済みか否か判定する。処理部１１７は、ファイル番号によって指定された全てのファイルがキャッシュ済みか否かの判定の結果に応じて、処理を行う。具体的な処理の内容は図６に示すフローチャートを用いて後述する。
【００６６】
処理部１１７は、不足部分のファイル、換言するとキャッシュ済みでないファイルに対するファイルアクセス要求を管理ノード１００に送信する。処理部１１７は、キャッシュ済みでないファイルのファイル番号をファイルアクセス要求として送信する。つまり、処理部１１７は、ファイル番号をファイルアクセス要求として管理ノード１００に送信する。
【００６７】
処理部１１７は、管理ノード１００からキャッシュファイルメモリ１１３が生成されたことを示す通知を、ファイル番号とともに受信する。受信した通知と、ファイル番号とに基づき、処理部１１７は生成されたキャッシュファイルメモリ１１３にアクセスし、アクセスしたキャッシュファイルメモリ１１３からプロセスメモリ１１５にデータ転送をする。
【００６８】
処理部１１７が実行するプロセスは、キャッシュファイルメモリ１１３からプロセスメモリ１１５に転送したキャッシュファイルを使用する。言い換えると、処理部１１７は、キャッシュファイルメモリ１１３からプロセスメモリ１１５にキャッシュファイルを転送し、転送したキャッシュファイルを用いて計算ノード１１０上で起動するプロセスを実行する。そのため、処理部１１７が実行するプロセスは、プロセスメモリ１１５に転送したキャッシュファイルを計算ノードプロセス仮想アドレス空間２００上にマップする必要がある。
【００６９】
つまり、プロセスメモリ１１５に転送したキャッシュファイルは、計算ノードプロセス仮想アドレス空間２００上に配置される。よって、図４に示すように、計算ノードプロセス仮想アドレス空間２００には、処理部１１７が実行するプロセスが使用するキャッシュファイルを配置する空間が設けられる。
【００７０】
図５は、１つの計算ノード１１０が、ファイル番号を取得する動作の一例を示すフローチャートである。
【００７１】
計算ノード１１０において、ファイルアクセス要求が発生すると、処理部１１７は、処理部１１７がアクセスするファイルのファイル名を管理ノード１００に送信する（ステップＳ５００）。
【００７２】
管理部１０２は、計算ノード管理部１０１を介し、計算ノード１１０からファイル名を受信する（ステップＳ５０１）。管理部１０２は、ファイル名に対応するファイル番号を、計算ノード管理部１０１を介し計算ノード１１０に送信する（ステップＳ５０２）。そして、処理部１１７は、管理ノード１００からファイル番号を受信する（ステップＳ５０３）。その後、計算ノード１１０の処理は、後述する図６のフローチャートに進む。
【００７３】
ステップＳ５０２の後、管理部１０２は、要求されたファイル番号によって指定されたファイルがキャッシュ済みか否か判定する（ステップＳ５０４）。
【００７４】
要求されたファイル番号によって指定されたファイルがキャッシュ済みでない場合（ステップＳ５０４でＮＯ）、処理は終了する。そして管理ノード１００は、計算ノード１１０からのファイルアクセス要求を待つ待機状態となる。
【００７５】
一方、要求されたファイル番号によって指定されたファイルがキャッシュ済みである場合（ステップＳ５０４でＹＥＳ）、管理部１０２は、管理情報１０６を更新する（ステップＳ５０５）。具体的に管理部１０２は、ファイル番号によって指定されたファイルのキャッシュファイルに対応する管理情報１０６に含まれる参照カウントであって、該キャッシュファイルがこれまでに参照された回数を示す参照カウントを増加させる。
【００７６】
また、管理部１０２は、管理情報１０６を更新したことを示す通知を計算ノード管理部１０１に送信する。そして、計算ノード管理部１０１は、管理情報１０６を更新したことを示す通知を受信する。
【００７７】
その後、計算ノード管理部１０１は、受信した管理情報１０６を更新したことを示す通知に基づき、処理部１１７がファイル番号によって指定されたファイルのキャッシュファイルにアクセスできるように、計算情報１１４と、ページテーブル１１６とを更新する（ステップＳ５０６）。具体的に、計算ノード管理部１０１は、計算情報１１４の開始仮想アドレスを、ファイルアクセス要求を送信したプロセスに割り当てられた計算ノードプロセス仮想アドレス空間２００の仮想アドレスに書き換える。また、計算ノード管理部１０１は、ページテーブル１１６に格納されているファイル番号のキャッシュファイルの仮想アドレスを、ファイルアクセス要求を送信したプロセスに割り当てられた計算ノードプロセス仮想アドレス空間２００の仮想アドレスに書き換える。
【００７８】
図６は、図５のステップＳ５０３の処理が終了した後の計算ノード１１０の動作の一例を示すフローチャートである。具体的に、図６は計算ノード１１０がキャッシュファイルメモリ１１３を利用する動作の一例を示すフローチャートである。
【００７９】
処理部１１７は、計算情報１１４を参照し、ファイル番号によって指定されたファイルがキャッシュ済みか否か判定する（ステップＳ６００）。ファイル番号によって指定されたファイルがキャッシュ済みでない場合（ステップＳ６００でＮＯ）、処理部１１７は、キャッシュ済みでないファイルに対するファイルアクセス要求を管理ノード１００に送信する（ステップＳ６０３）。
【００８０】
一方、ファイル番号によって指定されたファイルがキャッシュ済みである場合（ステップＳ６００でＹＥＳ）、処理部１１７は、ファイル番号によって指定された全てのファイルがキャッシュ済みか否か判定する（ステップＳ６０１）。
【００８１】
ファイル番号によって指定された全てのファイルがキャッシュ済みの場合（ステップＳ６０１でＹＥＳ）、処理部１１７は、ファイル番号によって指定された全てのキャッシュファイルをキャッシュファイルメモリ１１３からプロセスメモリ１１５に転送する（ステップＳ６０４）。
【００８２】
一部のファイルはキャッシュ済みだが、ファイル番号によって指定された全てのファイルはキャッシュ済みでない場合（ステップＳ６０１でＮＯ）、処理部１１７は、キャッシュ済みの一部、つまり一部のキャッシュファイルを先にキャッシュファイルメモリ１１３からプロセスメモリ１１５に転送する（ステップＳ６０２）。その後、処理は上述したステップＳ６０３に進む。
【００８３】
次に図７を用いて、管理ノード１００が、ファイルアクセス要求を受け付けた際の動作について説明する。具体的に図７は、図６のステップＳ６０３の処理において、計算ノード１１０が送信したファイルアクセス要求を管理ノード１００が受信した後の処理の一例を示すフローチャートである。
【００８４】
計算ノード管理部１０１は、計算ノード１１０からファイルアクセス要求を受信し（ステップＳ７００）、受信したファイルアクセス要求を管理部１０２に送信する。管理部１０２は、計算ノード管理部１０１からファイルアクセス要求を受信する。そして、管理部１０２は、受信したファイルアクセス要求が対象としているファイル、つまりファイルアクセス要求のあったファイルを、計算ノード管理部１０１がファイルアクセス要求を送信した計算ノード１１０にキャッシュするか否か判定する（ステップＳ７０１）。
【００８５】
ファイルアクセス要求の対象となるファイルを、計算ノード管理部１０１が計算ノード１１０にキャッシュしない場合（ステップＳ７０１でＮＯ）、管理部１０２は、通常のデータ転送をする（ステップＳ７０２）。
【００８６】
ファイルアクセス要求の対象となるファイルを、計算ノード管理部１０１が計算ノード１１０にキャッシュする場合（ステップＳ７０１でＹＥＳ）、管理部１０２は、キャッシュファイルの生成処理（ステップＳ７０３）を行うように計算ノード管理部１０１に指示する。ステップＳ７０３のキャッシュファイルの生成処理について、図８を用いて詳細に説明する。
【００８７】
図８は、計算ノード管理部１０１がキャッシュファイルを生成する動作の一例を示すフローチャートである。
【００８８】
はじめに、計算ノード管理部１０１は、計算ノードメモリ１１２にキャッシュファイルを格納するための空きメモリがあるか否か判定する（ステップＳ８００）。キャッシュファイルを格納するための空きメモリがない場合（ステップＳ８００でＮＯ）、処理はステップＳ７０４に進む。
【００８９】
キャッシュファイルを格納するための空きメモリがある場合（ステップＳ８００でＹＥＳ）、計算ノード管理部１０１は、計算ノードメモリ１１２内の空きメモリを確保する（ステップＳ８０１）。そして、確保した空きメモリはキャッシュファイルメモリ１１３となる。つまり、計算ノード管理部１０１は、計算ノードメモリ１１２内の空きメモリ（空き領域）を、キャッシュファイルを格納する領域（キャッシュファイルメモリ１１３）として確保する。
【００９０】
例えば、計算ノード管理部１０１は、キャッシュファイルを格納するため用に必要な空きメモリのサイズ情報を持っていてもよい。そして、該サイズ情報に基づいて、キャッシュファイルを格納するための空きメモリがあるか否か判定してもよい。または、計算ノード管理部１０１は、空きメモリのサイズに関わらず、すべての空きメモリを、キャッシュファイルを格納するために確保してもよい。
【００９１】
計算ノード管理部１０１は、ファイルアクセス要求の対象となるファイルをキャッシュし、キャッシュファイルを生成する。そして、計算ノード管理部１０１は、生成したキャッシュファイルをキャッシュファイルメモリ１１３に転送する（ステップＳ８０２）。つまり、計算ノード管理部１０１は、管理部１０２のステップＳ７０１の判定の結果に基づき、ファイルアクセス要求を送信した計算ノード１１０にファイルをキャッシュする。具体的に、計算ノード管理部１０１は、確保したキャッシュファイルメモリ１１３にファイルをキャッシュする。
【００９２】
また、計算ノード管理部１０１は、キャッシュファイルを生成したことを示す通知を管理部１０２に送信する。そして、管理部１０２は、キャッシュファイルを生成したことを示す通知に基づき、生成されたキャッシュファイルに対応する管理情報１０６を生成する（ステップＳ８０３）。
【００９３】
計算ノード管理部１０１は、計算ノード１１０から送信されたファイルアクセス要求と、生成したキャッシュファイルとに基づいて計算情報１１４を生成する（ステップＳ８０４）。そして、計算ノード管理部１０１は、計算ノード１１０のプロセスからアクセスできるように、生成されたキャッシュファイルに対応する物理アドレスと、仮想アドレスとを含むレコードをページテーブル１１６に追加する（ステップＳ８０５）。
【００９４】
この時、ファイルアクセス要求されたファイルを全てキャッシュできるとは限らないため、計算ノード管理部１０１は、キャッシュされたファイル（キャッシュファイル）についての情報（ファイル番号）を計算ノード１１０に送信する。その後、計算ノード管理部１０１は、管理部１０２にページテーブル１１６の追加が完了したことを示す通知を管理部１０２に送信する。そして、処理は図７のステップＳ７０４に進む。
【００９５】
図７に戻り、管理ノード１００が、ファイルアクセス要求を受信した際の動作について説明する。
【００９６】
管理部１０２は、計算ノード管理部１０１からページテーブル１１６の追加が完了したことを示す通知を受信し、該通知に基づき、キャッシュファイルメモリ１１３が生成されたか否か判定する（ステップＳ７０４）。
【００９７】
キャッシュファイルメモリ１１３が生成された場合（ステップＳ７０４でＹＥＳ）、管理部１０２は、キャッシュファイルメモリ１１３が生成されたことを示す通知を計算ノード管理部１０１に送信する。そして、計算ノード管理部１０１は、キャッシュファイルメモリ１１３が生成されたことを示す通知を、生成されたキャッシュファイルメモリ１１３に格納されるキャッシュファイルのファイル番号とともに計算ノード１１０に送信する（ステップＳ７０５）。
【００９８】
キャッシュファイルメモリ１１３が生成されない場合（ステップＳ７０４でＮＯ）、処理はステップＳ７０２に進む。
【００９９】
処理部１１７は、計算ノード管理部１０１からキャッシュファイルメモリ１１３が生成されたことを示す通知をファイル番号とともに受信する（ステップＳ７０６）。受信した通知と、ファイル番号とに基づき、処理部１１７は生成されたキャッシュファイルメモリ１１３にアクセスする。その後、処理部１１７は、生成されたキャッシュファイルをキャッシュファイルメモリ１１３からプロセスメモリ１１５にデータ転送をする（ステップＳ７０７）。
【０１００】
以上のように、ＯＳの機能を持たない計算ノード１１０は、キャッシュファイルメモリ１１３の管理およびキャッシュファイルの管理ができない。そのため、管理ノード１００がキャッシュファイルメモリ１１３の確保と管理とを行う。
【０１０１】
上述したような計算ノード１１０と、管理ノード１００とを含む並列計算機システム１において、計算ノード１１０の処理部１１７が実行するプロセスが、ＯＳ機能なしでキャッシュファイルを利用可能にするために、計算情報１１４を計算ノード１１０に配置した。このようにすることで、計算ノード１１０の処理部１１７（処理部１１７が実行するプロセス）は、計算情報１１４に基づき、キャッシュファイルにアクセスすることが可能となる。
【０１０２】
本実施形態に係る並列計算機システム１は、管理ノード１００と、管理ノード１００によって制御される１以上の計算ノード１１０とを含む。管理ノード１００は、計算ノード１１０にファイルをキャッシュする計算ノード管理部１０１を備える。計算ノード１１０は、計算ノード管理部１０１によってキャッシュされたキャッシュファイルを格納するキャッシュファイルメモリ１１３と、キャッシュファイルを用いて、該計算ノード１１０上で起動するプロセスを実行する処理部１１７を備える。
【０１０３】
以上の構成により、並列計算機システム１においては、ＯＳ機能を持たない計算ノード１１０の処理部１１７が同一装置内のキャッシュファイルにアクセスすることができる。よって、他の装置間でファイルアクセスを行う場合と比較すると、並列計算機システム１は、ファイルアクセスを高速化することができる。また、並列計算機システム１は、管理ノード１００と計算ノード１１０との間のファイルアクセスを削減することができる。よって、本開示によればファイルアクセス時のオーバヘッドを削減することができる。
【０１０４】
また、本実施形態において、処理部１１７は、ファイルにアクセスするファイルアクセス要求を管理ノード１００に送信する。また、管理ノード１００は、ファイルアクセス要求の対象となるファイルを、計算ノード管理部１０１がファイルアクセス要求を送信した計算ノード１１０にキャッシュするか否か判定する管理部１０２を備える。計算ノード管理部１０１は、管理部１０２の判定の結果に基づき、ファイルアクセス要求を送信した計算ノード１１０にファイルをキャッシュする。
【０１０５】
上述した動作により、計算ノード管理部１０１は、ファイルアクセス要求を送信した計算ノード１１０以外にはファイルをキャッシュしない。よって、本開示によれば、余分なキャッシュファイルを生成することがなく、計算ノード１１０内のメモリの利用効率を向上することができる。
【０１０６】
また、計算ノード１１０は、計算ノード１１０にキャッシュされたキャッシュファイルを管理するための計算情報１１４を格納する計算ノードメモリ１１２を備える。ファイルアクセス要求の対象となるファイルを、計算ノード管理部１０１が計算ノード１１０にキャッシュする場合、計算ノード管理部１０１は、計算ノードメモリ１１２にキャッシュファイルを格納するための空きメモリがあるか否か判定する。空きメモリがある場合、計算ノード管理部１０１は、空きメモリをキャッシュファイルメモリ１１３として確保し、確保したキャッシュファイルメモリ１１３にファイルをキャッシュする。
【０１０７】
上述した動作により、本開示によれば、すでに使用されている記憶領域にキャッシュファイルをキャッシュせず、空きメモリがある場合にキャッシュファイルを生成する。そのため、既に使用されている記憶領域を破棄することなく、キャッシュファイルを生成することができる。
【０１０８】
また、計算ノードメモリ１１２は、プロセスごとに割り当てられた記憶領域であるプロセスメモリ１１５を含む。これにより、処理部１１７は、キャッシュファイルメモリ１１３からプロセスメモリ１１５にキャッシュファイルを転送し、転送したキャッシュファイルを用いて計算ノード１１０上で起動するプロセスを実行する。
【０１０９】
上述した動作により、本開示によれば、処理部１１７は、キャッシュファイルメモリ１１３から、プロセスメモリ１１５にキャッシュファイルを転送する。よって、処理部１１７は、同一計算ノード間でキャッシュファイルを転送することができる。したがって、ある計算ノードから他の計算ノードにキャッシュファイルを転送する場合と比較すると、並列計算機システム１は、キャッシュファイルの転送を高速化することができる。
【０１１０】
また、処理部１１７は、ファイルを識別するためのファイル番号を要求するファイル番号要求を管理ノード１００に送信する。管理部１０２は、ファイル番号要求に基づき、該ファイル番号要求に対応するファイル番号を計算ノード１１０に送信する。処理手段１１７は、ファイル番号をファイルアクセス要求として管理ノード１００に送信する。
【０１１１】
上述した動作により、処理部１１７は、管理ノード１００から取得し、取得したファイル番号をファイルアクセス要求として送信する。すなわち、処理部１１７は、管理ノード１００が管理しているファイル番号をファイルアクセス要求として送信する。そのため、管理ノード１００は、処理部１１７から送信されたファイルアクセス要求に対応するファイルを効率よく特定することができる。
【０１１２】
また、計算ノード１１０は、ファイル番号と、該ファイル番号によって識別されるファイルのキャッシュファイルの物理アドレスと、該物理アドレスの変換先の仮想アドレスとのマッピングを格納するページテーブル１１６を備える。処理部１１７は、ページテーブル１１６に基づき、仮想アドレスによって指定されたキャッシュファイルであって、プロセスメモリ１１５に対応する計算ノードプロセス仮想アドレス空間（仮想メモリのアドレス空間）２００にマップされたキャッシュファイルを用いて、計算ノード１１０上で起動するプロセスを実行する。
【０１１３】
上述した動作により、処理部１１７は、ページテーブル１１６に基づき、計算ノードプロセス仮想アドレス空間２００にマップされた、キャッシュファイルを使用することができる。これにより、本開示によれば、処理部１１７は該キャッシュファイルを用いて、プロセスを実行することができる。
【０１１４】
また、管理ノード１００は、計算ノード管理部１０１がキャッシュしたキャッシュファイルを管理するための管理情報１０６を格納する記憶部１０５を備える。管理部１０２は、管理情報１０６を参照し、ファイル番号によって指定されたファイルがキャッシュ済みか否か判定する。ファイル番号によって指定されたファイルがキャッシュ済みである場合、管理部１０２は、ファイル番号によって指定されたファイルのキャッシュファイルに対応する管理情報１０６に含まれる参照カウントであって、該キャッシュファイルがこれまでに参照された回数を示す参照カウントを増加させる。計算ノード管理部１０１は、処理部１１７が、該キャッシュファイルにアクセスできるようにファイルアクセス要求を送信した計算ノード１１０の計算情報１１４とページテーブル１１６とを更新する。
【０１１５】
上述した動作により、ファイルアクセス要求を送信した計算ノード１１０の計算情報１１４とページテーブル１１６とを更新することで、ファイルアクセス要求を送信した計算ノード１１０の処理部１１７が実行するプロセスと、ファイルアクセス要求の対象であるファイルのキャッシュファイルとを紐づける。これにより、本開示によれば、ファイルアクセス要求を送信した計算ノード１１０の処理部１１７は、ファイルアクセス要求の対象であるファイルのキャッシュファイルにアクセスすることができる。
【０１１６】
また、処理部１１７は、計算情報１１４を参照し、ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、ファイル番号によって指定されたファイルがキャッシュ済みでない場合、管理ノード１００にファイルアクセス要求を送信する。また、処理部１１７は、ファイル番号によって指定されたファイルがキャッシュ済みの場合、ファイル番号によって指定された全てのファイルがキャッシュ済みか否か判定する。また、処理部１１７は、一部のファイルはキャッシュ済みだが、ファイル番号によって指定された全てのファイルはキャッシュ済みでない場合、キャッシュ済みでないファイルに対するファイルアクセス要求を管理ノード１００に送信する。
【０１１７】
上述した動作により、処理部１１７は、各ファイル番号に基づきファイルがキャッシュされたか否か判定し、キャッシュされていないファイルに対してファイルアクセス要求を管理ノード１００に送信する。これにより、すでにキャッシュされているファイルに対してファイルアクセス要求を送信しなくて済む。よって、本開示によれば、余分なキャッシュファイルを生成することなく、計算ノードメモリ１１２の利用効率を向上することができる。
【０１１８】
図９を使用し、管理ノード１００が行うキャッシュファイルの書き戻しの動作とキャッシュファイルメモリ１１３を破棄する動作とを説明する。図９は、キャッシュファイルの書き戻しの動作と、キャッシュファイルメモリ１１３を破棄する動作との一例を示すフローチャートである。
【０１１９】
前提として、計算ノード１１０はＯＳの機能を持たないため、ファイルアクセスのための関数、例えばｏｐｅｎ等は処理部１１７（処理部１１７が実行するプロセス）から、管理ノード１００の計算ノード管理部１０１を介し管理部１０２に通知され、管理部１０２において処理される。
【０１２０】
具体的に、ファイルアクセスのための関数（ｏｐｅｎ）が処理部１１７から計算ノード管理部１０１を介し管理部１０２に通知されると、即ちファイル番号要求が通知されると、管理部１０２は、ファイル番号要求を通知した計算ノード１１０の処理部１１７に対し、ファイル番号を送信する。
【０１２１】
さらに、管理部１０２は、キャッシュファイルメモリ１１３生成時に管理情報１０６を生成する。またはすでに生成されたキャッシュファイルメモリ１１３が再び利用される時に、管理部１０２は、管理情報１０６の情報を書き換える。
【０１２２】
つまり、管理部１０２は、キャッシュファイルメモリ１１３生成時またはキャッシュファイルメモリ１１３が再利用される時に管理情報１０６の情報を更新する。そして、管理部１０２は、管理情報１０６の情報を更新する時、または定期的にキャッシュファイルを確認する指示をそれぞれの計算ノード管理部１０１に送信する。そして、計算ノード管理部１０１は、キャッシュファイルを確認する指示に基づき、以下の動作を行う。
【０１２３】
計算ノード管理部１０１は、管理情報１０６を参照し、参照カウントが０であるキャッシュファイルがあるか否か判定する（ステップＳ９００）。参照カウントが０であるキャッシュファイルがない場合（ステップＳ９００でＮＯ）、処理は終了する。
【０１２４】
参照カウントが０であるキャッシュファイルがある場合（ステップＳ９００でＹＥＳ）、計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルが読み込み専用（Ｒｅａｄ  Ｏｎｌｙ）であるか否か判定する（ステップＳ９０１）。
【０１２５】
参照カウントが０であるキャッシュファイルが読み込み専用である場合（ステップＳ９０１でＹＥＳ）、計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルを格納するキャッシュファイルメモリ１１３を破棄する（ステップＳ９０３）。つまり、計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルを格納するために確保していた領域を空きメモリにする。
【０１２６】
参照カウントが０であるキャッシュファイルが書き込み可能である場合（ステップＳ９０１でＮＯ）、計算ノード管理部１０１は、該領域に格納されているキャッシュファイルを管理部１０２に送信する。そして、管理部１０２はキャッシュファイルを受信し、受信したキャッシュファイルを管理ノードメモリ１０３にライトバック（書き戻し）する（ステップＳ９０２）。そして、管理部１０２は、ライトバックが終わったことを示す通知を、計算ノード管理部１０１に送信する。
【０１２７】
そして、計算ノード管理部１０１は、管理部１０２から、ライトバックが終わったことを示す通知を受信し、受信した通知に基づき、ステップＳ９０３の処理を行う。
【０１２８】
以上のように本実施形態における計算ノード管理部１０１は、管理情報１０６を参照し、参照カウントが０であるキャッシュファイルがあるか否か判定する。参照カウントが０であるキャッシュファイルがある場合、計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルが読み込み専用であるか否か判定する。また、計算ノード管理部１０１は、参照カウントが０であるキャッシュファイルが読み込み専用である場合、参照カウントが０であるキャッシュファイルを格納するキャッシュファイルメモリを破棄する。
【０１２９】
上述した動作により、計算ノード管理部１０１は、参照カウントに基づき、キャッシュファイルメモリ１１３を空きメモリにすることができる。これにより、本開示によれば、計算ノードメモリ１１２の利用効率を向上することができる。
【０１３０】
＜第２実施形態＞
図１０は、本開示の第２実施形態に係る並列計算機システム２の機能構成の一例を示すブロック図である。本実施形態に係る並列計算機システム２は、本開示が解決しようとする課題を解決するための基本の構成である。
【０１３１】
並列計算機システム２は、管理ノード３００と、管理ノード３００によって管理される計算ノード２１０とを含む。管理ノード３００は、計算ノード管理部３０１を備える。計算ノード管理部３０１は、計算ノード管理部１０１の機能を有する。また、計算ノード管理部３０１は、計算ノード２１０にファイルをキャッシュする。なお、計算ノード管理部３０１がキャッシュするファイルは外部装置から受け付けても良い。
【０１３２】
計算ノード２１０は、キャッシュファイルメモリ２１３と、処理部２１７とを備える。キャッシュファイルメモリ２１３は、キャッシュファイルメモリ１１３の機能を有する。また、キャッシュファイルメモリ２１３は、計算ノード管理部３０１によってキャッシュされたキャッシュファイルを格納する。
【０１３３】
処理部２１７は、処理部１１７の機能を有する。また、処理部２１７は、キャッシュファイルを用いて、計算ノード２１０上で起動するプロセスを実行する。計算ノード２１０は、管理ノード３００によって管理される。つまり、計算ノード２１０は、ＯＳ機能を持たない。したがって、管理ノード３００からの指示により、計算ノード２１０は動作する。
【０１３４】
本開示に係る並列計算機システム２によれば、計算ノード２１０がキャッシュファイルメモリ２１３を有する。これにより、管理ノード３００によって管理される計算ノード２１０の処理部２１７は、同一装置内のキャッシュファイルにアクセスすることができる。このため、他の装置間でファイルアクセスを行う場合と比較すると、並列計算機システム２は、管理ノード３００と計算ノード２１０との間のファイルアクセスを削減することができる。よって、本開示によればファイルアクセス時のオーバヘッドを削減することができる。
【０１３５】
＜ハードウェア構成＞
本開示の各実施形態において、各システムの各構成要素は、機能単位のブロックを示している。各システムの各構成要素の一部又は全部は、例えば図１１に示すような情報処理装置９００とプログラムとの任意の組み合わせにより実現される。情報処理装置９００は、一例として、以下のような構成を含む。
【０１３６】
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１
・ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３
・ＲＡＭ９０３にロードされるプログラム９０４
・プログラム９０４を格納する記憶装置９０５
・記録媒体９０６の読み書きを行うドライブ装置９０７
・通信ネットワーク９０９と接続する通信インターフェース９０８
・データの入出力を行う入出力インターフェース９１０
・各構成要素を接続するバス９１１
各実施形態における各システムの各構成要素は、これらの機能を実現するプログラム９０４をＣＰＵ９０１が取得して実行することで実現される。各システムの各構成要素の機能を実現するプログラム９０４は、例えば、予め記憶装置９０５やＲＡＭ９０３に格納されており、必要に応じてＣＰＵ９０１が読み出す。なお、プログラム９０４は、通信ネットワーク９０９を介してＣＰＵ９０１に供給されてもよいし、予め記録媒体９０６に格納されており、ドライブ装置９０７が当該プログラムを読み出してＣＰＵ９０１に供給してもよい。
【０１３７】
各システムの実現方法には、様々な変形例がある。例えば、各システムは、構成要素毎にそれぞれ別個の情報処理装置９００とプログラムとの任意の組み合わせにより実現されてもよい。また、各システムが備える複数の構成要素が、一つの情報処理装置９００とプログラムとの任意の組み合わせにより実現されてもよい。
【０１３８】
また、各システムの各構成要素の一部又は全部は、その他の汎用または専用の回路、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。
【０１３９】
各システムの各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０１４０】
各システムの各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０１４１】
以上、各実施形態を参照して本開示を説明したが、本開示は上記各実施形態に限定されものではない。本開示の構成や詳細には、本開示のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１４２】
上記の各実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限定されない。
【０１４３】
（付記１）
管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含み、
前記管理ノードは、前記計算ノードにファイルをキャッシュする計算ノード管理手段を備え、
前記計算ノードは、前記計算ノード管理手段によってキャッシュされたキャッシュファイルを格納するキャッシュファイルメモリと、
前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する処理手段と、
を備える並列計算機システム。
【０１４４】
（付記２）
前記処理手段は、前記ファイルにアクセスするファイルアクセス要求を前記管理ノードに送信し、
前記管理ノードは、前記ファイルアクセス要求の対象となるファイルを、前記計算ノード管理手段が前記計算ノードにキャッシュするか否か判定する管理手段を更に備え、
前記計算ノード管理手段は、判定の結果に基づき、前記ファイルアクセス要求を送信した計算ノードに前記ファイルをキャッシュする付記１に記載の並列計算機システム。
【０１４５】
（付記３）
前記計算ノードは、該計算ノードにキャッシュされたキャッシュファイルを管理するための計算情報を格納する計算ノードメモリを更に備え、
前記ファイルアクセス要求の対象となるファイルを、前記計算ノード管理手段が前記計算ノードにキャッシュする場合、前記計算ノード管理手段は、前記計算ノードメモリに前記キャッシュファイルを格納するための空きメモリがあるか否か判定し、空きメモリがある場合、該空きメモリを前記キャッシュファイルメモリとして確保し、確保したキャッシュファイルメモリに前記ファイルをキャッシュする付記２に記載の並列計算機システム。
【０１４６】
（付記４）
前記計算ノードメモリは、前記プロセスごとに割り当てられた記憶領域であるプロセスメモリを含み、
前記処理手段は、前記キャッシュファイルメモリから前記プロセスメモリに前記キャッシュファイルを転送し、転送したキャッシュファイルを用いて該計算ノード上で起動するプロセスを実行する付記３に記載の並列計算機システム。
【０１４７】
（付記５）
前記処理手段は、前記ファイルを識別するためのファイル番号を要求するファイル番号要求を前記管理ノードに送信し、
前記管理手段は、前記ファイル番号要求に基づき、該ファイル番号要求に対応するファイル番号を前記計算ノードに送信し、
前記処理手段は、前記ファイル番号を前記ファイルアクセス要求として前記管理ノードに送信する付記３または４に記載の並列計算機システム。
【０１４８】
（付記６）
前記計算ノードは、前記ファイル番号と、該ファイル番号によって識別されるファイルのキャッシュファイルの物理アドレスと、該物理アドレスの変換先の仮想アドレスとのマッピングを格納するページテーブルを更に備え、
前記処理手段は、前記ページテーブルに基づき、前記仮想アドレスによって指定されたキャッシュファイルであって、前記プロセスメモリに対応する仮想メモリのアドレス空間にマップされたキャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する付記５に記載の並列計算機システム。
【０１４９】
（付記７）
前記管理ノードは、前記計算ノード管理手段がキャッシュしたキャッシュファイルを管理するための管理情報を格納する記憶手段を更に備え、
前記管理手段は、前記ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、前記ファイル番号によって指定されたファイルがキャッシュ済みである場合、前記ファイルのキャッシュファイルに対応する前記管理情報に含まれる参照カウントであって、該キャッシュファイルがこれまでに参照された回数を示す参照カウントを増加させ、
前記計算ノード管理手段は、前記処理手段が、該キャッシュファイルにアクセスできるように前記ファイルアクセス要求を送信した計算ノードの計算情報とページテーブルとを更新する付記５または６に記載の並列計算機システム。
【０１５０】
（付記８）
前記計算ノード管理手段は、前記管理情報を参照し、前記参照カウントが０であるキャッシュファイルがあるか否か判定し、前記参照カウントが０であるキャッシュファイルがある場合、前記参照カウントが０であるキャッシュファイルが読み込み専用であるか否か判定し、前記参照カウントが０であるキャッシュファイルが読み込み専用である場合、前記参照カウントが０であるキャッシュファイルを格納するキャッシュファイルメモリを破棄する付記７に記載の並列計算機システム。
【０１５１】
（付記９）
前記処理手段は、前記計算情報を参照し、前記ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、前記ファイル番号によって指定されたファイルがキャッシュ済みでない場合、前記管理ノードに前記ファイルアクセス要求を送信し、
前記ファイル番号によって指定されたファイルがキャッシュ済みの場合、前記ファイル番号によって指定された全てのファイルがキャッシュ済みか否か判定し、一部のファイルはキャッシュ済みだが、ファイル番号によって指定された全てのファイルはキャッシュ済みでない場合、キャッシュ済みでないファイルに対するファイルアクセス要求を前記管理ノードに送信する付記５から８のいずれかに記載の並列計算機システム。
【０１５２】
（付記１０）
管理ノードと、前記管理ノードによって制御される１以上の計算ノードとを含む並列計算機システムの管理方法であって、
前記管理ノードは、前記計算ノードにファイルをキャッシュし、
前記計算ノードは、キャッシュされたキャッシュファイルを格納し、前記キャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する管理方法。
【０１５３】
（付記１１）
前記計算ノードは、前記ファイルにアクセスするファイルアクセス要求を前記管理ノードに送信し、
前記管理ノードは、前記ファイルアクセス要求の対象となるファイルを、前記計算ノードにキャッシュするか否か判定し、判定の結果に基づき、前記ファイルアクセス要求を送信した計算ノードに前記ファイルをキャッシュする付記１０に記載の管理方法。
【０１５４】
（付記１２）
前記計算ノードは、前記キャッシュファイルを管理するための計算情報を格納する計算ノードメモリを更に備え、
前記ファイルアクセス要求の対象となるファイルを、前記管理ノードが前記計算ノードにキャッシュする場合、前記管理ノードは、前記計算ノードメモリに前記キャッシュファイルを格納するための空きメモリがあるか否か判定し、空きメモリがある場合、該空きメモリを前記キャッシュファイルメモリとして確保し、確保したキャッシュファイルメモリに前記ファイルをキャッシュする付記１１に記載の管理方法。
【０１５５】
（付記１３）
前記計算ノードメモリは、前記プロセスごとに割り当てられた記憶領域であるプロセスメモリを含み、
前記計算ノードは、前記キャッシュファイルメモリから前記プロセスメモリに前記キャッシュファイルを転送し、転送したキャッシュファイルを用いて該計算ノード上で起動するプロセスを実行する付記１２に記載の管理方法。
【０１５６】
（付記１４）
前記計算ノードは、前記ファイルを識別するためのファイル番号を要求するファイル番号要求を前記管理ノードに送信し、
前記管理ノードは、前記ファイル番号要求に基づき、該ファイル番号要求に対応するファイル番号を前記計算ノードに送信し、
前記計算ノードは、前記ファイル番号を前記ファイルアクセス要求として前記管理ノードに送信する付記１２または１３に記載の管理方法。
【０１５７】
（付記１５）
前記計算ノードは、前記ファイル番号と、該ファイル番号によって識別されるファイルのキャッシュファイルの物理アドレスと、該物理アドレスの変換先の仮想アドレスとのマッピングを格納するページテーブルを更に備え、
前記計算ノードは、前記ページテーブルに基づき、前記仮想アドレスによって指定されたキャッシュファイルであって、前記プロセスメモリに対応する仮想メモリのアドレス空間にマップされたキャッシュファイルを用いて、該計算ノード上で起動するプロセスを実行する付記１４に記載の管理方法。
【０１５８】
（付記１６）
前記管理ノードは、該管理ノードがキャッシュしたキャッシュファイルを管理するための管理情報を格納する記憶手段を更に備え、前記ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、前記ファイル番号によって指定されたファイルがキャッシュ済みである場合、前記ファイルのキャッシュファイルに対応する前記管理情報に含まれる参照カウントであって、該キャッシュファイルがこれまでに参照された回数を示す参照カウントを増加させ、前記計算ノードが、該キャッシュファイルにアクセスできるように前記ファイルアクセス要求を送信した計算ノードの計算情報とページテーブルとを更新する付記１４または１５に記載の管理方法。
【０１５９】
（付記１７）
前記管理ノードは、前記管理情報を参照し、前記参照カウントが０であるキャッシュファイルがあるか否か判定し、前記参照カウントが０であるキャッシュファイルがある場合、前記参照カウントが０であるキャッシュファイルが読み込み専用であるか否か判定し、前記参照カウントが０であるキャッシュファイルが読み込み専用である場合、前記参照カウントが０であるキャッシュファイルを格納するキャッシュファイルメモリを破棄する付記１６に記載の管理方法。
【０１６０】
（付記１８）
前記計算ノードは、前記計算情報を参照し、前記ファイル番号によって指定されたファイルがキャッシュ済みか否か判定し、前記ファイル番号によって指定されたファイルがキャッシュ済みでない場合、前記管理ノードに前記ファイルアクセス要求を送信し、
前記ファイル番号によって指定されたファイルがキャッシュ済みの場合、前記ファイル番号によって指定された全てのファイルがキャッシュ済みか否か判定し、一部のファイルはキャッシュ済みだが、ファイル番号によって指定された全てのファイルはキャッシュ済みでない場合、キャッシュ済みでないファイルに対するファイルアクセス要求を前記管理ノードに送信する付記１４から１７のいずれかに記載の管理方法。
【符号の説明】
【０１６１】
１    並列計算機システム
２    並列計算機システム
１００    管理ノード
１０１    計算ノード管理部
１０２    管理部
１０３    管理ノードメモリ
１０４    ページキャッシュメモリ
１０５    記憶部
１０６    管理情報
１１０    計算ノード
１１１    ＤＭＡ部
１１２    計算ノードメモリ
１１３    キャッシュファイルメモリ
１１４    計算情報
１１５    プロセスメモリ
１１６    ページテーブル
１１７    処理部
１３０    Ｉ／Ｏデバイス
１３１    ファイルデータ
２００    計算ノードプロセス仮想アドレス空間
２１０    計算ノード
２１３    キャッシュファイルメモリ
２１７    処理部
３００    管理ノード
３０１    計算ノード管理部
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    プログラム
９０５    記憶装置
９０６    記録媒体
９０７    ドライブ装置
９０８    通信インターフェース
９０９    通信ネットワーク
９１０    入出力インターフェース
９１１    バス
【図１】
2018049444.tif 000003
【図２】
2018049444.tif 000004
【図３】
2018049444.tif 000005
【図４】
2018049444.tif 000006
【図５】
2018049444.tif 000007
【図６】
2018049444.tif 000008
【図７】
2018049444.tif 000009
【図８】
2018049444.tif 000010
【図９】
2018049444.tif 000011
【図１０】
2018049444.tif 000012
【図１１】
2018049444.tif 000013