(57)【要約】【課題】メモリに対するアクセス時間を低減し、ひいては、実行パフォーマンスを向上する。【解決手段】実施形態の情報処理装置は、並列処理が可能な複数のプロセッサと、前記複数のプロセッサで共有されるメモリと、を備えている。そして、割当手段は、メモリのアクセス範囲が予め記述可能とされるとともに複数のスレッドで構成されたワークグループを、それぞれ記述されたアクセス範囲を参照して複数のプロセッサのいずれかに実行させるために割り当てる。【選択図】図２
2013114538.tif 000002
【特許請求の範囲】
【請求項１】
並列処理が可能な複数のプロセッサと、
前記複数のプロセッサで共有されるメモリと、
前記メモリのアクセス範囲が予め記述可能とされるとともに複数のスレッドで構成されたワークグループを、それぞれ記述された前記アクセス範囲を参照して前記複数のプロセッサのいずれかに実行させるために割り当てる割当手段と、
を備えた情報処理装置。
【請求項２】
前記プロセッサは、キャッシュを介して前記メモリに接続されており、
前記割当手段は、前記アクセス範囲の少なくとも一部が重複する複数のワークグループを同一のプロセッサに連続して割り当てる、
請求項１記載の情報処理装置。
【請求項３】
前記割当手段は、前記アクセス範囲の少なくとも一部が重複する複数のワークグループのうち、最も重複範囲が大きいワークグループを優先的に同一のプロセッサに割り当てる、
請求項２記載の情報処理装置。
【請求項４】
前記割当手段は、前記アクセス範囲が重複しない複数のワークグループを、並列処理させるためにそれぞれ異なるプロセッサに割り当てる、
請求項１乃至請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記割当手段は、前記アクセス範囲が重複しない複数のワークグループのうち、最もアドレスの近いワークグループを優先的にプロセッサに割り当てる、
請求項４記載の情報処理装置。
【請求項６】
前記プロセッサは、ＧＰＵを構成する演算ユニットとして構成されており、
前記メモリは、前記演算ユニットで共用されるＶＲＡＭとして構成されている、
請求項１乃至請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
前記プロセッサは、ＧＰＵが有する複数の演算ユニットのそれぞれを構成する演算エレメントとして構成されており、
前記メモリは、前記演算ユニット毎に割り当てられたローカルメモリとして構成されている、
請求項１乃至請求項５のいずれか１項に記載の情報処理装置。
【請求項８】
並列処理が可能な複数のプロセッサと、前記複数のプロセッサで共有されるメモリと、を備えた情報処理装置において実行される情報処理方法であって、
前記メモリのアクセス範囲が予め記述可能とされるとともに複数のスレッドで構成されたワークグループについて、記述された前記アクセス範囲を参照する参照過程と、
前記参照したアクセス範囲に基づいて、各前記ワークグループを前記複数のプロセッサのいずれかに実行させるために割り当てる割当過程と、
を備えた情報処理方法。
【請求項９】
並列処理が可能な複数のプロセッサと、前記複数のプロセッサで共有されるメモリと、を備えた情報処理装置をコンピュータにより制御するための制御プログラムであって、
前記コンピュータを、前記メモリのアクセス範囲が予め記述可能とされるとともに複数のスレッドで構成されたワークグループについて、記述された前記アクセス範囲を参照する参照手段と、
前記参照したアクセス範囲に基づいて、各前記ワークグループを前記複数のプロセッサのいずれかに実行させるために割り当てる割当手段と、
して機能させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、情報処理方法及び制御プログラムに関する。
【背景技術】
【０００２】
従来複数のスレッドの命令を並列実行するマルチスレッドプロセッサが知られている（例えば、特許文献１参照）。
このようなマルチスレッドプロセッサとして、ＧＰＵ（Graphics  Processing  Units）が知られているが、近年、このＧＰＵを並列演算能力を汎用演算に用いるＧＰＧＰＵ（General  Purpose  computing  on  Graphics  Processing  Units）が提案されている。
【０００３】
例えば、ＧＰＧＰＵの実行プラットフォームとしては、ＣＵＤＡ（Compute  Unified  Device  Architecture）、ＯｐｅｎＣＬ（Open  Computing  Language）といった技術が知られている。
これらのＧＰＧＰＵの実行プラットフォームにおいては、ＧＰＵ上に多数搭載されている演算プロセッサを並列に動作させることによって、大規模な演算を高速に実行することが可能となっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２７７３７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上述したようなＧＰＧＰＵの実行プラットフォーム上におけるプログラミングにおいて、実行パフォーマンスを大きく左右する要因は、演算プロセッサ上における演算時間ではなく、各演算プロセッサがメモリにアクセスしてデータの読み書きを行うアクセス時間が主なものとなっていた。
【０００６】
本発明は、上記に鑑みてなされたものであって、メモリに対するアクセス時間を低減し、ひいては、実行パフォーマンスを向上することが可能な情報処理装置、情報処理方法及び制御プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
実施形態の情報処理装置は、並列処理が可能な複数のプロセッサと、前記複数のプロセッサで共有されるメモリと、を備えている。
そして、割当手段は、メモリのアクセス範囲が予め記述可能とされるとともに複数のスレッドで構成されたワークグループを、それぞれ記述されたアクセス範囲を参照して複数のプロセッサのいずれかに実行させるために割り当てる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る情報処理装置の概要構成の一例を示す図である。
【図２】図２は、ＧＰＵの概要構成説明図である。
【図３】図３は、演算ユニットの詳細構成説明図である。
【図４】図４は、ＧＰＵにおけるアプリケーションプログラムの実行モデルの概念説明図である。
【図５】図５は、各ワークグループのＶＲＡＭの利用状況の説明図である。
【図６】図６は、ＡＰＩの仕様の一例の説明図である。
【図７】図７は、実施形態の処理フローチャートである。
【発明を実施するための形態】
【０００９】
次に図面を参照して実施形態について説明する。
図１は、実施形態に係る情報処理装置の概要構成の一例を示す図である。
情報処理装置１０は、大別すると、汎用プロセッサであるＭＰＵ１１、グラフィックプロセッサであるＧＰＵ１２、比較的高速なバス（Ｂｕｓ）を介して通信を行う回路を対象としてインタフェース動作を行うノースブリッジ１３、ノースブリッジ１３にメモリバス１４を介して接続され、記録媒体として機能して、各種制御プログラム等が格納されたＲＯＭ１５、ノースブリッジ１３にメモリバス１４を介して接続され、ワークエリア等として各種データを格納するＲＡＭ１６、ノースブリッジ１３に接続され比較的低速なバスを介して通信を行う回路を対象としてインタフェース動作を行うサウスブリッジ１７、サウスブリッジ１７に接続され、外部記憶装置として機能するＨＤＤ１８、サウスブリッジ１７にＰＣＩバス１９を介して接続され、通信インタフェース動作を行う通信インタフェース(ＩＦ)部２０を備えている。
また、ＧＰＵ１２には、キャッシュ２１を介してＶＲＡＭ２２が接続されている。
上記構成において、ＭＰＵ１１は、いわゆるマイクロコンピュータとして構成されており、図示しないＣＰＵ、ＲＯＭ、ＲＡＭ等を備えている。
ＧＰＵ１２は、行列演算などの定式化された単純な演算の繰り返しを高速で行うための複数の演算ユニットを多数備えている。
【００１０】
ここで、図２を参照してＧＰＵ１２について詳細に説明する。
図２は、ＧＰＵの概要構成説明図である。
ＧＰＵ１２は、複数の演算ユニット３１と、これら複数の演算ユニット３１上におけるスレッドの実行制御を行うコントローラ３２を備えている。各演算ユニット３１は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ２．０規格に則った高速グラフィックバス３３を介して、キャッシュ２１に接続されている。さらにこのキャッシュ２１を介して、複数の演算ユニット３１により共用されるＶＲＡＭ２２が接続されている。
ＶＲＡＭ２２は、大別すると、汎用メモリエリア３４及び各種定数を格納する定数メモリエリア３５を備えている。
【００１１】
図３は、演算ユニットの詳細構成説明図である。
ＧＰＵ１２を構成している各演算ユニット３１は、複数の演算エレメント４１と、全演算エレメント４１により共有されるメモリエリアを構成するローカルメモリ４２と、各演算エレメント４１に対応づけられ、当該対応する演算エレメント４１により占有されるメモリエリアを構成するプライベートメモリ４３と、各演算エレメント４１とローカルメモリ４２とを相互に接続するバス４４と、を備えている。ここで、バス４４と、高速グラフィックバス３３とは、相互に接続されている。
【００１２】
次に再び情報処理装置の構成について説明する。
ノースブリッジ１３は、比較的広帯域で高速なバスの通信インタフェース動作を行っている。
ＲＯＭ１５は、制御プログラム等の不揮発的に記憶する必要があるデータを格納している。
ＲＡＭ１６は、いわゆるメインメモリを構成しており、各種のデータを一時的に格納する。
サウスブリッジ１７は、機械的な駆動部を有するＨＤＤ、光ディスクドライブ等の比較的狭帯域で低速なバスに接続される装置との間の通信インタフェース動作を行う。
ＨＤＤ１８は、低速動作ではあるが、大容量のデータを記憶する。
通信インタフェース(ＩＦ)部２０は、図示しないイーサネット（登録商標）規格に準拠した通信ネットワークを介して他の情報処理装置等との間でデータ通信を行う際の通信インタフェース動作を行う。
【００１３】
ここで、実施形態の動作説明に先立ち、処理対象のデータについて説明する。
本実施形態においては、スレッドを実行する演算ユニット３１は、可能な場合には、メモリアクセス領域（メモリアクセス範囲）が近いスレッド群（≒タスク）を近い時間に実行するようにされている。
ＧＰＵ１２においては、一つのアプリケーションプログラムが複数のデータに対して実行されるＳＰＭＤ（Single  Program  Multiple  Data）という実行モデルが適用されることが多い。
【００１４】
ところで、一つのアプリケーションプログラムは、並列に実行されるスレッド（ワークアイテム）と呼ばれる小さなプログラムで構成されている。そして、スレッドを実行するに際しては、複数のスレッドが、一つのワークグループとしてグルーピングされてワークグループ単位で実行される。したがって、一つのアプリケーションプログラムを実行することで複数のワークグループが並列に実行されることとなる。
【００１５】
そして、各演算ユニット３１には、ワークグループ単位で割り当てがなされる。演算ユニット３１に割り当てられたワークグループを構成する複数のスレッドには、割り当てがなされた演算ユニット３１に対応するローカルメモリ４２が共有可能とされている。すなわち、同一の演算ユニット３１に割り当てられた複数のワークグループは、ローカルメモリ４２を共有する。
さらにワークグループを構成する各スレッドは、それぞれ演算エレメント４１に割り当てられ、各演算エレメント４１に割り当てられたスレッドは、当該演算エレメント４１に割り当てられたスレッドのみが参照可能なプライベートメモリ４３を利用可能な状態となっている。
【００１６】
図４は、ＧＰＵにおけるアプリケーションプログラムの実行モデルの概念説明図である。
図４に示すように、アプリケーションプログラムＡＰＬは、概念上、２次元のインデックス＝（Ｗｘ，Ｗｙ）で識別され、それぞれ並列に実行可能とされた複数のワークグループＷＧにより構成されている。各ワークグループＷＧは、同様にそれぞれ並列に実行可能とされた複数のスレッドＴＨにより構成されている。
【００１７】
図５は、各ワークグループのＶＲＡＭの利用状況の説明図である。
図５においては、３つのワークグループがメモリを参照している場合の説明図である。
図５に示すように、グループＩＤ＝１００が割り当てられているワークグループＷＧ１のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと、グループＩＤ＝３００が割り当てられているワークグループＷＧ３のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと、は一部重なる領域がある。
【００１８】
これに対し、グループＩＤ＝２００が割り当てられているワークグループＷＧ２の参照エリアは、いずれのワークグループＷＧ１、ＷＧ３が参照しているエリアとは重なりがなく、異なる領域となっている。
上述したようにグループＩＤ＝１００が割り当てられているワークグループＷＧ１のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと、グループＩＤ＝３００が割り当てられているワークグループＷＧ３のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと、は一部重なりがある。したがって、このまま、ワークグループＷＧ１と、ワークグループＷＧ３と、を並列動作可能な別の演算ユニット３１にそれぞれ割り当てたとしても、ワークグループＷＧ１及びワークグループＷＧ３が同時に並列して実行された場合には、同一のメモリアドレスにアクセスすることはできない。すなわち、同一データのフェッチは排他制御により異なる演算ユニット３１で同時に行うことはできないため、実質的な実行効率が低下することとなる。
【００１９】
したがって、このような場合には、ワークグループＷＧ１及びワークグループＷＧ３を同一の演算ユニット３１に割り当てることで、メモリアクセス空間における最適な割り当て（空間方向のアクセス最適化）を行うことが可能となる。
【００２０】
一方、グループＩＤ＝１００が割り当てられているワークグループＷＧ１のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと、グループＩＤ＝２００が割り当てられているワークグループＷＧ２のＶＲＡＭ２２の汎用メモリエリア３４の参照エリアと、は、重なりがない。
このため、このままワークグループＷＧ１と、ワークグループＷＧ２と、を同一の演算ユニット３１に割り当てたとしても、例えば、ワークグループＷＧ１の次にワークグループＷＧ２を同一の演算ユニット３１に割り当てて実行した場合には、演算ユニット３１は、ワークグループＷＧ１の処理終了後、ワークグループＷＧ２の処理を行う前にデータの再読込を行う必要があり、キャッシュ２１の利用効率が低下する。
【００２１】
したがって、このような場合には、ワークグループＷＧ１と、ワークグループＷＧ２を同時並行して処理が可能な別の演算ユニット３１にそれぞれ割り当てることで、時間軸方向における最適な割り当て（時間方向のアクセス最適化）を行うことが可能となる。
これらのため、本実施形態においては、ワークグループについて空間方向及び時間方向のアクセス最適化を行うために、ランタイムモジュールに各ワークグループの参照エリア（メモリアクセス範囲）を通知する構成を採っている。
【００２２】
この場合に、各ワークグループＷＧ１〜ＷＧ３に参照エリアが割り当てられる態様としては、アドレスが連続したメモリエリアが参照エリアとして割り当てられるラスター形式の割り当て態様と、アドレスは不連続であるが、概念的に２次元のメモリ空間上でタイル形状（矩形形状）のメモリエリアが参照エリアとして割り当てられるタイル形式の割り当て態様（連続したメモリ空間では、所定アドレスずつ離れて、複数の同一容量のメモリ空間が配置される態様となる）、が存在する。
そこで、本実施形態においては、ＡＰＩの仕様として、参照エリアがラスター形式で割り当てられる場合と、タイル形式で割り当てられる場合との、双方に対応可能な仕様を採用した。
【００２３】
図６は、ＡＰＩの仕様の一例の説明図である。
図６の記述態様は、ＯｐｅｎＣＬ規格に則った場合における参照エリア通知関数の記述態様である。
参照エリアがラスター形式で通知される場合の参照エリア通知関数ＦＮのパラメータとしては、システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理するカーネル（ｋｅｒｎｅｌ）を特定するためのカーネル名パラメータ、ラスター形式に相当する参照エリア割り当て形式パラメータ＝「ＴＹＰＥ＿ＲＡＳＴＥＲ」、参照エリア開始アドレスパラメータ（start_position）、参照エリアサイズパラメータ（size）及び参照エリア通知関数ＦＮのフォーマットを一定とするために使用しないパラメータについて、対応するパラメータが存在しないことを示すＮＵＬＬパラメータがある。
【００２４】
また、参照エリアがタイル形式で通知される場合の参照エリア通知関数ＦＮのパラメータとしては、カーネルを特定するためのカーネル名パラメータ、タイル形式に相当する参照エリア割り当て形式パラメータ＝「ＴＹＰＥ＿ＴＩＬＥ」、参照エリア開始アドレスパラメータ（start_position）、参照エリアを２次元のメモリ空間として表現した場合の横幅に相当する連続アドレス数を示す参照エリア水平サイズパラメータ（h_size）及び参照エリアを２次元のメモリ空間として表現した場合の縦幅に相当する参照エリア垂直サイズパラメータ（ｖ_size）がある。
【００２５】
この場合において、参照エリア開始アドレスパラメータは、ワークグループＷＧ及び当該ワークグループＷＧに含まれるスレッドＴＨの数（アイテム数）により定まり、ワークグループＷＧを特定するためのインデックスに対応するワークグループＩＤ組込変数g_idx及び当該ワークグループＩＤパラメータg_idxで特定されるワークグループに含まれるスレッドＴＨの数を示すスレッド数（アイテム数）組込変数g_numに基づいて算出される。これらのワークグループＩＤ組込変数g_idx及びスレッド数組込変数g_numは、ワークグループを構成するスレッドを特定するためのｘ方向及びｙ方向の２次元のデータであり、次元を表すパラメータ（［０］又は［１］）によりｘ方向（＝［０］）及びｙ方向（＝［１］）が示される。
【００２６】
図６の例の場合、
start_position＝g_num［0］*g_idx［0］＋g_num［1］*g_idx［1］
となっている。
また、参照エリアサイズパラメータ（size）は、定数である。
【００２７】
次に実施形態の動作を説明する。
図７は、実施形態の処理フローチャートである。
まず、コントローラ３２は、キューの先頭にあるタスクのグループのメモリアクセス領域を取得する（ステップＳ１０）。
【００２８】
次にコントローラ３２は、キューがいっぱいであるか否かを判別する（ステップＳ１１）。
ステップＳ１１の判別において、キューがいっぱいである場合には（ステップＳ１１；Ｙｅｓ）、再び処理をステップＳ１０に移行して待機状態となる。
ステップＳ１１の判別において、キューがいっぱいではない、すなわち、キューに余裕がある場合には（ステップＳ１１；Ｎｏ）、スケジュール待ちをしているタスクのグループがあり、他のタスクのグループをキューに積むことが可能であるか否かを判別する（ステップＳ１２）。
【００２９】
ステップＳ１２の判別において、スケジュール待ちをしているタスクのグループがない場合には（ステップＳ１２；Ｎｏ）、再び処理をステップＳ１０に移行して待機状態となる。
ステップＳ１２の判別において、スケジュール待ちをしているタスクのグループがあり、他のタスクのグループをキューに積むことが可能である場合には（ステップＳ１２；Ｙｅｓ）、当該スケジュール待ちをしているタスクのグループのメモリアクセス領域を計算により算出する（ステップＳ１３）。
【００３０】
次にコントローラ３２は、算出したメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっているか否かを判別する（ステップＳ１４）。
ステップＳ１４の判別において、算出したタスクのグループのメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっている場合には（ステップＳ１４；Ｙｅｓ）、当該タスクのグループをメモリアクセス領域が重なるグループのリストに追加し（ステップＳ１５）、処理をステップＳ１７に移行する。
【００３１】
一方、ステップＳ１４の判別において、算出したタスクのグループのメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっていない場合には（ステップＳ１４；Ｎｏ）、当該タスクのグループをメモリアクセス領域が重ならないグループのリストに追加する（ステップＳ１６）。
続いてコントローラ３２は、メモリアクセス領域が重なるグループのリスト及びメモリアクセス領域が重ならないグループのリストに含まれるタスクのグループの数がキューにタスクのグループを積むか否かを判定するための所定の閾値を超えたか否かを判別する（ステップＳ１７）。
【００３２】
ステップＳ１７の判別において、両リストに含まれる全タスクのグループの数が所定の閾値を超えていない場合には（ステップＳ１７；Ｎｏ）、コントローラ３２は、スケジュール待ちをしているタスクのグループがあり、他のタスクのグループをキューに積むことが可能であるか否かを再び判別する（ステップＳ１８）。
ステップＳ１８の判別において、スケジュール待ちしているタスクのグループがある場合には（ステップＳ１８；Ｙｅｓ）、処理を再びステップＳ１３に移行し、以下、同様の処理を行う。
【００３３】
ステップＳ１８の判別において、スケジュール待ちしているタスクのグループがない場合には（ステップＳ１８；Ｎｏ）、コントローラ３２は、メモリアクセス領域が重なるグループのリストに含まれるタスクのグループのうち、最も重なる領域が多いタスクのグループを時間方向にキューに積む（ステップＳ１９）。すなわち、キューの先頭にあるワークグループの処理後に同一の演算ユニット３（あるいは、演算エレメント４１）において、処理がなされるようにキューに積まれることとなる。
【００３４】
また、コントローラ３２は、メモリアクセス領域が重ならないグループのリストに含まれるタスクのグループのうち、最もアドレスが近いタスクのグループを空間方向にキューに積む（ステップＳ２０）。すなわち、キューの先頭にあるタスクのグループとは、別の演算ユニット３１（あるいは演算エレメント４１）において、処理がなされるようにキューに積まれることとなる。
【００３５】
以上の説明のように、本実施形態によれば、メモリアクセス領域（メモリ参照領域）が重なり、同時にメモリにアクセスすることができないワークグループ同士あるいはスレッド同士は、時間方向にキューに積まれるように割り当てられる。したがって、キャッシュにおけるヒット率を向上させることができ、処理効率を向上させることができる。
【００３６】
また、メモリアクセス領域（メモリ参照領域）が重ならず、同時にメモリにアクセスすることが可能なワークグループ同士あるいはスレッド同士は、空間方向にキューに積まれて、すなわち、別の演算ユニット３１あるいは別の演算エレメント４１に割り当てられる。したがって、同時にメモリにアクセスすることが可能なワークグループ同士あるいはスレッド同士を、同時並列に処理することが可能となり、処理効率を向上させることができる。
【００３７】
本実施形態の情報処理装置で実行される制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００３８】
また、本実施形態の情報処理装置で実行される制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の情報処理装置で実行される制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００３９】
また、本実施形態の情報処理装置の制御プログラムを、ＲＯＭ等の記憶媒体に予め組み込んで提供するように構成してもよい。
本実施形態の情報処理装置で実行される制御プログラムは、上述した各部（参照手段、割当手段）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）がＲＯＭ等の記憶媒体あるいは上記記録媒体から制御プログラムを読み出して実行することにより上記各手段が主記憶装置上にロードされ、参照手段、割当手段が主記憶装置上に生成されるようになっている。
【００４０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４１】
１０…情報処理装置、１１…ＭＰＵ、１２…ＧＰＵ、１５…ＲＯＭ（記録媒体）、２１…キャッシュ、２２…ＶＲＡＭ、３１…演算ユニット（プロセッサ）、３２…コントローラ（参照手段、割当手段）、３３…高速グラフィックバス、３４…汎用メモリエリア（メモリ）、４１…演算エレメント（プロセッサ）、４２…ローカルメモリ（メモリ）、４３…プライベートメモリ、４４…バス、ＡＰＬ…アプリケーションプログラム、ＦＮ…参照エリア通知関数、ＴＨ…スレッド、ＷＧ、ＷＧ１〜ＷＧ３…ワークグループ、ＷＧＧ…ワークグループ群。
【図１】
2013114538.tif 000003
【図２】
2013114538.tif 000004
【図３】
2013114538.tif 000005
【図４】
2013114538.tif 000006
【図５】
2013114538.tif 000007
【図６】
2013114538.tif 000008
【図７】
2013114538.tif 000009
【手続補正書】
【提出日】平成24年12月5日(2012.12.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
並列処理が可能な複数のプロセッサと、
前記複数のプロセッサで共有されるメモリと、
複数のスレッドで構成されたワークグループの前記メモリのアクセス範囲が参照エリア通知関数に予め記述可能とされ、記述された前記アクセス範囲を前記参照エリア通知関数を参照して取得し、取得した前記アクセス範囲に基づいて、前記ワークグループを前記複数のプロセッサのいずれかに実行させるために割り当てる割当手段と、
を備えた情報処理装置。
【請求項２】
前記プロセッサは、キャッシュを介して前記メモリに接続されており、
前記割当手段は、前記アクセス範囲の少なくとも一部が重複する複数のワークグループを同一のプロセッサに連続して割り当てる、
請求項１記載の情報処理装置。
【請求項３】
前記割当手段は、前記アクセス範囲の少なくとも一部が重複する複数のワークグループのうち、最も重複範囲が大きいワークグループを優先的に同一のプロセッサに割り当てる、
請求項２記載の情報処理装置。
【請求項４】
前記割当手段は、前記アクセス範囲が重複しない複数のワークグループを、並列処理させるためにそれぞれ異なるプロセッサに割り当てる、
請求項１乃至請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記割当手段は、前記アクセス範囲が重複しない複数のワークグループのうち、最もアドレスの近いワークグループを優先的にプロセッサに割り当てる、
請求項４記載の情報処理装置。
【請求項６】
前記プロセッサは、ＧＰＵを構成する演算ユニットとして構成されており、
前記メモリは、前記演算ユニットで共用されるＶＲＡＭとして構成されている、
請求項１乃至請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
前記プロセッサは、ＧＰＵが有する複数の演算ユニットのそれぞれを構成する演算エレメントとして構成されており、
前記メモリは、前記演算ユニット毎に割り当てられたローカルメモリとして構成されている、
請求項１乃至請求項５のいずれか１項に記載の情報処理装置。
【請求項８】
並列処理が可能な複数のプロセッサと、前記複数のプロセッサで共有されるメモリと、を備えた情報処理装置において実行される情報処理方法であって、
複数のスレッドで構成されたワークグループの前記メモリのアクセス範囲が参照エリア通知関数に予め記述可能とされ、前記ワークグループについて、前記参照エリア通知関数に記述された前記アクセス範囲を、前記参照エリア通知関数を参照して取得する参照過程と、
前記取得したアクセス範囲に基づいて、各前記ワークグループを前記複数のプロセッサのいずれかに実行させるために割り当てる割当過程と、
を備えた情報処理方法。
【請求項９】
並列処理が可能な複数のプロセッサと、前記複数のプロセッサで共有されるメモリと、を備えた情報処理装置をコンピュータにより制御するための制御プログラムであって、
前記コンピュータを、複数のスレッドで構成されたワークグループの前記メモリのアクセス範囲が参照エリア通知関数に予め記述可能とされ、前記ワークグループについて、前記参照エリア通知関数に記述された前記アクセス範囲を、前記参照エリア通知関数を参照して取得する参照手段と、
前記取得したアクセス範囲に基づいて、各前記ワークグループを前記複数のプロセッサのいずれかに実行させるために割り当てる割当手段と、
して機能させる制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
実施形態の情報処理装置は、並列処理が可能な複数のプロセッサと、複数のプロセッサで共有されるメモリと、を備えている。
そして、割当手段は複数のスレッドで構成されたワークグループのメモリのアクセス範囲が参照エリア通知関数に予め記述可能とされ、記述されたアクセス範囲を参照エリア通知関数を参照して取得し、取得した前記アクセス範囲に基づいて、前記ワークグループを複数のプロセッサのいずれかに実行させるために割り当てる。