(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024024463
(43)【公開日】2024-02-22
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
G06F 11/34 20060101AFI20240215BHJP
G06F 11/30 20060101ALI20240215BHJP
G06F 11/36 20060101ALI20240215BHJP
G06F 12/084 20160101ALI20240215BHJP
【FI】
G06F11/34 157
G06F11/30 140N
G06F11/36 192
G06F12/084
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022127302
(22)【出願日】2022-08-09
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】新井 正樹
【テーマコード(参考)】
5B042
5B205
【Fターム(参考)】
5B042GA15
5B042HH07
5B042HH20
5B042MA04
5B042MC25
5B205VV24
(57)【要約】
【課題】特定の計算ノードを検出し易くすること。
【解決手段】情報処理装置は、プログラムトランスレータ510を用いて、プロファイル情報生成プログラム511と、計算ノードグループ情報512とを生成する。情報処理装置は、プログラムデータ情報502と、変数データ情報503とを入力として、生成したプロファイル情報生成プログラム511を実行する。情報処理装置は、生成したプロファイル情報生成プログラム511を実行することにより、X個の計算ノードのそれぞれの計算ノードについて、キャッシュのプロファイル情報521を取得する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、
前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記複数のグループから、2以上のグループを選択する、
処理を前記コンピュータに実行させ、
前記取得する処理は、
選択した前記2以上のグループのそれぞれのグループについて、前記グループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記グループに対応する、前記キャッシュのプロファイル情報を取得する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
取得した前記プロファイル情報に基づいて、選択した前記2以上のグループのうち、前記キャッシュに対するアクセス傾向が所定の条件を満たす第1のグループを特定し、
前記複数のグループのうち、特定した前記第1のグループと所定の関連を有する第2のグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記第2のグループに対応する、前記キャッシュのプロファイル情報を取得する、
処理を前記コンピュータに実行させることを特徴とする請求項2に記載の情報処理プログラム。
【請求項4】
前記取得する処理は、
前記複数のグループのそれぞれのグループについて、前記グループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記グループに対応する、前記キャッシュのプロファイル情報を取得する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項5】
キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、
前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項6】
キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、
前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、複数のコアで分担する大規模HPC(High Performance Computing)アプリケーションについてキャッシュのプロファイル情報を取得し、プロファイル情報に基づいてキャッシュミスが比較的多いコアを検出することが望まれる。ここで、アプリケーションを、キャッシュのプロファイル情報を取得するためのプログラムに書き換え、書き換えた後のプログラムを実行することにより、キャッシュのプロファイル情報を、比較的容易に取得しようとする技術がある。
【0003】
先行技術としては、例えば、配列Xのバイトアドレスに対応するタグ情報が、記憶部に記憶されていない場合、ミス変数を1カウントアップするものがある。また、例えば、キャッシュメモリをシミュレートし、渡されたデータアドレスがキャッシュメモリに取り込んだとみなされるデータのアドレス範囲内にないときキャッシュミスとして検出し、アクセス回数とキャッシユミス回数とをカウントアップする技術がある。また、例えば、TAGアドレスアレイのエントリに登録されているアドレスについてヒットした回数をカウントする技術がある。また、例えば、サンプルを取られたアドレスのキャッシュヒット比率を決定する技術がある。また、例えば、キャッシュの性能をシミュレーションする技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2014-232369号公報
【特許文献2】特開平8-263372号公報
【特許文献3】特開2000-215104号公報
【特許文献4】米国特許出願公開第2020/0210334号明細書
【特許文献5】米国特許第06952664号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、複数のコアのうち、キャッシュミスが比較的多いコアを検出することが難しい場合がある。例えば、コアの数が多くなるほど、キャッシュのプロファイル情報を取得する際にかかる処理負担が膨大になる傾向があり、複数のコアのうち、キャッシュミスが比較的多いコアを検出することが難しくなる。
【0006】
1つの側面では、本発明は、特定の計算ノードを検出し易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、特定の計算ノードを検出し易くすることが可能になる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
【
図2】
図2は、情報処理システム200の一例を示す説明図である。
【
図3】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
【
図4】
図4は、情報処理装置100の機能的構成例を示すブロック図である。
【
図5】
図5は、情報処理装置100の動作例を示す説明図である。
【
図6】
図6は、プログラム情報501の内容の一例を示す説明図である。
【
図7】
図7は、プログラムデータ情報502の内容の一例を示す説明図である。
【
図8】
図8は、変数データ情報503の内容の一例を示す説明図である。
【
図9】
図9は、キャッシュ構成情報504の内容の一例を示す説明図である。
【
図10】
図10は、計算ノード情報505の内容の一例を示す説明図である。
【
図12】
図12は、計算ノードグループ情報512の一例を示す説明図である。
【
図13】
図13は、プロファイル情報生成プログラム511の一例を示す説明図(その1)である。
【
図14】
図14は、プロファイル情報生成プログラム511の一例を示す説明図(その2)である。
【
図15】
図15は、全体処理手順の一例を示すフローチャートである。
【
図16】
図16は、生成処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。本発明は、データ転送を効率化するアーキテクチャに関連する発明である。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、所定の演算処理におけるキャッシュのプロファイル情報を取得するためのコンピュータである。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0012】
所定の演算処理は、例えば、大規模HPCアプリケーションに対応する演算処理である。所定の演算処理は、具体的には、配列を操作する浮動小数点演算と、ループ処理とによって形成される。所定の演算処理は、例えば、当該演算処理におけるキャッシュの利用効率が、当該演算処理によって実現される特定の機能に関する性能に影響し易い性質を有することがある。所定の演算処理は、例えば、複数の計算ノードによって分担されることがある。プロファイル情報は、例えば、キャッシュ内のセットごとに、キャッシュヒットおよびキャッシュミスの情報を含む。セットは、キャッシュ内の記憶領域の単位である。
【0013】
例えば、キャッシュに対するアクセス傾向を解析するために、キャッシュのプロファイル情報を取得することが望まれる。具体的には、キャッシュに対するアクセス傾向を解析し、所定の演算処理を分担する複数の計算ノードのうち、キャッシュミスが比較的多い計算ノードを検出するために、キャッシュのプロファイル情報を取得することが望まれる。
【0014】
従来、大規模HPCアプリケーションを実行することにより、キャッシュのプロファイル情報を取得する手法が考えられる。具体的には、大規模HPCアプリケーションを実機で実行し、実機のCPU(Central Processing Unit)の機能を利用して、キャッシュのプロファイル情報を取得する。しかしながら、この手法では、キャッシュのプロファイル情報を取得することが難しいという問題がある。
【0015】
例えば、大規模HPCアプリケーションを実行する際にかかる所要時間が膨大になり易く、キャッシュのプロファイル情報を取得する際にかかる所要時間が膨大になり易いという問題がある。例えば、大規模HPCアプリケーションを実行するにあたって、実機を利用することになるため、キャッシュのプロファイル情報を取得する際にかかるコストの増大化を招き易いという問題がある。コストは、例えば、実機の使用料金、または、実機の消費電力などである。例えば、CPUの機能を利用しても、キャッシュに対するアクセス傾向を詳細に解析可能にするプロファイル情報を取得することが難しい。
【0016】
これに対し、アプリケーションを、キャッシュのプロファイル情報を取得するためのプログラムに書き換え、書き換えた後のプログラムを実行することにより、キャッシュのプロファイル情報を、比較的容易に取得しようとする手法が考えられる。この手法については、具体的には、上記特許文献1を参照することができる。
【0017】
しかしながら、この手法でも、キャッシュのプロファイル情報を効率よく取得し、複数の計算ノードのうち、キャッシュミスが比較的多い計算ノードを検出することが難しい場合がある。例えば、計算ノードの数が多くなるほど、キャッシュのプロファイル情報を取得する際にかかる処理負担が膨大になる傾向があり、複数の計算ノードのうち、キャッシュミスが比較的多い計算ノードを検出することが難しくなる。
【0018】
そこで、本実施の形態では、キャッシュに対するアクセス傾向を解析し易くすることができ、複数の計算ノードのうち、キャッシュミスが比較的多い計算ノードなどのような特定の計算ノードを検出し易くすることができる情報処理方法について説明する。
【0019】
図1において、全体演算110が存在するとする。全体演算110に用いられるキャッシュ120が存在するとする。キャッシュ120は、複数のセット121を含む。セット121は、キャッシュ120を分割した区画であり、キャッシュ120内の記憶領域の単位である。
【0020】
全体演算110は、それぞれ異なるアクセス先についての複数の演算処理を含む。全体演算110は、例えば、アクセス先を示す値をキャッシュ120内のセット数Sで除算した剰余に応じて、キャッシュ120内のいずれかのセット121を用いて、当該アクセス先についての演算処理を実施する。アクセス先は、例えば、アドレスによって表現される。アクセス先を示す値は、例えば、アドレスをブロックの大きさで除算した値である。
【0021】
全体演算110は、例えば、複数の計算ノード101によって分担可能であるとする。例えば、全体演算110のうち、計算ノード101の識別子に応じたアクセス先についての演算処理111が、当該計算ノード101によって担当される。全体演算110は、複数の演算処理111を含むとする。
【0022】
計算ノード101は、キャッシュ120を利用して、自計算ノード101の識別子に応じたアクセス先についての演算処理111を実施する。計算ノード101は、具体的には、自計算ノード101の識別子に応じたアクセス先を示す値をキャッシュ120内のセット数Sで除算した剰余に応じて、キャッシュ120内のいずれかのセット121を選択的に用いて、演算処理111を実施する。
【0023】
(1-1)情報処理装置100は、複数の計算ノード101を、アクセス先を示す値をキャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類する。アクセス先は、計算ノード101の識別子に応じて決定される。アクセス先を示す値は、例えば、アクセス先のアドレスを、キャッシュ120内のブロックサイズで除算した値である。
【0024】
情報処理装置100は、例えば、剰余が同一の値になる異なる2以上の計算ノード101が、同一のグループに分類されるよう、複数の計算ノード101を、複数のグループに分類する。上述したように、計算ノード101が、キャッシュ120内のいずれのセット121を利用するのかは、剰余により異なる。このため、情報処理装置100は、剰余に基づいて、キャッシュ120に対するアクセス傾向が同一または類似する計算ノード101を纏めることができる。
【0025】
(1-2)情報処理装置100は、複数のグループ130の少なくともいずれかのグループ130について、キャッシュのプロファイル情報を取得する。情報処理装置100は、例えば、複数のグループ130の少なくともいずれかのグループ130を選択する。情報処理装置100は、例えば、2以上のグループ130を選択してもよい。
【0026】
情報処理装置100は、例えば、選択したいずれかのグループ130に分類した少なくともいずれかの計算ノード101に対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施する。シミュレーションについては、具体的には、上述した特許文献1を参照することができる。情報処理装置100は、例えば、シミュレーションを実施することにより、選択したいずれかのグループ130に対応する、キャッシュのプロファイル情報を取得する。
【0027】
これにより、情報処理装置100は、グループ130に分類した1以上の計算ノード101に共通するキャッシュのプロファイル情報を取得することができる。情報処理装置100は、グループ130ごとに、キャッシュのプロファイル情報を1回取得すればよいため、処理負担の低減化を図ることができ、キャッシュのプロファイル情報を効率よく取得することができる。情報処理装置100は、複数の計算ノード101のうち、キャッシュミスが比較的多い計算ノード101を、効率よく検出可能にすることができる。
【0028】
ここでは、情報処理装置100が、複数のグループ130の少なくともいずれかのグループ130について、キャッシュのプロファイル情報を取得する場合について説明したが、これに限らない。例えば、情報処理装置100が、複数のグループ130のそれぞれのグループ130について、キャッシュのプロファイル情報を取得する場合があってもよい。
【0029】
ここでは、情報処理装置100が単独で動作する場合について説明したが、これに限らない。例えば、情報処理装置100が、他のコンピュータと協働する場合があってもよい。例えば、複数のコンピュータが協働し、情報処理装置100としての機能を実現する場合があってもよい。具体的には、クラウド上に、情報処理装置100としての機能を実現する場合があってもよい。
【0030】
(情報処理システム200の一例)
次に、
図2を用いて、
図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0031】
図2は、情報処理システム200の一例を示す説明図である。
図2において、情報処理システム200は、情報処理装置100と、クライアント装置201とを含む。
【0032】
情報処理システム200において、情報処理装置100とクライアント装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0033】
情報処理装置100は、サービス管理者によって用いられるコンピュータである。情報処理装置100は、処理依頼を取得する。処理依頼は、例えば、所定の演算処理の内容を示していてもよい。処理依頼は、例えば、所定の演算処理に利用するキャッシュ内のセット数を示していてもよい。処理依頼は、例えば、所定の演算処理を分担する計算ノードの数を示していてもよい。情報処理装置100は、例えば、処理依頼を、クライアント装置201から受信することにより取得する。
【0034】
情報処理装置100は、処理依頼に応じて、複数の計算ノードを、アクセス先を示す値をキャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類する。情報処理装置100は、複数のグループの少なくともいずれかのグループについて、キャッシュのプロファイル情報を取得する。情報処理装置100は、いずれかのグループに対応付けて、当該グループについて取得したプロファイル情報を、クライアント装置201に送信する。情報処理装置100は、例えば、サーバ、または、PCなどである。
【0035】
クライアント装置201は、サービス利用者によって用いられるコンピュータである。クライアント装置201は、サービス利用者の操作入力に基づき、処理依頼を生成し、情報処理装置100に送信する。クライアント装置201は、グループに対応付けられたプロファイル情報を、情報処理装置100から受信する。クライアント装置201は、グループに対応付けられたプロファイル情報を、サービス利用者が参照可能に出力する。クライアント装置201は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0036】
ここでは、情報処理装置100が、処理依頼を、クライアント装置201から受信することにより取得する場合について説明したが、これに限らない。例えば、情報処理装置100が、サービス管理者の操作入力に基づき、処理依頼の入力を受け付けることにより、処理依頼を取得する場合があってもよい。
【0037】
ここでは、情報処理装置100とクライアント装置201とが異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置201としての機能を有し、クライアント装置201としても動作可能である場合があってもよい。
【0038】
(情報処理装置100のハードウェア構成例)
次に、
図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0039】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図3において、情報処理装置100は、CPU301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0040】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0041】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0042】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0043】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0044】
(情報処理装置100の機能的構成例)
次に、
図4を用いて、情報処理装置100の機能的構成例について説明する。
【0045】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、分類部402と、解析部403と、出力部404とを含む。
【0046】
記憶部400は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0047】
取得部401~出力部404は、制御部410の一例として機能する。取得部401~出力部404は、具体的には、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0048】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、全体演算を分担する計算ノードの数を記憶する。全体演算は、例えば、それぞれ内容が異なる複数の演算によって形成される。全体演算は、例えば、複数の計算ノードが担当する演算処理によって形成される。全体演算は、例えば、大規模HPCアプリケーションに対応する。
【0049】
計算ノードは、例えば、コアである。計算ノードは、例えば、キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理を担当する。アクセス先は、例えば、計算ノードが有するメモリ内に存在する。計算ノードは、例えば、自ノードの識別子に応じたアクセス先に対応する値をキャッシュ内のセット数で除算した剰余に対応するキャッシュ内のセットを利用して、自ノードの識別子に応じたアクセス先に関する演算処理を実施する。アクセス先は、例えば、アドレスによって表現される。アクセス先に対応する値は、例えば、アクセス先を表現するアドレスをブロックの大きさで除算した値である。計算ノードの数は、例えば、取得部401によって取得される。
【0050】
記憶部400は、全体演算に用いられるキャッシュ内のセット数を記憶する。記憶部400は、例えば、全体演算を分担する計算ノードが有し、計算ノードが担当する演算処理を実施する際に用いられるキャッシュ内のセット数を記憶する。キャッシュ内のセット数は、例えば、取得部401によって取得される。
【0051】
記憶部400は、全体演算の内容を記憶する。記憶部400は、例えば、全体演算の内容を規定したプログラムを記憶する。記憶部400は、具体的には、それぞれの計算ノードが担当する演算処理を実施可能にする第1のプログラムを記憶する。第1のプログラムは、例えば、それぞれの計算ノードの識別子に応じたアクセス先に関する演算処理を特定可能に示す。プログラムは、例えば、取得部401によって取得される。
【0052】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0053】
取得部401は、処理依頼を取得する。処理依頼は、例えば、全体演算を分担する計算ノードの数を示していてもよい。処理依頼は、例えば、全体演算に用いられるキャッシュ内のセット数を示していてもよい。処理依頼は、例えば、全体演算の内容を示していてもよい。処理依頼は、具体的には、それぞれの計算ノードが担当する演算処理を実施可能にする第1のプログラムを含んでいてもよい。
【0054】
取得部401は、例えば、利用者の操作入力に基づき、処理依頼の入力を受け付けることにより、処理依頼を取得する。取得部401は、例えば、処理依頼を他のコンピュータから受信することにより、処理依頼を取得する。他のコンピュータは、例えば、クライアント装置201である。
【0055】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。取得部401は、例えば、処理依頼を取得したことを、分類部402と解析部403との処理を開始する開始トリガーとして受け付ける。
【0056】
分類部402は、複数の計算ノードを、複数のグループに分類する。分類部402は、例えば、複数の計算ノードを、アクセス先に対応する値をキャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類する。分類部402は、具体的には、剰余が同一の値になる異なる2以上の計算ノードが、同一のグループに分類されるよう、複数の計算ノードを、複数のグループに分類する。これにより、分類部402は、剰余に基づいて、キャッシュに対するアクセス傾向が同一または類似する計算ノードを纏めるよう、複数の計算ノードをグループ化することができる。
【0057】
解析部403は、複数のグループの少なくともいずれかのグループについて、当該いずれかのグループに対応する、キャッシュのプロファイル情報を取得する。解析部403は、例えば、複数のグループから、処理対象とするグループを選択する。解析部403は、具体的には、複数のグループのいずれかのグループを、処理対象として選択する。解析部403は、具体的には、2以上のグループを、処理対象として選択してもよい。解析部403は、複数のグループすべてを、処理対象として選択してもよい。
【0058】
解析部403は、具体的には、選択したいずれかのグループについて、当該いずれかのグループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施する。解析部403は、より具体的には、選択したいずれかのグループに分類した少なくともいずれかの計算ノードに対応する第1のプログラムを、シミュレーションを実施可能にする第2のプログラムに書き換える。解析部403は、より具体的には、選択したいずれかのグループについて、書き換えた第2のプログラムを実行することにより、シミュレーションを実施する。
【0059】
解析部403は、具体的には、シミュレーションを実施した結果、選択したいずれかのグループに対応する、キャッシュのプロファイル情報を取得する。これにより、解析部403は、キャッシュのプロファイル情報を効率よく取得することができる。解析部403は、例えば、選択したいずれかのグループに分類したすべての計算ノードに対してシミュレーションを実施せずに済ませることができ、処理負担の低減化を図ることができる。
【0060】
解析部403は、選択した2以上のグループのそれぞれのグループについて、当該グループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施する。解析部403は、より具体的には、選択したそれぞれのグループに分類した少なくともいずれかの計算ノードに対応する第1のプログラムを、シミュレーションを実施可能にする第2のプログラムに書き換える。解析部403は、より具体的には、選択したそれぞれのグループについて、書き換えた第2のプログラムを実行することにより、シミュレーションを実施する。
【0061】
解析部403は、具体的には、シミュレーションを実施した結果、選択したそれぞれのグループに対応する、キャッシュのプロファイル情報を取得する。これにより、解析部403は、キャッシュのプロファイル情報を効率よく取得することができる。解析部403は、例えば、選択したそれぞれのグループについて、当該グループに分類したすべての計算ノードに対してシミュレーションを実施せずに済ませることができ、処理負担の低減化を図ることができる。
【0062】
解析部403は、具体的には、取得したプロファイル情報に基づいて、選択した2以上のグループのうち、キャッシュに対するアクセス傾向が所定の条件を満たす第1のグループを特定してもよい。所定の条件は、例えば、キャッシュミス率が閾値以上であることを示す。所定の条件は、例えば、選択した2以上のグループのうち、キャッシュミス率が相対的に大きいことを示していてもよい。
【0063】
解析部403は、具体的には、複数のグループのうち、特定した第1のグループと所定の関連を有する第2のグループを、さらに処理対象として選択してもよい。第2のグループは、例えば、第1のグループとは異なるグループである。所定の関連は、例えば、第1のグループに対応する剰余と比較的近い値の他の剰余に対応することを示す。
【0064】
解析部403は、具体的には、選択した第2のグループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施する。解析部403は、より具体的には、選択した第2のグループに分類した少なくともいずれかの計算ノードに対応する第1のプログラムを、シミュレーションを実施可能にする第2のプログラムに書き換える。解析部403は、より具体的には、選択した第2のグループについて、書き換えた第2のプログラムを実行することにより、シミュレーションを実施する。
【0065】
解析部403は、具体的には、シミュレーションを実施した結果、選択した第2のグループに対応する、キャッシュのプロファイル情報を取得する。これにより、解析部403は、キャッシュのプロファイル情報を効率よく取得することができる。解析部403は、例えば、選択した第2のグループに分類したすべての計算ノードに対してシミュレーションを実施せずに済ませることができ、処理負担の低減化を図ることができる。
【0066】
また、解析部403は、第1のグループを基準に、キャッシュミス率が相対的に大きいグループを発見し易くなるよう、第1のグループと所定の関連を有する第2のグループに対応する、キャッシュのプロファイル情報を取得することができる。このため、解析部403は、キャッシュミス率が相対的に大きいグループを発見し易くすることができる。解析部403は、複数のグループのすべてについて、キャッシュのプロファイル情報を取得せずに済ませることができ、処理負担の低減化を図ることができる。
【0067】
解析部403は、選択した複数のグループのそれぞれのグループについて、グループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施する。解析部403は、より具体的には、選択したそれぞれのグループに分類した少なくともいずれかの計算ノードに対応する第1のプログラムを、シミュレーションを実施可能にする第2のプログラムに書き換える。解析部403は、より具体的には、選択したそれぞれのグループについて、書き換えた第2のプログラムを実行することにより、シミュレーションを実施する。
【0068】
解析部403は、具体的には、シミュレーションを実施した結果、選択したそれぞれのグループに対応する、キャッシュのプロファイル情報を取得する。これにより、解析部403は、キャッシュのプロファイル情報を効率よく取得することができる。解析部403は、例えば、選択したそれぞれのグループについて、当該グループに分類したすべての計算ノードに対してシミュレーションを実施せずに済ませることができ、処理負担の低減化を図ることができる。
【0069】
解析部403は、取得したキャッシュのプロファイル情報を解析してもよい。解析部403は、例えば、取得したキャッシュのプロファイル情報に基づいて、選択したグループに含まれる計算ノードにおけるキャッシュに対するアクセス傾向を特定する。解析部403は、具体的には、複数のグループのうち、キャッシュミス率が相対的に大きいグループを特定する。これにより、解析部403は、プロファイル情報を解析する解析者にかかる作業負担の低減化を図ることができる。
【0070】
出力部404は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部404は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0071】
出力部404は、選択したグループについて、取得したプロファイル情報を、当該グループに対応付けて出力する。出力部404は、例えば、プロファイル情報を、利用者が参照可能に出力する。出力部404は、例えば、プロファイル情報を、他のコンピュータに送信する。他のコンピュータは、例えば、クライアント装置201である。これにより、出力部404は、外部で、プロファイル情報を解析可能にすることができる。
【0072】
出力部404は、選択したグループについて、プロファイル情報を解析した結果を、当該グループに対応付けて出力する。出力部404は、例えば、プロファイル情報を解析した結果を、利用者が参照可能に出力する。出力部404は、例えば、プロファイル情報を解析した結果を、他のコンピュータに送信する。他のコンピュータは、例えば、クライアント装置201である。これにより、出力部404は、外部で、プロファイル情報を解析した結果を参照可能にすることができる。
【0073】
(情報処理装置100の動作例)
次に、
図5~
図14を用いて、情報処理装置100の動作例について説明する。
【0074】
図5は、情報処理装置100の動作例を示す説明図である。
図5において、情報処理装置100は、プログラム情報501と、プログラムデータ情報502と、変数データ情報503と、キャッシュ構成情報504と、計算ノード情報505との入力を受け付ける。ここで、
図6を用いて、プログラム情報501の内容の一例について説明する。
【0075】
図6は、プログラム情報501の内容の一例を示す説明図である。
図6に示すように、プログラム情報501は、計算ノードの番号の代入先となる変数rankを含む配列を用いた演算を規定する。プログラム情報501は、異なる計算ノードで共通して実行された場合、変数rankにより、異なる計算ノードで異なる演算を実施可能にすることができる。次に、
図7を用いて、プログラムデータ情報502の内容の一例について説明する。
【0076】
図7は、プログラムデータ情報502の内容の一例を示す説明図である。
図7に示すように、プログラムデータ情報502は、プログラム情報501を実行する際に用いられるパラメータを含む。
【0077】
プログラムデータ情報502は、例えば、配列Uの開始アドレスの値を含む。プログラムデータ情報502は、例えば、配列Uの配列要素あたりのバイト数の値を含む。プログラムデータ情報502は、例えば、配列Uの次元情報の値を含む。プログラムデータ情報502は、例えば、配列Vの開始アドレスの値を含む。プログラムデータ情報502は、例えば、配列Vの配列要素あたりのバイト数の値を含む。プログラムデータ情報502は、例えば、配列Vの次元情報の値を含む。次に、
図8を用いて、変数データ情報503の内容の一例について説明する。
【0078】
図8は、変数データ情報503の内容の一例を示す説明図である。
図8に示すように、変数データ情報503は、プログラム情報501を実行する際に用いられるパラメータを含む。変数データ情報503は、例えば、変数BLOCKのデータを含む。次に、
図9を用いて、キャッシュ構成情報504の内容の一例について説明する。
【0079】
図9は、キャッシュ構成情報504の内容の一例を示す説明図である。
図9に示すように、キャッシュ構成情報504は、プログラム情報501を実行する際に用いられるキャッシュのパラメータを含む。
【0080】
キャッシュ構成情報504は、例えば、キャッシュの連想数Aを含む。キャッシュ構成情報504は、例えば、キャッシュのブロックサイズBを含む。キャッシュ構成情報504は、例えば、キャッシュのセット数Sを含む。次に、
図10を用いて、計算ノード情報505の内容の一例について説明する。
【0081】
図10は、計算ノード情報505の内容の一例を示す説明図である。
図10に示すように、計算ノード情報505は、プログラム情報501を実行する計算ノードに関し、プロファイル情報521をどのように取得するのかを規定するパラメータを含む。
【0082】
計算ノード情報505は、例えば、計算ノード数Pを含む。計算ノード情報505は、例えば、調査対象グループ数Xを含む。調査対象グループ数Xは、最初にプロファイル情報521を取得する調査対象とするグループ数を示す。計算ノード情報505は、例えば、探索幅Wを含む。探索幅Wは、追加でプロファイル情報521を取得する調査対象とするグループを特定可能にする情報である。
【0083】
ここで、
図5の説明に戻り、情報処理装置100は、プログラムトランスレータ510を有する。プログラムトランスレータ510は、プロファイル情報生成プログラム511と、計算ノードグループ情報512とを生成する機能を有する。
【0084】
プロファイル情報生成プログラム511は、情報処理装置100が実行することにより、計算ノードについてキャッシュのプロファイル情報521を生成可能にする機能を有する。プロファイル情報生成プログラム511は、例えば、計算ノードがプログラム情報501を実行した際のキャッシュに対するアクセスを模倣し、計算ノードについてキャッシュのプロファイル情報521を生成可能にする機能を有する。プロファイル情報生成プログラム511は、具体的には、計算ノードがプログラム情報501を実行した場合について、プログラム情報501内の配列または命令データがアクセスするアドレス情報に基づいてキャッシュのプロファイル情報521を生成可能にする。
【0085】
計算ノードグループ情報512は、キャッシュに対するアクセス傾向が同一である異なる計算ノードを同一のグループに分類した結果を示す。計算ノードグループ情報512は、例えば、キャッシュのプロファイル情報521が共通する複数の計算ノードを纏めたグループを示す。グループは、例えば、計算ノードの計算ノード番号の集合によって表現される。情報処理装置100は、同一のグループに属する複数の計算ノードのいずれか1つの計算ノードについてキャッシュのプロファイル情報521を取得すれば、他の計算ノードについてキャッシュのプロファイル情報521を取得せずに済ませることができる。
【0086】
情報処理装置100は、プログラムトランスレータ510を用いて、プロファイル情報生成プログラム511と、計算ノードグループ情報512とを生成する。情報処理装置100は、例えば、プログラムトランスレータ510に、プログラム情報501とキャッシュ構成情報504と計算ノード情報505とを入力することにより、プロファイル情報生成プログラム511と計算ノードグループ情報512とを生成する。プログラムトランスレータ510が、プロファイル情報生成プログラム511と計算ノードグループ情報512とを生成する生成処理手順の一例については、具体的には、
図16を用いて後述する。
【0087】
プログラムトランスレータ510は、例えば、プログラム情報501と、キャッシュ構成情報504と、計算ノード情報505との入力を受け付ける。プログラムトランスレータ510は、例えば、入力されたプログラム情報501の各構成要素Sを特定する。構成要素は、例えば、命令文の全部または一部などである。ここで、
図11を用いて、構成要素の一例について説明する。
【0088】
図11は、構成要素の一例を示す説明図である。
図11の表1100は、構成要素を示す。表1100は、例えば、番号E1が付与された構成要素と、番号E2が付与された構成要素と、番号E3が付与された構成要素とを示す。番号E1が付与された構成要素は、ループの開始を示す。番号E2が付与された構成要素は、ループの内容を示す。番号E3が付与された構成要素は、ループの終了を示す。
【0089】
次に、
図5の説明に戻り、プログラムトランスレータ510は、例えば、プロファイル情報生成プログラム511を初期化する。プログラムトランスレータ510は、例えば、計算ノードグループ情報512を初期化する。プログラムトランスレータ510は、例えば、プログラム情報501の先頭から順に構成要素Sを処理対象として選択する。
【0090】
最初に、プログラムトランスレータ510は、具体的には、構成要素E1を選択する。プログラムトランスレータ510は、具体的には、選択した構成要素E1が、ループの開始を示すため、選択した構成要素E1を、そのまま、プロファイル情報生成プログラム511に挿入する。
【0091】
次に、プログラムトランスレータ510は、具体的には、構成要素E2を選択する。プログラムトランスレータ510は、具体的には、選択した構成要素E2が、ループの回転数に影響しない代入文であるため、選択した構成要素E2を、プロファイル情報生成プログラム511に挿入せずに削除する。
【0092】
ここで、選択した構成要素E2は、具体的には、右辺のV[i+BLOCK*rank]と、左辺のU[i]との2つの配列の要素を参照する。このため、プログラムトランスレータ510は、具体的には、各配列要素に対して、キャッシュのプロファイル情報521を取得するACCESSライブラリ関数を実行する命令文を、プロファイル情報生成プログラム511に挿入する。
【0093】
プログラムトランスレータ510は、より具体的には、ACCESS(address(V[i+BLOCK*rank]));と、ACCESS(address(U[i]));とを、プロファイル情報生成プログラム511に挿入する。関数address(D)は、例えば、配列要素のデータDのアドレス値を取得する機能を有する。関数address(D)は、例えば、C言語のプログラム上では、演算子&を利用することにより実現される。
【0094】
ライブラリ関数ACCESS(A)は、例えば、引数Aとして、アクセスした配列要素のアドレス値を受け取る機能を有する。ライブラリ関数ACCESS(A)は、例えば、入力データのキャッシュ構成情報のキャッシュに対して、引数Aが指定するアドレスにアクセスしたことをシミュレーションする機能を有する。
【0095】
さらに、選択した構成要素E2における右辺の配列参照V[i+BLOCK*rank]は、計算ノードの番号を表すランク変数rankを含む。このため、プログラムトランスレータ510は、具体的には、計算ノードグループ情報512を更新する。
【0096】
プログラムトランスレータ510は、より具体的には、プログラムデータ情報502から、配列Vの開始アドレスの値=800と、配列要素あたりのバイト数の値=8とを取得する。プログラムトランスレータ510は、より具体的には、変数データ情報503から、変数BLOCKの値=100を取得する。
【0097】
プログラムトランスレータ510は、より具体的には、キャッシュ構成情報504から、キャッシュのブロックサイズB=32と、キャッシュのセット数Sの値=128とを取得する。プログラムトランスレータ510は、より具体的には、計算ノード情報505から、計算ノード数Pの値=1024を取得する。
【0098】
ここで、配列参照V[i+BLOCK*rank]は、ランク変数rankを含む。ランク変数rankは、計算ノードの番号に応じて、0~1023の範囲の値を取る。また、配列参照V[i+BLOCK*rank]において、計算ノードがアクセスすることになるキャッシュのセット番号は、0~127の範囲の値を取る。
【0099】
計算ノードがアクセスするキャッシュのセット番号sは、配列参照V[i+BLOCK*rank]におけるアドレス値aに基づいて、s=(a/B)mod(S)によって特定される。
図5の例では、s=((800+8(i+100*rank))/32)mod(128)である。
【0100】
このため、ランク変数rankの値=0である計算ノードと、ランク変数rankの値=128である計算ノードとについて、各iの値に対応するsの値が同一になるという性質がある。プログラムトランスレータ510は、より具体的には、上記性質を利用して、1024個の計算ノードを、128個のグループに分類し、計算ノードグループ情報512を更新する。ここで、
図12の説明に移行し、計算ノードグループ情報512の一例について説明する。
【0101】
図12は、計算ノードグループ情報512の一例を示す説明図である。
図12に示すように、計算ノードグループ情報512は、グループ番号と、計算ノード番号集合とを対応付けて示す。グループ番号は、例えば、計算ノードを分類したグループを識別するグループ番号である。計算ノード番号集合は、例えば、グループに属するそれぞれの計算ノードに付与された番号を纏めた一覧である。
【0102】
ここで、同一のグループ番号に対応付けられた複数の計算ノード番号のそれぞれの計算ノード番号が付与された計算ノードは、キャッシュに対するアクセス傾向が同一になり、同一のキャッシュのプロファイル情報521に対応することになる。従って、情報処理装置100は、同一のグループに属するいずれか一つの計算ノードについてキャッシュのプロファイル情報521を取得すれば、同一のグループに属する他の計算ノードについてキャッシュのプロファイル情報521を取得しなくてもよい。
【0103】
次に、
図5の説明に戻り、プログラムトランスレータ510は、具体的には、構成要素E3を選択する。プログラムトランスレータ510は、具体的には、選択した構成要素E3が、ループの終了を示すため、選択した構成要素E3を、プロファイル情報生成プログラム511に挿入する。
【0104】
プログラムトランスレータ510は、具体的には、構成要素Sを選択し終えたため、命令文「print_out_RESULT();」を、プロファイル情報生成プログラム511に挿入する。命令文「print_out_RESULT();」は、キャッシュのプロファイル情報521を実行結果として出力するための命令文である。関数print_out_RESULT()は、具体的には、ライブラリ関数ACCESSでシミュレーション実行したキャッシュのプロファイル情報521を出力する機能を有する。関数print_out_RESULT();は、キャッシュのすべてのセットに対してDUMPを実行することにより実現される。次に、
図13および
図14を用いて、プロファイル情報生成プログラム511の一例について説明する。
【0105】
図13および
図14は、プロファイル情報生成プログラム511の一例を示す説明図である。以上により、情報処理装置100は、プロファイル情報生成プログラム511を、
図13に示す内容になるよう生成することができる。次に、
図14の説明に移行する。
【0106】
図14に示すように、プログラム情報501は、キャッシュ内の複数のセットのそれぞれのセットを利用する。これに対し、プロファイル情報生成プログラム511は、ランク変数に応じてキャッシュ内のいずれかのセットを利用するように規定される。
【0107】
従って、情報処理装置100は、プログラム情報501からプロファイル情報生成プログラム511を生成することにより、計算ノードの実機を用意せずに済ませることができる。また、情報処理装置100は、メモリアクセスおよび計算などの命令文を省き、キャッシュ内のセットごとにプロファイル情報521を取得可能にすることができ、処理負担の低減化を図ることができる。また、情報処理装置100は、並列実行可能なプロファイル情報生成プログラム511を得ることができ、処理負担の低減化を図ることができる。
【0108】
次に、
図5の説明に戻り、情報処理装置100は、プログラムデータ情報502と、変数データ情報503とを入力として、生成したプロファイル情報生成プログラム511を実行する。情報処理装置100は、生成したプロファイル情報生成プログラム511を実行することにより、X個の計算ノードのそれぞれの計算ノードについて、キャッシュのプロファイル情報521を取得する。
【0109】
情報処理装置100は、例えば、値Xに、計算ノード情報505内の調査対象グループ数を設定する。情報処理装置100は、具体的には、値Xに、15を設定する。情報処理装置100は、例えば、計算ノードグループ情報512に基づいて、X個の計算ノードグループを選択する。情報処理装置100は、具体的には、128を15で除算した結果に基づいて、128個の計算ノードグループのうち、8個おきに計算ノードグループを選択する。情報処理装置100は、より具体的には、計算ノードグループ番号{G0,G8,G16,G24,G32,G40,G48,G56,G64,G72,G80,G88,G96,G104,G112}の15個の計算ノードグループを選択する。
【0110】
情報処理装置100は、例えば、選択した計算ノードグループごとに、計算ノードグループに含まれるいずれか一つの計算ノードについて、キャッシュのプロファイル情報521を取得する。情報処理装置100は、具体的には、計算ノードグループごとに、計算ノードグループに含まれる計算ノード番号が最小である計算ノードについて、キャッシュのプロファイル情報521を取得する。情報処理装置100は、より具体的には、計算ノード番号{0,8,16,24,32,40,48,56,64,72,80,88,96,104,112}の計算ノードについて、キャッシュのプロファイル情報521を取得する。情報処理装置100は、キャッシュのプロファイル情報521を取得する際、キャッシュ構成情報504に基づいて、ライブラリ関数ACCESSおよびDUMPを利用する。
【0111】
情報処理装置100は、取得したプロファイル情報521に基づいて、キャッシュミス数が最大である計算ノードに付与された計算ノード番号を特定する。情報処理装置100は、例えば、キャッシュミス数が最大である計算ノードに付与された計算ノード番号{56,104}を特定する。この場合、複数の計算ノードグループのうち、計算ノードグループ番号{G56、G104}の計算ノードグループに属するすべての計算ノードについてキャッシュミス数が比較的多いことになる。
【0112】
情報処理装置100は、特定した計算ノード番号を含む計算ノードグループ番号の前後W個の範囲に存在する計算ノードグループ番号の計算ノードグループに含まれるいずれか一つの計算ノードについて、キャッシュのプロファイル情報521を取得する。情報処理装置100は、例えば、計算ノード情報505に基づいて、値Wに3を設定する。情報処理装置100は、例えば、特定した計算ノード番号を含む計算ノードグループ番号の前後3個の範囲に存在する計算ノードグループ番号を選択する。情報処理装置100は、具体的には、計算ノードグループ番号{G53,G54,G55,G57,G58,G59,G101,G102,G103,G105,G106,G107}を選択する。
【0113】
情報処理装置100は、例えば、選択した計算ノードグループ番号の計算ノードグループに含まれるいずれか一つの計算ノードについて、キャッシュのプロファイル情報521を取得する。情報処理装置100は、具体的には、選択した計算ノードグループ番号の計算ノードグループごとに、計算ノードグループに含まれる計算ノード番号が最小である計算ノードについて、キャッシュのプロファイル情報521を取得する。情報処理装置100は、より具体的には、計算ノード番号{53,54,55,57,58,59,101,102,103,105,106,107}の計算ノードについて、キャッシュのプロファイル情報521を取得する。
【0114】
情報処理装置100は、取得したキャッシュのプロファイル情報521に基づいて、キャッシュミス数が最大である計算ノードに付与された計算ノード番号を特定し、特定した計算ノード番号に対応する計算ノードグループを特定する。情報処理装置100は、特定した計算ノードグループに含まれる計算ノードの計算ノード番号を含めたキャッシュミス多発計算ノード番号情報531を生成する。
【0115】
これにより、情報処理装置100は、例えば、計算ノードグループ番号G101の計算ノードグループにおいて、計算ノード番号が最小の計算ノードについて、キャッシュミス数が最大であることを検出することができる。従って、情報処理装置100は、例えば、間接的に、計算ノードグループ番号G101の計算ノードグループに含まれるすべての計算ノードについて、キャッシュミス数が最大であることを検出することができる。
【0116】
このため、情報処理装置100は、キャッシュミス数が最大である計算ノードを発見する際にかかる処理負担の低減化を図ることができる。従来では、例えば、プログラム情報501を実行することによりキャッシュのプロファイル情報を取得し、キャッシュミス数が最大である計算ノードを発見する際にかかる所要時間は、数時間または数日になる。これに対し、情報処理装置100は、キャッシュミス数が最大である計算ノードを発見する際にかかる所要時間を削減することができる。情報処理装置100は、計算ノードの数が膨大であっても、キャッシュミス数が最大である計算ノードを発見する際にかかる所要時間を削減することができる。
【0117】
(全体処理手順)
次に、
図15を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0118】
図15は、全体処理手順の一例を示すフローチャートである。情報処理装置100は、プログラム情報、キャッシュ構成情報、および、計算ノード情報を取得する(ステップS1501)。
【0119】
次に、情報処理装置100は、プログラム情報、キャッシュ構成情報、および、計算ノード情報を入力としてプログラムトランスレータを起動し、
図16に後述する生成処理を実施する(ステップS1502)。そして、情報処理装置100は、起動したプログラムトランスレータから、キャッシュのプロファイル情報を生成する生成プログラムを取得する(ステップS1503)。また、情報処理装置100は、起動したプログラムトランスレータから、複数の計算ノードをグループ分けした結果を表す計算ノードグループ情報を取得する(ステップS1504)。
【0120】
次に、情報処理装置100は、計算ノード情報内の調査対象グループ数を、Xに設定する。情報処理装置100は、取得した生成プログラムを実行することにより、X個のグループのそれぞれのグループに含まれる計算ノードについてシミュレーションを実施し、当該グループに対応するキャッシュのプロファイル情報を取得する(ステップS1505)。そして、情報処理装置100は、取得したプロファイル情報に基づいて、キャッシュミス数が最大となる計算ノード番号の集合を特定する(ステップS1506)。
【0121】
次に、情報処理装置100は、計算ノード情報内の探索幅を、Wに設定する。情報処理装置100は、特定した計算ノード番号の集合に含まれる計算ノード番号それぞれの前後Wの範囲に存在する計算ノード番号の計算ノードについて、キャッシュのプロファイル情報を取得する(ステップS1507)。そして、情報処理装置100は、ステップS1505,S1507で取得したプロファイル情報に基づいて、キャッシュミス数が最大である計算ノード番号の集合を特定する(ステップS1508)。
【0122】
次に、情報処理装置100は、ステップS1508で特定した計算ノード番号の集合を表す計算ノード番号情報を生成して出力する(ステップS1509)。そして、情報処理装置100は、全体処理を終了する。これにより、情報処理装置100は、キャッシュミス数が最大である計算ノード番号の集合を、効率よく特定することができ、利用者が参照可能にすることができる。
【0123】
(生成処理手順)
次に、
図16を用いて、情報処理装置100が実行する、生成処理手順の一例について説明する。生成処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0124】
図16は、生成処理手順の一例を示すフローチャートである。
図16において、情報処理装置100は、入力されたプログラム情報を、構成要素Sに分解する(ステップS1601)。
【0125】
次に、情報処理装置100は、入力されたプログラム情報の構成要素Sのうち、処理対象として選択していない構成要素Sが存在するか否かを判定する(ステップS1602)。ここで、処理対象として選択していない構成要素Sが存在しない場合(ステップS1602:No)、情報処理装置100は、ステップS1611の処理に移行する。一方で、処理対象として選択していない構成要素Sが存在する場合(ステップS1602:Yes)、情報処理装置100は、ステップS1603の処理に移行する。
【0126】
ステップS1603では、情報処理装置100は、入力されたプログラム情報の構成要素Sのうち、処理対象とする構成要素Sを選択する(ステップS1603)。
【0127】
次に、情報処理装置100は、構成要素Sがループ開始を示すか否かを判定する(ステップS1604)。ここで、ループ開始を示す場合(ステップS1604:Yes)、情報処理装置100は、ステップS1610の処理に移行する。一方で、ループ開始を示さない場合(ステップS1604:No)、情報処理装置100は、ステップS1605の処理に移行する。
【0128】
ステップS1605では、情報処理装置100は、構成要素Sがループ回転数に影響しない代入文であるか否かを判定する(ステップS1605)。ここで、構成要素Sがループ回転数に影響しない代入文である場合(ステップS1605:Yes)、情報処理装置100は、構成要素Sを削除し、ステップS1608の処理に移行する。一方で、構成要素Sがループ回転数に影響しない代入文ではない場合(ステップS1605:No)、情報処理装置100は、ステップS1606の処理に移行する。
【0129】
ステップS1606では、情報処理装置100は、構成要素Sがループ回転数に影響する代入文であるか否かを判定する(ステップS1606)。ここで、構成要素Sがループ回転数に影響する代入文である場合(ステップS1606:Yes)、ステップS1607の処理に移行する。一方で、構成要素Sがループ回転数に影響する代入文ではない場合(ステップS1606:No)、情報処理装置100は、構成要素Sがループ終了を示すと判断し、ステップS1610の処理に移行する。
【0130】
ステップS1607では、情報処理装置100は、構成要素Sを、生成プログラムに挿入する(ステップS1607)。次に、情報処理装置100は、構成要素Sの代入文に出現する配列の要素を参照する各項tについて、ACCESSライブラリ関数を実行するコードを、生成プログラムに挿入する(ステップS1608)。
【0131】
そして、情報処理装置100は、配列の要素を参照する項tが、計算ノード番号を表すランク変数を含んでいれば、配列の要素のアドレス値から計算ノードグループ情報を更新する(ステップS1609)。その後、情報処理装置100は、ステップS1602の処理に戻る。
【0132】
ステップS1610では、情報処理装置100は、構成要素Sを、生成プログラムに挿入する(ステップS1610)。そして、情報処理装置100は、ステップS1602の処理に戻る。
【0133】
ステップS1611では、情報処理装置100は、シミュレーション結果を表示するコードを、生成プログラムに挿入する(ステップS1611)。そして、情報処理装置100は、生成処理を終了する。これにより、情報処理装置100は、キャッシュのプロファイル情報を効率よく取得可能な生成プログラムを生成することができる。
【0134】
ここで、情報処理装置100は、
図15および
図16の各フローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS1605,S1606の処理の順序は入れ替え可能である。また、情報処理装置100は、
図15および
図16の各フローチャートの一部ステップの処理を省略してもよい。例えば、ステップS1509の処理は省略可能である。
【0135】
以上説明したように、情報処理装置100によれば、複数の計算ノードを、アクセス先に対応する値をキャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類することができる。情報処理装置100によれば、複数のグループのいずれかのグループについて、いずれかのグループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施することができる。情報処理装置100によれば、シミュレーションを実施することにより、いずれかのグループに対応する、キャッシュのプロファイル情報を取得することができる。これにより、情報処理装置100は、効率よくキャッシュのプロファイル情報を取得することができる。
【0136】
情報処理装置100によれば、複数のグループから、2以上のグループを選択することができる。情報処理装置100によれば、選択した2以上のグループのそれぞれのグループについて、グループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施することができる。情報処理装置100によれば、シミュレーションを実施することにより、グループに対応する、キャッシュのプロファイル情報を取得することができる。これにより、情報処理装置100は、いずれのグループに対応する、キャッシュのプロファイル情報を取得することが好ましいのかを判断し易くすることができ、有用なキャッシュのプロファイル情報を取得し易くすることができる。情報処理装置100は、計算ノードのキャッシュのアクセス傾向を解析し易くすることができる。
【0137】
情報処理装置100によれば、取得したプロファイル情報に基づいて、選択した2以上のグループのうち、キャッシュに対するアクセス傾向が所定の条件を満たす第1のグループを特定することができる。情報処理装置100によれば、複数のグループのうち、特定した第1のグループと所定の関連を有する第2のグループを選択することができる。情報処理装置100によれば、第2のグループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施することができる。情報処理装置100によれば、シミュレーションを実施することにより、第2のグループに対応する、キャッシュのプロファイル情報を取得することができる。これにより、情報処理装置100は、いずれのグループに対応する、キャッシュのプロファイル情報を取得することが好ましいのかを判断し、第2のグループを選択することができる。情報処理装置100は、有用なキャッシュのプロファイル情報を取得し易くすることができる。
【0138】
情報処理装置100によれば、複数のグループのそれぞれのグループについて、グループに分類した少なくともいずれかの計算ノードに対して、演算処理におけるキャッシュに対するアクセスを模倣するシミュレーションを実施することができる。情報処理装置100によれば、シミュレーションを実施することにより、グループに対応する、キャッシュのプロファイル情報を取得することができる。これにより、情報処理装置100は、キャッシュのプロファイル情報を網羅的に効率よく取得することができる。
【0139】
情報処理装置100によれば、いずれかのグループに分類した少なくともいずれかの計算ノードに対応する、演算処理を実施可能にする第1のプログラムを、シミュレーションを実施可能にする第2のプログラムに書き換えることができる。情報処理装置100によれば、いずれかのグループについて、書き換えた第2のプログラムを実行することにより、いずれかのグループに対応する、キャッシュのプロファイル情報を取得することができる。これにより、情報処理装置100は、キャッシュのプロファイル情報を取得し易くすることができる。
【0140】
情報処理装置100によれば、いずれかのグループについて、取得したプロファイル情報を、いずれかのグループに対応付けて出力することができる。これにより、情報処理装置100は、プロファイル情報を、利用者が参照し易くすることができる。
【0141】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0142】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0143】
(付記1)キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、
前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0144】
(付記2)前記複数のグループから、2以上のグループを選択する、
処理を前記コンピュータに実行させ、
前記取得する処理は、
選択した前記2以上のグループのそれぞれのグループについて、前記グループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記グループに対応する、前記キャッシュのプロファイル情報を取得する、ことを特徴とする付記1に記載の情報処理プログラム。
【0145】
(付記3)取得した前記プロファイル情報に基づいて、選択した前記2以上のグループのうち、前記キャッシュに対するアクセス傾向が所定の条件を満たす第1のグループを特定し、
前記複数のグループのうち、特定した前記第1のグループと所定の関連を有する第2のグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記第2のグループに対応する、前記キャッシュのプロファイル情報を取得する、
処理を前記コンピュータに実行させることを特徴とする付記2に記載の情報処理プログラム。
【0146】
(付記4)前記取得する処理は、
前記複数のグループのそれぞれのグループについて、前記グループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記グループに対応する、前記キャッシュのプロファイル情報を取得する、ことを特徴とする付記1に記載の情報処理プログラム。
【0147】
(付記5)前記いずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対応する、前記演算処理を実施可能にする第1のプログラムを、前記シミュレーションを実施可能にする第2のプログラムに書き換える、
処理を前記コンピュータに実行させ、
前記取得する処理は、
前記いずれかのグループについて、書き換えた前記第2のプログラムを実行することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、ことを特徴とする付記4に記載の情報処理プログラム。
【0148】
(付記6)前記いずれかのグループについて、取得した前記プロファイル情報を、前記いずれかのグループに対応付けて出力する、
処理を前記コンピュータに実行させることを特徴とする付記1または2に記載の情報処理プログラム。
【0149】
(付記7)キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、
前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0150】
(付記8)キャッシュを利用して自ノードの識別子に応じたアクセス先に関する演算処理をそれぞれ担当する複数の計算ノードを、前記アクセス先に対応する値を前記キャッシュ内のセット数で除算した剰余に基づいて、複数のグループに分類し、
前記複数のグループのいずれかのグループについて、前記いずれかのグループに分類した少なくともいずれかの計算ノードに対して、前記演算処理における前記キャッシュに対するアクセスを模倣するシミュレーションを実施することにより、前記いずれかのグループに対応する、前記キャッシュのプロファイル情報を取得する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0151】
100 情報処理装置
101 計算ノード
110 全体演算
111 演算処理
120 キャッシュ
121 セット
130 グループ
200 情報処理システム
201 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
400 記憶部
401 取得部
402 分類部
403 解析部
404 出力部
501 プログラム情報
502 プログラムデータ情報
503 変数データ情報
504 キャッシュ構成情報
505 計算ノード情報
510 プログラムトランスレータ
511 プロファイル情報生成プログラム
512 計算ノードグループ情報
521 プロファイル情報
531 キャッシュミス多発計算ノード番号情報
1100 表