(57)【特許請求の範囲】
【請求項１】
プロセッサと、複数階層のメモリとを有するプログラム実行部と、
前記プロセッサが前記メモリからリードブロックを読み出してデータ処理を行い、前記メモリへ前記データ処理の結果であるライトブロックを書き出す複数のサブルーチンを含むプログラムと、前記リードブロック及び前記ライトブロックに対してそれぞれ設定された属性群とが入力される演算制御部と、
メモリアクセス監視部と
を備えたデータ処理装置のデータ処理方法であって、
前記プログラム実行部が
前記プログラムを実行するステップと、
前記メモリアクセス監視部が、
形状属性が非矩形であるデータブロックまたはサブデータブロックの前記サブルーチン間に行われるメモリ転送を監視して、当該メモリ転送に係るメモリアクセス情報を前記演算制御部へ出力するステップと、
前記演算制御部が、
前記メモリアクセス情報に基づき当該データブロックの読出しまたは書込みアドレスの変換を行って形状情報を算出して前記形状属性に追加し、
少なくとも前記形状情報を追加した前記形状属性を含む属性群を前記プログラム中でのデータまたは処理の流れとは逆方向に伝搬させて属性群を修正し、
前記サブルーチン間で受け渡されるデータブロックの各々について、属性群と、前記プロセッサ及び前記メモリの性能・構成情報とが所定の条件を満たすときには当該データブロックをサブデータブロックに分割し、
前記複数階層のメモリから前記サブデータブロックの読出し元あるいは書出し先となるメモリを選択して、
前記プロセッサによる前記データブロックまたは前記サブデータブロックへのメモリアクセス及び当該データブロックに係るサブルーチンの実行を制御するステップと
を有するデータ処理方法。
【請求項２】
前記演算制御部が、
少なくとも前記形状情報を追加した前記形状属性を含む属性群を前記プログラム中でのデータまたは処理の流れとは逆方向に伝搬させて属性群を修正するのは、
前記サブルーチン間で受け渡されるデータブロックの各々について、属性群と、前記プロセッサ及び前記複数階層のメモリの性能・構成情報とが前記所定の条件を満たさないときである
請求項１記載のデータ処理方法。
【請求項３】
前記プログラムは第１のサブルーチンと、前記第１のサブルーチン後に実行される第２のサブルーチンとを有し、
前記第１のサブルーチンのデータブロックには第１の属性が設定され、
前記第２のサブルーチンのデータブロックには前記第１の属性と同じ属性に係る第２の属性が設定されており、
属性群を修正するときに、
前記第１の属性と前記第２の属性との論理和または論理積を算出して、前記論理和または論理積を新たな第１の属性とする
請求項１記載のデータ処理方法。
【請求項４】
属性群には、更に、形状依存属性が含まれており、
前記形状依存属性は、前記形状依存属性が設定された第１のデータブロックが形状を依存する第２のデータブロックを指し示し、
前記メモリアクセス監視部が
前記第２のデータブロックの更新を監視して、前記更新に係る情報を前記演算制御部へ出力するステップと、
前記演算制御部が、
前記更新に係る情報に基づき、少なくとも前記第１のデータブロックを含むデータブロックの前記形状属性をリセットするステップと
を更に有する請求項１記載のデータ処理方法。
【請求項５】
請求項１記載のデータ処理方法の各ステップを前記データ処理装置に実行させるためのプログラム。
【請求項６】
プロセッサと、複数階層のメモリとを有するプログラム実行部と、
前記プロセッサが前記メモリからリードブロックを読み出してデータ処理を行い、前記メモリへ前記データ処理の結果であるライトブロックを書き出す複数のサブルーチンを含むプログラムと、前記リードブロック及び前記ライトブロックに対してそれぞれ設定された属性群とが入力される演算制御部と、
メモリアクセス監視部と
を備え、
前記プログラム実行部が
前記プログラムを実行し、
前記メモリアクセス監視部が、
形状属性が非矩形であるデータブロックまたはサブデータブロックの前記サブルーチン間に行われるメモリ転送を監視して、当該メモリ転送に係るメモリアクセス情報を前記演算制御部へ出力し、
前記演算制御部が、
前記メモリアクセス情報に基づき当該データブロックの読出しまたは書込みアドレスの変換を行って形状情報を算出して前記形状属性に追加し、
少なくとも前記形状情報を追加した前記形状属性を含む属性群を前記プログラム中でのデータまたは処理の流れとは逆方向に伝搬させて属性群を修正し、
前記サブルーチン間で受け渡されるデータブロックの各々について、属性群と、前記プロセッサ及び前記メモリの性能・構成情報とが所定の条件を満たすときには当該データブロックをサブデータブロックに分割し、
前記複数階層のメモリから前記サブデータブロックの読出し元あるいは書出し先となるメモリを選択して、
前記プロセッサによる前記データブロックまたは前記サブデータブロックへのメモリアクセス及び当該データブロックに係るサブルーチンの実行を制御する
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理方法、プログラム及びデータ処理装置に関する。
【背景技術】
【０００２】
近年、プロセッサの発熱を抑制する必要性から、プロセッサの動作周波数を上げる代わりに、並列に処理を行うプロセッサ・コアの数を増やすことで性能向上を実現する動きが顕著になっている。
【０００３】
特許文献１には、並列プロセッサにおいて、各データブロックに対してそれぞれ設定された属性群と、並列プロセッサの構成を示す構成パラメータとに基づいて、最下位階層のメモリ（グローバルメモリ）と、他の階層のメモリ（プライベートメモリまたはローカルメモリ）との間での各データブロックの転送方式を決定し、各データブロックの転送及び該転送に対応する並列演算の制御を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０２５５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記並列プロセッサによれば、演算処理に伴う階層の異なる複数のメモリ間でのデータ移動について、ユーザコードの開発者の負担を減らすと共に、ユーザコードの可搬性を高めることができる。
【０００６】
しかしながら、上記並列プロセッサにおいては、並列演算前にデータブロックをグローバルメモリからプライベートメモリまたはローカルメモリに転送するリード転送、及び、並列演算後にデータブロックをプライベートメモリまたはローカルメモリからグローバルメモリに転送するライト転送をそれぞれ行い、処理時間が長くなることから、更なる処理効率の向上が望まれていた。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、データ処理方法は、プロセッサと、複数階層のメモリとを有するプログラム実行部と、前記プロセッサが前記メモリからリードブロックを読み出してデータ処理を行い、前記メモリへ前記データ処理の結果であるライトブロックを書き出す複数のサブルーチンを含むプログラムと、前記リードブロック及び前記ライトブロックに対してそれぞれ設定された属性値とが入力される演算制御部と、メモリアクセス監視部とを備えたデータ処理装置のデータ処理方法であって、前記プログラム実行部が前記プログラムを実行するステップと、前記メモリアクセス監視部が、形状属性値が非矩形であるデータブロックまたはサブデータブロックの前記サブルーチン間に行われるメモリ転送を監視して、当該メモリ転送に係るメモリアクセス情報を前記演算制御部へ出力するステップと、前記演算制御部が、前記メモリアクセス情報に基づき当該データブロックの読出しまたは書込みアドレスの変換を行って形状属性値を算出し、少なくとも前記算出した形状属性値を含む属性値を前記プログラム中でのデータまたは処理の流れとは逆方向に伝搬させて属性値を修正し、前記サブルーチン間で受け渡されるデータブロックの各々について、属性値と、前記プロセッサ及び前記メモリの性能・構成情報とが所定の条件を満たすときには当該データブロックをサブデータブロックに分割し、前記複数階層のメモリから前記サブデータブロックの読出し元あるいは書出し先となるメモリを選択して、前記プロセッサによる前記データブロックまたは前記サブデータブロックへのメモリアクセス及び当該データブロックに係るサブルーチンの実行を制御するステップとを有する。
なお、上記一実施の形態の方法を装置やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本発明の態様としては有効である。
【発明の効果】
【０００８】
上記一実施の形態によれば、処理効率の向上を図ることができるデータ処理方法、プログラム及びデータ処理装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】プログラムを表現した有向グラフと当該プログラムへの資源割り当てとを示す図である。
【図２】実施の形態１に係るＯｐｅｎＣＬシステム１００の概略構成を示す図である。
【図３】実施の形態１に係るデータ処理方法の処理手順を示すフローチャートである。
【図４】実施の形態１に係るサブルーチン、データブロック及び複数階層メモリの当初の対応関係を示す図である。
【図５】実施の形態１に係るサブルーチン、データブロック及び複数階層メモリの変更された対応関係を示す図である。
【図６】実施の形態１に係るサブルーチン、データブロック及び複数階層メモリの更に変更された対応関係を示す図である。
【図７】実施の形態２に係るサブルーチン、データブロック及び複数階層メモリの当初の対応関係を示す図である。
【図８】実施の形態２に係るデータ処理方法の処理手順を示すフローチャートである。
【図９】実施の形態２に係るサブルーチン、データブロック及び複数階層メモリの変更された対応関係を示す図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。
【００１１】
したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。
【００１３】
非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。
【００１４】
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１５】
（実施の形態１）
本実施の形態１のデータ処理方法は、各データブロックに設定する属性群に形状属性を追加し、データ処理装置の構成にデータブロックの形状属性を求めるためのメモリアクセス監視部を追加し、プログラムを試行して非矩形に分割されるデータブロックの形状属性を求め、この形状属性をプログラム中でのデータまたは処理の流れとは逆方向に伝搬させることにより、サブデータブロックの格納先を高速で小容量な上位階層のメモリに変更して、プログラムの実行時間を短縮するものである。
【００１６】
以下、本実施の形態１に係るデータ処理方法について、当該処理方法が適用される技術の一つである画像認識技術と関連付けながら説明する。
画像認識とは画像から物体の有無などの様々な情報を抽出する技術であり、通常は複数の基本的な画像処理を組み合わせて実現される。各画像処理はサブルーチンとして処理される。画像は多数の画素と呼ばれる単位データの２次元配列として表現され、画像処理の多くは画像中の各画素に対して同様の演算を適用することで行われる。例えば、画像処理の一つにフィルタ処理と呼ばれる処理がある。フィルタ処理は画像を変換する処理で、元画像からノイズを除去するなどの効果を得るために用いられる。
【００１７】
フィルタ処理では、ある座標の画素を中心とする縦横３〜５画素程度の正方形領域を参照して、正方形領域内の画素に対してその相対位置に基づく係数を乗じて積和演算を行い、変換後の当該ある座標の画素の画素値を得るような処理を行う。画像全体を変換するためには、画素の変換を画像全体に対して適用する。画素毎に座標及び画素値は異なるが、適用される演算は同一である。この特徴は多くの画像処理に共通している。
【００１８】
画像処理を行う場合に、画像は２次元配列のデータブロックとして表現され、サブデータブロックとよばれる領域に分割されて、サブデータブロック単位で処理が適用される。ブロック分割の利点は、データ転送の効率化による処理時間の短縮である。
【００１９】
画像をはじめとする多次元配列データブロックに対するデータ処理システムを実現する技術として、グラフマネージャを用いた並列プロセッサと並列プロセッサの制御方法がある。画像認識処理をはじめとする多次元配列処理プログラムもまた、一般のプログラムと同様に１つ以上のサブルーチンから成る。
【００２０】
サブルーチンはメモリから多次元配列データブロックを読み出して処理を行い、メモリに多次元配列データブロックを書き出して処理を終了する。サブルーチンが読み出すデータブロックがリードブロック、サブルーチンが書き出すデータブロックがライトブロックである。
【００２１】
グラフマネージャは、プログラムを、サブルーチンをノードとし、ノード間のデータブロック転送をエッジとする有向グラフにより表現する。
図１は、プログラムを表現した有向グラフと当該プログラムへの資源割り当てとを示す図である。この有向グラフは、「データ入力」から「処理結果出力」までの間の６つのサブルーチンＳＲ１１〜ＳＲ１６をノードとし、「データ入力」、「処理結果出力」及びサブルーチンＳＲ１１〜ＳＲ１６間のデータ転送をエッジとする。
【００２２】
エッジの終点・起点には、リードブロック・ライトブロックの性質を示す属性群（サイズ属性、リード属性、ライト属性、余白属性、放送属性、割当属性、階層属性、依存属性）の属性値が与えられる。プログラムをハードウェア上に割り当てる、つまり、マッピングするときは、ノードはプロセッサに割り当てられ、ノード間のデータ転送として実装されるエッジはメモリに割り当てられる。
【００２３】
グラフマネージャは、プロセッサ及び複数階層メモリの構成と、ノードへ入出力されるリードブロック及びライトブロックの属性値とから、ブロック分割及び資源割り当てを行う。
ブロック分割では、エッジでつながれたライトブロック及びリードブロックの属性値を照合して、サブライトブロックがサブリードブロックに含まれるように、つまり、リード側のノードが参照するデータ要素についてライト側のノードが提供できるように、また、分割後のサブリードブロック及びサブライトブロックの大きさが高位階層のメモリの容量内となるようにライトブロックとリードブロックとを分割する。
【００２４】
資源割り当てでは、ノードが示す、サブルーチンを実行するプロセッサと、エッジが示す、データブロックあるいはサブデータブロックの転送に用いるメモリとを決定する。図１に示した矢印付きの各破線はエッジへの資源割り当てを示す例である。例えば、「データ入力」には第ｎ階層のメモリを割り当て、「データ転送１３→１５」には第１階層のメモリを割り当てることを示している。当該プログラムへの入力データブロックはまず最下位階層（第ｎ階層）のメモリに格納され、最後に最下位階層のメモリへ書き出される。なお、図１ではノードへの資源割り当てを示す線を省略している。
【００２５】
最も単純な資源割り当ては、各エッジに最も大容量の最下位階層のメモリを割り当てることであるが、データ転送速度が遅くなり、プログラムの実行時間が長くなってしまう。そこで、各エッジについて、データブロックをサブデータブロックへ分割することにより、できるだけ上位階層のメモリを割り当てることを考える。
【００２６】
例えば、図１に示した例では、ノードＳＲ１３からノードＳＲ１５へのエッジにおける転送データブロックが、最上位階層の第１階層のメモリの容量に収まるように分割可能であるとすると、第１階層のメモリをそのサブデータブロックの転送用メモリとして資源割り当てを行うことが可能となる。
また、ノードＳＲ１１からノードＳＲ１３へのエッジにおける転送データブロックが、第１階層のメモリの容量よりも大きかったとしても、第２階層のメモリの容量よりも小さければ、第２階層のメモリをそのサブデータブロックの転送用メモリとして資源割り当てを行うことが可能となる。
【００２７】
このとき、分割されて非矩形となるデータブロックへのリードあるいはライトのアクセスは、当該データブロック全体へのランダムアクセスと見なされる。そのため、当該データブロックはサブデータブロックに分割されず、当該データブロックの転送のために大容量で低速なメモリを使わざるを得ない。
【００２８】
データブロックを非矩形のサブデータブロックに分割する処理の例として、画像の歪み補正処理がある。この処理は、リードブロックとして歪んだ画像と歪んだ画像に含まれる各画素の座標の補正値の配列とが与えられ、ライトブロックとして補正後の画像を出力する処理である。その後のサブルーチンでの処理のためにライトブロックを矩形に分割できるようにする必要があり、リードブロックを非矩形のサブリードブロックに分割し、サブリードブロックの各画素を歪み補正処理で変位させて、矩形のサブライトブロックが得られるようにする。
【００２９】
そこで、本実施の形態１に係るデータ処理方法は、上記した属性群に非矩形のサブデータブロックを表現する属性である形状属性を追加して、グラフマネージャがデータブロックを非矩形のサブデータブロックに分割できるようにするものである。
また、本実施の形態１に係るデータ処理方法は、実際はサブデータブロックに分割可能であるがそのサブデータブロックが非矩形で具体的な形状が不明なときに、プログラムを試行して、メモリアクセス情報を得る。そして、メモリアクセス情報から求められるサブデータブロックの具体的な形状に基づいてアドレス変換を行い、サブデータブロックへの分割を可能にし、当該サブデータブロックの転送用に高速なメモリを利用するものである。
【００３０】
つぎに、本実施の形態１に係るデータ処理方法を、データ処理装置であるＯｐｅｎＣＬデバイスを用いて実現する場合について説明する。
なお、本実施の形態１に係るデータ処理方法は、プロセッサと、複数階層のメモリとを有するプログラム実行部を備えるデータ処理装置を用いて実現することができ、例えば、マルチコアあるいはマルチスレッドあるいはＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉ  Ｄａｔａ）型のプロセッサを含むマイクロコントローラ、ＳｏＣなどを用いて実現することができる。すなわち、本実施の形態１に係るデータ処理方法を実現するデータ処理装置は、ＯｐｅｎＣＬデバイスに限定されるものではない。
【００３１】
図２は、本実施の形態１に係るＯｐｅｎＣＬシステム１００の概略構成を示す図である。ＯｐｅｎＣＬシステム１００は、ＯｐｅｎＣＬホスト（以下、単に「ホスト」という）１１０、ＯｐｅｎＣＬデバイス（以下、単に「デバイス」という）１２０などを備える。
デバイス１２０は、演算制御部２００、演算ユニット（プログラム実行部）１４０、メモリアクセス監視部３００などを有する。演算制御部２００は、属性群格納部２１０、カーネル間情報格納部２２０、シナリオ決定部２３０などを有する。演算ユニット１４０は、デバイスメモリ１５０、複数のコンピュートユニット（ＣＵ）１６０、ＣＵ１６０毎に設けられたローカルメモリ１７０などを有する。
【００３２】
また、デバイスメモリ１５０は、グローバルメモリ１５２、コンスタントメモリ１５４などを有する。また、それぞれのＣＵ１６０は、複数の演算素子（プロセッサ、ＰＥ）１６２と、ＰＥ１６２毎に設けられたキャッシュなどのプライベートメモリ１６４などを有する。複数の演算素子１６２は基本的に同じプログラムを並列処理するもので、各演算素子１６２が画像データを分割したデータブロックをそれぞれ分担して処理する。
なお、グローバルメモリ１５２、コンスタントメモリ１５４、ＣＵ１６０、ＰＥ１６２、プライベートメモリ１６４、ローカルメモリ１７０などは、通常のＯｐｅｎＣＬデバイスにおける同一名称のものと同様であり、ここでは詳細な説明を省略する。
【００３３】
また、カーネル間情報格納部２２０を除くＯｐｅｎＣＬシステム１００の構成やデータ処理方法などについては、特許文献１記載のものと共通する点もあり、特許文献１を参考にされたい。
ホスト１１０は、デバイス１２０に演算を行わせる際に、ユーザにより引数の指定がなされた、該演算に対応するカーネル、つまり、プログラムをデバイス１２０に転送する。
【００３４】
カーネル間情報格納部２２０は、連続して実行される複数のカーネル、つまり、複数のサブルーチン間のデータブロックの依存関係を示す情報（以下、「カーネル間データブロック依存情報」という）を格納している。この情報は、ユーザにより直接、カーネル間情報格納部２２０に入力されるようにしてもよいし、上記複数のサブルーチンのうちの１つ、例えば、最も先に実行されるサブルーチンの引数に含まれるようにして、該サブルーチンと共にホスト１１０からデバイス１２０に転送され、カーネル間情報格納部２２０に格納されるようにしてもよい。
【００３５】
カーネル間データブロック依存情報は、例えば、先に実行されるサブルーチンのライトブロックのうちに、後に実行されるサブルーチンのリードブロックとして使用されるものがあるか否か、また、使用されるものがある場合における当該ライトブロックと当該リードブロックとの対応関係を示すものである。
なお、他のサブルーチンと関連性が無く、その演算対象とするリードブロックが他のサブルーチンの演算結果であるライトブロックではなく、その演算結果であるライトブロックが他のサブルーチンのリードブロックとならないサブルーチンの場合には、カーネル間データブロック依存情報は、「依存なし」を示す。
【００３６】
演算制御部２００は、ホスト１１０からのプログラムが示す演算内容、属性群格納部２１０に格納された属性群と、カーネル間情報格納部２２０に格納されたカーネル間データブロック依存情報とに基づいて、演算ユニット１４０を制御する。このために、シナリオ決定部２３０は、属性群格納部２１０に格納された属性群に基づいて、転送方式を決定すると共に、決定された転送方式に基づいて、演算ユニット１４０による演算及び演算に伴うデータの転送を制御する。
【００３７】
演算ユニット１４０は、演算制御部２００の制御に従って演算を行い、演算結果を得る。演算ユニット１４０が行う演算には、演算対象のデータをデバイスメモリ１５０からプライベートメモリ１６４またはローカルメモリ１７０へ転送するリード転送と、演算結果のデータをプライベートメモリ１６４またはローカルメモリ１７０からデバイスメモリ１５０へ転送するライト転送とを伴う。
このため、演算制御部２００には、ホスト１１０からのプログラムと、プログラムに含まれるサブルーチンにより読み出されるリードブロック及びサブルーチンにより書き出されるライトブロックに対してそれぞれ設定された属性値とが入力される。
【００３８】
属性値として設定されるデータブロックの属性には、リード属性、ライト属性、余白属性、放送属性、割当属性、階層属性、依存属性及び本実施の形態１に係るデータ処理方法で新たに追加した形状属性（形状情報）が含まれる。形状属性には、矩形、平行四辺形などのサブデータブロックの形状に関する情報と、ＸＹ座標の一次元配列、矩形または平行四辺形の頂点のＸＹ座標などのサブデータブロックの座標に関する情報とが含まれる。
【００３９】
演算制御部２００は、サブルーチン間で受け渡されるデータブロックについて、リード側とライト側の属性値などが分割可能条件を満たせば、上位階層のメモリ（プライベートメモリ１６４またはローカルメモリ１７０）の容量に合わせてデータブロックを分割して、分割で得られたサブデータブロックの書込み先あるいは読出し元を上位階層のメモリとするように演算ユニット１４０を制御する。分割可能条件には、上述した属性値と、演算素子１６２及びグローバルメモリ１５２、ローカルメモリ１７０、プライベートメモリ１６４などの複数階層メモリの性能・構成情報（メモリ容量、アクセスに必要な時間など）とが含まれる。
【００４０】
通常は、演算対象のデータ及び演算結果のデータがグローバルメモリ１５２に格納されるため、以下において、「リード転送」と「ライト転送」がグローバルメモリ１５２と、プライベートメモリ１６４またはローカルメモリ１７０との間の転送であるとして説明をする。演算対象のデータがコンスタントメモリ１５４にも格納されているときは、コンスタントメモリ１５４からプライベートメモリ１６４またはローカルメモリ１７０への転送も「リード転送」に含まれる。
【００４１】
メモリアクセス監視部３００は、形状属性値が非矩形を示すデータブロックまたはそのサブデータブロックのリード転送及びライト転送をグローバルメモリ１５２において監視して、当該転送時のメモリアクセス情報を演算制御部２００に出力する。
【００４２】
つぎに、本実施の形態１に係るデータ処理方法を、ＯｐｅｎＣＬデバイス１２０を用いて実現する場合の処理手順について、サブルーチン前後の画像データブロックなどと対応付けて説明する。
図３は、本実施の形態１に係るデータ処理方法の処理手順を示すフローチャートである。演算制御部２００には、あらかじめホスト１１０からプログラム及び属性群が入力されている。なお、図面スペースの関係上、図３以降、各図面では「サブデータブロック」を「サブブロック」と記している。
【００４３】
処理を開始する（ステップＳ１００）と、演算制御部２００はプログラムを解析し、サブルーチン（ＳＲ）をノード、サブルーチン間のデータブロック（ＤＢ）転送をエッジとする有向グラフを得る（ステップＳ１１０）。そして、プログラム内のサブルーチン間で受け渡されるデータブロックの格納先をグローバルメモリ（ＧＭ）とする（ステップＳ１２０）。
【００４４】
図４は、本実施の形態１に係るサブルーチン、データブロック及び複数階層メモリの当初の対応関係を示す図である。ステップＳ１２０において、プログラム内のサブルーチン間で受け渡される画像データブロック７１１、７１２、７２１、７２２、７３１、７３２の格納先をグローバルメモリ（ＧＭ）１５２としたときの有向グラフを示している。
【００４５】
データブロック７１１〜７３２内の白丸はデータブロック７１１〜７３２を構成する画素（配列要素）を示す。また、データブロック７１１、７１２、７２１、７２２、７３１、７３２内部のハッチングはサブデータブロックを示すが、後述するように、データブロックに設定された属性によっては、参照領域などを含むようにしてサブデータブロックに分割されることもある。
【００４６】
各サブルーチンＳＲから延びる点線、これらの点線に接続された楕円形の点線、及び、楕円形の点線内の矢印付きの点線は、サブルーチンＳＲとリードブロックとライトブロックとの対応関係を示す。例えば、サブルーチンＳＲ１から延びる点線に接続された楕円形の点線内部のリードブロック７１１及びライトブロック７１２は、リードブロック７１１がサブルーチンＳＲ１で処理されてライトブロック７１２になることを示している。
【００４７】
このプログラムは３つのサブルーチンＳＲ１、ＳＲ２、ＳＲ３で構成されている。プログラムはホスト１１０からデータブロック７１１を与えられ、処理開始（ステップＳ１００）前にはデータブロック７１１はグローバルメモリ１５２に格納されている。
サブルーチンＳＲ１はグローバルメモリ１５２からリードブロック７１１を読み出して（リードして）処理し、ライトブロック７１２をグローバルメモリ１５２に書き出す（ライトする）。同様に、サブルーチンＳＲ２、ＳＲ３はそれぞれグローバルメモリ１５２からリードブロック７２１、７３１を読み出して処理し、ライトブロック７２２、７３２をグローバルメモリ１５２に書き出す。
【００４８】
各データブロック７１１〜７３２には、属性群として、サイズ属性、リード属性、ライト属性、余白属性、放送属性、割当属性、階層属性、依存属性に加えて、形状属性が与えられている。
また、データブロック７１１〜７３２は２次元配列データであり、Ｘ方向とＹ方向の２次元を有する。また、データブロック７１１〜７３２には同一のサイズ属性値が与えられている。
【００４９】
サブルーチンＳＲ１は、ライトブロック７１２の１つの配列要素を得るために当該要素と同一座標のリードブロック７１１の配列要素を参照する。このため、リードブロック７１１の余白属性値はＸ方向及びＹ方向の両方向について０である。ライトブロック７１２に対しての余白属性は無効であり設定されていない。また、リードブロック７１１及びライトブロック７１２の形状属性値は矩形である。
【００５０】
サブルーチンＳＲ２は、ライトブロック７２２の１つの配列要素を得るために、その配列要素と同一座標のリードブロック７２１の配列要素と、当該配列要素の上下左右、左上、右上、右下、左下の周囲８つの配列要素とを参照する。図４では、この参照する領域をハッチングの周囲の点線で示す。このため、リードブロック７２１の余白属性値は両方向について１である。つまり、リードブロック７２１をサブリードブロックに分割するときには当該サブリードブロックに参照領域が含まれるようにして分割しなければならない。また、リードブロック７２１及びライトブロック７２２の形状属性値は矩形である。
【００５１】
サブルーチンＳＲ３は、画像処理における歪み補正と同様の処理で、矩形のライトブロック７３２の配列要素を得るために、当該配列要素から座標に応じた所定の変位ベクトルだけ異なる座標を有する、歪んだ形状のリードブロック７３１の配列要素を参照する。このとき、リードブロック７３１の形状属性値は非矩形で、具体的な形状は不明であり、形状情報は未設定である。
【００５２】
このため、サブルーチンＳＲ２のライトブロック７２２をグローバルメモリ１５２にいったん書き出し、サブルーチンＳＲ３のリードブロック７３１をグローバルメモリ１５２から改めて読み出す必要がある。なお、ライトブロック７３２の形状属性値は矩形である。リードブロック７３１の余白属性値は両方向に対して０である。
【００５３】
つぎに、演算制御部２００は、サブルーチンＳＲ間で受け渡されるライトブロック及びリードブロックの属性値を有向グラフ中の有向エッジと逆方向に伝搬させて（ステップＳ１３０）、伝搬で得られた属性値と演算ユニット１４０の構成情報とから、各データブロックの分割の可否を判定し、分割が可能であればサブデータブロックの格納先としてプライベートメモリ（ＰＭｎ）１６４あるいはローカルメモリ（ＬＭｎ）１７０を割り当てる（ステップＳ１４０）。分割が不可能であれば当該データブロックの格納先をグローバルメモリ１５２のままとする。
【００５４】
このステップＳ１３０及びステップＳ１４０に係る処理について、より詳細に説明する。
まず、サブルーチンＳＲ１のリードブロック７１１をプライベートメモリ１６４に格納可能なサイズに分割して、サブリードブロック毎に複数の演算素子（ＰＥ）１６２でサブルーチンＳＲ１の処理を並列実行して、処理結果のライトブロック７１２をプライベートメモリ１６４経由でサブルーチンＳＲ２に渡すことを考える。これを行った場合、複数のプライベートメモリ１６４に格納されたライトブロック７１２のサブライトブロックの間に共通の配列要素はない。
【００５５】
つぎに、リードブロック７２１の分割を考える。リードブロック７２１の余白属性値は（Ｘ，Ｙ）＝（１，１）であるため、ライトブロック７１２のサブライトブロックに対してサブルーチンＳＲ２を実行するためには、そのサブライトブロック周辺の配列要素が必要である。例えば、演算素子１６２はサブルーチンＳＲ２を実行するために、自演算素子１６２に属するプライベートメモリ１６４に格納されたサブデータブロックだけでなく、他演算素子１６２に属するプライベートメモリ１６４に格納されたサブデータブロックの配列要素にもアクセスしなければならない。ところが、そのようなアクセスは不可能である。仮にライトブロック７１２のサブライトブロックの書出し先をローカルメモリ１７０にしても、同様の問題が発生する。
【００５６】
以上のように、リードブロック７２１の余白属性値が（Ｘ，Ｙ）＝（１，１）であるため、ライトブロック７１２の書出し先をプライベートメモリ１６４にすることができず、この時点では書出し先をグローバルメモリ１５２とする。
しかし、データブロックの属性値が分割条件を満たさない場合に、プログラム中のデータまたは処理の流れとは逆方向に属性値の伝搬を行った結果、分割条件を満たす場合がある。このとき、データブロックを分割してサブデータブロックの格納先をプライベートメモリ１６４やローカルメモリ１７０に変更する。
【００５７】
図５は、本実施の形態１に係るサブルーチン、データブロック及び複数階層メモリの変更された対応関係を示す図である。ライトブロック７１２の書出し先、リードブロック７２１の読出し元をプライベートメモリ１６４に変更した後の有向グラフである。
本実施の形態１のデータ処理方法では、データ及び処理はサブルーチンＳＲ１からサブルーチンＳＲ３の方向へ進行するが、属性値の伝搬はその逆の方向に行う。演算制御部２００は、リードブロック７２１の余白属性値（Ｘ，Ｙ）＝（１，１）を伝搬させて、リードブロック７１１の余白属性値（Ｘ，Ｙ）＝（０，０）との論理和を算出し、リードブロック７１１の余白属性値を（Ｘ，Ｙ）＝（１，１）にする。これにより、リードブロック７２１とリードブロック７１１との間の余白属性のミスマッチを解消することができる。図５に余白属性による参照領域をハッチングの周囲の点線で示す。
【００５８】
そして、サブルーチンＳＲ１のライトブロック７１２は、リードブロック７２１のサブリードブロックと同一の配列要素のサブライトブロックに分割されて、そのサブライトブロックの格納先をプライベートメモリ１６４に変更することが可能となる。そして、ライトブロック７１２の書出し及びリードブロック７２１の読出しの時間が短縮されて、プログラム実行時間を短縮することができる。
【００５９】
なお、属性値の伝搬は、余白属性値に限られるものではなく、全ての属性値の伝搬が可能である。つまり、属性値の伝搬は、先に実行されるサブルーチンＳＲ＿ＸのリードブロックＰの各属性値と、サブルーチンＳＲ＿Ｘに続いて実行されるサブルーチンＳＲ＿ＹのリードブロックＳの各属性値とについて属性毎に論理和または論理積を算出し、当該属性毎の論理和または論理積をサブルーチンＳＲ＿ＸのリードブロックＰの新しい属性値とするものである。
【００６０】
このような属性値の伝搬は、具体的には、演算制御部２００内のシナリオ決定部２３０が実行する。シナリオ決定部２３０は、演算素子１６２がどのようにデータブロックに対してアクセスするかなどのデータの転送方式を規定したプログラムを変更することにより、属性値の伝搬を行う。
なお、シナリオ決定部２３０は、サブルーチンＳＲ＿ＸのリードブロックＰの属性値と、サブルーチンＳＲ＿ＹのリードブロックＳの属性値とを属性毎に比較して、または差分を取って、リードブロックＰの属性値に足りないものがあると判断したとき、例えば、余白属性の余白部分に当たる画素の画素値のデータが足りないと判断したときに、属性値の伝搬を行うと判断する。
【００６１】
また、シナリオ決定部２３０は、カーネル間情報格納部２２０が格納するカーネル間データブロック依存情報に基づいて、属性値の伝搬を行うと判断しても良い。
また、シナリオ決定部２３０は、サブルーチンＳＲ＿Ｘのライトブロックの割当属性と、サブルーチンＳＲ＿Ｙのリードブロックの割当属性とが同一であるときに、属性値の伝搬を行うと判断しても良い。
【００６２】
ところで、本実施の形態１に係るデータ処理方法では、サブデータブロックが非矩形であるデータブロックの分割と格納先の変更とを可能とするための形状属性が属性群に追加され、具体的なサブデータブロック形状情報を取得するためのメモリアクセス監視部３００がデバイス１２０に追加されており、形状属性値もまた前述の余白属性値と同様に伝搬させて、更なるプログラムの実行時間の短縮する効果を得ることができる。
【００６３】
演算制御部２００は、形状属性値が非矩形で、形状情報、例えば、座標情報が不明のデータブロックが存在するか否かを判断する（ステップＳ１５０）。リードブロック７３１は形状属性値が非矩形であり、形状情報がまだ得られていないので（ステップＳ１５０のＹｅｓ）、ライトブロック７２２及びライトブロック７３２の格納先をグローバルメモリ１５２としたまま、演算制御部２００は演算ユニット１４０を制御してプログラムを実行する（ステップＳ１６０）。
【００６４】
その際、メモリアクセス監視部３００は、形状属性値が矩形であるデータブロック７１１、７１２、７２１、７２２、７３２の読出し及び書込みのメモリアクセスを監視せず、形状属性値が非矩形であるリードブロック７３１のグローバルメモリ１５２へのアクセスを監視して、アクセス元の演算素子１６２とアクセスするメモリアドレスとの組をメモリアクセス情報として取得して、演算制御部２００へ出力する。
【００６５】
演算制御部２００は、このメモリアクセス情報から形状情報が不明であったリードブロック７３１の形状情報を算出して形状属性値に形状情報を追加する（ステップＳ１７０）。そして、リードブロック７３１の形状属性値をサブルーチンＳＲ３からサブルーチンＳＲ１への方向へ伝搬させて（ステップＳ１３０）、データブロック７１１、７１２、７２１、７２２の形状属性値を変更する。
【００６６】
データブロック７１１、７１２、７２１、７２２については、それらの形状属性値がリードブロック７３１の形状属性値と同一となるように変更する。これにより、データブロック間の形状属性値のミスマッチが解消する。また、データブロック７１１、７１２、７２１については、それらの余白属性値がライトブロック７２２の形状属性値に対して設定される。そして、サブデータブロックに分割可能となったデータブロック７１１、７１２、７２１、７２２、７３１を分割して、データブロック７１２、７２１、７２２、７３１のサブデータブロックの格納先をプライベートメモリ１６４とする（ステップＳ１４０）。
【００６７】
図６は、本実施の形態１に係るサブルーチン、データブロック及び複数階層メモリの更に変更された対応関係を示す図である。ライトブロック７１２、７２２の書出し先、リードブロック７２１、７３１の読出し元をプライベートメモリ１６４に変更した後の有向グラフである。余白属性による参照領域をハッチングの周囲の点線で示す。
【００６８】
以上の処理により形状属性値が非矩形で具体的な形状情報が不明であるサブデータブロックはなくなっており（ステップＳ１５０のＮｏ）、演算制御部２００は、上記で設定した属性値に基づいて演算ユニット１４０を制御して、プログラムを実行する（ステップＳ１８０）。
そして、本実施の形態１に係るデータ処理方法の処理を終了する（ステップＳ１９０）。
なお、非矩形のサブデータブロックを容量の小さいプライベートメモリ１６４に格納するために、サブデータブロック内の配列要素の座標を変換して格納メモリアドレスを一連の領域になるようにプログラムを変更することもできる。
【００６９】
また、本実施の形態１に係るデータ処理方法では、形状属性値に形状情報を追加した（ステップＳ１７０）後であって、形状属性値をサブルーチンＳＲ３からサブルーチンＳＲ１への方向へ伝搬させる（ステップＳ１３０）前に、サブルーチン間で受け渡されるデータブロックの各々について、属性値と、演算素子及び複数階層メモリの性能・構成情報とが所定の条件を満たすか否かを判断するステップを追加し、所定の条件を満たさないと判断したときに、形状属性値をサブルーチンＳＲ３からサブルーチンＳＲ１への方向へ伝搬させる（ステップＳ１３０）ようにしても良い。この場合に、所定の条件を満たすと判断したときは、サブデータブロックに分割可能となったデータブロックを分割して、当該サブデータブロックの格納先をプライベートメモリとする（ステップＳ１４０）。
【００７０】
以上説明したように、本実施の形態１に係るデータ処理方法は、プロセッサ１６２と、複数階層のメモリ１５２、１５４、１７０、１６４とを有するプログラム実行部１４０と、プロセッサ１６２がメモリ１５２、１５４、１７０、１６４からリードブロック７１１、７２１、７３１を読み出してデータ処理を行い、メモリ１５２、１５４、１７０、１６４へデータ処理の結果であるライトブロック７１２、７２２、７３２を書き出す複数のサブルーチンＳＲ１、ＳＲ２、ＳＲ３を含むプログラムと、リードブロック７１１、７２１、７３１及びライトブロック７１２、７２２、７３２に対してそれぞれ設定された属性値とが入力される演算制御部２００と、メモリアクセス監視部３００とを備えたデータ処理装置１２０のデータ処理方法であって、プログラム実行部１４０がプログラムを実行するステップＳ１６０と、メモリアクセス監視部３００が、形状属性値が非矩形であるデータブロック７３１またはサブデータブロックのサブルーチンＳＲ２、ＳＲ３間に行われるメモリ転送を監視して、当該メモリ転送に係るメモリアクセス情報を演算制御部２００へ出力するステップＳ１７０と、演算制御部２００が、メモリアクセス情報に基づき当該データブロック７３１の読出しまたは書込みアドレスの変換を行って形状属性値を算出し（ステップＳ１７０）、少なくとも算出した形状属性値を含む属性値をプログラム中でのデータまたは処理の流れとは逆方向に伝搬させて属性値を修正し（ステップＳ１３０）、サブルーチンＳＲ１、ＳＲ２、ＳＲ３間で受け渡されるデータブロック７１１、７１２、７２１、７２２、７３１、７３２の各々について、属性値と、プロセッサ１６２及びメモリ１５２、１５４、１７０、１６４の性能・構成情報とが所定の条件を満たすときには当該データブロック７１１、７１２、７２１、７２２、７３１、７３２をサブデータブロックに分割し（ステップＳ１４０）、複数階層のメモリ１５２、１５４、１７０、１６４からサブデータブロックの読出し元あるいは書出し先となるメモリ１７０、１６４を選択して（ステップＳ１４０）、プロセッサ１６２によるデータブロック７１１、７１２、７２１、７２２、７３１、７３２またはサブデータブロックへのメモリアクセス及び当該データブロック７１１、７１２、７２１、７２２、７３１、７３２に係るサブルーチンの実行を制御するステップＳ１８０とを有するものである。
【００７１】
また、本実施の形態１に係るデータ処理方法は、演算制御部２００が、少なくとも算出した形状属性値を含む属性値をプログラム中でのデータまたは処理の流れとは逆方向に伝搬させて属性値を修正するのは、サブルーチンＳＲ１、ＳＲ２、ＳＲ３間で受け渡されるデータブロック７１１、７１２、７２１、７２２、７３１、７３２の各々について、属性値と、プロセッサ１６２及び複数階層のメモリ１５２、１５４、１７０、１６４の性能・構成情報とが所定の条件を満たさないときであることが好ましい。
【００７２】
また、本実施の形態１に係るデータ処理方法は、プログラムは第１のサブルーチンＳＲ２と、第１のサブルーチン後に実行される第２のサブルーチンＳＲ３とを有し、第１のサブルーチンＳＲ２のデータブロック７２１には第１の属性値が設定され、第２のサブルーチンＳＲ３のデータブロック７３１には第１の属性値と同じ属性に係る第２の属性値が設定されており、属性値を修正するときに、第１の属性値と第２の属性値との論理和または論理積を算出して、論理和または論理積を新たな第１の属性値とすることが好ましい。
【００７３】
また、本実施の形態１に係るプログラムは、本実施の形態１に係るデータ処理方法の各ステップをデータ処理装置１２０に実行させるためのものである。
本実施の形態１に係るデータ処理方法またはプログラムは、上記の構成により、サブルーチンＳＲ１、ＳＲ２、ＳＲ３間のメモリ転送時に、データブロック７１１、７１２、７２１、７２２、７３１、７３２またはサブデータブロックを複数階層のメモリ１５２、１５４、１７０、１６４のできるだけ上位階層のメモリ１７０、１６４で受け渡して、プログラムの実行時間を短縮し、処理効率の向上を図ることができる。
【００７４】
（実施の形態２）
本実施の形態２に係るデータ処理方法は、ホストから各データブロックに与えられる属性群に更に形状依存属性を追加し、メモリアクセス監視部が形状依存属性により指定された形状決定データブロックの変更を監視し、演算制御部が、形状決定データブロックが変更されたときに形状属性値を計算し直すことにより、サブデータブロックの形状を他のデータブロックに依存するようなデータブロックを高速なメモリで受け渡して、プログラム実行時間を更に短縮するものである。
【００７５】
本実施の形態２に係るデータ処理装置の構成は、図２に示した実施の形態１に係るデータ処理装置１２０の構成と同様であり、図示を省略する。属性群に追加された形状依存属性は、リードブロックの形状属性値が非矩形である場合にその具体的な形状情報、例えば、座標情報が他のリードブロックに依存しているか、依存している場合はどのリードブロックに依存しているかを示すもので、依存するリードブロックへのポインタが、形状属性値が非矩形であるリードブロックの形状依存属性として与えられる。
【００７６】
図７は、本実施の形態２に係るサブルーチン、データブロック及び複数階層メモリの当初の対応関係を示す図である。図４に示した実施の形態１に係る当初の対応関係と比較すると、サブルーチンＳＲ３がサブルーチンＳＲ４に変更になっている。サブルーチンＳＲ４は、データブロック８３１及びデータブロック８３３をリードブロックとし、データブロック８３２をライトブロックとする演算である。また、リードブロック８３１、８３３は、グローバルメモリ１５２から読み出される。リードブロック８３３は、実施の形態１に係るリードブロック７３１の形状属性内部で表現されていた変位ベクトル情報に対応するものである。つまり、リードブロック８３１の歪みはリードブロック８３３に依存する。また、リードブロック８３３はプログラムを実行する度に異なる可能性がある。
【００７７】
本実施の形態２に係るデータ処理方法では、リードブロック８３１を分割した時のサブリードブロックの形状は変位ベクトル情報に依存するため、変位ベクトル情報を与えるリードブロック８３３が変更されると、リードブロック８３１の形状属性値に含まれるサブリードブロックの具体的な形状情報が変更される。そこで、リードブロック８３１にリードブロック８３３へのポインタを形状依存属性値として与える。
【００７８】
図８は、本実施の形態２に係るデータ処理方法の処理手順を示すフローチャートである。ステップＳ２００〜ステップＳ２８０に係る処理は、図３に示した実施の形態１に係るデータ処理方法のステップＳ１００〜ステップＳ１８０に係る処理と同様であり、詳細な説明は省略する。
【００７９】
メモリアクセス監視部３００は、形状依存属性値としてのポインタで示された形状決定データブロックであるリードブロック８３３へのアクセスを監視して、リードブロック８３３の更新の有無を演算制御部２００へ出力する（ステップＳ２９０）。
【００８０】
演算制御部２００は、更新があったとき（ステップＳ２９０のＹｅｓ）に、データブロック８１１、８１２、８２１、８２２、８３１の形状属性値をリセットして、データブロックの形状が非矩形で、具体的な形状情報を含まないものに戻す（ステップＳ３００）。これらの形状属性値は、実施の形態１に係る図５に示したデータブロック７１１、７１２、７２１、７２２の形状属性値と同じである。
【００８１】
つぎに、演算制御部２００は、ステップＳ２５０〜ステップＳ２７０及びステップＳ２３０の処理を行って、データブロック８１１、８１２、８２１、８２２、８３１のサブデータブロックの具体的な形状情報を得て、これらのデータブロックの形状属性値を更新する。
そして、演算制御部２００は、プログラム中のサブルーチン間で受け渡されるデータブロックの格納先のメモリを再計算して、各データブロックをできるだけ上位階層のメモリに割り当てる（ステップＳ２４０）。
なお、演算制御部２００は、リードブロック８３３の更新がなかったとき（ステップＳ２９０のＮｏ）は、本実施の形態２に係るデータ処理方法の処理を終了する（ステップＳ３１０）。
【００８２】
図９は、本実施の形態２に係るサブルーチン、データブロック及び複数階層メモリの変更された対応関係を示す図である。ライトブロック８１２、８２２の書出し先、リードブロック８２１、８３１の読出し元をプライベートメモリ１６４に変更した後の有向グラフである。
【００８３】
以上、説明したように、本実施の形態２に係るデータ処理方法は、属性値には、更に、形状依存属性値が含まれており、形状依存属性値は、形状依存属性値が設定された第１のデータブロック８３１が形状を依存する第２のデータブロック８３３を指し示し、メモリアクセス監視部３００が第２のデータブロック８３３の更新を監視して、更新に係る情報を演算制御部２００へ出力するステップと、演算制御部２００が、更新に係る情報に基づき、少なくとも第１のデータブロック８３１を含むデータブロック８１１、８１２、８２１、８２２、８３１の形状属性値をリセットするステップとを更に有することが好ましい。
【００８４】
本実施の形態２に係るデータ処理方法は、上記構成により、サブデータブロックの形状を他のデータブロック８３３に依存するようなデータブロック８３１を上位階層のメモリ１７０、１６４で受け渡して、プログラムの実行時間を更に短縮することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８５】
１１０    ホスト
１２０    デバイス（データ処理装置）
１４０    演算ユニット（プログラム実行部）
１５０    デバイスメモリ
１５２    グローバルメモリ（ＧＭ）
１５４    コンスタントメモリ
１６０    コンピュートユニット（ＣＵ）
１６２    演算素子（ＰＥ）
１６４    プライベートメモリ（ＰＭ）
１７０    ローカルメモリ（ＬＭ）
２００    演算制御部
２１０    属性群格納部
２２０    カーネル間情報格納部
２３０    シナリオ決定部
７１１、７１２、７２１、７２２、７３１、７３２、８１１、８１２、８２１、８２２、８３１、８３２、８３３    データブロック
ＳＲ１、ＳＲ２、ＳＲ３、ＳＲ４、ＳＲ１１、ＳＲ１２、ＳＲ１３、ＳＲ１４、ＳＲ１５、ＳＲ１６    サブルーチン
【図１】
0006374777.tif 000002
【図２】
0006374777.tif 000003
【図３】
0006374777.tif 000004
【図４】
0006374777.tif 000005
【図５】
0006374777.tif 000006
【図６】
0006374777.tif 000007
【図７】
0006374777.tif 000008
【図８】
0006374777.tif 000009
【図９】
0006374777.tif 000010