(57)【要約】【課題】１つまたは複数の通信チャネルにより相互接続された複数の異なる記憶場所を有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステムを提供する。【解決手段】１つまたは複数の通信チャネルにより相互接続された複数の異なる記憶場所を有するコンピューティング・システムのアプリケーションを最適化する方法およびシステムは、アプリケーションのデータ領域の１つまたは複数のデータ処理特性を決定するステップを含む。１つまたは複数のデータ処理特性に基づいて、データ領域の１つまたは複数のデータ処理ポリシーが決定される。１つまたは複数のデータ処理特性に基づいて、異なる記憶場所においてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストが決定される。アプリケーションは、１つまたは複数のデータ処理ポリシーおよび異なる記憶場所のデータ・セットアップ・コストに従って最適化される。【選択図】図１
2019526091.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法であって、
アプリケーションのデータ領域の１つまたは複数のデータ処理特性を決定するステップと、
前記１つまたは複数のデータ処理特性に基づいて、前記データ領域の１つまたは複数のデータ処理ポリシーを決定するステップと、
前記１つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいて前記データ領域を使用する前記アプリケーションの範囲のデータ・セットアップ・コストを決定するステップと、
前記１つまたは複数のデータ処理ポリシーおよび前記異なるメモリ・ロケーションの前記データ・セットアップ・コストに従って、前記アプリケーションを最適化するステップと、
を含む、方法。
【請求項２】
前記アプリケーションを最適化するステップが、前記データ領域を格納する１つまたは複数のメモリ・ロケーションを選択するステップを含む、請求項１に記載の方法。
【請求項３】
前記データ領域がメモリ・ロケーション間で移動する１つまたは複数の通信チャネルを選択するステップをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記データ領域の前記１つまたは複数のデータ処理特性が、網羅情報を含む、請求項１ないし３のいずれかに記載の方法。
【請求項５】
前記データ領域の前記１つまたは複数のデータ処理特性が、アクセス頻度情報を含む、請求項１ないし３のいずれかに記載の方法。
【請求項６】
前記データ領域の前記１つまたは複数のデータ処理特性が、データ・レイアウト情報を含む、請求項１ないし４のいずれかに記載の方法。
【請求項７】
前記１つまたは複数のデータ処理特性のうちの少なくとも１つが、プログラマによって設定された、請求項１に記載の方法。
【請求項８】
前記アプリケーションの各範囲が、アプリケーション・コードの統語構造または一連の実行対象命令により画定された前記アプリケーション・コードの一部によって規定された、請求項４ないし６のいずれかに記載の方法。
【請求項９】
１つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化するコンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読プログラムが、コンピュータ上で実行された場合に、請求項１の各ステップを前記コンピュータに実行させる、非一時的コンピュータ可読記憶媒体。
【請求項１０】
１つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化するシステムであって、
アプリケーションのデータ領域の１つまたは複数のデータ処理特性を決定し、前記１つまたは複数のデータ処理特性に基づいて、前記データ領域の１つまたは複数のデータ処理ポリシーを決定し、前記１つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいて前記データ領域を使用する前記アプリケーションの範囲のデータ・セットアップ・コストを決定し、前記１つまたは複数のデータ処理ポリシーおよび前記異なるメモリ・ロケーションの前記データ・セットアップ・コストに従って、前記アプリケーションを最適化するように構成されたプロセッサを備えたコンパイラ・モジュールを備えた、最適化するシステム。
【請求項１１】
前記コンパイラ・モジュールが、前記データ領域を格納する１つまたは複数のメモリ・ロケーションを選択するようにさらに構成された、請求項１０に記載の最適化するシステム。
【請求項１２】
前記コンパイラ・モジュールが、前記データ領域がメモリ・ロケーション間で移動する１つまたは複数の通信チャネルを選択するようにさらに構成された、請求項１０に記載の最適化するシステム。
【請求項１３】
前記データ領域の前記１つまたは複数のデータ処理特性が、網羅情報を含む、請求項１０に記載の最適化するシステム。
【請求項１４】
前記データ領域の前記１つまたは複数のデータ処理特性が、アクセス頻度情報を含む、請求項１０に記載の最適化するシステム。
【請求項１５】
前記データ領域の前記１つまたは複数のデータ処理特性が、データ・レイアウト情報を含む、請求項１０に記載の最適化するシステム。
【請求項１６】
前記１つまたは複数のデータ処理特性のうちの少なくとも１つが、プログラマによって設定された、請求項１０に記載の最適化するシステム。
【請求項１７】
前記アプリケーションの各範囲が、アプリケーション・コードの統語構造または一連の実行対象命令により画定された前記アプリケーション・コードの一部によって規定された、請求項１０に記載の最適化するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的に、データ管理に関し、より詳細には、メモリ・ロケーションおよびメモリ・アクセス・チャネルの最適化に関する。
【背景技術】
【０００２】
現代のコンピューティング・システムは、複数の異なるメモリおよび格納ロケーションを利用可能な場合がある。これは、たとえば単一機器内の複数のメモリ、ローカル・メモリをそれぞれ有する複数の分散コンピューティング・システム、クラウド・コンピューティング・システム等、を含む多くのスケールで可能となっている。複数のメモリへアクセス可能なソフトウェアの実行に際しては、特定のデータを格納する場所および当該データを適当なロケーションに伝達する方法についての決定が自動または手動でなされる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従来の一手法においては、メッセージ・パッシング・インターフェース（ＭＰＩ）等の低レベルのプログラミング技術によって、プログラマがメモリ格納ロケーションおよび通信方法を手動で決定する。ただし、このプロセスは、エラーが起こりやすく、システムが複雑になるにつれて最適化が困難である。
【０００４】
また、プログラマの入力がほとんど必要ない自動システムも利用可能である。ただし、このようなシステムが提供するのは、特定のアプリケーションに合わせて十分に調節することができず、オーバヘッドが不必要に高くなり得る一般的なソリューションである。半自動システムでは、高レベルのプログラマ指示によってデータ移動を制御するが、アプリケーションの特定点で読み出しまたは書き込みがなされるデータ領域に関する情報を利用するのみであり、細かな不規則アクセスを有するデータ領域に対しては十分に作用しない。最悪の場合、半自動システムは、再帰的なポインタ・ベースのデータ構造の使用に際して、低レベルの手法へと移行する。したがって、本発明が解決しようとする課題は、複数のメモリを備えたシステムにおける柔軟な最適化データ処理を提供することである。
【課題を解決するための手段】
【０００５】
１つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法は、アプリケーションのデータ領域の１つまたは複数のデータ処理特性を決定するステップを含む。１つまたは複数のデータ処理特性に基づいて、データ領域の１つまたは複数のデータ処理ポリシーが決定される。１つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストが決定される。アプリケーションは、１つまたは複数のデータ処理ポリシーおよび異なるメモリ・ロケーションのデータ・セットアップ・コストに従って最適化される。
【０００６】
１つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法は、アプリケーションのデータ領域の１つまたは複数のデータ処理特性を決定するステップを含む。１つまたは複数のデータ処理特性に基づいて、データ領域の１つまたは複数のデータ処理ポリシーが決定される。１つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストが決定される。アプリケーションは、１つまたは複数のデータ処理ポリシーおよび異なるメモリ・ロケーションのデータ・セットアップ・コストに従って最適化される。最適化するステップは、データ領域を格納する１つまたは複数のメモリ・ロケーションを選択するステップと、データ領域がメモリ・ロケーション間で移動する１つまたは複数の通信チャネルを選択するステップと、を含む。
【０００７】
１つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化するシステムは、アプリケーションのデータ領域の１つまたは複数のデータ処理特性を決定し、１つまたは複数のデータ処理特性に基づいて、データ領域の１つまたは複数のデータ処理ポリシーを決定し、１つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストを決定し、１つまたは複数のデータ処理ポリシーおよび異なるメモリ・ロケーションのデータ・セットアップ・コストに従って、アプリケーションを最適化するように構成されたプロセッサを有するコンパイラ・モジュールを備える。
【０００８】
上記および他の特徴および利点については、添付の図面と併せて読むべき本開示の例示的な実施形態に関する以下の詳細な説明から明らかとなるであろう。
【０００９】
本開示は、以下の図面を参照しつつ、好適な実施形態の詳細な説明を以下に提供する。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る、複数のメモリを有するコンピューティング・システムのブロック図である。
【図２】本発明に係る、データ特性に基づいてデータ処理ポリシーを選択する方法のブロック／フロー図である。
【図３】本発明に係る、データ特性およびデータ処理ポリシーに基づいてアプリケーション・コードを最適化する方法のブロック／フロー図である。
【図４】本発明に係る、最適化システムのブロック図である。
【図５】本発明に係る、処理システムのブロック図である。
【図６】本発明に係る、クラウド・コンピューティング環境の図である。
【図７】本発明に係る、抽象モデル・レイヤの図である。
【発明を実施するための形態】
【００１１】
本発明の実施形態は、プログラム・データを中心とするプログラマからの手掛かりを用いて、データ移動の制御を自動化する。これらの手掛かりは、後続の自動最適化に実質的に役立つとともにデータ処理の特定のポリシーに至るデータの特性を指定する。
【００１２】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むものの、本明細書に列挙する教示内容の実装は、クラウド・コンピューティング環境に限定されないことが予め了解されるものとする。むしろ、本発明の実施形態は、現在既知または後々開発されるその他任意の種類のコンピューティング環境と併せて実装され得る。
【００１３】
ここで図１を参照するに、複数のメモリを備えた汎用コンピューティング・システム１００が示される。コンピューティング・システム１００は、それぞれの処理リソース１０４およびメモリ・リソース１０６をそれぞれ備えた複数のシステム・ノード１０２を具備する。以下により詳しく論じる通り、処理リソース１０４は、１つまたは複数のハードウェア・プロセッサを含んでいてもよく、メモリ・リソース１０６は、任意適当な種類の１つまたは複数のストレージ・バンクを含んでいてもよいことが了解されるものとする。
【００１４】
システム・ノード１０２は、複数の通信チャネル１０８のうちの１つを介して、互いに通信する。通信チャネル１０８は、たとえばシステム内バス、有線接続、無線接続、インターネット接続等、を含む任意適当な形態のデータ通信システムであってもよい。各システム・ノード１０２は、データの要求を受信し、要求されたデータをメモリ・リソース１０６から読み出し、１つまたは複数の通信チャネル１０８を介して、要求されたデータを要求ノードに伝達する１つまたは複数のメモリ・コントローラ１１０を具備する。また、メモリ・コントローラ１１０は、他のノード１０２に対するデータの応答を処理することによって、たとえば、必要となるノード１０２でローカル・コピーを生成することによりシステム性能を向上させる。
【００１５】
通信チャネル１０８は、ハードウェアおよびソフトウェアの両態様を含むことに留意するものとする。ハードウェア・メカニズムは、たとえばソフトウェアによるアプリケーション・プログラミング・インターフェース（ＡＰＩ）の呼び出しを用いることによって直接露出し得る物理的に利用可能な通信経路を表す。２つのメモリが両者間に直接物理相互接続の形態の複数の物理接続を有していてもよいが、たとえば、第１のメモリ・リソース１０６から処理リソース１０４を通じて第２のメモリ・リソースに至るデータ・フローによって、間接的な物理接続が存在していてもよい。ソフトウェア通信メカニズムは、ハードウェア・メカニズム上に構築され、付加的なサービスを提供していてもよいし、何らかのポリシーを執行していてもよい。ハードウェア・メカニズムおよびソフトウェア・メカニズムは、一体的に通信チャネル１０８を構成する。
【００１６】
データの格納ロケーションおよび要求ノードへのデータの伝達方法をメモリ・コントローラ１１０がどのようにして決定するかは、処理リソース１０２上で動作するソフトウェア・プログラムによって決まる。各ソフトウェア・プログラムは、データ管理に対して異なるニーズを有することになるため、使用している特定種類のデータに対応したそれぞれの最適なデータ処理ポリシーを有することになる。
【００１７】
これらのさまざまな可能性に対応するため、ソフトウェア・プログラムは、問題のデータの既知の特性に従って、コンパイル時および実行時に最適化される。データ処理ポリシーはコンパイル時に決まるが、コードは、ポリシーの実装の容易化に役立つ実行時呼び出しでさらにコンパイルされるようになっていてもよい。実行時呼び出しは、ソフトウェア通信メカニズムのアプリケーション・プログラミング・インターフェース（ＡＰＩ）呼び出しを含んでいてもよいし、実行時システム・リソースまたはプログラム・データの状態を尋ねて実行経路の選定を容易化する呼び出しであってもよい。
【００１８】
データ特性は、プログラマにより明示的に設定されるようになっていてもよいし、自動的に発見されるようになっていてもよい。使用可能なデータ特性としては、所与の範囲のデータのデータ領域のサイズ、読み出し／書き込み／読み書きアクセス・ステータス、網羅情報、アクセス頻度情報、およびデータ・レイアウト情報が挙げられる。特に、網羅情報は、アクセスを受けるデータ領域の要素数（たとえば、データ領域サイズのわずか、すべて、ほとんど、または一部の固定または可変割合）を表し、アクセス頻度情報は、データ領域がアクセスを受ける頻度（たとえば、一度、ごく稀、一定間隔、頻繁等）を表し、データ・レイアウト情報は、たとえばアクセスがストリーミング、ランダム、またはストライドであるかを表す。最適化中に考慮可能なほかの基準としては、データの移動に要する時間、移動するデータの量および頻度、データのコピーのオーバヘッド、統一性および一貫性を維持するコスト、システム１００のパワーおよび帯域幅の制約、ならびに演算対通信比および重複がある。
【００１９】
特定の一実施形態において、システム１００は、互いに地理的に大きく離間し得る多くの異なるノード１０２を備えたクラウド・コンピューティング・システムとして実装される。このようなシステムにおいて、通信チャネル１０８を介してあるノード１０２から別のノードにデータを移動させるコストは、当該データに対して関連する演算を行うコストよりもかなり高くなる場合がある。このような場合は、データ・ストレージおよび通信チャネルを最適化する効用が明らかである。
【００２０】
ここで図２を参照するに、データ特性に基づいてポリシーを選択する方法が示される。ブロック２０２では、システム１００上での動作が意図されるアプリケーションのソース・コードを修正して、データ領域のデータ特性を指定する。具体的には、ブロック２０２がプログラマによって手動で実行可能であり、たとえば上述の特性のうちの１つを指定する明示的な命令の入力を含むと考えられる。そして、ブロック２０４では、たとえば静的解析および動的プロファイリングを用いることにより、アプリケーションのデータ領域の特性を自動的に検出して、特性定義を可能な限り多く補う。特性が割り当てられていない状態の任意のデータ領域について、ブロック２０６では、デフォルト値を設定する。
【００２１】
ブロック２０８では、アプリケーションの全範囲にわたって、各データ領域の特性を解析する。本明細書において、用語「範囲」は、アプリケーション・コードの統語構造または一連の実行対象命令に基づいて画定可能な当該コードの一部を表す。この解析は、システム１００の特定の構成およびアプリケーションのニーズによって決まるが、いくつかの例を以下に示す。一般的に、ブロック２０８では、データ領域の格納ロケーションおよびこれらデータ領域の移動に用いる通信チャネル（ハードウェアおよびソフトウェアの両メカニズム）を決定することにより、１つまたは複数のシステム測定基準（たとえば、アプリケーションの速度、パワー／エネルギー効率、または帯域幅利用）を最適化しようとする。この解析では、アプリケーションのニーズを鑑みて、ハードウェアおよびソフトウェアの両制限を考慮するようにしてもよい。解析に基づいて、ブロック２１０では、初期データ配置の設定を含めて、各データ領域のデータ処理特性を選択する。
【００２２】
複数の異なるデータ処理ポリシーのいずれかは、ソフトウェア・プログラムの所与の範囲の所与のデータ領域に当てはまり得る。一般的に、ポリシーは、単純（たとえば、２つの異なる通信チャネルの選択）であってもよいし、より複雑（たとえば、データがＡにある場合はＸを選択し、それ以外はＹを選択）であってもよい。
【００２３】
第１の例示的なポリシーは、異なる統一性／一貫性オプションの選定である。一例として、システム構成には、３つの異なるメモリ・ロケーションＡ、Ｂ、およびＣを含み、ＡおよびＢにわたるハードウェアでは統一性に対する効率的な対応があるものの、Ｃでは対応がなくてもよい。Ｃの統一性は、高オーバヘッドでソフトウェアにて処理される。例示的なソフトウェアのアプリケーション・コードは、システムレベルの統一性に依拠しており、並列実行可能な３つの範囲Ｘ、Ｙ、およびＺを有するが、これらはすべて、同じデータ領域にアクセスする。このデータ領域は、演算に先立って、ローカル・メモリＡ、Ｂ、およびＣにコピーされる。そして、Ｘ、Ｙ、およびＺのすべてがデータ領域の全要素への書き込みの場合は、Ｃのソフトウェア統一性を有効とせずに、（Ｘ，Ｙ，Ｚ）のマッピングにより任意の順序にて（Ａ，Ｂ，Ｃ）上で実行するようにしてもよい。ただし、Ｘがデータ領域の全要素への書き込みと考えられない場合は、ＸのＣへのマッピングに、高コストのソフトウェア統一性処理を要することになる。この例において、ポリシーの選択では、これらの特性を考慮して、コストを計算するとともにコンピューティング・ロケーションを選ぶことで、ＸのＣへのマッピングを防止する。こうして、このポリシーでは、統一性に対応する通信チャネル１０８と対応しない通信チャネルとの間の選択を行う。
【００２４】
第２の例示的なポリシーは、異なるソフトウェア対応通信メカニズムの選定（たとえば、ソフトウェア通信チャネル１０８の選択）である。例示的なシステムは、ホスト・プロセッサおよびメモリのほか、別個のアクセラレータ・プロセッサおよびメモリを有していてもよく、２つのメモリ間の相互接続は、帯域幅が制限され、少量のデータの移動に一定の時間を要する一方、何らかの閾値より多くの量の移動には、より長い時間を要する。２つの例示的なソフトウェア・ライブラリがデータの移動を実行するが、一方が急いでデータを押し出し（バルク移動）、もう一方がゆっくりとデータを引き込む（複数の微細移動）。例示的な一用途において、ソフトウェアは、大きなデータ領域のランダム要素にアクセスする。アクセスを受ける要素がほとんどない場合、複数の微小移動の待ち時間は、データ領域全体の移動に要する時間よりも短くなる可能性がある。この例において、ポリシーの選択では、アクセス頻度特性を考慮することにより、異なるポリシーのコストおよび利益を重み付けする。ソフトウェア・ライブラリの高速版および低速版は、異なる通信チャネル１０８を特徴付ける異なるソフトウェア・メカニズムを表す。
【００２５】
第３の例示的なポリシーは、異なるハードウェア対応メカニズムの選定（たとえば、ハードウェア・メカニズムの選択）である。上記の通り、例示的なシステムは、ホスト・プロセッサおよびメモリならびにアクセラレータ・プロセッサおよびメモリを有し、ハードウェア相互接続によって、アクセラレータは、ホスト・メモリおよびアクセラレータ・メモリの両者に直接アクセス可能である（言い換えると、アクセラレータは、ホスト・メモリにマッピングするアドレスのほか、アクセラレータ・メモリにマッピングするアドレスを用いたロード／格納命令に対応する）。この場合、アクセラレータ上でめったにアクセスを受けないデータは、そのローカル・メモリへのコピーが必要ない。一方、頻繁にアクセスを受けるデータは依然として、コピーにより性能を向上させるものとする。したがって、ポリシーの選択では、データのアクセスの頻度を規定した特性を考慮する。この例において、ホスト・メモリへの直接アクセスおよびデータのローカル・メモリへのコピーは、異なる通信チャネル１０８を表す。
【００２６】
第４の例示的なポリシーでは、データがある範囲で一度、正確に書き込まれた場合、データを次のロケーションに押し出す。例示的なシステムは、ホスト・プロセッサおよびメモリのほか、別個のアクセラレータ・プロセッサおよびメモリを具備していてもよく、２つのメモリ間の相互接続は、長い移動待ち時間を有する。また、この例示的なシステムに利用可能で、データ移動の実行に使用可能な２つの例示的なソフトウェア・ライブラリが存在していてもよく、第１のライブラリは、データのコピーによる書き込みアクセスの後、急いでデータを他のロケーションに押し出し、第２のライブラリは、読み出しアクセスでデータが最後に更新されたロケーションからゆっくりとデータを引き込む。ホスト上のデータ領域の要素に一度、ソフトウェアが正確に書き込みを行った後、アクセラレータ上で読み出しを複数回行った場合は、相互接続を介したデータ領域の要素の移動に、急いで押し出すライブラリを使用するのがより効率的である。読み出しの蓄積が、比較的高い書き込みコストを上回るためである。ソフトウェア・ライブラリの高速版および低速版は、異なる通信チャネル１０８を特徴付ける異なるソフトウェア・メカニズムを表す。
【００２７】
第５の例示的なポリシーは、通信チャネル１０８を介したリモートアクセスを回避するように、データの配置および演算をガイドする。データ領域ごとに決定されるデータ特性の使用により、データ・アフィニティの最適化を自動で適用することができる（たとえば、アクセスを受けるコンピューティング・ロケーションの近くにデータを配置する）。例示的な一用途では、並列コード部でアクセスを受ける大きなデータ領域を有していてもよい。データが一定のパターン（たとえば、ストリーミングまたはストライド・データ）でアクセスを受ける場合、データ領域は、複数のメモリに区分・配置可能である。そして、並列コード部のコンピューティング・ロケーションは、コードによるアクセスを受けるデータに対応したデータ領域区分を保持するメモリに対して物理的に近くなるように選択可能である。これは、通信チャネル１０８を介したデータ移動を抑制または除去するのに役立ち得る。
【００２８】
ここで図３を参照するに、アプリケーションのコードを最適化する方法が示される。ブロック３０２では、アプリケーションのさまざまな範囲のうちから、新たな範囲を選択する。ブロック３０４では、範囲中のアクセスを受ける各データ領域の特性を集める。ブロック３０４では、図２のプロセスにより決定されたのと同じデータ特性を再利用するようにしてもよい。そして、ブロック３０６では、この情報により増強されたコンパイラ解析を実行する。コンパイラ解析としては、たとえばコード中のアクセスを受ける一組のデータ要素およびアクセス・パターンを決定するのに役立つ制御およびデータ・フロー解析、エイリアス解析、および依存性解析等の解析が挙げられる。
【００２９】
ブロック３０８では、システム１００で利用可能な異なるコンピューティング・ロケーションそれぞれのデータ・セットアップ・コストを計算する。各ロケーションについて、コード中のアクセスを受ける一組のデータ要素、アクセス・パターン、およびデータ処理ポリシーに関する情報の使用により、当該コンピューティング・ロケーションで上記範囲が実行される場合に必要となるデータ移動の数、サイズ、および方向を決定する。その後、データ処理ポリシーにより選択された通信チャネル１０８について、すべてのデータ移動のコストを推定することができる。適用可能なコスト測定基準としては、たとえば実行時間、パワー／エネルギー効率、または帯域幅の使用、あるいはその組み合わせ等、最適化対象のシステム・パラメータの任意の部分集合が挙げられる。
【００３０】
ブロック３１０では、計算したコストに基づいて、範囲のコンピューティング・ロケーションを選択する。コンピューティング・ロケーションは、アプリケーションの１つまたは複数のニーズに従って選択される。たとえば、一部のコンピューティング・ロケーションは、アプリケーションが要する特徴に欠けているかもしれないし、これらの特徴と関連付けられたコストが高いかもしれないため、異なるコンピューティング・ロケーションが選択されるようになっていてもよい。別の例において、コストは、処理のパワー消費を特徴付けるが、一部のロケーションの処理がより高いパワー・コストを招来し得る。そして、ブロック３１２では、データ処理ポリシーを関連するコンピューティング・ロケーションの範囲に適用する。範囲中の各データ領域について、当該データ領域のデータ処理ポリシーおよび当該ロケーションで利用可能な通信チャネル１０８に基づいて、通信チャネル１０８が選択される。当該データ領域の要素に対応する範囲中のすべてのデータ移動に対して、選択された通信チャネル１０８が用いられる。
【００３１】
ブロック３１４では、未処理の別の範囲がアプリケーションに存在するかを判定する。存在する場合は、処理がブロック３０２に戻って、新たな範囲が選択される。存在しない場合、ブロック３１６では、選択されたコンピューティング・ロケーションおよびデータ処理ポリシーを用いて、最適化コードを生成する。この最適化コードは、プログラマによる明示的な配置の必要なく、関係するデータ領域の特性に厳密に基づく方式で、範囲に跨るアプリケーションのニーズを考慮に入れる。結果として、コードがブロック３１８で実行されると、アプリケーションはより高性能に動作する。
【００３２】
データ領域の最良のメモリ・ロケーションを決定するのに用いられる最適化基準は、使用する特定のアプリケーションおよびシステム・パラメータによって決まることになる。最適化基準（すなわち、最適化プロセスが実現する目標）としては、たとえばデータ移動時間、移動対象のデータの量／頻度、データ・コピーのオーバヘッド、またはシステムの統一性／一貫性の維持もしくはパワー／帯域幅制約の満足のためのコストの改善が挙げられる。
【００３３】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品には、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有する（１つまたは複数の）コンピュータ可読記憶媒体を含んでいてもよい。
【００３４】
コンピュータ可読記憶媒体としては、命令実行機器が使用する命令を保持および格納可能な有形のデバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的な一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リードオンリー・メモリ（ＲＯＭ）、消去・プログラム可能リードオンリー・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク・リードオンリー・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されたパンチカードまたは溝中持ち上げ構造等の機械的符号化装置、およびこれらの任意適当な組み合わせを含む。本明細書において、コンピュータ可読記憶媒体は、電波またはその他自由伝搬電磁波、導波路またはその他伝送媒体を伝搬する電磁波（たとえば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを伝わる電気信号等の一過性の信号自体として解釈しないものとする。
【００３５】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング／処理装置へのダウンロードまたはたとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、あるいはその組み合わせのネットワークを介した外部コンピュータまたは外部記憶装置へのダウンロードが可能である。ネットワークは、伝送銅ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えていてもよい。各コンピューティング／処理装置におけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピューティング／処理装置内のコンピュータ可読記憶媒体に格納する。
【００３６】
本発明の演算を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語およびＣプログラミング言語もしくは類似のプログラミング言語等の従来の手続き型プログラミグ言語を含む、１つもしくは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、スタンドアロン型のソフトウェア・パッケージとして、ユーザのコンピュータ上で全部または一部が実行されるようになっていてもよいし、ユーザのコンピュータおよびリモート・コンピュータ上でそれぞれ一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上で全部が実行されるようになっていてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通してユーザのコンピュータに接続されていてもよいし、（たとえば、インターネット・サービス・プロバイダを用いることにより、インターネットを通して）外部のコンピュータに接続されていてもよい。いくつかの実施形態において、たとえばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして、本発明の態様を実行するようにしてもよい。
【００３７】
本発明の態様は、本発明の実施形態に係る方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本明細書に記載している。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることが了解される。
【００３８】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、機械の生成により、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサにより実行される命令によって、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに規定された機能／動作を実装する手段が形成されるようになっていてもよい。また、これらのコンピュータ可読プログラム命令は、特定の方式で機能するようにコンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組み合わせに指示可能なコンピュータ可読記憶媒体に格納されることにより、命令が格納されたコンピュータ可読記憶媒体に、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに規定された機能／動作の態様を実装する命令を含む製造品が含まれるようにしてもよい。
【００３９】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器にロードされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、または他の機器上で実行されて、コンピュータ実装プロセスの生成により、コンピュータ、他のプログラム可能な装置、または他の機器上で実行される命令によって、フローチャートまたはブロック図、あるいはその両方の１つまたは複数のブロックに規定された機能／動作が実装されるようになっていてもよい。
【００４０】
図中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様のアーキテクチャ、機能、および動作を示している。この点において、フローチャートまたはブロック図の各ブロックは、規定の論理機能を実装する１つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の部分を表していてもよい。いくつかの別の実施態様において、ブロックに記載の機能は、図中に記載の順序から外れて実行されるようになっていてもよい。たとえば、関係する機能に応じて、連続して示す２つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、ブロックが逆順で実行される場合があってもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックおよびブロック図またはフローチャート図、あるいはその両方のブロックの組み合わせは、規定の機能もしくは動作の実行または専用ハードウェアおよびコンピュータ命令の組み合わせの実行を行う専用ハードウェアベースのシステムによって実装可能であることに留意する。
【００４１】
本明細書において、本原理の「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔまたはａｎ  ｅｍｂｏｄｉｍｅｎｔ）」のほか、その他の変形例に対する言及は、当該実施形態に関連して説明する特定の特徴、構造、特性等が本原理の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体のさまざまな場所において、表現「一実施形態において（ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔまたはｉｎ  ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」のほか、その他任意の変形例の出現は、必ずしもすべてが同じ実施形態を参照しているわけではない。
【００４２】
たとえば「Ａ／Ｂ」、「ＡまたはＢ、あるいはその両方」、および「ＡおよびＢの少なくとも一方」の場合等、「／」、「または〜あるいは」、および「〜の少なくとも一方」のうちのいずれかの使用は、１番目に挙げられた選択肢（Ａ）のみの選択、２番目に挙げられた選択肢（Ｂ）のみの選択、または両選択肢（ＡおよびＢ）の選択を含むことが意図されることが認識される。別の例として、「Ａ、Ｂ、またはＣ、あるいはその組み合わせ」および「Ａ、Ｂ、およびＣのうちの少なくとも１つ」の場合、これらの表現は、１番目に挙げられた選択肢（Ａ）のみの選択、２番目に挙げられた選択肢（Ｂ）のみの選択、３番目に挙げられた選択肢（Ｃ）のみの選択、１番目および２番目に挙げられた選択肢（ＡおよびＢ）のみの選択、１番目および３番目に挙げられた選択肢（ＡおよびＣ）のみの選択、２番目および３番目に挙げられた選択肢（ＢおよびＣ）のみの選択、または３つの全選択肢（Ａ、Ｂ、およびＣ）の選択を含むことが意図される。当技術および関連技術の当業者には容易に明らかとなる通り、これは、挙げられた項目と同じ数だけ拡張可能である。
【００４３】
ここで図４を参照するに、最適化システム４００が示される。システム４００は、ハードウェア・プロセッサ４０２およびメモリ４０４を具備する。システム４００は、１つまたは複数の機能モジュールをさらに具備していてもよい。機能モジュールは、メモリ４０４に格納され、ハードウェア・プロセッサ４０２により実行されるソフトウェアとして実装されていてもよい。別の実施形態において、機能モジュールは、たとえば特定用途向け集積チップまたはフィールド・プログラマブル・ゲート・アレイの形態の１つまたは複数の離散ハードウェア・コンポーネントとして実装されていてもよい。
【００４４】
開発者環境４０６がシステム４００上で動作して、プログラマは、メモリ４０４に格納されたソース・コード４０８を変更することができる。開発者環境４０６は、ソース・コード４０８のさまざまな範囲にわたってデータ領域の特性４１０を手動で指定できるようにする。コンパイラ・モジュール４１４がデータ特性およびシステム記述４１２を使用して、ソース・コードに適用するデータ処理ポリシーを選択するとともに、各データ領域のコンピューティング・ロケーションを選択する。そして、コンパイラ・モジュール４１４は、コンパイルされたアプリケーションを出力して、複数のコンピューティング・ロケーションおよびメモリ・ロケーションを有するシステム１００上で実行する。
【００４５】
ここで図５を参照するに、最適化システム４００を表し得る例示的な処理システム５００が示される。処理システム５００は、システム・バス５０２を介して他のコンポーネントに動作可能に結合された少なくとも１つのプロセッサ（ＣＰＵ）５０４を具備する。システム・バス５０２には、キャッシュ５０６、リードオンリー・メモリ（ＲＯＭ）５０８、ランダム・アクセス・メモリ（ＲＡＭ）５１０、入出力（Ｉ／Ｏ）アダプタ５２０、サウンド・アダプタ５３０、ネットワーク・アダプタ５４０、ユーザ・インターフェース・アダプタ５５０、およびディスプレイ・アダプタ５６０が動作可能に結合されている。
【００４６】
システム・バス５０２には、Ｉ／Ｏアダプタ５２０によって、第１の記憶装置５２２および第２の記憶装置５２４が動作可能に結合されている。記憶装置５２２および５２４としては、ディスク記憶装置（たとえば、磁気または光ディスク記憶装置）、固体磁気デバイス等のいずれかが可能である。記憶装置５２２および５２４としては、同じ種類の記憶装置も可能であるし、異なる種類の記憶装置も可能である。
【００４７】
システム・バス５０２には、サウンド・アダプタ５３０によって、スピーカ５３２が動作可能に結合されている。システム・バス５０２には、ネットワーク・アダプタ５４０によって、送受信機５４２が動作可能に結合されている。システム・バス５０２には、ディスプレイ・アダプタ５６０によって、ディスプレイ装置５６２が動作可能に結合されている。
【００４８】
システム・バス５０２には、ユーザ・インターフェース・アダプタ５５０によって、第１のユーザ入力装置５５２、第２のユーザ入力装置５５４、および第３のユーザ入力装置５５６が動作可能に結合されている。ユーザ入力装置５５２、５５４、および５５６としては、キーボード、マウス、キーパッド、画像取り込み装置、運動検知装置、マイク、これらのうちの少なくとも２つの機能を内蔵した装置等が可能である。当然のことながら、本原理の思想を維持しつつ、他の種類の入力装置も使用可能である。ユーザ入力装置５５２、５５４、および５５６としては、同じ種類のユーザ入力装置も可能であるし、異なる種類のユーザ入力装置も可能である。ユーザ入力装置５５２、５５４、および５５６は、システム５００に対する情報の入力および出力に用いられる。
【００４９】
当然のことながら、処理システム５００は、当業者であれば容易に考え付く通り、他の要素（図示せず）を具備していてもよいし、特定の要素を省略していてもよい。たとえば、当業者であれば容易に理解できる通り、特定の実施態様によって、その他さまざまな入力装置または出力装置、あるいはその両方を処理システム５００に具備可能である。たとえば、さまざまな種類の無線または有線、あるいはその両方の入力装置または出力装置、あるいはその両方を使用可能である。さらに、当業者であれば容易に認識できる通り、さまざまな構成の別のプロセッサ、コントローラ、メモリ等も利用可能である。処理システム５００の上記および他の変形例は、本明細書に示す本原理の教示内容を所与として、当業者であれば容易に考え付く。
【００５０】
ここで図６を参照するに、例示的なクラウド・コンピューティング環境５０が示される。図示のように、クラウド・コンピューティング環境５０は、たとえば個人用デジタル補助装置（ＰＤＡ）もしくは携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはその組み合わせ等のクラウド消費者が使用するローカルのコンピューティング装置が通信可能な１つまたは複数のクラウド・コンピューティング・ノード１０を含む。ノード１０は、互いに通信するようになっていてもよい。また、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組み合わせ等の１つまたは複数のネットワークにおいて、物理的または仮想的にグループ化されていてもよい（図示せず）。これにより、クラウド・コンピューティング環境５０は、クラウド消費者がローカルのコンピューティング装置上でリソースを維持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組み合わせを提供することができる。図６に示すコンピューティング装置５４Ａ〜５４Ｎの種類は、例示に過ぎず、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、（たとえば、ウェブ・ブラウザを用いることにより）任意の種類のネットワークまたはネットワーク指定可能な接続、あるいはその両方を介して、如何なる種類のコンピューティング装置とも通信可能であることが了解される。
【００５１】
ここで図７を参照するに、クラウド・コンピューティング環境５０（図６）が提供する一組の機能的抽象レイヤが示される。図７に示すコンポーネント、レイヤ、および機能は、例示に過ぎず、本発明の実施形態はこれに限定されないことが予め了解されるものとする。図示のように、以下のレイヤおよび対応する機能が提供される。
【００５２】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム６１、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャに基づくサーバ６２、サーバ６３、ブレード・サーバ６４、記憶装置６５、ならびにネットワークおよびネットワーキング・コンポーネント６６が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８が挙げられる。
【００５３】
仮想化レイヤ７０は、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５といった仮想エンティティ例を提供可能な抽象レイヤを与える。
【００５４】
一例において、管理レイヤ８０は、後述の機能を提供するようにしてもよい。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内でのタスクの実行に利用されるコンピューティング・リソースおよび他のリソースの動的入手を提供する。メータリングおよびプライシング８２は、クラウド・コンピューティング環境内でリソースが利用された場合のコスト追跡およびこれらリソースの消費の請求またはインボイスを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでいてもよい。セキュリティは、クラウド消費者およびタスクの同一性確認のほか、データおよび他のリソースの保護を提供する。ユーザ・ポータル８３は、消費者およびシステム管理者に対するクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４は、所要サービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を提供する。サービス・レベル合意（ＳＬＡ）プランニングおよび達成８５は、ＳＬＡに従って将来の要求が見込まれるクラウド・コンピューティング・リソースの予備調整および入手を提供する。
【００５５】
ワークロード・レイヤ９０は、クラウド・コンピューティング環境を利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例としては、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想クラス教育提供９３、データ解析処理９４、トランザクション処理９５、およびソース・コード最適化９６が挙げられる。
【００５６】
複数のメモリを備えたシステムにおける柔軟な最適化データ処理の好適な実施形態（例示に過ぎず、これらに限定されない）を説明したが、当業者であれば、上記教示内容に照らして、改良および変形を行い得ることに留意する。したがって、添付の特許請求の範囲により概略規定される本発明の範囲内の開示の特定の実施形態において、変更が可能であることが了解されるものとする。以上、本発明の態様を説明したが、特許法により詳細および細部が求められていることから、特許状により保護される請求および所望事項を添付の特許請求の範囲に示す。
【図１】
2019526091.tif 000003
【図２】
2019526091.tif 000004
【図３】
2019526091.tif 000005
【図４】
2019526091.tif 000006
【図５】
2019526091.tif 000007
【図６】
2019526091.tif 000008
【図７】
2019526091.tif 000009
【国際調査報告】
2019526091.tif 000010
2019526091.tif 000011