(57)【要約】【課題】複数のアクセラレータを導入した場合に、効率的なデータの再配置を行うことができる情報処理装置、データ配置方法及びプログラムを提供すること【解決手段】本発明にかかる情報処理装置１０は、処理実行前データを記憶する共有メモリ３０と、処理実行前データを用いて第１の処理を実行するアクセラレータ５０Ｇ１〜５０Ｇｍと、複数のアクセラレータにおいて分散処理されたデータを、アクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多い分散配置データとして共有メモリ３０に分散配置するデータ配置部３２と、分散配置データを、アクセラレータ５０Ｇ１〜５０Ｇｍのうち分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして共有メモリ３０に集約配置するデータ集約部３４と、を備えるものである。【選択図】図１
2013025392.tif 000002
【特許請求の範囲】
【請求項１】
処理実行前データを記憶する共有メモリと、
前記処理実行前データを用いて第１の処理を実行する複数のアクセラレータと、
前記複数のアクセラレータにおいて分散処理されたデータを、前記複数のアクセラレータの数よりも多い分散配置データとして前記共有メモリに分散配置するデータ配置部と、
前記分散配置データを、前記複数のアクセラレータのうち前記分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして前記共有メモリに集約配置するデータ集約部と、を備える情報処理装置。
【請求項２】
前記分散処理されたデータは、キー情報とバリュー情報とを有するデータであって、
前記データ配置部は、
前記キー情報に基づいて前記分散処理されたデータを分散配置データとして分散配置する、請求項１に記載の情報処理装置。
【請求項３】
前記処理実行前データ及び前記集約配置されたデータを、前記共有メモリから、前記アクセラレータによってアクセスされるローカルメモリへ出力するデータコピー部をさらに備える、請求項１又は２記載の情報処理装置。
【請求項４】
前記ローカルメモリは、前記アクセラレータ毎に備えられ、
前記アクセラレータは、
前記ローカルメモリに記録された前記処理実行前データを用いて前記第１の処理を実行し、前記ローカルメモリに記録された前記集約配置データを用いて前記第２の処理を実行する、請求項３に記載の情報処理装置。
【請求項５】
前記データ集約部は、
前記集約配置データをキー情報に基づいて並び替えを行う、請求項２に記載の情報処理装置。
【請求項６】
前記複数のアクセラレータは、
前記処理実行前データを用いてマップリデュースプログラミングにおけるマップ処理を実行することにより前記データを分散処理し、前記集約配置データを用いてリデュース処理を行う、請求項３又は４に記載の情報処理装置。
【請求項７】
前記アクセラレータにおいて分散処理されたデータを、前記データ配置部からの指示を受けて前記分散配置データとして前記共有メモリに分散配置し、前記分散配置データを、前記データ集約部からの指示を受けて前記集約配置データとして前記共有メモリに集約配置する処理を実行する複数のプロセッサをさらに備える、請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記データ配置部は、前記分散処理されたデータを、前記プロセッサの数と同数、又は前記プロセッサの数を下回りかつ前記アクセラレータの数を上回る数の分散配置データとして分散配置する、請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
共有メモリに記憶されている処理実行前データを、複数のアクセラレータにおいて第１の処理を実行し、
前記複数のアクセラレータにおいて分散処理されたデータを、前記複数のアクセラレータの数よりも多い分散配置データとして前記共有メモリに分散配置し、
前記分散配置データを、前記複数おアクセラレータのうち前記分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして前記共有メモリに集約配置する、データ配置方法。
【請求項１０】
複数のアクセラレータにおいて第１の処理を実行され、前記複数のアクセラレータにおいて分散処理されたデータを、前記複数のアクセラレータの数よりも多い分散配置データとして共有メモリに分散配置するステップと、
前記分散配置データを、前記複数のアクセラレータのうち前記分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして集約配置するステップと、をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のアクセラレータを制御してデータ処理を実行する情報処理装置に関する。
【背景技術】
【０００２】
近年、半導体プロセスの進化により、多数の演算装置を内蔵したアクセラレータが普及している。例えば、アクセラレータとして、ＧＰＧＰＵ（General-purpose computing on graphics processing units）がある。情報処理装置にアクセラレータを導入し、特定の処理についてアクセラレータを用いて実行することにより、情報処理装置は、ＣＰＵだけが計算を行う場合よりも高い性能を実現することができる。しかしながら、さらなる高性能化を目指して、情報処理装置に複数のアクセラレータを導入しても、複数のアクセラレータを効率よく活用することができないという課題があった。したがって、複数のアクセラレータを並列処理させるような情報処理装置が望まれていた。
【０００３】
図１５は、ネットワーク接続された一般的な情報処理装置を示している。この図では、インターネット１０００を介して、サーバ３０００Ｓ１乃至３０００Ｓ４とが接続されている。
【０００４】
ここで、複数の情報処理装置（サーバ３０００Ｓ１乃至３０００Ｓ４）における並列処理方式について説明する。この並列処理方式は特許文献１に開示されている。キーとバリューという、２つの値のペアの列からなるデータは、４つのサーバ３０００Ｓ１乃至Ｓ４に等分供給され、それぞれのサーバ上でＭＡＰ処理と呼ばれるユーザ規定のプログラムを実行する。ＭＡＰ処理を実行することにより、キーとバリューという２つの値のペアの列からなるデータ列が、サーバ３０００Ｓ１乃至Ｓ４から中間バッファに出力され蓄えられる。
【０００５】
その後、中間バッファに蓄えられたデータは、キーの値に従い、サーバ３０００Ｓ１乃至Ｓ４に再配置される。その後、サーバ３０００Ｓ１乃至Ｓ４は、再配置されたデータを用いて、ＲＥＤＵＣＥ処理と呼ばれるユーザ規定のプログラムを実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許７６５０３３１号公報
【特許文献２】特開２０１０−２４４４７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示されている方式は、次の問題点を有している。特許文献１には、複数のサーバにおける並列処理はネットワーク接続を介して実行されることが開示されている。そのため、単一情報処理装置内における複数のアクセラレータを用いた並列処理は想定されていない。また、ＭＡＰ処理後における複数サーバ間でのデータの再配置は、やはりネットワーク接続を仮定しており、共有メモリ上におけるデータの再配置の方法は開示されていない。
【０００８】
また、特許文献２は、複数のサーバ間での負荷分散を開示しているものの、やはり特許文献１と同様に、共有メモリ上におけるデータの再配置の方法を開示していない。
【０００９】
そのため、特許文献１及び２に開示されている複数のサーバにおける並列処理もしくは負荷分散を用いたとしても、情報処理装置内に複数のアクセラレータを導入した場合における、効率的なデータの再配置を行うことができず、複数のアクセラレータを用いた高い並列処理能力を実現することができないという問題がある。
【００１０】
本発明はこのような問題を解決するために、複数のアクセラレータを導入した場合に、効率的なデータの再配置を行うことができる情報処理装置、データ配置方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の態様にかかる情報処理装置は、処理実行前データを記憶する共有メモリと、前記処理実行前データを用いて第１の処理を実行する複数のアクセラレータと、前記複数のアクセラレータにおいて分散処理されたデータを、前記複数のアクセラレータの数よりも多い分散配置データとして前記共有メモリに分散配置するデータ配置部と、前記分散配置データを、前記複数のアクセラレータのうち前記分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして前記共有メモリに集約配置するデータ集約部と、を備えるものである。
【００１２】
本発明の第２の態様にかかるデータ配置方法は、共有メモリに記憶されている処理実行前データを、複数のアクセラレータにおいて第１の処理を実行し、前記複数のアクセラレータにおいて分散処理されたデータを、前記複数のアクセラレータの数よりも多い分散配置データとして前記共有メモリに分散配置し、前記分散配置データを、前記複数おアクセラレータのうち前記分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして前記共有メモリに集約配置するものである。
【００１３】
本発明の第３の態様にかかるプログラムは、複数のアクセラレータにおいて第１の処理を実行され、前記複数のアクセラレータにおいて分散処理されたデータを、前記複数のアクセラレータの数よりも多い分散配置データとして共有メモリに分散配置するステップと、前記分散配置データを、前記複数のアクセラレータのうち前記分散処理されたデータを用いて第２の処理を実行するアクセラレータと同数の集約配置データとして集約配置するステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１４】
本発明により、複数のアクセラレータを導入した場合に、効率的なデータの再配置を行うことができる情報処理装置、データ配置方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１にかかる情報処理装置の構成図である。
【図２】実施の形態１にかかる情報処理装置の構成図である。
【図３】実施の形態１にかかる情報処理装置の並列処理方式を示す図である。
【図４】実施の形態１にかかるプロセッサ制御部の構成図である。
【図５】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図６】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図７】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図８】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図９】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図１０】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図１１】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図１２】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図１３】実施の形態１にかかる情報処理装置におけるデータの配置を示す図である。
【図１４】実施の形態１にかかる情報処理装置におけるＭＡＰＲＥＤＵＣＥ処理のフローチャートである。
【図１５】ネットワークを介して接続された複数のサーバ装置を示す図である。
【発明を実施するための形態】
【００１６】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１を用いて本発明の実施の形態１にかかる情報処理装置１０の構成例について説明する。情報処理装置１０は、共有メモリ３０と、アクセラレータ５０Ｇ１〜５０Ｇｍと、データ配置部３２と、データ集約部３４と、を備えている。
【００１７】
共有メモリ３０は、アクセラレータ５０Ｇ１〜５０Ｇｍにおいてデータ処理される際に用いられるデータ（以下、処理実行前データと称する）を保持している。共有メモリ３０は、ＲＡＭ（Random Access Memory）等により構成されてもよい。
【００１８】
アクセラレータ５０Ｇ１〜５０Ｇｍとは、情報処理装置１０には、複数のアクセラレータが導入されていることを示している。ｍは２以上の整数である。アクセラレータ５０Ｇ１〜５０Ｇｍは、共有メモリ３０に保持されている処理実行前データを用いて、データの分散処理を実行する。
【００１９】
データ配置部３２は、アクセラレータ５０Ｇ１〜５０Ｇｍにおいて分散処理されたデータを、アクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多い分散配置データとして、共有メモリ３０に分散配置する。
【００２０】
データ集約部３４は、分散配置データを、アクセラレータ５０Ｇ１〜５０Ｇｍのうち、分散処理されたデータを用いて、あらかじめ規定された演算処理を実行するアクセラレータと同数の集約配置データとして、共有メモリ３０に集約配置する。アクセラレータ５０Ｇ１〜５０Ｇｍの全てが分散処理されたデータを用いて、あらかじめ規定された演算処理を実行する場合、アクセラレータ５０Ｇ１〜５０Ｇｍと同じ数の集約配置データが生成され、共有メモリ３０に集約配置される。
【００２１】
以上説明したように、図１の情報処理装置１０を用いることにより、アクセラレータ５０Ｇ１〜５０Ｇｍにおいて分散処理されたデータを、アクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多い分散配置データとして分散配置することにより、分散処理されたデータに対する競合アクセスを減らすことができる。つまり、共有メモリ３０上にアクセラレータ５０Ｇ１〜５０Ｇｍの数と同じ数のデータに再配置する場合と比べて、アクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多い分散配置データとして分散配置することにより、共有メモリ上におけるロック競合などを緩和することができる。これにより、情報処理装置１０の性能向上を実現することができる。
【００２２】
続いて、図２を用いて本発明の実施の形態１にかかる情報処理装置１０の詳細な構成例について説明する。情報処理装置１０は、ＣＰＵ２０Ｐ１〜２０Ｐｎを含むＣＰＵ群２０と、共有メモリ３０と、チップセット４０と、アクセラレータ５０Ｇ１〜５０Ｇｍと、ローカルメモリ６０Ｍ１〜６０Ｍｍと、プロセッサ制御部１００とを備えている。
【００２３】
ＣＰＵ群２０は、共有メモリ３０と、チップセット４０と、プロセッサ制御部１００とに接続される。ＣＰＵ群２０に含まれるＣＰＵ２０Ｐ１〜２０Ｐｎは、プロセッサや、中央演算装置等であり、計算（もしくは演算）処理を実行する回路により構成される。ｎは２以上の整数を示し、ＣＰＵ群２０は、２以上のＣＰＵを含む。また、ＣＰＵ群２０は、プロセッサ制御部１００からの指示を受けて動作するように構成されている。
【００２４】
共有メモリ３０は、ＣＰＵ２０Ｐ１〜２０Ｐｎ及びアクセラレータ５０Ｇ１〜５０Ｇｍにおいてデータ処理されるデータを保持している。また、共有メモリ３０上のデータは、プロセッサ制御部１００によって制御されたＣＰＵ群２０によって、データの再配置又はデータのコピー処理等が実行される。
【００２５】
チップセット４０は、ＣＰＵ群２０と、アクセラレータ５０Ｇ１〜５０Ｇｍとを接続するために用いられる。チップセット４０は、例えば、ＣＰＵ群２０と、アクセラレータ５０Ｇ１〜５０Ｇｍを接続するシステムバスとして動作してもよい。
【００２６】
アクセラレータ５０Ｇ１〜５０Ｇｍは、ＧＰＧＰＵやＦＰＧＡ（Field-Programmable Gate Array）といった、ＣＰＵよりも高密度な演算装置を備えたデバイスである。アクセラレータ５０Ｇ１〜５０Ｇｍは、１対１に対応するローカルメモリ６０Ｍ１〜６０Ｍｍに接続される。アクセラレータ５０Ｇ１〜５０Ｇｍは、それぞれ同じ種類及び性能であっても異なる種類及び性能であってもよい。
【００２７】
プロセッサ制御部１００は、アクセラレータ５０Ｇ１〜５０Ｇｍと共有メモリ３０との間におけるデータコピーや、アクセラレータ５０Ｇ１〜５０Ｇｍにおけるプログラムの実行指示、共有メモリ３０上におけるデータの分散配置、グルーピング、集約配置といった機能を有する。
【００２８】
ローカルメモリ６０Ｍ１は、アクセラレータ５０Ｇ１に接続され、ローカルメモリ６０Ｍ２は、アクセラレータ５０Ｇ２に接続され、ローカルメモリ６０Ｍｍは、アクセラレータ５０Ｇｍに接続されている。つまり、ひとつのアクセラレータに対してひとつのローカルメモリが対応して設けられている。ローカルメモリ６０Ｍ１〜６０Ｍｍは、アクセラレータ５０Ｇ１〜５０Ｇｍにおけるデータ処理に用いられるデータを保持し、もしくは、アクセラレータ５０Ｇ１〜５０Ｇｍにおいてデータ処理されたデータを保持する。
【００２９】
続いて、図３を用いて本発明の実施の形態１にかかる並列処理方式を説明する。共有メモリ３０に保持されているデータ２００は、アクセラレータ５０Ｇ１〜５０Ｇｍに等分ないしアクセラレータの演算能力に応じて配分供給される。アクセラレータ５０Ｇ１〜５０Ｇｍは、供給されたデータを用いて、ＭＡＰ処理と称されるユーザ規定のプログラムを実行する。アクセラレータ５０Ｇ１〜５０Ｇｍは、ＭＡＰ処理を実行することにより、キーとバリューという２つの値のペアの列からなるデータ列を生成する。例えば、アクセラレータ５０Ｇ１は、キーの値を３５０、バリューの値を１０とするデータを含むデータ列を生成する。アクセラレータ５０Ｇ２は、キーの値を２２０、バリューの値を２０とするデータを含むデータ列を生成し、アクセラレータ５０Ｇ３は、キーの値を１５０、バリューの値を７７７とするデータを含むデータ列を生成し、アクセラレータ５０Ｇｍは、キーの値を７０、バリューの値を１とするデータを含むデータ列を生成する。
【００３０】
ここで、アクセラレータ５０Ｇ１においてＭＡＰ処理されたデータをデータ列３００Ｍ１、アクセラレータ５０Ｇ２においてＭＡＰ処理されたデータをデータ列３００Ｍ２、アクセラレータ５０Ｇ３においてＭＡＰ処理されたデータをデータ列３００Ｍ３、アクセラレータ５０ＧｍにおいてＭＡＰ処理されたデータをデータ列３００Ｍｍとする。
【００３１】
ＭＡＰ処理により生成されたデータ列は、中間バッファに蓄えられる。その後、中間バッファに蓄えられたデータは、それぞれのデータ列のキーの値に従い、アクセラレータ５０Ｇ１〜５０Ｇｍに再配置される。例えば、本図においては、キーの値が１〜１００であれば、アクセラレータ５０Ｇ１へ、１０１〜２００であれば、アクセラレータ５０Ｇ２へ、２０１〜３００であれば、アクセラレータ５０Ｇ３へ、そして、３０１〜４００であれば、アクセラレータ５０Ｇｍへと再配置される。その後、アクセラレータ５０Ｇ１〜５０Ｇｍは、再配置されたデータを用いて、ＲＥＤＵＣＥと称されるユーザ規定のプログラムを実行する。ＲＥＤＵＣＥ処理は、アクセラレータ５０Ｇ１〜５０Ｇｍの全てにおいて実行されてもよく、アクセラレータ５０Ｇ１〜５０Ｇｍの一部のアクセラレータにおいて実行されてもよい。
【００３２】
続いて、図４を用いて本発明の実施の形態１にかかるプロセッサ制御部１００の構成例について説明する。プロセッサ制御部１００は、データコピー制御部１１０と、アクセラレータ制御部１２０と、データ分散化制御部１３０と、データ再配置制御部１４０と、データ集約化制御部１５０と、を備えている。
【００３３】
データコピー制御部１１０は、共有メモリ３０と、アクセラレータ５０Ｇ１〜５０Ｇｍに接続されたローカルメモリ６０Ｍ１〜６０Ｍｍとの間におけるデータの送受信制御を行う。つまり、データコピー制御部１１０は、ＣＰＵ群２０に対して、共有メモリ３０に保持されているデータをローカルメモリ６０Ｍ１〜６０Ｍｍへコピーし、もしくは、ローカルメモリ６０Ｍ１〜６０Ｍｍに保持されているデータを共有メモリ３０へコピーするように指示する。データコピー制御部１１０は、ＣＰＵ群２０に対して動作指示信号を出力し、ＣＰＵ群２０の動作を制御してもよい。プロセッサ制御部１００内の他の構成要素についても同様である。
【００３４】
アクセラレータ制御部１２０は、アクセラレータ５０Ｇ１〜５０Ｇｍに対して、ＭＡＰ処理やＲＥＤＵＣＥ処理といったユーザ規定のプログラムの実行を指示する。
【００３５】
データ分散化制御部１３０は、共有メモリ３０上のデータを分散的に配置する。具体的には、データ分散化制御部１３０は、ＣＰＵ群２０に対して、アクセラレータ５０Ｇ１〜５０ＧｍにおいてＭＡＰ処理されたデータ列を用いて、アクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多い分散配置データ列を生成し、共有メモリ３０上に分散配置データ列を分散的に配置するように指示する。
【００３６】
データ再配置制御部１４０は、データ分散化制御部１３０によって分散配置された分散配置データ列を、ＲＥＤＵＣＥ処理を実行するアクセラレータの数と等分にグループ化する。もしくはデータ再配置制御部１４０は、ＲＥＤＵＣＥ処理を実行するアクセラレータの演算能力に傾斜して、分散配置データ列を各グループに配分する。データ再配置制御部１４０は、ＣＰＵ群２０に対して、分散配置データ列をグループ化するように指示する。つまり、データ再配置制御部１４０は、ＣＰＵ群２０に対して、演算能力が他のアクセラレータに比べて高いアクセラレータに対して、相対的に多い数のデータをグループ化し、演算能力が他のアクセラレータに比べて低いアクセラレータに対して、相対的に低い数のデータをグループ化して対応づけるように指示してもよい。
【００３７】
データ集約化制御部１５０は、データ再配置制御部１４０によってグループ化されたデータを集約して、ＲＥＤＵＣＥ処理を実行するために用いられる集約化データ列を生成する。具体的には、データ集約化制御部１５０は、ＣＰＵ群２０に対して、グループ化されたデータを集約して、集約化データ列を生成するように指示する。
【００３８】
続いて、図５を用いて、本発明の実施の形態１にかかる、初期データの配置について説明する。本図は、図２の構成において、共有メモリ３０上に、処理対象となる初期データ列２００が保持されている例を示している。
【００３９】
続いて、図６を用いて、ＭＡＰ処理前のデータ配置について説明する。本図は、図５において共有メモリ３０に保持されていた初期データ列２００が分割され、ローカルメモリ６０Ｍ１〜６０Ｍｍが、分割されたＭＡＰ処理前データ列２０１Ｍ１〜２０１Ｍｍを保持している例について示している。初期データ列２００は、データコピー制御部１１０の制御により、アクセラレータ５０Ｇ１〜５０Ｇｍの数と等分に分割されてローカルメモリ６０Ｍ１〜６０Ｍｍに配分されてもよく、アクセラレータ５０Ｇ１〜５０Ｇｍの演算能力に応じて傾斜配分されてもよい。
【００４０】
続いて、図７を用いてＭＡＰ処理後のデータ配置について説明する。アクセラレータ５０Ｇ１〜５０Ｇｍは、アクセラレータ制御部１２０の制御により、ＭＡＰ処理前データ列２０１Ｍ１〜２０１Ｍｍを用いてＭＡＰ処理を実行し、ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍを生成する。ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍは、ローカルメモリ６０Ｍ１〜６０Ｍｍに保持される。つまり、ローカルメモリ６０Ｍ１〜６０Ｍｍは、中間バッファとして、データ列３００Ｍ１〜３００Ｍｍを保持してもよい。ここで、ＭＡＰ処理前のデータ列２０１Ｍ１〜２０１ＭｍとＭＡＰ処理後のデータ列３００Ｍ１〜３００Ｍｍとの各サイズは同じでもよく、異なっていてもよい。
【００４１】
続いて、図８を用いて共有メモリ３０におけるＭＡＰ処理後のデータ配置について説明する。ローカルメモリ６０Ｍ１〜６０Ｍｍに保持されているＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍは、データコピー制御部１１０の制御により、ローカルメモリ６０Ｍ１〜６０Ｍｍから共有メモリ３０に対してそのままコピーされる。このようにして、共有メモリ３０上に、ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍが保持される。
【００４２】
続いて、図９を用いて共有メモリ３０におけるＭＡＰ処理後のデータの分散配置について説明する。共有メモリ３０上のＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍは、キーの値に応じて、データ分散化制御部１３０の制御により、情報処理装置１０内のアクセラレータ数よりも多い数の分散配置データ列４００Ｍ１〜４００Ｍｋへと再配置される。ｋは、２以上の整数であり、ＭＡＰ処理後データ列に用いられる整数ｍよりも大きな値が設定される。例えば、分散配置データ列は、キーが１〜１０であるデータを、分散配置データ列４００Ｍ１とし、キーが１１〜２０であるデータを、分散配置データ列４００Ｍ２とし、キーが３９１〜４００であるデータを、分散配置データ列４００Ｍｋというように再配置する。分散配置データ列４００Ｍ１〜４００Ｍｋは、ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍの各サイズよりも小さくなるように、キーの範囲が定められる。
【００４３】
続いて、図１０を用いて共有メモリ３０上の分散配置データ列４００Ｍ１〜４００Ｍｋのグルーピングについて説明する。分散配置データ列４００Ｍ１〜４００Ｍｋは、アクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多いデータ列として、共有メモリ３０上に分散配置されている。ここで、分散配置データ列４００Ｍ１〜４００Ｍｋは、データ再配置制御部１４０の制御により、アクセラレータ５０Ｇ１〜５０Ｇｍと同じ数のデータ列にグルーピングされる。もしくは、分散配置データ列４００Ｍ１〜４００Ｍｋは、データ再配置制御部１４０の制御により、アクセラレータ５０Ｇ１〜５０ＧｍのうちＲＥＤＵＣＥ処理を実行するアクセラレータの数と同じ数のデータ列にグルーピングされる。グルーピングされた分散配置データ列４００Ｍ１〜４００Ｍｋの集合を、それぞれ５００Ｍ１〜５００Ｍｍとする。各グループにおけるデータ列のサイズは、５００Ｍ１〜５００Ｍｍにおいて等分にされてもよく、あるいは、アクセラレータの処理能力に応じて傾斜配分されてもよい。本図においては、キーの値が１〜１００までをグループデータ列５００Ｍ１とし、キーの値が１０１〜２００までをグループデータ列５００Ｍ２とし、キーの値が３０１〜４００までをグループデータ列５００Ｍｍとするようにグルーピングされている。
【００４４】
続いて、図１１を用いて共有メモリ３０上のグループデータ列５００Ｍ１〜５００Ｍｍの集約について説明する。グループデータ列５００Ｍ１〜５００Ｍｍにグルーピングされている分散配置データ列は、データ集約化制御部１５０の制御により各グループ単位に集約されて、集約データ列６００Ｍ１〜６００Ｍｍとして集約配置される。それぞれのグループデータ列５００Ｍ１〜５００Ｍｍにグルーピングされている分散配置データ列を集約しているため、集約データ列６００Ｍ１〜６００Ｍｍの数は、アクセラレータ５０Ｇ１〜５０Ｇｍと同じ数となる。
【００４５】
続いて、図１２を用いて、ローカルメモリ６０Ｍ１〜６０Ｍｍ上の集約データ列６００Ｍ１〜６００Ｍｍの配置について説明する。共有メモリ３０上に集約配置されている集約データ列６００Ｍ１〜６００Ｍｍは、データコピー制御部１１０の制御により、それぞれローカルメモリ６０Ｍ１〜６０Ｍｍへコピーされる。
【００４６】
続いて、図１３を用いて、ＲＥＤＵＣＥ処理後のデータの配置について説明する。アクセラレータ５０Ｇ１〜５０Ｇｍは、アクセラレータ制御部１２０の制御により、ローカルメモリ６０Ｍ１〜６０Ｍｍに蓄積されている集約データ列６００Ｍ１〜６００Ｍｍを用いてＲＥＤＵＣＥ処理を実行する。アクセラレータ５０Ｇ１〜５０Ｇｍは、ＲＥＤＵＣＥ処理後のデータ列６０２Ｍ１〜６０２Ｍｍを、ローカルメモリ６０Ｍ１〜６０Ｍｍに蓄積する。ここで、ＲＥＤＵＣＥ処理前の集約データ列６００Ｍ１〜６００ＭｍとＲＥＤＵＣＥ処理後のデータ列６０２Ｍ１〜６０２Ｍｍの各サイズは同じでもよく、異なっていてもよい。なお、アクセラレータ５０Ｇ１〜５０Ｇｍは、ＲＥＤＵＣＥ処理前に集約データ列６００Ｍ１〜６００Ｍｍにソートをかけて、同一のキーが連続するように再配置を行ってもよい。同一のキーが連続するように再配置されることにより、ＲＥＤＵＣＥ処理の実行時間を短縮させることができる。
【００４７】
ここで、共有メモリ３０上のＭＡＰ処理後データ列の分散配置、及び、分散配置データ列の集約配置等は、ＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎによって実行される。そのため、分散配置されるデータ列の数は、ＣＰＵ群２０が備えるＣＰＵ２０Ｐ１〜２０Ｐｎの数と同等もしくは、ＣＰＵ２０Ｐ１〜２０Ｐｎの数の近傍の数とすることにより情報処理装置１０の性能が向上する。なぜなら、ＣＰＵ２０Ｐ１〜２０Ｐｎは、ＭＡＰ処理後データ列にアクセスをして、分散配置を行い、分散配置データ列にアクセスをして、分散配置データ列を集約配置等行う。この時、ＣＰＵ２０Ｐ１〜２０Ｐｎは、同一の分散配置データ列へアクセスを行う場合、ロックなどの同期処理を用いて順序よくアクセスを行う。この場合、分散配置データ列の数が、ＣＰＵ２０Ｐ１〜２０Ｐｎの数よりも極端に少ない場合、複数のＣＰＵから、分散配置データ列への競合アクセスが増加することになり、情報処理装置１０の性能が低下する。そのため、分散配置データ列の数を増加させ、ＣＰＵ２０Ｐ１〜２０Ｐｎの数と同程度にすることにより、同一の分散配置データ列への競合アクセスを減少させることができる。
【００４８】
なお、上記の説明においては、分散配置の方法として、各分散配置データ列の扱うキーの範囲を小さくする方法について説明したが、ハッシュにより分散化する方法等を用いて分散配置を行ってもよい。
【００４９】
続いて、図１４を用いて本発明の実施の形態１にかかる情報処理装置１０におけるＭＡＰ／ＲＥＤＵＣＥ処理の流れについて説明する。はじめに、データコピー制御部１１０は、ＣＰＵ群２０に対して、共有メモリ３０の初期データ列２００を分割し、ＭＡＰ処理前データ列２０１Ｍ１〜２０１Ｍｍとしてローカルメモリ６０Ｍ１〜６０Ｍｍへコピーするように指示する（Ｓ１）。指示を受けたＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎは、共有メモリ３０上の初期データ列２００へアクセスし、ローカルメモリ６０Ｍ１〜６０Ｍｍへコピーするように動作する。
【００５０】
次に、アクセラレータ制御部１２０は、ＣＰＵ群２０を介してアクセラレータ５０Ｇ１〜５０Ｇｍに対して、ローカルメモリ６０Ｍ１〜６０Ｍｍ上のＭＡＰ処理前データ列２０１Ｍ１〜２０１Ｍｍを用いたＭＡＰ処理の実行を指示する（Ｓ２）。アクセラレータ５０Ｇ１〜５０Ｇｍは、ローカルメモリ６０Ｍ１〜６０Ｍｍに蓄積されているＭＡＰ処理前データ列２０１Ｍ１〜２０１Ｍｍを抽出し、ＭＡＰ処理を実行する。アクセラレータ５０Ｇ１〜５０Ｇｍは、ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍをローカルメモリ６０Ｍ１〜６０Ｍｍへ蓄積する。
【００５１】
次に、データコピー制御部１１０は、ＣＰＵ群２０に対して、ローカルメモリ６０Ｍ１〜６０Ｍｍ上のＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍを共有メモリ３０へコピーするように指示する（Ｓ３）。指示を受けたＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎは、アクセラレータ５０Ｇ１〜５０Ｇｍを介してローカルメモリ６０Ｍ１〜６０Ｍｍへアクセスし、ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍを共有メモリ３０上へコピーするように動作する。
【００５２】
次に、データ分散化制御部１３０は、ＣＰＵ群２０に対して、共有メモリ３０上のＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍを、分散配置データ列４００Ｍ１〜４００Ｍｋとして分散配置するように指示する（Ｓ４）。指示を受けたＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎは、共有メモリ３０上のＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍへアクセスし、ＭＡＰ処理後データ列３００Ｍ１〜３００Ｍｍをアクセラレータ５０Ｇ１〜５０Ｇｍの数よりも多い数へ分散配置するように動作する。
【００５３】
次に、データ再配置制御部１４０は、ＣＰＵ群２０に対して、分散配置データ列４００Ｍ１〜４００Ｍｋのグルーピングを指示する（Ｓ５）。例えば、指示を受けたＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎは、アクセラレータ５０Ｇ１〜５０Ｇｍの数と同数のグループを生成するように、分散配置データ列４００Ｍ１〜４００Ｍｋのグルーピングをするように動作する。
【００５４】
次に、データ集約化制御部１５０は、ＣＰＵ群２０に対して、グループデータ列５００Ｍ１〜５００Ｍｍを、集約データ列６００Ｍ１〜６００Ｍｍとすることを指示する（Ｓ６）。指示を受けたＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎは、グループデータ列５００Ｍ１〜５００Ｍｍへアクセスし、それぞれのグループデータ列毎に、集約データ列６００Ｍ１〜６００Ｍｍを生成するように動作する。
【００５５】
次に、データコピー制御部１１０は、ＣＰＵ群２０に対して共有メモリ３０上の集約データ列６００Ｍ１〜６００Ｍｍをローカルメモリ６０Ｍ１〜６０Ｍｍへコピーすることを指示する（Ｓ７）。指示を受けたＣＰＵ群２０のＣＰＵ２０Ｐ１〜２０Ｐｎは、共有メモリ３０上の集約データ列６００Ｍ１〜６００Ｍｍへアクセスし、集約データ列６００Ｍ１〜６００Ｍｍをローカルメモリ６０Ｍ１〜６０Ｍｍへコピーするように動作する。
【００５６】
次に、アクセラレータ制御部１２０は、ＣＰＵ群２０を介してアクセラレータ５０Ｇ１〜５０Ｇｍに対して、ローカルメモリ６０Ｍ１〜６０Ｍｍ上の集約データ列６００Ｍ１〜６００Ｍｍを用いてＲＥＤＵＣＥ処理の実行を指示する（Ｓ８）。アクセラレータ５０Ｇ１〜５０Ｇｍは、ローカルメモリ６０Ｍ１〜６０Ｍｍに蓄積されている集約データ列６００Ｍ１〜６００Ｍｍを抽出し、ＲＥＤＵＣＥ処理を実行する。ＲＥＤＵＣＥ処理実行後のデータ列は、ローカルメモリ６０Ｍ１〜６０Ｍｍに一時的に蓄積され、その後、共有メモリ３０にコピーされるようにしてもよい。
【００５７】
以上説明したように、本発明の実施の形態１にかかる情報処理装置１０を用いることにより、ＭＡＰ処理後データ列を、情報処理装置１０内に搭載されているアクセラレータの数よりも多い数のデータ列に分散配置し、分散配置されたデータ列をさらにＲＥＤＵＣＥ処理を実行するアクセラレータの数に集約配置することができる。このように、分散配置を経ることにより、通常のデータ再配置と比較して、共有メモリ上でのロック競合等を緩和することができる。さらに、ＭＡＰ処理後のキーの値に基づいて、分散配置することにより、分散配置されたデータを、キーの値に基づいてグルーピングすることができる。そのため、グルーピングされたデータを集約する際におけるロック競合も最低限に抑えることができる。
【００５８】
上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、プロセッサ制御部１００における図１４のに記載の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。）
【００５９】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００６０】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００６１】
１０  情報処理装置
２０  ＣＰＵ群
２０Ｐ１〜２０Ｐｎ  ＣＰＵ
３０  共有メモリ
３２  データ配置部
３４  データ集約部
４０  チップセット
５０Ｇ１〜５０Ｇｍ  アクセラレータ
６０Ｍ１〜６０Ｍｍ  ローカルメモリ
１００  プロセッサ制御部
１１０  データコピー制御部
１２０  アクセラレータ制御部
１３０  データ分散化制御部
１４０  データ再配置制御部
１５０  データ集約化制御部
【図１】
2013025392.tif 000003
【図２】
2013025392.tif 000004
【図３】
2013025392.tif 000005
【図４】
2013025392.tif 000006
【図５】
2013025392.tif 000007
【図６】
2013025392.tif 000008
【図７】
2013025392.tif 000009
【図８】
2013025392.tif 000010
【図９】
2013025392.tif 000011
【図１０】
2013025392.tif 000012
【図１１】
2013025392.tif 000013
【図１２】
2013025392.tif 000014
【図１３】
2013025392.tif 000015
【図１４】
2013025392.tif 000016
【図１５】
2013025392.tif 000017